/** * @license * Copyright 2023 Google LLC. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================================= */ !function(e,a){"object"==typeof exports&&"undefined"!=typeof module?a(exports,require("@tensorflow/tfjs-core"),require("seedrandom")):"function"==typeof define&&define.amd?define(["exports","@tensorflow/tfjs-core","seedrandom"],a):a((e="undefined"!=typeof globalThis?globalThis:e||self).tf=e.tf||{},e.tf,e.seedrandom)}(this,(function(e,a,t){"use strict";function r(e){var a=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(a,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),a.default=e,a}var n=r(t),i=function(e,a){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,a){e.__proto__=a}||function(e,a){for(var t in a)Object.prototype.hasOwnProperty.call(a,t)&&(e[t]=a[t])},i(e,a)};function o(e,a,t,r){return new(t||(t=Promise))((function(n,i){function o(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var a;e.done?n(e.value):(a=e.value,a instanceof t?a:new t((function(e){e(a)}))).then(o,s)}u((r=r.apply(e,a||[])).next())}))}function s(e,a){var t,r,n,i,o={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(t)throw new TypeError("Generator is already executing.");for(;o;)try{if(t=1,r&&(n=2&i[0]?r.return:i[0]?r.throw||((n=r.return)&&n.call(r),0):r.next)&&!(n=n.call(r,i[1])).done)return n;switch(r=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return o.label++,{value:i[1],done:!1};case 5:o.label++,r=i[1],i=[0];continue;case 7:i=o.ops.pop(),o.trys.pop();continue;default:if(!(n=o.trys,(n=n.length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){o=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(a?"Object is not iterable.":"Symbol.iterator is not defined.")}function d(e,a){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,n,i=t.call(e),o=[];try{for(;(void 0===a||a-- >0)&&!(r=i.next()).done;)o.push(r.value)}catch(e){n={error:e}}finally{try{r&&!r.done&&(t=i.return)&&t.call(i)}finally{if(n)throw n.error}}return o}function l(e,a,t){if(t||2===arguments.length)for(var r,n=0,i=a.length;n0&&a.util.isString(r[0])){var i=r.map((function(e){return a.util.encodeString(e)}));n=this.write(i,e,t)}else n=this.write(r,e,t);return{dataId:n,shape:e,dtype:t}},t.prototype.refCount=function(e){return this.data.has(e)?this.data.get(e).refCount:0},t.prototype.incRef=function(e){this.data.get(e).refCount++},t.prototype.decRef=function(e){this.data.has(e)&&this.data.get(e).refCount--},t.prototype.move=function(e,a,t,r,n){this.data.set(e,{values:a,dtype:r,refCount:n})},t.prototype.numDataIds=function(){return this.data.numDataIds()},t.prototype.read=function(e){return o(this,void 0,void 0,(function(){return s(this,(function(a){return[2,this.readSync(e)]}))}))},t.prototype.readSync=function(e){var t=this.data.get(e),r=t.dtype,n=t.complexTensorInfos;if("complex64"===r){var i=this.readSync(n.real.dataId),o=this.readSync(n.imag.dataId);return a.backend_util.mergeRealAndImagArrays(i,o)}return a.util.convertBackendValuesAndArrayBuffer(this.data.get(e).values,r)},t.prototype.bufferSync=function(e){var t=this.readSync(e.dataId);if("string"===e.dtype)try{var r=t.map((function(e){return a.util.decodeString(e)}));return a.buffer(e.shape,e.dtype,r)}catch(e){throw new Error("Failed to decode encoded string bytes into utf-8")}return a.buffer(e.shape,e.dtype,t)},t.prototype.makeOutput=function(e,t,r){return a.engine().makeTensorFromTensorInfo(this.makeTensorInfo(t,r,e),this)},t.prototype.disposeData=function(e,a){if(void 0===a&&(a=!1),this.data.has(e)){if(this.data.get(e).refCount--,!a&&this.data.get(e).refCount>0)return!1;var t=this.data.get(e).complexTensorInfos;null!=t&&(this.disposeData(t.real.dataId,!0),this.disposeData(t.imag.dataId,!0)),this.data.delete(e)}return!0},t.prototype.disposeIntermediateTensorInfo=function(e){this.disposeData(e.dataId)},t.prototype.time=function(e){return o(this,void 0,void 0,(function(){var t;return s(this,(function(r){return t=a.util.now(),e(),[2,{kernelMs:a.util.now()-t}]}))}))},t.prototype.memory=function(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}},t.prototype.where=function(e){p([e],"where");var a=this.readSync(e.dataId);return c(e.shape,a)},t.prototype.dispose=function(){},t.prototype.floatPrecision=function(){return 32},t.prototype.epsilon=function(){return e.prototype.epsilon.call(this)},t}(a.KernelBackend);function f(e){for(var a=new Float32Array(e.length),t=0;t=i||(s[d]+=o>0?t[u]:1)}return s}function R(e,t,r,n){void 0===n&&(n=!1);for(var i=e.shape[0],o=e.shape[1],s=a.buffer([i,r],t.dtype),u=0;u=r||(n?s.set(1,u,l):t.size>0?s.set(s.get(u,l)+t.get(u,d),u,l):s.set(s.get(u,l)+1,u,l))}return s}var W=v((function(e,a){return e&a})),P=w(a.BitwiseAnd,W),C={kernelName:a.BitwiseAnd,backendName:"cpu",kernelFunc:P};function H(e){return function(t,r,n){for(var i=a.util.getArrayFromDType(r,t.length),o=0;o=p/o)throw new Error("Invalid indices: ".concat(f," does not index into ").concat(u));for(var g=0;ga?1:0})),de=w(a.Greater,ue,null,"bool"),le={kernelName:a.Greater,backendName:"cpu",kernelFunc:de},pe=v((function(e,a){return e>=a?1:0})),ce=w(a.GreaterEqual,pe,null,"bool"),he={kernelName:a.GreaterEqual,backendName:"cpu",kernelFunc:ce},fe=v((function(e,a){return eu)&&(u=l)}i[o]=u}return i}var xe=v((function(e,a){return Math.max(e,a)})),Fe=w(a.Maximum,xe),we={kernelName:a.Maximum,backendName:"cpu",kernelFunc:Fe},Me=v((function(e,a){return Math.min(e,a)})),Ae=w(a.Minimum,Me),De={kernelName:a.Minimum,backendName:"cpu",kernelFunc:Ae},Ee=v((function(e,a){return e*a})),_e=M((function(e,a,t,r){return{real:e*t-a*r,imag:e*r+a*t}})),ze=w(a.Multiply,Ee,_e),Re={kernelName:a.Multiply,backendName:"cpu",kernelFunc:ze};function We(e,t,r){var n=a.util.createScalarValue(-1,r);return Ee([],t,n,e,r)}var Pe={kernelName:a.Neg,backendName:"cpu",kernelFunc:function(e){var a=e.inputs,t=e.backend,r=a.x;p(r,"neg");var n=d(We(t.data.get(r.dataId).values,r.shape,r.dtype),2),i=n[0],o=n[1];return t.makeTensorInfo(o,r.dtype,i)}},Ce=v((function(e,a){return e!==a?1:0})),He=w(a.NotEqual,Ce,null,"bool"),Oe={kernelName:a.NotEqual,backendName:"cpu",kernelFunc:He};function Be(e,t,r,n,i){for(var o=t.length,s=a.util.sizeFromShape(t),u=a.util.computeStrides(t),d=a.util.computeStrides(i),l=a.util.getTypedArrayFromDType(r,a.util.sizeFromShape(i)),p=0;pn)throw new Error("Ragged splits must not point past values");for(var i=1;ir[i])throw new Error("Ragged splits must be sorted in ascending order")}}(t,r);for(var u=1,d=0;d=0)for(var v=s[m],k=v[v.length-1]-f[c],g=c;g=r){var i=a.util.indexToLoc(n,t.length,a.util.computeStrides(t)).join(",");throw new Error("indices[".concat(i,"] = ").concat(e," is not in [0, ").concat(r,")"))}}))}(o,s,t[0][0]-1),0===n.length)throw new Error("params.rank must be nonzero");var d=Ue(o,s,e,n[0]),l=d.outSplits,p=d.valueSlices,c=d.numValues,h=function(e){for(var t=[],r=function(r){var n=e[r].length,i=a.util.getArrayFromDType("int32",n);t.push(i),e[r].forEach((function(e,a){return i[a]=e}))},n=0;n1)throw new Error("starts must be a scalar or vector");if(i.length>1)throw new Error("limits must be a scalar or vector");if(s.length>1)throw new Error("deltas must be a scalar or vector");var u=0===t.length,d=0===i.length,l=0===s.length,p=[];u||p.push(t[0]),d||p.push(i[0]),l||p.push(s[0]);for(var c=1;c0&&kv)g=0;else if((g=Math.ceil(Math.abs((k-v)/N)))>Ye)throw new Error("Requires ((limit - start) / delta) <= ".concat(Ye));f[m+1]=f[m]+g}var b=f[h],I=a.util.getArrayFromDType(r,b),y=0;for(m=0;mt&&(t=n)}return t},e.getMaxWidthValueRowID=function(e){var a=e.length;if(0===a)return 0;for(var t=0,r=e[0],n=0,i=1;i0&&i.length!==e[n-1])throw new Error("Invalid row split size.");return i},e.prototype.calculateOutputIndexValueRowID=function(e,a,t,r){var n=e.length,i=[];if(0===n)return[];var o=0,s=e[0];if(s>=a.length)throw new Error("Got currentValueRowId=".concat(s,", which is not less than ").concat(a.length));var u=a[s];i.push(u);for(var d=1;d=0&&(++o=a.length)throw new Error("Got nextValueRowId=".concat(l," which is not less than ").concat(a.length));u=a[l]}i.push(u)}if(i.length!==e.length)throw new Error("Invalid row ids.");return i},e.prototype.calculateOutputIndex=function(e,a,t,r){var n=this.getRowPartitionTensor(e),i=this.getRowPartitionTypeByDimension(e);switch(i){case Qe.VALUE_ROWIDS:return this.calculateOutputIndexValueRowID(n,a,t,r);case Qe.ROW_SPLITS:if(n.length-1>a.length)throw new Error("Row partition size is greater than output size: ".concat(n.length-1," > ").concat(a.length));return this.calculateOutputIndexRowSplit(n,a,t,r);default:throw new Error("Unsupported partition type: ".concat(Qe[i]))}},e.prototype.getFirstDimensionSize=function(){var e=this.rowPartitionValues[0];if(0===this.rowPartitionTypes.length)throw new Error("No row_partition_types given.");var a=this.rowPartitionTypes[0];switch(a){case Qe.FIRST_DIM_SIZE:return e[0];case Qe.VALUE_ROWIDS:throw new Error("Cannot handle VALUE_ROWIDS in first dimension.");case Qe.ROW_SPLITS:return this.rowPartitionValuesShapes[0][0]-1;default:throw new Error("Cannot handle type ".concat(Qe[a]))}},e.prototype.compute=function(){if(this.rowPartitionValues[0].length<=0)throw new Error("Invalid first partition input. Tensor requires at least one element.");var e=this.getFirstDimensionSize(),t=this.calculateOutputSize(e),r=new Array(this.raggedRank+1);r[r.length-1]=1;for(var n=r.length-2;n>=0;--n)r[n]=r[n+1]*t[n+1];var i=ea(t,!1),o=a.util.getArrayFromDType(this.valuesDType,a.util.sizeFromShape(i));if(r[0]*t[0]>0){var s=this.calculateFirstParentOutputIndex(e,r[0],t[0]);for(n=1;n<=this.raggedRank;++n){s=this.calculateOutputIndex(n-1,s,r[n],t[n])}this.setOutput(this.raggedRank,s,o,i)}return[i,o]},e.prototype.setOutput=function(e,t,r,n){if(0!==r.length){var i=this.values,o=r,s=n.slice();s=s.slice(e+1);var u=a.util.sizeFromShape(s),d=t.length,l=this.defaultValue;if(l.length!==u&&1!==l.length){var p=this.defaultValueShape;a.tidy((function(){var e=a.reshape(l,p),t=a.broadcastTo(e,s);l=t.dataSync()}))}for(var c=0,h=0,f=0,m=0;m<=d;++m){var v=m=d){var g=r.length;v=Math.floor(g/u)}if(v>f)if(1===this.defaultValue.length)o.subarray(f*u,v*u).fill(this.defaultValue[0]),f=v;else for(;v>f;){$e(o.slice(f*u),l,u),++f}v<0?(c=m+1,h=f):(c=m,f=(h=f)+1)}else++f}}},e}();function $e(e,a,t){for(var r=0;r= 0"));if(s<-1)throw new Error("Dimension ".concat(s," must be >= -1"));s=-1}n.push(s)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return n}function aa(e,a,t,r,n,i,o,s,u,d){return new Xe(e,a,t,r,n,i,o,s,u,d).compute()}function ta(e,t,r,n){if(e===t||e1)return a.util.makeZerosTypedArray(0,n);var i=Math.abs(Math.ceil((t-e)/r)),o=a.util.makeZerosTypedArray(i,n);t=n/i)throw new Error("Invalid indices: ".concat(v," does not index into ").concat(r));for(var I=0;I=d)throw new Error(a.backend_util.getSparseFillEmptyRowsOutOfRangeIndexErrorMessage(v,g,d));++m[g],h=h&&g>=f,f=g}for(var k=!0,g=0;g0&&(m[g]+=m[g-1])}if(k&&h){var I=e,y=n;for(v=0;v0){v[m-1]=1;for(c=m-2;c>=0;--c)v[c]=v[c+1]*n[c+1]}var k=[];if(u>0){k[u-1]=1;for(c=u-2;c>=0;--c)k[c]=k[c+1]*d[c+1]}for(var g=a.util.getArrayFromDType(r,s*u),b=0;b0?i[u-1]+1:0;if(p<0)throw new Error(a.backend_util.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());var c=t.slice();c[0]=p;var h=c.reduce((function(e,a){return e*a}),1),f=a.util.getArrayFromDType(r,h);if(0===u)return p>0&&f.fill(s),[f,c];if(p<=0)throw new Error(a.backend_util.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());for(var m=0,v=1,k=0,g=i[m];;){var b=0;if(v=b)throw new Error(a.backend_util.getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage())}if(g<0||g>=p)throw new Error(a.backend_util.getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage(g,p));g>k&&f.fill(s,k*l,g*l);for(var I=m;I=d[0])throw new Error(a.backend_util.getSparseSegmentReductionIndicesOutOfRangeErrorMessage(I,n[I],d[0]));for(var S=0;Su)break}return k0?0:o-u),h=0;h+=d*s.leftPad.length;for(var f=0;f0){k(e[c+p-1]);for(f=0;f0){var o=t[0];if(0!==o)throw new Error("First split value must be 0, got ".concat(o));for(var s=1;s=o;if(!(u=u&&t[s]<=n))throw new Error("Invalid split value ".concat(t[s],", must be in [").concat(o,", ").concat(n,"]"));o=t[s]}if(o!==n)throw new Error("Last split value must be data size. Expected ".concat(n,", got ").concat(o))}var d=i-1,l=a.util.getArrayFromDType("int32",i);if(0===n||0===i){var p=new Array(n);for(s=0;s<=d;++s)l[s]=0;return[p,l]}l[0]=0;var c=function(e){var a=t[e]-t[e-1],n=0;h.nGramWidths.forEach((function(e){n+=r.getNumNGrams(a,e)})),h.preserveShort&&a>0&&0===n&&(n=1),l[e]=l[e-1]+n},h=this;for(s=1;s<=d;++s)c(s);var f=new Array(l[d]),m=function(a){var n=t[a],i=l[a];if(v.nGramWidths.forEach((function(o){var s=t[a+1]-t[a],u=r.getNumNGrams(s,o);r.createNGrams(e,n,f,i,u,o),i+=u})),v.preserveShort&&i===l[a]){var o=t[a+1]-t[a];if(0===o)return"continue";var s=o+2*v.padWidth;v.createNGrams(e,n,f,i,1,s)}},v=this;for(s=0;sr;){if(n-r>600){var i=n-r+1,o=t-r+1,s=Math.log(i),u=.5*Math.exp(2*s/3),d=.5*Math.sqrt(s*u*(i-u)/i)*Math.sign(o-i/2);Ca(e,t,Math.max(r,Math.floor(t-o*u/i+d)),Math.min(n,Math.floor(t+(i-o)*u/i+d)))}var l=e[t],p=r,c=n;for(a.util.swap(e,r,t),Pa(e[n],l)>0&&a.util.swap(e,r,n);p0;)c-=1}0===Pa(e[r],l)?a.util.swap(e,r,c):(c+=1,a.util.swap(e,c,n)),c<=t&&(r=c+1),t<=c&&(n=c-1)}}function Ha(e,t,r,n,i){for(var o=t[t.length-1],s=d([e.length/o,o],2),u=s[0],l=s[1],p=a.util.getTypedArrayFromDType(r,u*n),c=a.util.getTypedArrayFromDType("int32",u*n),h=function(a){var t=a*l,r=e.subarray(t,t+l),o=new Array(r.length);r.forEach((function(e,a){return o[a]={value:e,index:a}})),n=0?e:Math.exp(e)-1})),Ga={kernelName:a.Elu,backendName:"cpu",kernelFunc:Va};function La(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x,o=n.alpha;p([i],"leakyRelu");for(var s=a.util.sizeFromShape(i.shape),u=r.data.get(i.dataId).values,d=a.util.getTypedArrayFromDType("float32",s),l=0;lS&&(S=x,T=N)}k[I]=T}return c.forEach((function(e){return r.disposeIntermediateTensorInfo(e)})),r.makeTensorInfo(f,"int32",k)}};var ct={kernelName:a.ArgMin,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x,o=n.axis;p(i,"argMin");var s=a.util.parseAxisParam(o,i.shape),u=a.backend_util.getAxesPermutation(s,i.shape.length),l=i,c=[];null!=u&&(l=Ve({inputs:{x:i},backend:r,attrs:{perm:u}}),c.push(l),s=a.backend_util.getInnerMostAxes(s.length,l.shape.length)),s=[s[0]],a.backend_util.assertAxesAreInnerMostDims("argMin",s,l.shape.length);for(var h=d(a.backend_util.computeOutAndReduceShapes(l.shape,s),2),f=h[0],m=h[1],v=a.util.sizeFromShape(f),k=a.util.makeZerosTypedArray(v,"int32"),g=a.util.sizeFromShape(m),b=r.data.get(l.dataId).values,I=0;IR?R=B:"avg"===o&&(W+=B,P++)}if(isNaN(R))break}k[A+D*I+N]="avg"===o?W/P:R}return v}function xt(e,t,r,n,i,o){void 0===i&&(i=!1),void 0===o&&(o=!1);for(var s=a.buffer(n.outShape,"int32"),u=n.strideHeight,d=n.strideWidth,l=n.dilationHeight,p=n.dilationWidth,c=n.effectiveFilterHeight,h=n.effectiveFilterWidth,f=n.padInfo.top,m=n.padInfo.left,v=a.buffer(t,r,e),k=0;kw&&(w=z,M=i?o?((k*n.inHeight+A)*n.inWidth+E)*n.inChannels+g:(A*n.inWidth+E)*n.inChannels+g:D*h+_)}s.set(M,k,b,T,g)}}return s}function Ft(e,t,r,n,i,o){for(var s=i.strideDepth,u=i.strideHeight,d=i.strideWidth,l=i.dilationDepth,p=i.dilationHeight,c=i.dilationWidth,h=i.effectiveFilterDepth,f=i.effectiveFilterHeight,m=i.effectiveFilterWidth,v=i.padInfo.front,k=i.padInfo.top,g=i.padInfo.left,b="max"===o?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,I=a.buffer(i.outShape,r),y=I.values,S=i.outShape[1]*i.outShape[2]*i.outShape[3]*i.outShape[4],T=i.outShape[2]*i.outShape[3]*i.outShape[4],N=i.outShape[3]*i.outShape[4],x=i.outShape[4],F=0;FU?U=$:"avg"===o&&(Z+=$,j++),isNaN(U))break}if(isNaN(U))break}if(isNaN(U))break}y[q+A]="avg"===o?Z/Math.max(j,1):U}}}return I}var wt={kernelName:a.AvgPool,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x;p(i,"avgPool");var o=n.filterSize,s=n.strides,u=n.pad,d=n.dimRoundingMode;a.util.assert(a.backend_util.eitherStridesOrDilationsAreOne(s,1),(function(){return"Error in avgPool: Either strides or dilations must be 1. "+"Got strides ".concat(s," and dilations '").concat(1,"'")}));var l,c=a.backend_util.computePool2DInfo(i.shape,o,s,1,u,d);if(1===c.filterWidth&&1===c.filterHeight&&a.util.arraysEqual(c.inShape,c.outShape))l=I({inputs:{x:i},backend:r});else{var h=r.data.get(i.dataId).values,f=a.util.computeStrides(i.shape),m=Nt(h,i.shape,i.dtype,f,c,"avg");l=r.makeTensorInfo(c.outShape,i.dtype,m.values)}return l}};var Mt={kernelName:a.AvgPool3D,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x,o=n.filterSize,s=n.strides,u=n.pad,d=n.dimRoundingMode,l=n.dataFormat;p(i,"avgPool3d");var c=a.backend_util.computePool3DInfo(i.shape,o,s,1,u,d,l),h=Ft(r.data.get(i.dataId).values,i.shape,i.dtype,a.util.computeStrides(i.shape),c,"avg");return r.makeTensorInfo(h.shape,"float32",h.values)}};var At={kernelName:a.AvgPool3DGrad,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.dy,o=t.input,s=n.filterSize,u=n.strides,d=n.pad,l=n.dimRoundingMode;p([i,o],"avgPool3DGrad");for(var c=a.backend_util.computePool3DInfo(o.shape,s,u,1,d,l),h=c.strideDepth,f=c.strideHeight,m=c.strideWidth,v=c.filterDepth,k=c.filterHeight,g=c.filterWidth,b=c.dilationDepth,I=c.dilationHeight,y=c.dilationWidth,S=c.effectiveFilterDepth,T=c.effectiveFilterHeight,N=c.effectiveFilterWidth,x=S-1-c.padInfo.front,F=N-1-c.padInfo.left,w=T-1-c.padInfo.top,M=a.buffer(o.shape,"float32"),A=1/(v*k*g),D=r.bufferSync(i),E=0;E=c.outDepth||Math.floor(V)!==V))for(var G=0;G=c.outHeight||Math.floor(L)!==L))for(var q=0;q=c.outWidth||Math.floor(U)!==U))O+=D.get(E,V,L,U,_)}}}M.set(O*A,E,z,R,W,_)}return r.makeTensorInfo(M.shape,M.dtype,M.values)}};var Dt={kernelName:a.AvgPoolGrad,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.dy,o=t.input,s=o;p([i,o],"avgPoolGrad");for(var u=n.filterSize,d=n.strides,l=n.pad,c=a.backend_util.computePool2DInfo(s.shape,u,d,1,l),h=c.strideHeight,f=c.strideWidth,m=c.filterHeight,v=c.filterWidth,k=c.dilationHeight,g=c.dilationWidth,b=c.effectiveFilterHeight,I=c.effectiveFilterWidth,y=I-1-c.padInfo.left,S=b-1-c.padInfo.top,T=a.buffer(s.shape,"float32"),N=1/(m*v),x=r.data.get(i.dataId).values,F=a.buffer(i.shape,"float32",x),w=0;w=c.outHeight||Math.floor(W)!==W))for(var P=0;P=c.outWidth||Math.floor(C)!==C))z+=F.get(w,W,C,M)}}T.set(z*N,w,A,D,M)}return r.makeTensorInfo(T.shape,T.dtype,T.values)}};var Et={kernelName:a.FusedBatchNorm,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x,o=t.scale,s=t.offset,u=t.mean,d=t.variance;a.util.assert(u.shape.length===d.shape.length,(function(){return"Batch normalization gradient requires mean and variance to have equal ranks."})),a.util.assert(null==s||u.shape.length===s.shape.length,(function(){return"Batch normalization gradient requires mean and offset to have equal ranks."})),a.util.assert(null==o||u.shape.length===o.shape.length,(function(){return"Batch normalization gradient requires mean and scale to have equal ranks."})),p([i,u,d,o,s],"batchNorm");var l=n.varianceEpsilon;null==l&&(l=.001);for(var c=r.data.get(i.dataId).values,h=r.data.get(u.dataId).values,f=r.data.get(d.dataId).values,m=o?r.data.get(o.dataId).values:new Float32Array([1]),v=s?r.data.get(s.dataId).values:new Float32Array([0]),k=new Float32Array(c.length),g=v.length,b=m.length,I=f.length,y=h.length,S=0,T=0,N=0,x=0,F=0;F=g&&(S=0),T>=y&&(T=0),N>=b&&(N=0),x>=I&&(x=0);return r.makeTensorInfo(i.shape,i.dtype,k)}};var _t={kernelName:a.BatchToSpaceND,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x,o=n.blockShape,s=n.crops;p([i],"batchToSpaceND");var u=o.reduce((function(e,a){return e*a})),d=a.backend_util.getReshaped(i.shape,o,u),l=a.backend_util.getPermuted(d.length,o.length),c=a.backend_util.getReshapedPermuted(i.shape,o,u),h=a.backend_util.getSliceBeginCoords(s,o.length),f=a.backend_util.getSliceSize(c,s,o.length),m=$a({inputs:{x:i},backend:r,attrs:{shape:d}}),v=Ve({inputs:{x:m},backend:r,attrs:{perm:l}}),k=$a({inputs:{x:v},backend:r,attrs:{shape:c}}),g=pa({inputs:{x:k},backend:r,attrs:{begin:h,size:f}});return r.disposeIntermediateTensorInfo(m),r.disposeIntermediateTensorInfo(v),r.disposeIntermediateTensorInfo(k),g}};var zt={kernelName:a.Bincount,backendName:"cpu",kernelFunc:function(e){var a=e.inputs,t=e.backend,r=e.attrs,n=a.x,i=a.weights,o=r.size,s=z(t.data.get(n.dataId).values,t.data.get(i.dataId).values,i.dtype,i.shape,o);return t.makeTensorInfo([o],i.dtype,s)}};var Rt={kernelName:a.BroadcastArgs,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=t.s0,i=t.s1,o=r.data.get(n.dataId).values,s=r.data.get(i.dataId).values,u=a.backend_util.assertAndGetBroadcastShape(Array.from(o),Array.from(s));return r.makeTensorInfo([u.length],"int32",Int32Array.from(u))}},Wt=O(a.ClipByValue,(function(e,a){var t=a;return e>t.clipValueMax?t.clipValueMax:e0}));if(1===u.length)return I({inputs:{x:u[0]},backend:r});if("complex64"===u[0].dtype){var d=u.map((function(e){return S({inputs:{input:e},backend:r})})),l=u.map((function(e){return Ht({inputs:{input:e},backend:r})})),p=Bt({inputs:d,backend:r,attrs:{axis:i}}),c=Bt({inputs:l,backend:r,attrs:{axis:i}}),h=k({inputs:{real:p,imag:c},backend:r});return d.forEach((function(e){return r.disposeIntermediateTensorInfo(e)})),l.forEach((function(e){return r.disposeIntermediateTensorInfo(e)})),r.disposeIntermediateTensorInfo(p),r.disposeIntermediateTensorInfo(c),h}var f=u.map((function(e){var t=a.util.sizeFromShape(e.shape.slice(i));return $a({inputs:{x:e},backend:r,attrs:{shape:[-1,t]}})})),m=f.map((function(e){return{vals:r.data.get(e.dataId).values,shape:e.shape}}));s=a.backend_util.computeOutShape(f.map((function(e){return e.shape})),1);var v=1===f[0].shape[0],g=q(m,s,t[0].dtype,v),b=a.backend_util.computeOutShape(u.map((function(e){return e.shape})),i),y=r.makeTensorInfo(b,t[0].dtype,g);return f.forEach((function(e){return r.disposeIntermediateTensorInfo(e)})),y}var Vt={kernelName:a.Concat,backendName:"cpu",kernelFunc:Bt};function Gt(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x,o=t.filter,s=n.strides,u=n.pad,d=n.dataFormat,l=n.dilations,c=n.dimRoundingMode;p([i,o],"conv2d");for(var h=a.backend_util.convertConv2DDataFormat(d),f=a.backend_util.computeConv2DInfo(i.shape,o.shape,s,l,u,c,!1,h),m=f.filterHeight,v=f.filterWidth,k=f.dilationHeight,g=f.dilationWidth,b=f.padInfo.left,I=f.padInfo.top,y="channelsLast"===f.dataFormat,S=new a.TensorBuffer(f.outShape,i.dtype),T=a.util.computeStrides(i.shape),N=a.util.computeStrides(o.shape),x=T[0],F=y?T[1]:T[2],w=y?T[2]:1,M=y?1:T[1],A=S.strides[0],D=y?S.strides[1]:S.strides[2],E=y?S.strides[2]:1,_=y?1:S.strides[1],z=r.data.get(i.dataId).values,R=r.data.get(o.dataId).values,W=S.values,P=0;P=f.inHeight))for(var q=G*N[0],U=C+L*F,Z=0;Z=f.inWidth))for(var Q=U+J*w,X=q+Y*N[1],$=0;$=l.inDepth))for(var P=R*w[0],C=A+W*F[1],H=0;H=l.inHeight))for(var L=P+V*w[1],q=C+G*F[2],U=0;U=l.inWidth))for(var J=L+K*w[2],Q=q+Y*l.inChannels,X=J,$=0;$=h))for(var R=b>1?(E-A)*(f-1)/(b-1):0,W=I>1?(_-D)*(m-1)/(I-1):0,P=0;P1?A*(f-1)+P*R:.5*(A+E)*(f-1);if(C<0||C>f-1)for(var H=0;H1?D*(m-1)+H*W:.5*(D+_)*(m-1))<0||X>m-1)for(O=0;O1?D*(m-1)+H*W:.5*(D+_)*(m-1))<0||X>m-1)for(O=0;O=m.inHeight))for(var P=R*h[0],C=A+W*c[1],H=0;H=m.inWidth))for(var L=P+V*h[1],q=C+G*m.inChannels,U=O,Z=L,j=0;j=0&&V=0&&LO&&(O=Z)}}}_[a.util.locToIndex([z,R,P,H],E,a.util.computeStrides(A))]=O}return{dataId:l.write(a.util.toTypedArray(_,i.dtype),A,i.dtype),shape:A,dtype:i.dtype}}},lr={kernelName:a.Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x,o=t.filter,s=t.dy,u=n.strides,d=n.pad,l=n.dilations,p=r,c=a.util.toNestedArray(i.shape,p.data.get(i.dataId).values),h=a.util.toNestedArray(o.shape,p.data.get(o.dataId).values),f=a.backend_util.computeDilation2DInfo(i.shape,o.shape,u,d,"NHWC",l),m=f.batchSize,v=f.inHeight,k=f.inWidth,g=f.inChannels,b=f.outHeight,I=f.outWidth,y=f.padInfo,S=f.strideHeight,T=f.strideWidth,N=f.filterHeight,x=f.filterWidth,F=f.dilationHeight,w=f.dilationWidth,M=f.outShape;a.util.assert(s.rank===M.length,(function(){return"Error in ".concat(a.Dilation2DBackpropFilter,", dy ")+"must have the same rank as output ".concat(M.length,", but got ")+"".concat(s.rank)}));for(var A=a.util.toNestedArray(M,p.data.get(s.dataId).values),D=a.util.makeZerosNestedTypedArray(o.shape,o.dtype),E=0;E=0&&V=0&&LC&&(C=q,H=B,O=G)}}}D[H][O][P]+=A[E][_][R][P]}return{dataId:p.write(a.util.toTypedArray(D,i.dtype),o.shape,o.dtype),shape:o.shape,dtype:o.dtype}}},pr={kernelName:a.Dilation2DBackpropInput,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x,o=t.filter,s=t.dy,u=n.strides,d=n.pad,l=n.dilations,p=r,c=a.util.toNestedArray(i.shape,p.data.get(i.dataId).values),h=a.util.toNestedArray(o.shape,p.data.get(o.dataId).values),f=a.backend_util.computeDilation2DInfo(i.shape,o.shape,u,d,"NHWC",l),m=f.batchSize,v=f.inHeight,k=f.inWidth,g=f.inChannels,b=f.outHeight,I=f.outWidth,y=f.padInfo,S=f.strideHeight,T=f.strideWidth,N=f.filterHeight,x=f.filterWidth,F=f.dilationHeight,w=f.dilationWidth,M=f.outShape;a.util.assert(s.rank===M.length,(function(){return"Error in ".concat(a.Dilation2DBackpropInput,", dy ")+"must have the same rank as output ".concat(M.length,", but got ")+"".concat(s.rank)}));for(var A=a.util.toNestedArray(M,p.data.get(s.dataId).values),D=a.util.makeZerosNestedTypedArray(i.shape,i.dtype),E=0;E=0&&V=0&&LC&&(C=q,H=V,O=L)}}}D[E][H][O][P]+=A[E][_][R][P]}return{dataId:p.write(a.util.toTypedArray(D,i.dtype),i.shape,i.dtype),shape:i.shape,dtype:i.dtype}}};var cr={kernelName:a.Draw,backendName:"cpu",kernelFunc:function(e){var a=e.inputs,t=e.backend,r=e.attrs,n=a.image,i=r.canvas,o=r.options||{},s=o.contextOptions,u=o.imageOptions,l=(null==u?void 0:u.alpha)||1,p=(null==s?void 0:s.contextType)||"2d";if("2d"!==p)throw new Error("Context type ".concat(s.contextType," is not supported by the CPU backend."));var c=i.getContext(p,(null==s?void 0:s.contextAttributes)||{});if(null==c)throw new Error("Could not get the context with ".concat(p," type."));for(var h=d(n.shape.slice(0,2),2),f=h[0],m=h[1],v=2===n.shape.length?1:n.shape[2],k=t.data.get(n.dataId).values,g="float32"===n.dtype?255:1,b=new Uint8ClampedArray(m*f*4),I=0;I1)throw new Error("Tensor values for a float32 Tensor must be in the "+"range [0 - 1] but encountered ".concat(T,"."))}else if("int32"===n.dtype&&(T<0||T>255))throw new Error("Tensor values for a int32 Tensor must be in the "+"range [0 - 255] but encountered ".concat(T,"."));1===v?(y[0]=T*g,y[1]=T*g,y[2]=T*g):y[S]=T*g}var N=4*I;b[N+0]=Math.round(y[0]),b[N+1]=Math.round(y[1]),b[N+2]=Math.round(y[2]),b[N+3]=Math.round(y[3])}i.width=m,i.height=f;var x=new ImageData(b,m,f);return c.putImageData(x,0,0),n}};function hr(e){var t,r=e.inputs,n=e.backend,i=e.attrs,o=r.x,s=i.axis,u=i.keepDims;p(o,"sum");var l=(t="bool"===o.dtype?x({inputs:{x:o},backend:n,attrs:{dtype:"int32"}}):I({inputs:{x:o},backend:n})).shape.length,c=a.util.parseAxisParam(s,t.shape),h=a.backend_util.getAxesPermutation(c,l),f=c,m=t;null!=h&&(m=Ve({inputs:{x:t},backend:n,attrs:{perm:h}}),f=a.backend_util.getInnerMostAxes(f.length,l)),a.backend_util.assertAxesAreInnerMostDims("sum",f,m.shape.length);for(var v=d(a.backend_util.computeOutAndReduceShapes(m.shape,f),2),k=v[0],g=v[1],y=b(n,k,a.backend_util.upcastType(m.dtype,"int32")),S=a.util.sizeFromShape(g),T=n.data.get(y.dataId).values,N=n.data.get(m.dataId).values,F=0;F=0&&(b=hr({inputs:{x:b},backend:s,attrs:{axis:v[S]-(c.length-I),keepDims:!1}}),y.push(b)),I--)}try{for(var _=u(y),z=_.next();!z.done;z=_.next()){var R=z.value;R!==b&&s.disposeIntermediateTensorInfo(R)}}catch(e){n={error:e}}finally{try{z&&!z.done&&(i=_.return)&&i.call(_)}finally{if(n)throw n.error}}return b}};var vr={kernelName:a.EluGrad,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=t.dy,i=t.y;p([n,i],"eluGrad");for(var o=new Float32Array(a.util.sizeFromShape(i.shape)),s=r.data.get(i.dataId).values,u=r.data.get(n.dataId).values,d=0;d=0?u[d]:u[d]*(l+1)}return r.makeTensorInfo(i.shape,"float32",o)}},kr=a.backend_util.ERF_P,gr=a.backend_util.ERF_A1,br=a.backend_util.ERF_A2,Ir=a.backend_util.ERF_A3,yr=a.backend_util.ERF_A4,Sr=a.backend_util.ERF_A5,Tr=O(a.Erf,(function(e){var a=Math.sign(e),t=Math.abs(e),r=1/(1+kr*t);return a*(1-((((Sr*r+yr)*r+Ir)*r+br)*r+gr)*r*Math.exp(-t*t))})),Nr={kernelName:a.Erf,backendName:"cpu",kernelFunc:Tr};function xr(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.input,o=n.dim,s=i.shape.length,u=i.shape.slice(),d=o;return o<0&&(a.util.assert(-(s+1)<=o,(function(){return"Axis must be in the interval [".concat(-(s+1),", ").concat(s,"]")})),d=s+o+1),u.splice(d,0,1),$a({inputs:{x:i},backend:r,attrs:{shape:u}})}var Fr={kernelName:a.ExpandDims,backendName:"cpu",kernelFunc:xr},wr=v((function(e,a){return e/a})),Mr=w(a.RealDiv,wr),Ar={kernelName:a.RealDiv,backendName:"cpu",kernelFunc:Mr};function Dr(e,t,r){for(var n=e.shape,i=n[0],o=n[1],s=r.data.get(e.dataId),u=s.complexTensorInfos.real,d=s.complexTensorInfos.imag,l=[i,o],p=a.util.sizeFromShape(l),c=a.util.getTypedArrayFromDType("float32",p),h=a.util.getTypedArrayFromDType("float32",p),f=0;f=0&&y=0,(function(){return"GatherV2: the index value ".concat(t," is not in [0, ").concat(c-1,"]")}))},f=0;f=D&&(D=H,E=z*p*c+W*p+C)}r.set(E,v,g,S,F,k)}}}return r}(r.bufferSync(o),c),f=c.strideDepth,m=c.strideHeight,v=c.strideWidth,k=c.dilationDepth,g=c.dilationHeight,b=c.dilationWidth,I=c.effectiveFilterDepth,y=c.effectiveFilterHeight,S=c.effectiveFilterWidth,T=I-1-c.padInfo.front,N=S-1-c.padInfo.left,x=y-1-c.padInfo.top,F=a.buffer(o.shape,"float32"),w=r.bufferSync(i),M=0;M=c.outDepth||Math.floor(H)!==H))for(var O=0;O=c.outHeight||Math.floor(B)!==B))for(var V=0;V=c.outWidth||Math.floor(G)!==G)){var L=I*y*S-1-h.get(M,H,B,G,A)===C*y*S+O*S+V?1:0;if(0!==L)P+=w.get(M,H,B,G,A)*L}}}}F.set(P,M,D,E,_,A)}return r.makeTensorInfo(F.shape,F.dtype,F.values)}};var hn={kernelName:a.MaxPoolGrad,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.dy,o=t.input,s=o;p([o,t.output],"maxPoolGrad");for(var u=n.filterSize,d=n.strides,l=n.pad,c=n.dimRoundingMode,h=a.backend_util.computePool2DInfo(s.shape,u,d,1,l,c),f=r.data.get(s.dataId).values,m=a.buffer(h.outShape,s.dtype,xt(f,s.shape,s.dtype,h).values),v=h.strideHeight,k=h.strideWidth,g=h.dilationHeight,b=h.dilationWidth,I=h.effectiveFilterHeight,y=h.effectiveFilterWidth,S=y-1-h.padInfo.left,T=I-1-h.padInfo.top,N=a.buffer(s.shape,"float32"),x=r.data.get(i.dataId).values,F=a.buffer(i.shape,"float32",x),w=0;w=h.outHeight||Math.floor(W)!==W))for(var P=0;P=h.outWidth||Math.floor(C)!==C)){var H=I*y-1-m.get(w,W,C,M)===R*y+P?1:0;if(0!==H)z+=F.get(w,W,C,M)*H}}}N.set(z,w,A,D,M)}return r.makeTensorInfo(N.shape,N.dtype,N.values)}};var fn={kernelName:a.MaxPoolWithArgmax,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.attrs,n=e.backend,i=t.x,o=r.filterSize,s=r.strides,u=r.pad,l=r.includeBatchInIndex,c=n;p(i,"MaxPoolWithArgmax");var h=c.data.get(i.dataId).values,f=a.backend_util.computePool2DInfo(i.shape,o,s,[1,1],u),m=d(function(e,t,r,n,i){var o=Nt(e,0,r,a.util.computeStrides(t),i,"max"),s=xt(e,t,r,i,!0,n);return[o.values,s.values]}(h,i.shape,i.dtype,l,f),2),v=m[0],k=m[1],g=c.write(v,f.outShape,i.dtype),b=c.write(k,f.outShape,i.dtype);return[{dataId:g,shape:f.outShape,dtype:i.dtype},{dataId:b,shape:f.outShape,dtype:"int32"}]}};var mn={kernelName:a.Mean,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x,o=n.axis,s=n.keepDims,u=a.util.parseAxisParam(o,i.shape),d=a.backend_util.computeOutAndReduceShapes(i.shape,u)[1],l=a.util.sizeFromShape(d),p=[],c=r.makeTensorInfo([],"float32",new Float32Array([l]));p.push(c);var h=x({inputs:{x:i},backend:r,attrs:{dtype:"float32"}});p.push(h);var f=Mr({inputs:{a:h,b:c},backend:r});p.push(f);var m=hr({inputs:{x:f},backend:r,attrs:{axis:o,keepDims:s}});return p.forEach((function(e){return r.disposeIntermediateTensorInfo(e)})),m}};var vn={kernelName:a.Min,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x,o=n.axis,s=n.keepDims;p(i,"min");var u=a.util.parseAxisParam(o,i.shape),l=u,c=a.backend_util.getAxesPermutation(l,i.shape.length),h=i;null!=c&&(h=Ve({inputs:{x:i},backend:r,attrs:{perm:c}}),l=a.backend_util.getInnerMostAxes(l.length,i.shape.length)),a.backend_util.assertAxesAreInnerMostDims("min",l,h.shape.length);for(var f=d(a.backend_util.computeOutAndReduceShapes(h.shape,l),2),m=f[0],v=f[1],k=a.util.sizeFromShape(v),g=a.util.makeZerosTypedArray(a.util.sizeFromShape(m),h.dtype),b=r.data.get(h.dataId).values,I=0;I=l[S]&&(y[S]=2*(l[S]-1)-y[S]+c);y=y.map((function(e,a){return e-d[a]}));var T=a.util.locToIndex(y,f,m);b[I]=h[T]}return{dataId:r.write(b,u,i.dtype),shape:u,dtype:i.dtype}}},gn=v((function(e,a){var t=e%a;return e<0&&a<0||e>=0&&a>=0?t:(t+a)%a})),bn=w(a.Mod,gn),In={kernelName:a.Mod,backendName:"cpu",kernelFunc:bn};function yn(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.logits,o=n.dim,s=i.shape.length,u=o;if(-1===u&&(u=s-1),u!==s-1)throw Error("Softmax along a non-last dimension is not yet supported. "+"Logits was rank ".concat(s," and dim was ").concat(u));var d=a.util.parseAxisParam([u],i.shape),l=un({inputs:{x:i},backend:r,attrs:{reductionIndices:d,keepDims:!1}}),p=a.backend_util.expandShapeToKeepDim(l.shape,d),c=$a({inputs:{x:l},backend:r,attrs:{shape:p}}),h=za({inputs:{a:i,b:c},backend:r}),f=Y({inputs:{x:h},backend:r}),m=hr({inputs:{x:f},backend:r,attrs:{axis:d,keepDims:!1}}),v=$a({inputs:{x:m},backend:r,attrs:{shape:p}}),k=Mr({inputs:{a:f,b:v},backend:r});return r.disposeIntermediateTensorInfo(l),r.disposeIntermediateTensorInfo(c),r.disposeIntermediateTensorInfo(h),r.disposeIntermediateTensorInfo(f),r.disposeIntermediateTensorInfo(m),r.disposeIntermediateTensorInfo(v),k}var Sn={kernelName:a.Softmax,backendName:"cpu",kernelFunc:yn};var Tn={kernelName:a.Multinomial,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,i=e.attrs,o=t.logits,s=i.numSamples,u=i.seed,d=i.normalized;p(o,"multinomial");for(var l=d?o:yn({inputs:{logits:o},backend:r,attrs:{dim:-1}}),c=l.shape[0],h=l.shape[1],f=r.data.get(l.dataId).values,m=[c,s],v=a.util.makeZerosTypedArray(a.util.sizeFromShape(m),"int32"),k=0;k=0&&m[v]1?k-1:k,o&&f>1?g-1:g],T=[o&&h>1?h-1:h,o&&f>1?f-1:f],N=0,x=S[0]/T[0],F=S[1]/T[1],w=0;w1?h-1:h,s&&g>1?f-1:f],y=[s&&k>1?k-1:k,s&&g>1?g-1:g],S=I[0]/y[0],T=I[1]/y[1],N=r.data.get(o.dataId).values,x=0,F=0;F1?k-1:k,o&&f>1?g-1:g],T=[o&&h>1?h-1:h,o&&f>1?f-1:f],N=S[0]/T[0],x=S[1]/T[1],F=0,w=0;w1?f-1:f,s&&b>1?m-1:m],T=[s&&g>1?g-1:g,s&&b>1?b-1:b],N=S[0]/T[0],x=S[1]/T[1],F=1/N,w=1/x,M=2*Math.ceil(F)+2,A=2*Math.ceil(w)+2,D=0;D=g)){var q=E+L*l[1],U=L*N;if(_===Math.min(f-1,s?Math.round(U):Math.floor(U)))for(var Z=0;Z=b)){var K=q+j*l[2],Y=j*x;P===Math.min(m-1,s?Math.round(Y):Math.floor(Y))&&(V+=y[K+B])}}}}I[C+B]=V}return r.makeTensorInfo(i.shape,i.dtype,I)}};var Jn={kernelName:a.Reverse,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x,o=n.dims;p(i,"reverse");var s=i.shape.length,u=a.util.parseAxisParam(o,i.shape);if(0===s)return I({inputs:{x:i},backend:r});for(var c=new a.TensorBuffer(i.shape,i.dtype),h=r.bufferSync(i),f=function(e){var a=c.indexToLoc(e),t=a.slice();u.forEach((function(e){return t[e]=i.shape[e]-1-t[e]})),c.set.apply(c,l([h.get.apply(h,l([],d(t),!1))],d(a),!1))},m=0;m=0&&z=0&&R.5?Math.ceil(e):a%2==0?a:a+1})),$n={kernelName:a.Round,backendName:"cpu",kernelFunc:Xn};var ei={kernelName:a.ScatterNd,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.indices,o=t.updates,s=n.shape,u=a.backend_util.calculateShapes(o,i,s),d=u.sliceRank,l=u.numUpdates,p=u.sliceSize,c=u.strides,h=u.outputSize,f=oa(r.bufferSync(i),r.bufferSync(o),s,h,p,l,d,c,0,!0);return r.makeTensorInfo(s,f.dtype,f.values)}};function ai(e,a){for(var t=0,r=e.length,n=0;t1||1===i.shape.length?1:a.util.sizeFromShape(i.shape.slice(1)),v=0;v=0?oi*e:ii*(Math.exp(e)-1)})),ui={kernelName:a.Selu,backendName:"cpu",kernelFunc:si},di=O(a.Sign,(function(e){return e<0?-1:e>0?1:0})),li={kernelName:a.Sign,backendName:"cpu",kernelFunc:di},pi=O(a.Sin,(function(e){return Math.sin(e)})),ci={kernelName:a.Sin,backendName:"cpu",kernelFunc:pi},hi=O(a.Sinh,(function(e){return Math.sinh(e)})),fi={kernelName:a.Sinh,backendName:"cpu",kernelFunc:hi},mi=Math.log(1.1920928955078125e-7)+2,vi=O(a.Softplus,(function(e){var a=e>-mi,t=e0?1:t.alpha})),wi={kernelName:a.Step,backendName:"cpu",kernelFunc:Fi};var Mi={kernelName:a.StridedSlice,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=e.attrs,i=t.x,o=n.begin,s=n.end,u=n.strides,d=n.beginMask,l=n.endMask,c=n.ellipsisMask,h=n.newAxisMask,f=n.shrinkAxisMask;p(i,"stridedSlice");var m,v=a.slice_util.sliceInfo(i.shape,o,s,u,d,l,c,h,f),k=v.finalShapeSparse,g=v.finalShape,b=v.isIdentity,I=v.sliceDim0,y=v.isSimpleSlice,S=v.begin,T=v.end,N=v.strides;if(b)m=$a({inputs:{x:i},backend:r,attrs:{shape:g}});else if(I||y){a.util.assert(i.shape.length>=1,(function(){return"Input must have rank at least 1, got: ".concat(i.shape.length)}));var x=a.slice_util.computeOutShape(S,T,N),F=pa({inputs:{x:i},backend:r,attrs:{begin:S,size:x}});m=$a({inputs:{x:F},backend:r,attrs:{shape:g}}),r.disposeIntermediateTensorInfo(F)}else{var w=xa(k,r.bufferSync(i),N,S);m=r.makeTensorInfo(g,w.dtype,w.values)}return m}};var Ai={kernelName:a.StringNGrams,backendName:"cpu",kernelFunc:function(e){var a=e.inputs,t=e.backend,r=e.attrs,n=r.separator,i=r.nGramWidths,o=r.leftPad,s=r.rightPad,u=r.padWidth,l=r.preserveShortSequences,p=a.data,c=a.dataSplits,h=d(wa(t.data.get(p.dataId).values,t.data.get(c.dataId).values,n,i,o,s,u,l),2),f=h[0],m=h[1];return[t.makeTensorInfo([f.length],"string",f),t.makeTensorInfo(c.shape,"int32",m)]}};var Di={kernelName:a.StringSplit,backendName:"cpu",kernelFunc:function(e){var a=e.inputs,t=e.backend,r=e.attrs.skipEmpty,n=a.input,i=a.delimiter;if("string"!==n.dtype)throw new Error("Input must be of datatype string");if(1!==n.shape.length)throw new Error("Input must be a vector, got shape: ".concat(n.shape));if(0!==i.shape.length)throw new Error("Delimiter must be a scalar, got shape: ".concat(i.shape));var o=d(Aa(t.data.get(n.dataId).values,t.data.get(i.dataId).values[0],r),3),s=o[0],u=o[1],l=o[2],p=u.length;return[t.makeTensorInfo([p,2],"int32",s),t.makeTensorInfo([p],"string",u),t.makeTensorInfo([2],"int32",new Int32Array(l))]}};var Ei={kernelName:a.StringToHashBucketFast,backendName:"cpu",kernelFunc:function(e){var a=e.inputs,t=e.backend,r=e.attrs.numBuckets,n=a.input;if("string"!==n.dtype)throw new Error("Input must be of datatype string");if(r<=0)throw new Error("Number of buckets must be at least 1");var i=Da(t.data.get(n.dataId).values,r);return t.makeTensorInfo(n.shape,"int32",i)}},_i=O(a.Tan,(function(e){return Math.tan(e)})),zi={kernelName:a.Tan,backendName:"cpu",kernelFunc:_i},Ri=O(a.Tanh,(function(e){return Math.tanh(e)})),Wi={kernelName:a.Tanh,backendName:"cpu",kernelFunc:Ri};var Pi={kernelName:a.TensorScatterUpdate,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.backend,n=t.tensor,i=t.indices,o=t.updates,s=a.backend_util.calculateShapes(o,i,n.shape),u=s.sliceRank,d=s.numUpdates,l=s.sliceSize,p=s.strides,c=s.outputSize,h=r.bufferSync(i),f=r.bufferSync(o),m=r.bufferSync(n),v=oa(h,f,n.shape,c,l,d,u,p,m,!1);return r.makeTensorInfo(n.shape,v.dtype,v.values)}};var Ci={kernelName:a.Tile,backendName:"cpu",kernelFunc:function(e){var a=e.inputs,t=e.backend,r=e.attrs,n=a.x,i=r.reps;p(n,"tile");var o=Wa(t.bufferSync(n),i);return t.makeTensorInfo(o.shape,o.dtype,o.values)}};var Hi={kernelName:a.TopK,backendName:"cpu",kernelFunc:function(e){var a=e.inputs,t=e.backend,r=e.attrs,n=a.x,i=r.k,o=r.sorted;p(n,"topk");var s=d(Ha(t.data.get(n.dataId).values,n.shape,n.dtype,i,o),2),u=s[0],l=s[1];return[t.makeTensorInfo(u.shape,u.dtype,u.values),t.makeTensorInfo(l.shape,l.dtype,l.values)]}};var Oi={kernelName:a.Transform,backendName:"cpu",kernelFunc:function(e){var t=e.inputs,r=e.attrs,n=e.backend,i=t.image,o=t.transforms,s=r.interpolation,u=r.fillMode,l=r.fillValue,p=r.outputShape,c=d(i.shape,4),h=c[0],f=c[1],m=c[2],v=c[3],k=d(null!=p?p:[f,m],2),g=k[0],b=k[1],I=[h,g,b,v],y=a.util.computeStrides(i.shape),S=y[0],T=y[1],N=y[2],x=a.util.computeStrides(I),F=x[0],w=x[1],M=x[2],A=a.util.getTypedArrayFromDType(i.dtype,a.util.sizeFromShape(I));A.fill(l);for(var D=n.data.get(i.dataId).values,E=n.data.get(o.dataId).values,_=0;_t-1){var n;if(t<=1)r=0;else(r-=(n=2*t)*Math.trunc(r/n))>=t&&(r=n-r-1)}return a.util.clamp(0,r,t-1)}(e,t);case"wrap":return function(e,t){var r=e;if(r<0)if(t<=1)r=0;else{var n=t-1;r+=t*(Math.trunc(-r/n)+1)}else if(r>t-1)if(t<=1)r=0;else{n=t-1;r-=t*Math.trunc(r/n)}return a.util.clamp(0,r,t-1)}(e,t);case"nearest":return function(e,t){return a.util.clamp(0,e,t-1)}(e,t);default:return function(e,a){return e}(e)}}function Vi(e,a,t,r,n,i,o,s,u,d,l){return 0<=s&&s