=0;)a.splice(a.indexOf(u),1);o.push(u)},l=[],u=[];for(const t of this.outputs)buildMapOfGraph(t,l,u);for(const t of o.slice().reverse()){a[t.id]=t,t.id in r||(r[t.id]=0);let i=r[t.id];i=Math.max(i,null==n[t.outboundLayer.id]?0:n[t.outboundLayer.id]),n[t.outboundLayer.id]=i,s[t.outboundLayer.id]=t.outboundLayer,r[t.id]=i;for(let n=0;n =m.outHeight)&&Math.floor(s)===s)for(let a=0;a +(t!==r)),uO=binaryKernelFunc(rt,uP,null,"bool");function OneHot_oneHot(t){let{inputs:r,backend:a,attrs:n}=t,{indices:s}=r,{dtype:i,depth:o,onValue:l,offValue:u}=n;assertNotComplex(s,"oneHot");let p=sizeFromShape(s.shape),m=new Float32Array(p*o);m.fill(u);let y=a.data.get(s.dataId).values;for(let t=0;t =0&&y[t] =w)continue;let C=r+_*u[1],A=_*F;if(t===Math.min(m-1,o?Math.round(A):Math.floor(A)))for(let t=0;t=I)continue;let n=C+r*u[2],i=r*D;s===Math.min(y-1,o?Math.round(i):Math.floor(i))&&(l+=E[n+a])}}C[i+a]=l}}}}return a.makeTensorInfo(s.shape,s.dtype,C)}function Reverse_reverse(t){let{inputs:r,backend:a,attrs:n}=t,{x:s}=r,{dims:i}=n;assertNotComplex(s,"reverse");let o=s.shape.length,l=parseAxisParam(i,s.shape);if(0===o)return Identity_identity({inputs:{x:s},backend:a});let u=new TensorBuffer(s.shape,s.dtype),p=a.bufferSync(s);for(let t=0;t l)break}return C 0){appendToNGram(t[_+y-1]);for(let t=0;t =0&&y =0&&y{let y=o[p][0],_=o[p][1],w=sliceAlongFirstAxis(i,y,_-y);m.batch=p,m.size=_-y;let I=t(sliceArraysByIndices(r,w));for(let t=0;t{if(4!==t.rank)throw new errors_ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${t.rank}-D tensor.`);if(null==r&&(r=[[1,1],[1,1]]),2!==r.length||2!==r[0].length||2!==r[1].length)throw new errors_ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(null==a&&(a=imageDataFormat()),"channelsLast"!==a&&"channelsFirst"!==a)throw new errors_ValueError(`Unknown data format: ${a}. Supported data formats are 'channelsLast' and 'channelsFirst.`);return s$(t,"channelsFirst"===a?[[0,0],[0,0],r[0],r[1]]:[[0,0],r[0],r[1],[0,0]])})}normalization_LayerNormalization.className="LayerNormalization",registerClass(normalization_LayerNormalization);let padding_ZeroPadding2D=class padding_ZeroPadding2D extends Layer{constructor(t){if(null==t&&(t={}),super(t),this.dataFormat=null==t.dataFormat?imageDataFormat():t.dataFormat,null==t.padding)this.padding=[[1,1],[1,1]];else if("number"==typeof t.padding)this.padding=[[t.padding,t.padding],[t.padding,t.padding]];else{let r,a;if(t.padding=t.padding,2!==t.padding.length)throw new errors_ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${t.padding.length} array.`);if("number"==typeof t.padding[0])r=[t.padding[0],t.padding[0]],a=[t.padding[1],t.padding[1]];else{if(t.padding=t.padding,2!==t.padding[0].length)throw new errors_ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${t.padding[0].length} array.`);if(r=t.padding[0],2!==t.padding[1].length)throw new errors_ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${t.padding[1].length} array.`);a=t.padding[1]}this.padding=[r,a]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(t){let r,a;return(t=getExactlyOneShape(t),"channelsFirst"===this.dataFormat)?(r=null!=t[2]&&t[2]>=0?t[2]+this.padding[0][0]+this.padding[0][1]:null,a=null!=t[3]&&t[3]>=0?t[3]+this.padding[1][0]+this.padding[1][1]:null,[t[0],t[1],r,a]):(r=null!=t[1]&&t[1]>=0?t[1]+this.padding[0][0]+this.padding[0][1]:null,a=null!=t[2]&&t[2]>=0?t[2]+this.padding[1][0]+this.padding[1][1]:null,[t[0],r,a,t[3]])}call(t,r){return globals_tidy(()=>spatial2dPadding(getExactlyOneTensor(t),this.padding,this.dataFormat))}getConfig(){let t={padding:this.padding,dataFormat:this.dataFormat};return Object.assign(t,super.getConfig()),t}};function pool2d(t,r,a,n,s,i){return globals_tidy(()=>{let o;common_checkDataFormat(s),checkPoolMode(i),checkPaddingMode(n),null==a&&(a=[1,1]),null==n&&(n="valid"),null==s&&(s=imageDataFormat()),null==i&&(i="max"),t=preprocessConv2DInput(t,s);let l="same"===n?"same":"valid";return o="max"===i?sg(t,r,a,l):a5(t,r,a,l),"channelsFirst"===s&&(o=iI(o,[0,3,1,2])),o})}function pool3d(t,r,a,n,s,i){return globals_tidy(()=>{let o;common_checkDataFormat(s),checkPoolMode(i),checkPaddingMode(n),null==a&&(a=[1,1,1]),null==n&&(n="valid"),null==s&&(s=imageDataFormat()),null==i&&(i="max"),t=preprocessConv3DInput(t,s);let l="same"===n?"same":"valid";return o="max"===i?sy(t,r,a,l):a8(t,r,a,l),"channelsFirst"===s&&(o=iI(o,[0,4,1,2,3])),o})}padding_ZeroPadding2D.className="ZeroPadding2D",registerClass(padding_ZeroPadding2D);let Pooling1D=class Pooling1D extends Layer{constructor(t){if(null==t.poolSize&&(t.poolSize=2),super(t),"number"==typeof t.poolSize)this.poolSize=[t.poolSize];else if(Array.isArray(t.poolSize)&&1===t.poolSize.length&&"number"==typeof t.poolSize[0])this.poolSize=t.poolSize;else throw new errors_ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(t.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),null==t.strides)this.strides=this.poolSize;else if("number"==typeof t.strides)this.strides=[t.strides];else if(Array.isArray(t.strides)&&1===t.strides.length&&"number"==typeof t.strides[0])this.strides=t.strides;else throw new errors_ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(t.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=null==t.padding?"valid":t.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(t){let r=convOutputLength((t=getExactlyOneShape(t))[1],this.poolSize[0],this.padding,this.strides[0]);return[t[0],r,t[2]]}call(t,r){return globals_tidy(()=>(this.invokeCallHook(t,r),t=tfjs_backend_expandDims(getExactlyOneTensor(t),2),im(this.poolingFunction(getExactlyOneTensor(t),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast"),[2])))}getConfig(){let t={poolSize:this.poolSize,padding:this.padding,strides:this.strides};return Object.assign(t,super.getConfig()),t}};let pooling_MaxPooling1D=class pooling_MaxPooling1D extends Pooling1D{constructor(t){super(t)}poolingFunction(t,r,a,n,s){return common_checkDataFormat(s),checkPaddingMode(n),pool2d(t,r,a,n,s,"max")}};pooling_MaxPooling1D.className="MaxPooling1D",registerClass(pooling_MaxPooling1D);let pooling_AveragePooling1D=class pooling_AveragePooling1D extends Pooling1D{constructor(t){super(t)}poolingFunction(t,r,a,n,s){return common_checkDataFormat(s),checkPaddingMode(n),pool2d(t,r,a,n,s,"avg")}};pooling_AveragePooling1D.className="AveragePooling1D",registerClass(pooling_AveragePooling1D);let Pooling2D=class Pooling2D extends Layer{constructor(t){if(null==t.poolSize&&(t.poolSize=[2,2]),super(t),this.poolSize=Array.isArray(t.poolSize)?t.poolSize:[t.poolSize,t.poolSize],null==t.strides)this.strides=this.poolSize;else if(Array.isArray(t.strides)){if(2!==t.strides.length)throw new errors_ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${t.strides.length}.`);this.strides=t.strides}else this.strides=[t.strides,t.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=null==t.padding?"valid":t.padding,this.dataFormat=null==t.dataFormat?"channelsLast":t.dataFormat,common_checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(t){t=getExactlyOneShape(t);let r="channelsFirst"===this.dataFormat?t[2]:t[1],a="channelsFirst"===this.dataFormat?t[3]:t[2];return(r=convOutputLength(r,this.poolSize[0],this.padding,this.strides[0]),a=convOutputLength(a,this.poolSize[1],this.padding,this.strides[1]),"channelsFirst"===this.dataFormat)?[t[0],t[1],r,a]:[t[0],r,a,t[3]]}call(t,r){return globals_tidy(()=>(this.invokeCallHook(t,r),this.poolingFunction(getExactlyOneTensor(t),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let t={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat};return Object.assign(t,super.getConfig()),t}};let pooling_MaxPooling2D=class pooling_MaxPooling2D extends Pooling2D{constructor(t){super(t)}poolingFunction(t,r,a,n,s){return common_checkDataFormat(s),checkPaddingMode(n),pool2d(t,r,a,n,s,"max")}};pooling_MaxPooling2D.className="MaxPooling2D",registerClass(pooling_MaxPooling2D);let pooling_AveragePooling2D=class pooling_AveragePooling2D extends Pooling2D{constructor(t){super(t)}poolingFunction(t,r,a,n,s){return common_checkDataFormat(s),checkPaddingMode(n),pool2d(t,r,a,n,s,"avg")}};pooling_AveragePooling2D.className="AveragePooling2D",registerClass(pooling_AveragePooling2D);let Pooling3D=class Pooling3D extends Layer{constructor(t){if(null==t.poolSize&&(t.poolSize=[2,2,2]),super(t),this.poolSize=Array.isArray(t.poolSize)?t.poolSize:[t.poolSize,t.poolSize,t.poolSize],null==t.strides)this.strides=this.poolSize;else if(Array.isArray(t.strides)){if(3!==t.strides.length)throw new errors_ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${t.strides.length}.`);this.strides=t.strides}else this.strides=[t.strides,t.strides,t.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=null==t.padding?"valid":t.padding,this.dataFormat=null==t.dataFormat?"channelsLast":t.dataFormat,common_checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(t){t=getExactlyOneShape(t);let r="channelsFirst"===this.dataFormat?t[2]:t[1],a="channelsFirst"===this.dataFormat?t[3]:t[2],n="channelsFirst"===this.dataFormat?t[4]:t[3];return(r=convOutputLength(r,this.poolSize[0],this.padding,this.strides[0]),a=convOutputLength(a,this.poolSize[1],this.padding,this.strides[1]),n=convOutputLength(n,this.poolSize[2],this.padding,this.strides[2]),"channelsFirst"===this.dataFormat)?[t[0],t[1],r,a,n]:[t[0],r,a,n,t[4]]}call(t,r){return globals_tidy(()=>(this.invokeCallHook(t,r),this.poolingFunction(getExactlyOneTensor(t),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let t={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat};return Object.assign(t,super.getConfig()),t}};let pooling_MaxPooling3D=class pooling_MaxPooling3D extends Pooling3D{constructor(t){super(t)}poolingFunction(t,r,a,n,s){return common_checkDataFormat(s),checkPaddingMode(n),pool3d(t,r,a,n,s,"max")}};pooling_MaxPooling3D.className="MaxPooling3D",registerClass(pooling_MaxPooling3D);let pooling_AveragePooling3D=class pooling_AveragePooling3D extends Pooling3D{constructor(t){super(t)}poolingFunction(t,r,a,n,s){return common_checkDataFormat(s),checkPaddingMode(n),pool3d(t,r,a,n,s,"avg")}};pooling_AveragePooling3D.className="AveragePooling3D",registerClass(pooling_AveragePooling3D);let GlobalPooling1D=class GlobalPooling1D extends Layer{constructor(t){super(t),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(t){return[t[0],t[2]]}call(t,r){throw new errors_NotImplementedError}};let pooling_GlobalAveragePooling1D=class pooling_GlobalAveragePooling1D extends GlobalPooling1D{constructor(t){super(t||{})}call(t,r){return globals_tidy(()=>sv(getExactlyOneTensor(t),1))}};pooling_GlobalAveragePooling1D.className="GlobalAveragePooling1D",registerClass(pooling_GlobalAveragePooling1D);let pooling_GlobalMaxPooling1D=class pooling_GlobalMaxPooling1D extends GlobalPooling1D{constructor(t){super(t||{})}call(t,r){return globals_tidy(()=>nj(getExactlyOneTensor(t),1))}};pooling_GlobalMaxPooling1D.className="GlobalMaxPooling1D",registerClass(pooling_GlobalMaxPooling1D);let GlobalPooling2D=class GlobalPooling2D extends Layer{constructor(t){super(t),this.dataFormat=null==t.dataFormat?"channelsLast":t.dataFormat,common_checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(t){return"channelsLast"===this.dataFormat?[t[0],t[3]]:[t[0],t[1]]}call(t,r){throw new errors_NotImplementedError}getConfig(){let t={dataFormat:this.dataFormat};return Object.assign(t,super.getConfig()),t}};let pooling_GlobalAveragePooling2D=class pooling_GlobalAveragePooling2D extends GlobalPooling2D{call(t,r){return globals_tidy(()=>{let r=getExactlyOneTensor(t);return"channelsLast"===this.dataFormat?sv(r,[1,2]):sv(r,[2,3])})}};pooling_GlobalAveragePooling2D.className="GlobalAveragePooling2D",registerClass(pooling_GlobalAveragePooling2D);let pooling_GlobalMaxPooling2D=class pooling_GlobalMaxPooling2D extends GlobalPooling2D{call(t,r){return globals_tidy(()=>{let r=getExactlyOneTensor(t);return"channelsLast"===this.dataFormat?nj(r,[1,2]):nj(r,[2,3])})}};pooling_GlobalMaxPooling2D.className="GlobalMaxPooling2D",registerClass(pooling_GlobalMaxPooling2D);let Wrapper=class Wrapper extends Layer{constructor(t){super(t),this.layer=t.layer}build(t){this.built=!0}get trainable(){return null!=this.layer&&this.layer.trainable}set trainable(t){null!=this.layer&&(this.layer.trainable=t)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(t){this.layer.setWeights(t)}getConfig(){let t={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}};return Object.assign(t,super.getConfig()),t}setFastWeightInitDuringBuild(t){super.setFastWeightInitDuringBuild(t),null!=this.layer&&this.layer.setFastWeightInitDuringBuild(t)}static fromConfig(t,r,a={}){let n=serialization_deserialize(r.layer,a);delete r.layer;let s={layer:n};return Object.assign(s,r),new t(s)}};let wrappers_TimeDistributed=class wrappers_TimeDistributed extends Wrapper{constructor(t){super(t),this.supportsMasking=!0}build(t){if((t=getExactlyOneShape(t)).length<3)throw new errors_ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(t)}`);this.inputSpec=[{shape:t}];let r=[t[0]].concat(t.slice(2));this.layer.built||(this.layer.build(r),this.layer.built=!0),super.build(t)}computeOutputShape(t){let r=[(t=getExactlyOneShape(t))[0]].concat(t.slice(2)),a=this.layer.computeOutputShape(r),n=t[1];return[a[0],n].concat(a.slice(1))}call(t,r){return globals_tidy(()=>rnn((t,a)=>[getExactlyOneTensor(this.layer.call(t,r)),[]],t=getExactlyOneTensor(t),[],!1,null,null,!1,!0)[1])}};function checkBidirectionalMergeMode(t){checkStringTypeUnionValue(oY,"BidirectionalMergeMode",t)}wrappers_TimeDistributed.className="TimeDistributed",registerClass(wrappers_TimeDistributed);let wrappers_Bidirectional=class wrappers_Bidirectional extends Wrapper{constructor(t){super(t);const r=t.layer.getConfig(),a={};a.className=t.layer.getClassName(),a.config=r,this.forwardLayer=serialization_deserialize(a),r.goBackwards=!0!==r.goBackwards;const n={};if(n.className=t.layer.getClassName(),n.config=r,this.backwardLayer=serialization_deserialize(n),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=void 0===t.mergeMode?"concat":t.mergeMode,checkBidirectionalMergeMode(this.mergeMode),t.weights)throw new errors_NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=t.layer.stateful,this.returnSequences=t.layer.returnSequences,this.returnState=t.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=t.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(t){this._trainable=t,null!=this.forwardLayer&&(this.forwardLayer.trainable=t),null!=this.backwardLayer&&(this.backwardLayer.trainable=t)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(t){let r=Math.floor(t.length/2);this.forwardLayer.setWeights(t.slice(0,r)),this.backwardLayer.setWeights(t.slice(r))}computeOutputShape(t){let r,a,n,s=this.forwardLayer.computeOutputShape(t);return(Array.isArray(s)&&Array.isArray(s[0])||(s=[s]),this.returnState&&(n=s.slice(1)),r=s[0],"concat"===this.mergeMode?(r[r.length-1]*=2,a=[r]):a=null==this.mergeMode?[r,r.slice()]:[r],this.returnState)?null==this.mergeMode?a.concat(n).concat(n.slice()):[r].concat(n).concat(n.slice()):singletonOrArray(a)}apply(t,r){let a=null==r?null:r.initialState,n=null==r?null:r.constants;null==r&&(r={});let s=standardizeArgs(t,a,n,this.numConstants);if(t=s.inputs,a=s.initialState,n=s.constants,Array.isArray(t)&&(a=t.slice(1),t=t[0]),(null==a||0===a.length)&&null==n)return super.apply(t,r);let i=[],o=[];if(null!=a){let t=a.length;if(t%2>0)throw new errors_ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");r.initialState=a,i.push(...a);let n=a.map(t=>new InputSpec({shape:t.shape}));this.forwardLayer.stateSpec=n.slice(0,t/2),this.backwardLayer.stateSpec=n.slice(t/2),o.push(...n)}if(null!=n)throw new errors_NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let l=i[0]instanceof SymbolicTensor;for(let t of i)if(t instanceof SymbolicTensor!==l)throw new errors_ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(!l)return super.apply(t,r);{let a=[t].concat(i),n=this.inputSpec.concat(o),s=this.inputSpec;this.inputSpec=n;let l=super.apply(a,r);return this.inputSpec=s,l}}call(t,r){return globals_tidy(()=>{let a,n,s,i,o=r.initialState;if(null==o)a=this.forwardLayer.call(t,r),n=this.backwardLayer.call(t,r);else{let s=o.slice(0,o.length/2),i=o.slice(o.length/2);a=this.forwardLayer.call(t,Object.assign(r,{initialState:s})),n=this.backwardLayer.call(t,Object.assign(r,{initialState:i}))}return(this.returnState&&(Array.isArray(a)&&(s=a.slice(1).concat(n.slice(1))),a=a[0],n=n[0]),this.returnSequences&&(n=s0(n,1)),"concat"===this.mergeMode?i=concatenate([a,n]):"sum"===this.mergeMode?i=a$(a,n):"ave"===this.mergeMode?i=aD(.5,a$(a,n)):"mul"===this.mergeMode?i=aD(a,n):null==this.mergeMode&&(i=[a,n]),this.returnState)?null==this.mergeMode?i.concat(s):[i].concat(s):i})}resetStates(t){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(t){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(t)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(t)}),this.built=!0}computeMask(t,r){let a;if(Array.isArray(r)&&(r=r[0]),a=this.returnSequences?null==this.mergeMode?[r,r]:r:null==this.mergeMode?[null,null]:null,!this.returnState)return a;{let t=this.forwardLayer.states.map(t=>null);return Array.isArray(a)?a.concat(t).concat(t):[a].concat(t).concat(t)}}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(t){super.setFastWeightInitDuringBuild(t),null!=this.forwardLayer&&this.forwardLayer.setFastWeightInitDuringBuild(t),null!=this.backwardLayer&&this.backwardLayer.setFastWeightInitDuringBuild(t)}getConfig(){let t={mergeMode:this.mergeMode};return Object.assign(t,super.getConfig()),t}static fromConfig(t,r){let a=serialization_deserialize(r.layer);if(delete r.layer,null!=r.numConstants)throw new errors_NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");return r.layer=a,new t(r)}};wrappers_Bidirectional.className="Bidirectional",registerClass(wrappers_Bidirectional);let image_preprocessing_Rescaling=class image_preprocessing_Rescaling extends Layer{constructor(t){super(t),this.scale=t.scale,t.offset?this.offset=t.offset:this.offset=0}getConfig(){let t={scale:this.scale,offset:this.offset};return Object.assign(t,super.getConfig()),t}call(t,r){return globals_tidy(()=>("float32"!==(t=getExactlyOneTensor(t)).dtype&&(t=aE(t,"float32")),a$(aD(t,this.scale),this.offset)))}};image_preprocessing_Rescaling.className="Rescaling",registerClass(image_preprocessing_Rescaling);let{resizeBilinear:ls,cropAndResize:li}=om;let center_crop_CenterCrop=class center_crop_CenterCrop extends Layer{constructor(t){super(t),this.height=t.height,this.width=t.width}centerCrop(t,r,a,n,s,i,o,l){return globals_tidy(()=>{let u,p=!1,m=[r/i,a/o,(n+r)/i,(s+a)/o],y=[];3===t.rank?(p=!0,u=ig([t])):u=t;for(let t=0;t=a||(n?o.set(1,l,i):r.size>0?o.set(o.get(l,i)+r.get(l,s),l,i):o.set(o.get(l,i)+1,l,i))}return o}function Bincount_bincount(t){let{inputs:r,backend:a,attrs:n}=t,{x:s,weights:i}=r,{size:o}=n,l=bincountImpl(a.data.get(s.dataId).values,a.data.get(i.dataId).values,i.dtype,i.shape,o);return a.makeTensorInfo([o],i.dtype,l)}let lX=createSimpleBinaryKernelImpl((t,r)=>t&r),lY=binaryKernelFunc(e4,lX);function BroadcastArgs_broadcastArgs(t){let{inputs:r,backend:a}=t,{s0:n,s1:s}=r,i=a.data.get(n.dataId).values,o=a.data.get(s.dataId).values,l=assertAndGetBroadcastShape(Array.from(i),Array.from(o));return a.makeTensorInfo([l.length],"int32",Int32Array.from(l))}let lZ=createSimpleUnaryImpl(t=>Math.ceil(t)),lJ=unaryKernelFuncFromImpl(e8,lZ),lQ=unaryKernelFunc(e7,(t,r)=>t>r.clipValueMax?r.clipValueMax:tMath.floor(t)),uo=unaryKernelFuncFromImpl(tR,ui),ul=binaryKernelFunc(tF,createSimpleBinaryKernelImpl((t,r)=>Math.floor(t/r)),null,"int32");function fusedConv2D(t){let{inputs:r,backend:a,attrs:n}=t,{x:s,filter:i,bias:o,preluActivationWeights:l}=r,{strides:u,pad:p,dataFormat:m,dilations:y,dimRoundingMode:_,activation:w,leakyreluAlpha:I}=n,C=conv2D({inputs:{x:s,filter:i},backend:a,attrs:{strides:u,pad:p,dataFormat:m,dilations:y,dimRoundingMode:_}});if(o){let t=C;if("NCHW"===m&&1===o.shape.length&&1!==o.shape[0]){let t=Reshape_reshape({inputs:{x:o},backend:a,attrs:{shape:[o.shape[0],1,1]}});C=lB({inputs:{a:C,b:t},backend:a}),a.disposeIntermediateTensorInfo(t)}else C=lB({inputs:{a:C,b:o},backend:a});a.disposeIntermediateTensorInfo(t)}if(w){let t=C;if("NCHW"===m&&"prelu"===w&&1===l.shape.length&&1!==l.shape[0]){let t=Reshape_reshape({inputs:{x:l},backend:a,attrs:{shape:[l.shape[0],1,1]}});C=fused_utils_applyActivation(a,C,w,t,I),a.disposeIntermediateTensorInfo(t)}else C=fused_utils_applyActivation(a,C,w,l,I);a.disposeIntermediateTensorInfo(t)}return C}function fusedDepthwiseConv2D(t){let{inputs:r,backend:a,attrs:n}=t,{x:s,filter:i,bias:o,preluActivationWeights:l}=r,{strides:u,pad:p,dataFormat:m,dilations:y,dimRoundingMode:_,activation:w,leakyreluAlpha:I}=n,C=depthwiseConv2dNative({inputs:{x:s,filter:i},backend:a,attrs:{strides:u,pad:p,dataFormat:m,dilations:y,dimRoundingMode:_}});if(o){let t=C;C=lB({inputs:{a:C,b:o},backend:a}),a.disposeIntermediateTensorInfo(t)}if(w){let t=C;C=fused_utils_applyActivation(a,C,w,l,I),a.disposeIntermediateTensorInfo(t)}return C}function gatherNdImpl(t,r,a,n,s,i,o,l,u){let p=buffer([n,i],a);for(let a=0;as)a=0;else if((a=Math.ceil(Math.abs((o-s)/m)))>0x7fffffff)throw Error("Requires ((limit - start) / delta) <= 2147483647");_[r+1]=_[r]+a}let w=getArrayFromDType(a,_[y]),I=0;for(let r=0;r=0&&(++o1||1===s.shape.length?1:sizeFromShape(s.shape.slice(1));for(let t=0;t0?0:o-u);l=0+p*this.leftPad.length;for(let r=0;r{let l=r[a+1]-r[a],u=this.getNumNGrams(l,i);this.createNGrams(t,n,o,s,u,i),s+=u}),this.preserveShort&&s===i[a]){let i=r[a+1]-r[a];if(0===i)continue;let l=i+2*this.padWidth;this.createNGrams(t,n,o,s,1,l)}}return[o,i]}};function stringNGramsImpl(t,r,a,n,s,i,o,l){return new StringNGramsOp(a,n,s,i,o,l).compute(t,r)}function StringNGrams_stringNGrams(t){let{inputs:r,backend:a,attrs:n}=t,{separator:s,nGramWidths:i,leftPad:o,rightPad:l,padWidth:u,preserveShortSequences:p}=n,{data:m,dataSplits:y}=r,[_,w]=stringNGramsImpl(a.data.get(m.dataId).values,a.data.get(y.dataId).values,s,i,o,l,u,p);return[a.makeTensorInfo([_.length],"string",_),a.makeTensorInfo(y.shape,"int32",w)]}function StringSplit_impl_split(t,r,a,n){if(!t.length)return;if(0===r.length){for(let r=0;r