You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
NewEduCoderBuild/p__Classrooms__Lists__Exerc...

3814 lines
851 KiB

(self.webpackChunk=self.webpackChunk||[]).push([[1512],{40001:function(Qt,$e,H){"use strict";H.d($e,{Z:function(){return M}});var D=H(54476),Te=H(59301),ce={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"}}]},name:"check",theme:"outlined"},Be=ce,we=H(7657),$=function(Y,de){return Te.createElement(we.Z,(0,D.Z)({},Y,{ref:de,icon:Be}))},ne=Te.forwardRef($),M=ne},50826:function(Qt,$e,H){"use strict";H.r($e),H.d($e,{default:function(){return TA}});var D=H(59301),Te=H(65582),ce=H(31797),Be=H(45413),we=H(8591),$=H(3113),ne=H(95237),M=H(43604),K=H(43418),Y={flex_box_center:"flex_box_center___uIDcP",flex_space_between:"flex_space_between___l5roZ",flex_box_vertical_center:"flex_box_vertical_center___mj8nW",flex_box_center_end:"flex_box_center_end___v4Eig",flex_box_column:"flex_box_column___SQn0H",bg:"bg___H5S8d",steps:"steps___mrlSw",qrcode:"qrcode___xRSbG"},de=H(65862),ve=H(87513),ae=H(15845),Ee=H.n(ae),ge=H(97671),_e=H(19208).lW;var Et=function(r,t){return(Et=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)n.hasOwnProperty(o)&&(e[o]=n[o])})(r,t)};function Pe(r,t){function e(){this.constructor=r}Et(r,t),r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function be(r,t,e,n){return new(e||(e=Promise))(function(o,i){function a(c){try{u(n.next(c))}catch(l){i(l)}}function s(c){try{u(n.throw(c))}catch(l){i(l)}}function u(c){c.done?o(c.value):new e(function(l){l(c.value)}).then(a,s)}u((n=n.apply(r,t||[])).next())})}function Se(r,t){var e,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function s(u){return function(c){return function(l){if(e)throw new TypeError("Generator is already executing.");for(;a;)try{if(e=1,n&&(o=2&l[0]?n.return:l[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,l[1])).done)return o;switch(n=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,n=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(l[0]===6||l[0]===2)){a=0;continue}if(l[0]===3&&(!o||l[1]>o[0]&&l[1]<o[3])){a.label=l[1];break}if(l[0]===6&&a.label<o[1]){a.label=o[1],o=l;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(l);break}o[2]&&a.ops.pop(),a.trys.pop();continue}l=t.call(r,a)}catch(f){l=[6,f],n=0}finally{e=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([u,c])}}}var St=function(){function r(t){this.global=t,this.flags={},this.flagRegistry={},this.urlFlags={},this.populateURLFlags()}return r.prototype.setPlatform=function(t,e){this.platform!=null&&console.warn("Platform "+this.platformName+" has already been set. Overwriting the platform with "+e+"."),this.platformName=t,this.platform=e},r.prototype.registerFlag=function(t,e,n){if(this.flagRegistry[t]={evaluationFn:e,setHook:n},this.urlFlags[t]!=null){var o=this.urlFlags[t];console.warn("Setting feature override from URL "+t+": "+o+"."),this.set(t,o)}},r.prototype.get=function(t){return t in this.flags?this.flags[t]:(this.flags[t]=this.evaluateFlag(t),this.flags[t])},r.prototype.getNumber=function(t){return this.get(t)},r.prototype.getBool=function(t){return this.get(t)},r.prototype.getFlags=function(){return this.flags},Object.defineProperty(r.prototype,"features",{get:function(){return this.flags},enumerable:!0,configurable:!0}),r.prototype.set=function(t,e){if(this.flagRegistry[t]==null)throw new Error("Cannot set flag "+t+" as it has not been registered.");this.flags[t]=e,this.flagRegistry[t].setHook!=null&&this.flagRegistry[t].setHook(e)},r.prototype.evaluateFlag=function(t){if(this.flagRegistry[t]==null)throw new Error("Cannot evaluate flag '"+t+"': no evaluation function found.");return this.flagRegistry[t].evaluationFn()},r.prototype.setFlags=function(t){this.flags=Object.assign({},t)},r.prototype.reset=function(){this.flags={},this.urlFlags={},this.populateURLFlags()},r.prototype.populateURLFlags=function(){var t=this;if(this.global!==void 0&&this.global.location!==void 0&&this.global.location.search!==void 0){var e,n,o=(e=this.global.location.search,n={},e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,function(i){for(var a=[],s=1;s<arguments.length;s++)a[s-1]=arguments[s];return cn(n,a[0],a[1]),a.join("=")}),n);"tfjsflags"in o&&o.tfjsflags.split(",").forEach(function(i){var a=i.split(":"),s=a[0],u=a[1];t.urlFlags[s]=function(c,l){if((l=l.toLowerCase())==="true"||l==="false")return l==="true";if(""+ +l===l)return+l;throw new Error("Could not parse value flag value "+l+" for flag "+c+".")}(s,u)})}},r}();function cn(r,t,e){r[decodeURIComponent(t)]=decodeURIComponent(e||"")}function J(){return Zt}var Zt=null,ct=new Map,rt=new Map;function Vt(r,t){var e=me(r,t);return ct.get(e)}function zt(r){return rt.get(r)}function Ut(r){for(var t=ct.entries(),e=[];;){var n=t.next(),o=n.done,i=n.value;if(o)break;var a=i[0],s=i[1];a.split("_")[0]===r&&e.push(s)}return e}function qt(r){var t=r.kernelName,e=r.backendName,n=me(t,e);if(ct.has(n))throw new Error("The kernel '"+t+"' for backend '"+e+"' is already registered");ct.set(n,r)}function Ht(r){var t=r.kernelName;rt.has(t)&&console.warn("Overriding the gradient for '"+t+"'"),rt.set(t,r)}function Ce(r,t){var e=me(r,t);if(!ct.has(e))throw new Error("The kernel '"+r+"' for backend '"+t+"' is not registered");ct.delete(e)}function re(r){if(!rt.has(r))throw new Error("The gradient '"+r+"' for backend is not registered");rt.delete(r)}function me(r,t){return t+"_"+r}function le(r){for(var t=r.length,e=0,n=0;t>0;)n=Math.random()*t|0,e=r[--t],r[t]=r[n],r[n]=e}function Me(r,t,e){return Math.max(r,Math.min(t,e))}function Qe(r){return r%2==0?r:r+1}function Ge(r){for(var t=0,e=0;e<r.length;e++)t+=r[e];return t}function B(r,t){if(!r)throw new Error(typeof t=="string"?t:t())}function Je(r,t,e){e===void 0&&(e=""),B(Ke(r,t),function(){return e+" Shapes "+r+" and "+t+" must match"})}function $t(r){B(r!=null,function(){return"The input to the tensor constructor must be a non-null value."})}function Rt(r,t,e){if(t===void 0&&(t=[]),e===void 0&&(e=!1),t==null&&(t=[]),Array.isArray(r)||I(r)&&!e)for(var n=0;n<r.length;++n)Rt(r[n],t,e);else t.push(r);return t}function Re(r){if(r.length===0)return 1;for(var t=r[0],e=1;e<r.length;e++)t*=r[e];return t}function Ke(r,t){if(r===t)return!0;if(r==null||t==null||r.length!==t.length)return!1;for(var e=0;e<r.length;e++)if(r[e]!==t[e])return!1;return!0}function Ue(r){return r%1==0}function Pt(r){if(Math.tanh!=null)return Math.tanh(r);if(r===1/0)return 1;if(r===-1/0)return-1;var t=Math.exp(2*r);return(t-1)/(t+1)}function Tt(r){var t=Math.ceil(Math.sqrt(r));return[t,Math.ceil(r/t)]}function At(r,t){return t<=r.length?r:r+" ".repeat(t-r.length)}function jt(r,t,e){return t===void 0&&(t=function(n){return 0}),new Promise(function(n,o){var i=0,a=function(){if(r())n();else{i++;var s=t(i);e!=null&&i>=e?o():setTimeout(a,s)}};a()})}function Kt(r,t){for(var e=1,n=-1,o=0;o<r.length;++o)if(r[o]>=0)e*=r[o];else if(r[o]===-1){if(n!==-1)throw Error("Shapes can only have 1 implicit size. Found -1 at dim "+n+" and dim "+o);n=o}else if(r[o]<0)throw Error("Shapes can not be < 0. Found "+r[o]+" at dim "+o);if(n===-1){if(t>0&&t!==e)throw Error("Size("+t+") must match the product of shape "+r);return r}if(e===0)throw Error("Cannot infer the missing size in ["+r+"] when there are 0 elements");if(t%e!=0)throw Error("The implicit shape can't be a fractional number. Got "+t+" / "+e);var i=r.slice();return i[n]=t/e,i}function Dt(r,t){var e=t.length;return B((r=r==null?t.map(function(n,o){return o}):[].concat(r)).every(function(n){return n>=-e&&n<e}),function(){return"All values in axis param must be in range [-"+e+", "+e+") but got axis "+r}),B(r.every(function(n){return Ue(n)}),function(){return"All values in axis param must be integers but got axis "+r}),r.map(function(n){return n<0?e+n:n})}function an(r,t){for(var e=[],n=[],o=t!=null&&Array.isArray(t)&&t.length===0,i=t==null||o?null:Dt(t,r).sort(),a=0,s=0;s<r.length;++s){if(i!=null){if(i[a]===s&&r[s]!==1)throw new Error("Can't squeeze axis "+s+" since its dim '"+r[s]+"' is not 1");(i[a]==null||i[a]>s)&&r[s]===1&&(e.push(r[s]),n.push(s)),i[a]<=s&&a++}r[s]!==1&&(e.push(r[s]),n.push(s))}return{newShape:e,keptDims:n}}function T(r,t){var e=null;if(r==null||r==="float32")e=new Float32Array(t);else if(r==="int32")e=new Int32Array(t);else{if(r!=="bool")throw new Error("Unknown data type "+r);e=new Uint8Array(t)}return e}function y(r,t){var e=null;if(r==null||r==="float32")e=new Float32Array(t);else if(r==="int32")e=new Int32Array(t);else if(r==="bool")e=new Uint8Array(t);else{if(r!=="string")throw new Error("Unknown data type "+r);e=new Array(t)}return e}function A(r,t){for(var e=0;e<r.length;e++){var n=r[e];if(isNaN(n)||!isFinite(n))throw Error("A tensor of type "+t+" being uploaded contains "+n+".")}}function R(r){return r==="bool"||r==="complex64"||r==="float32"||r==="int32"||r==="string"}function x(r,t){return t!=="complex64"&&(t!=="float32"||r==="complex64")&&(t!=="int32"||r==="float32"||r==="complex64")&&(t!=="bool"||r!=="bool")}function I(r){return r instanceof Float32Array||r instanceof Int32Array||r instanceof Uint8Array}function L(r){if(r==="float32"||r==="int32")return 4;if(r==="complex64")return 8;if(r==="bool")return 1;throw new Error("Unknown dtype "+r)}function G(r){if(r==null)return 0;var t=0;return r.forEach(function(e){return t+=e.length}),t}function ie(r){return typeof r=="string"||r instanceof String}function ye(r){return typeof r=="boolean"}function Ae(r){return typeof r=="number"}function ze(r){return Array.isArray(r)?ze(r[0]):r instanceof Float32Array?"float32":r instanceof Int32Array||r instanceof Uint8Array?"int32":Ae(r)?"float32":ie(r)?"string":ye(r)?"bool":"float32"}function Ze(r){return!!(r&&r.constructor&&r.call&&r.apply)}function Ft(r,t){for(var e=t;e<r;++e)if(r%e==0)return e;return r}function dt(r){var t=r.length;if(t<2)return[];var e=new Array(t-1);e[t-2]=r[t-1];for(var n=t-3;n>=0;--n)e[n]=e[n+1]*r[n+1];return e}function hn(r,t,e){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(r)&&(r=Rt(r)),e&&A(r,t),function(i,a){return i instanceof Float32Array&&a==="float32"||i instanceof Int32Array&&a==="int32"||i instanceof Uint8Array&&a==="bool"}(r,t))return r;if(t==null||t==="float32"||t==="complex64")return new Float32Array(r);if(t==="int32")return new Int32Array(r);if(t==="bool"){for(var n=new Uint8Array(r.length),o=0;o<n.length;++o)Math.round(r[o])!==0&&(n[o]=1);return n}throw new Error("Unknown data type "+t)}function Mt(r,t){if(r.length===0)return t[0];var e=r.reduce(function(n,o){return n*o});if(e===0)return[];if(e!==t.length)throw new Error("["+r+"] does not match the input size.");return function n(o,i,a){var s=new Array;if(i.length===1)for(var u=i[0],c=0;c<u;c++)s[c]=a[o+c];else{u=i[0];var l=i.slice(1),f=l.reduce(function(h,d){return h*d});for(c=0;c<u;c++)s[c]=n(o+c*f,l,a)}return s}(0,r,t)}function z(r,t){for(var e=Z(r,t),n=0;n<e.length;n++)e[n]=1;return e}function Z(r,t){if(t==null||t==="float32"||t==="complex64")return new Float32Array(r);if(t==="int32")return new Int32Array(r);if(t==="bool")return new Uint8Array(r);throw new Error("Unknown data type "+t)}function ee(){return J().platform.now()}function Ie(r){r.forEach(function(t){B(Number.isInteger(t)&&t>=0,function(){return"Tensor must have a shape comprised of positive integers but got shape ["+r+"]."})})}function De(r,t){return t===void 0&&(t="utf-8"),t=t||"utf-8",J().platform.encode(r,t)}function Oe(r,t){return t===void 0&&(t="utf-8"),t=t||"utf-8",J().platform.decode(r,t)}function Xe(r,t,e){if(t===0)return 0;if(t===1)return r[0];for(var n=r[r.length-1],o=0;o<r.length-1;++o)n+=e[o]*r[o];return n}function Ve(r,t,e){if(t===0)return[];if(t===1)return[r];for(var n=new Array(t),o=0;o<n.length-1;++o)n[o]=Math.floor(r/e[o]),r-=n[o]*e[o];return n[n.length-1]=r,n}var qe=Object.freeze({shuffle:le,clamp:Me,nearestLargerEven:Qe,sum:Ge,randUniform:function(r,t){var e=Math.random();return t*e+(1-e)*r},distSquared:function(r,t){for(var e=0,n=0;n<r.length;n++){var o=Number(r[n])-Number(t[n]);e+=o*o}return e},assert:B,assertShapesMatch:Je,assertNonNull:$t,flatten:Rt,sizeFromShape:Re,isScalarShape:function(r){return r.length===0},arraysEqual:Ke,isInt:Ue,tanh:Pt,sizeToSquarishShape:Tt,createShuffledIndices:function(r){for(var t=new Uint32Array(r),e=0;e<r;++e)t[e]=e;return le(t),t},rightPad:At,repeatedTry:jt,inferFromImplicitShape:Kt,parseAxisParam:Dt,squeezeShape:an,getTypedArrayFromDType:T,getArrayFromDType:y,checkConversionForErrors:A,isValidDtype:R,hasEncodingLoss:x,isTypedArray:I,bytesPerElement:L,bytesFromStringArray:G,isString:ie,isBoolean:ye,isNumber:Ae,inferDtype:ze,isFunction:Ze,nearestDivisor:Ft,computeStrides:dt,toTypedArray:hn,toNestedArray:Mt,makeOnesTypedArray:z,makeZerosTypedArray:Z,now:ee,assertNonNegativeIntegerDimensions:Ie,fetch:function(r,t){return J().platform.fetch(r,t)},encodeString:De,decodeString:Oe,locToIndex:Xe,indexToLoc:Ve}),ut=function(){function r(t,e){this.backendTimer=t,this.logger=e,e==null&&(this.logger=new it)}return r.prototype.profileKernel=function(t,e,n){var o,i=this,a=this.backendTimer.time(function(){o=n()});return o.forEach(function(s){s.data().then(function(u){(function(c,l,f){if(l!=="float32")return!1;for(var h=0;h<c.length;h++){var d=c[h];if(isNaN(d)||!isFinite(d))return console.warn("Found "+d+" in the result of '"+f+"'"),!0}})(u,s.dtype,t),a.then(function(c){var l="";c.getExtraProfileInfo!=null&&(l=c.getExtraProfileInfo()),i.logger.logKernelProfile(t,s,u,c.kernelMs,e,l)})})}),o},r}(),it=function(){function r(){}return r.prototype.logKernelProfile=function(t,e,n,o,i,a){var s=typeof o=="number"?At(o+"ms",9):o.error,u=At(t,25),c=e.rank,l=e.size,f=At(e.shape.toString(),14),h="";for(var d in i){var p=i[d].shape||e.shape,v=p.length;h+=d+": "+v+"D "+(v>0?p:"")+" "}console.log("%c"+u+" %c"+s+" %c"+c+"D "+f+" %c"+l+" %c"+h+" %c"+a,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")},r}(),lt=20,bt=3,Gt=7;function Xt(r,t,e,n){var o=dt(t),i=function(c,l,f,h){var d=Re(l),p=h[h.length-1],v=new Array(p).fill(0),g=l.length,m=f==="complex64"?Nt(c):c;if(g>1)for(var w=0;w<d/p;w++)for(var E=w*p,b=0;b<p;b++)v[b]=Math.max(v[b],yt(m[E+b],0,f).length);return v}(r,t,e,o),a=t.length,s=function c(l,f,h,d,p,v){v===void 0&&(v=!0);var g=h==="complex64"?2:1,m=f[0],w=f.length;if(w===0)return h==="complex64"?[yt(Nt(l)[0],0,h)]:h==="bool"?[pt(l[0])]:[l[0].toString()];if(w===1){if(m>lt){var E=bt*g,b=Array.from(l.slice(0,E)),C=Array.from(l.slice((m-bt)*g,m*g));return h==="complex64"&&(b=Nt(b),C=Nt(C)),["["+b.map(function(te,ue){return yt(te,p[ue],h)}).join(", ")+", ..., "+C.map(function(te,ue){return yt(te,p[m-bt+ue],h)}).join(", ")+"]"]}return["["+(h==="complex64"?Nt(l):Array.from(l)).map(function(te,ue){return yt(te,p[ue],h)}).join(", ")+"]"]}var S=f.slice(1),N=d.slice(1),O=d[0]*g,F=[];if(m>lt){for(var P=0;P<bt;P++){var U=(Q=P*O)+O;F.push.apply(F,c(l.slice(Q,U),S,h,N,p,!1))}for(F.push("..."),P=m-bt;P<m;P++)U=(Q=P*O)+O,F.push.apply(F,c(l.slice(Q,U),S,h,N,p,P===m-1))}else for(P=0;P<m;P++){var Q;U=(Q=P*O)+O,F.push.apply(F,c(l.slice(Q,U),S,h,N,p,P===m-1))}var V=w===2?",":"";for(F[0]="["+F[0]+V,P=1;P<F.length-1;P++)F[P]=" "+F[P]+V;var X=`,
`;for(P=2;P<w;P++)X+=`
`;return F[F.length-1]=" "+F[F.length-1]+"]"+(v?"":X),F}(r,t,e,o,i),u=["Tensor"];return n&&(u.push(" dtype: "+e),u.push(" rank: "+a),u.push(" shape: ["+t+"]"),u.push(" values:")),u.push(s.map(function(c){return" "+c}).join(`
`)),u.join(`
`)}function yt(r,t,e){return At(Array.isArray(r)?parseFloat(r[0].toFixed(Gt))+" + "+parseFloat(r[1].toFixed(Gt))+"j":ie(r)?"'"+r+"'":e==="bool"?pt(r):parseFloat(r.toFixed(Gt)).toString(),t)}function pt(r){return r===0?"false":"true"}function Nt(r){for(var t=[],e=0;e<r.length;e+=2)t.push([r[e],r[e+1]]);return t}var wt=function(){function r(t,e,n){var o=this;if(this.dtype=e,this.shape=t.slice(),this.size=Re(t),n!=null){var i=n.length;B(i===this.size,function(){return"Length of values '"+i+"' does not match the size inferred by the shape '"+o.size+"'."})}if(e==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||y(e,this.size),this.strides=dt(t)}return r.prototype.set=function(t){for(var e=this,n=[],o=1;o<arguments.length;o++)n[o-1]=arguments[o];n.length===0&&(n=[0]),B(n.length===this.rank,function(){return"The number of provided coordinates ("+n.length+") must match the rank ("+e.rank+")"});var i=this.locToIndex(n);this.values[i]=t},r.prototype.get=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];t.length===0&&(t=[0]);for(var n=0,o=0,i=t;o<i.length;o++){var a=i[o];if(a<0||a>=this.shape[n]){var s="Requested out of range element at "+t+". Buffer shape="+this.shape;throw new Error(s)}n++}for(var u=t[t.length-1],c=0;c<t.length-1;++c)u+=this.strides[c]*t[c];return this.values[u]},r.prototype.locToIndex=function(t){if(this.rank===0)return 0;if(this.rank===1)return t[0];for(var e=t[t.length-1],n=0;n<t.length-1;++n)e+=this.strides[n]*t[n];return e},r.prototype.indexToLoc=function(t){if(this.rank===0)return[];if(this.rank===1)return[t];for(var e=new Array(this.shape.length),n=0;n<e.length-1;++n)e[n]=Math.floor(t/this.strides[n]),t-=e[n]*this.strides[n];return e[e.length-1]=t,e},Object.defineProperty(r.prototype,"rank",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),r.prototype.toTensor=function(){return ft().makeTensor(this.values,this.shape,this.dtype)},r}(),ft=null,j=null,dn=null,at=function(){function r(t,e,n,o){this.kept=!1,this.isDisposedInternal=!1,this.shape=t.slice(),this.dtype=e||"float32",this.size=Re(t),this.strides=dt(t),this.dataId=n,this.id=o,this.rankType=this.rank<5?this.rank.toString():"higher"}return r.prototype.flatten=function(){return this.throwIfDisposed(),this.as1D()},r.prototype.asScalar=function(){return this.throwIfDisposed(),B(this.size===1,function(){return"The array must have only 1 element."}),this.reshape([])},r.prototype.as1D=function(){return this.throwIfDisposed(),this.reshape([this.size])},r.prototype.as2D=function(t,e){return this.throwIfDisposed(),this.reshape([t,e])},r.prototype.as3D=function(t,e,n){return this.throwIfDisposed(),this.reshape([t,e,n])},r.prototype.as4D=function(t,e,n,o){return this.throwIfDisposed(),this.reshape([t,e,n,o])},r.prototype.as5D=function(t,e,n,o,i){return this.throwIfDisposed(),this.reshape([t,e,n,o,i])},r.prototype.asType=function(t){return this.throwIfDisposed(),j.cast(this,t)},Object.defineProperty(r.prototype,"rank",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),r.prototype.buffer=function(){return be(this,void 0,void 0,function(){var t;return Se(this,function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,j.buffer(this.shape,this.dtype,t)]}})})},r.prototype.bufferSync=function(){return j.buffer(this.shape,this.dtype,this.dataSync())},r.prototype.array=function(){return be(this,void 0,void 0,function(){var t;return Se(this,function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,Mt(this.shape,t)]}})})},r.prototype.arraySync=function(){return Mt(this.shape,this.dataSync())},r.prototype.data=function(){return be(this,void 0,void 0,function(){var t,e;return Se(this,function(n){switch(n.label){case 0:return this.throwIfDisposed(),t=ft().read(this.dataId),this.dtype!=="string"?[3,2]:[4,t];case 1:e=n.sent();try{return[2,e.map(function(o){return Oe(o)})]}catch(o){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}n.label=2;case 2:return[2,t]}})})},r.prototype.dataSync=function(){this.throwIfDisposed();var t=ft().readSync(this.dataId);if(this.dtype==="string")try{return t.map(function(e){return Oe(e)})}catch(e){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return t},r.prototype.bytes=function(){return be(this,void 0,void 0,function(){var t;return Se(this,function(e){switch(e.label){case 0:return this.throwIfDisposed(),[4,ft().read(this.dataId)];case 1:return t=e.sent(),this.dtype==="string"?[2,t]:[2,new Uint8Array(t.buffer)]}})})},r.prototype.dispose=function(){this.isDisposed||(ft().disposeTensor(this),this.isDisposedInternal=!0)},Object.defineProperty(r.prototype,"isDisposed",{get:function(){return this.isDisposedInternal},enumerable:!0,configurable:!0}),r.prototype.throwIfDisposed=function(){if(this.isDisposed)throw new Error("Tensor is disposed.")},r.prototype.toFloat=function(){return this.asType("float32")},r.prototype.toInt=function(){return this.asType("int32")},r.prototype.toBool=function(){return this.asType("bool")},r.prototype.print=function(t){return t===void 0&&(t=!1),j.print(this,t)},r.prototype.reshape=function(t){return this.throwIfDisposed(),j.reshape(this,t)},r.prototype.reshapeAs=function(t){return this.throwIfDisposed(),this.reshape(t.shape)},r.prototype.expandDims=function(t){return t===void 0&&(t=0),j.expandDims(this,t)},r.prototype.cumsum=function(t,e,n){return t===void 0&&(t=0),e===void 0&&(e=!1),n===void 0&&(n=!1),j.cumsum(this,t,e,n)},r.prototype.squeeze=function(t){return this.throwIfDisposed(),j.squeeze(this,t)},r.prototype.clone=function(){return this.throwIfDisposed(),j.clone(this)},r.prototype.oneHot=function(t,e,n){return this.throwIfDisposed(),j.oneHot(this,t,e,n)},r.prototype.toString=function(t){return t===void 0&&(t=!1),Xt(this.dataSync(),this.shape,this.dtype,t)},r.prototype.tile=function(t){return this.throwIfDisposed(),j.tile(this,t)},r.prototype.gather=function(t,e){return e===void 0&&(e=0),this.throwIfDisposed(),j.gather(this,t,e)},r.prototype.matMul=function(t,e,n){return e===void 0&&(e=!1),n===void 0&&(n=!1),this.throwIfDisposed(),j.matMul(this,t,e,n)},r.prototype.dot=function(t){return this.throwIfDisposed(),j.dot(this,t)},r.prototype.norm=function(t,e,n){return t===void 0&&(t="euclidean"),e===void 0&&(e=null),n===void 0&&(n=!1),this.throwIfDisposed(),j.norm(this,t,e,n)},r.prototype.slice=function(t,e){return this.throwIfDisposed(),j.slice(this,t,e)},r.prototype.reverse=function(t){return this.throwIfDisposed(),j.reverse(this,t)},r.prototype.concat=function(t,e){return e===void 0&&(e=0),this.throwIfDisposed(),t instanceof r&&(t=[t]),j.concat([this].concat(t),e)},r.prototype.split=function(t,e){return e===void 0&&(e=0),this.throwIfDisposed(),j.split(this,t,e)},r.prototype.stack=function(t,e){return e===void 0&&(e=0),j.stack([this,t],e)},r.prototype.unstack=function(t){return t===void 0&&(t=0),j.unstack(this,t)},r.prototype.pad=function(t,e){return e===void 0&&(e=0),j.pad(this,t,e)},r.prototype.batchNormalization=function(t,e,n,o,i){return n===void 0&&(n=.001),dn("tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon"),this.batchNorm(t,e,i,o,n)},r.prototype.batchNorm=function(t,e,n,o,i){return i===void 0&&(i=.001),this.throwIfDisposed(),j.batchNorm(this,t,e,n,o,i)},r.prototype.all=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),j.all(this,t,e)},r.prototype.any=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),j.any(this,t,e)},r.prototype.logSumExp=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),j.logSumExp(this,t,e)},r.prototype.sum=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),j.sum(this,t,e)},r.prototype.prod=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),j.prod(this,t,e)},r.prototype.mean=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),j.mean(this,t,e)},r.prototype.min=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),j.min(this,t,e)},r.prototype.max=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),j.max(this,t,e)},r.prototype.argMin=function(t){return t===void 0&&(t=null),this.throwIfDisposed(),j.argMin(this,t)},r.prototype.argMax=function(t){return t===void 0&&(t=null),this.throwIfDisposed(),j.argMax(this,t)},r.prototype.cast=function(t){return this.throwIfDisposed(),j.cast(this,t)},r.prototype.add=function(t){return this.throwIfDisposed(),j.add(this,t)},r.prototype.addStrict=function(t){return this.throwIfDisposed(),j.addStrict(this,t)},r.prototype.atan2=function(t){return this.throwIfDisposed(),j.atan2(this,t)},r.prototype.sub=function(t){return this.throwIfDisposed(),j.sub(this,t)},r.prototype.subStrict=function(t){return this.throwIfDisposed(),j.subStrict(this,t)},r.prototype.pow=function(t){return this.throwIfDisposed(),j.pow(this,t)},r.prototype.powStrict=function(t){return this.throwIfDisposed(),j.powStrict(this,t)},r.prototype.mul=function(t){return this.throwIfDisposed(),j.mul(this,t)},r.prototype.mulStrict=function(t){return this.throwIfDisposed(),j.mulStrict(this,t)},r.prototype.div=function(t){return this.throwIfDisposed(),j.div(this,t)},r.prototype.divNoNan=function(t){return this.throwIfDisposed(),j.divNoNan(this,t)},r.prototype.floorDiv=function(t){return this.throwIfDisposed(),j.floorDiv(this,t)},r.prototype.divStrict=function(t){return this.throwIfDisposed(),j.divStrict(this,t)},r.prototype.minimum=function(t){return this.throwIfDisposed(),j.minimum(this,t)},r.prototype.minimumStrict=function(t){return this.throwIfDisposed(),j.minimumStrict(this,t)},r.prototype.maximum=function(t){return this.throwIfDisposed(),j.maximum(this,t)},r.prototype.maximumStrict=function(t){return this.throwIfDisposed(),j.maximumStrict(this,t)},r.prototype.mod=function(t){return this.throwIfDisposed(),j.mod(this,t)},r.prototype.modStrict=function(t){return this.throwIfDisposed(),j.modStrict(this,t)},r.prototype.squaredDifferenceStrict=function(t){return this.throwIfDisposed(),j.squaredDifferenceStrict(this,t)},r.prototype.transpose=function(t){return this.throwIfDisposed(),j.transpose(this,t)},r.prototype.notEqual=function(t){return this.throwIfDisposed(),j.notEqual(this,t)},r.prototype.notEqualStrict=function(t){return this.throwIfDisposed(),j.notEqualStrict(this,t)},r.prototype.less=function(t){return this.throwIfDisposed(),j.less(this,t)},r.prototype.lessStrict=function(t){return this.throwIfDisposed(),j.lessStrict(this,t)},r.prototype.equal=function(t){return this.throwIfDisposed(),j.equal(this,t)},r.prototype.equalStrict=function(t){return this.throwIfDisposed(),j.equalStrict(this,t)},r.prototype.lessEqual=function(t){return this.throwIfDisposed(),j.lessEqual(this,t)},r.prototype.lessEqualStrict=function(t){return this.throwIfDisposed(),j.lessEqualStrict(this,t)},r.prototype.greater=function(t){return this.throwIfDisposed(),j.greater(this,t)},r.prototype.greaterStrict=function(t){return this.throwIfDisposed(),j.greaterStrict(this,t)},r.prototype.greaterEqual=function(t){return this.throwIfDisposed(),j.greaterEqual(this,t)},r.prototype.greaterEqualStrict=function(t){return this.throwIfDisposed(),j.greaterEqualStrict(this,t)},r.prototype.logicalAnd=function(t){return this.throwIfDisposed(),j.logicalAnd(this,t)},r.prototype.logicalOr=function(t){return this.throwIfDisposed(),j.logicalOr(this,t)},r.prototype.logicalNot=function(){return this.throwIfDisposed(),j.logicalNot(this)},r.prototype.logicalXor=function(t){return this.throwIfDisposed(),j.logicalXor(this,t)},r.prototype.where=function(t,e){return this.throwIfDisposed(),j.where(t,this,e)},r.prototype.neg=function(){return this.throwIfDisposed(),j.neg(this)},r.prototype.ceil=function(){return this.throwIfDisposed(),j.ceil(this)},r.prototype.floor=function(){return this.throwIfDisposed(),j.floor(this)},r.prototype.sign=function(){return this.throwIfDisposed(),j.sign(this)},r.prototype.isNaN=function(){return this.throwIfDisposed(),j.isNaN(this)},r.prototype.isInf=function(){return this.throwIfDisposed(),j.isInf(this)},r.prototype.isFinite=function(){return this.throwIfDisposed(),j.isFinite(this)},r.prototype.exp=function(){return this.throwIfDisposed(),j.exp(this)},r.prototype.expm1=function(){return this.throwIfDisposed(),j.expm1(this)},r.prototype.log=function(){return this.throwIfDisposed(),j.log(this)},r.prototype.log1p=function(){return this.throwIfDisposed(),j.log1p(this)},r.prototype.sqrt=function(){return this.throwIfDisposed(),j.sqrt(this)},r.prototype.rsqrt=function(){return this.throwIfDisposed(),j.rsqrt(this)},r.prototype.square=function(){return this.throwIfDisposed(),j.square(this)},r.prototype.reciprocal=function(){return this.throwIfDisposed(),j.reciprocal(this)},r.prototype.abs=function(){return this.throwIfDisposed(),j.abs(this)},r.prototype.clipByValue=function(t,e){return this.throwIfDisposed(),j.clipByValue(this,t,e)},r.prototype.relu=function(){return this.throwIfDisposed(),j.relu(this)},r.prototype.relu6=function(){return this.throwIfDisposed(),j.relu6(this)},r.prototype.elu=function(){return this.throwIfDisposed(),j.elu(this)},r.prototype.selu=function(){return this.throwIfDisposed(),j.selu(this)},r.prototype.leakyRelu=function(t){return t===void 0&&(t=.2),this.throwIfDisposed(),j.leakyRelu(this,t)},r.prototype.prelu=function(t){return this.throwIfDisposed(),j.prelu(this,t)},r.prototype.sigmoid=function(){return this.throwIfDisposed(),j.sigmoid(this)},r.prototype.logSigmoid=function(){return this.throwIfDisposed(),j.logSigmoid(this)},r.prototype.softplus=function(){return this.throwIfDisposed(),j.softplus(this)},r.prototype.zerosLike=function(){return this.throwIfDisposed(),j.zerosLike(this)},r.prototype.onesLike=function(){return this.throwIfDisposed(),j.onesLike(this)},r.prototype.sin=function(){return this.throwIfDisposed(),j.sin(this)},r.prototype.cos=function(){return this.throwIfDisposed(),j.cos(this)},r.prototype.tan=function(){return this.throwIfDisposed(),j.tan(this)},r.prototype.asin=function(){return this.throwIfDisposed(),j.asin(this)},r.prototype.acos=function(){return this.throwIfDisposed(),j.acos(this)},r.prototype.atan=function(){return this.throwIfDisposed(),j.atan(this)},r.prototype.sinh=function(){return this.throwIfDisposed(),j.sinh(this)},r.prototype.cosh=function(){return this.throwIfDisposed(),j.cosh(this)},r.prototype.tanh=function(){return this.throwIfDisposed(),j.tanh(this)},r.prototype.asinh=function(){return this.throwIfDisposed(),j.asinh(this)},r.prototype.acosh=function(){return this.throwIfDisposed(),j.acosh(this)},r.prototype.atanh=function(){return this.throwIfDisposed(),j.atanh(this)},r.prototype.erf=function(){return this.throwIfDisposed(),j.erf(this)},r.prototype.round=function(){return this.throwIfDisposed(),j.round(this)},r.prototype.step=function(t){return t===void 0&&(t=0),this.throwIfDisposed(),j.step(this,t)},r.prototype.softmax=function(t){return t===void 0&&(t=-1),this.throwIfDisposed(),j.softmax(this,t)},r.prototype.logSoftmax=function(t){return t===void 0&&(t=-1),this.throwIfDisposed(),j.logSoftmax(this,t)},r.prototype.resizeBilinear=function(t,e){return e===void 0&&(e=!1),this.throwIfDisposed(),j.image.resizeBilinear(this,t,e)},r.prototype.resizeNearestNeighbor=function(t,e){return e===void 0&&(e=!1),this.throwIfDisposed(),j.image.resizeNearestNeighbor(this,t,e)},r.prototype.conv1d=function(t,e,n,o,i,a){return o===void 0&&(o="NWC"),i===void 0&&(i=1),this.throwIfDisposed(),j.conv1d(this,t,e,n,o,i,a)},r.prototype.conv2d=function(t,e,n,o,i,a){return o===void 0&&(o="NHWC"),i===void 0&&(i=[1,1]),this.throwIfDisposed(),j.conv2d(this,t,e,n,o,i,a)},r.prototype.conv2dTranspose=function(t,e,n,o,i){return this.throwIfDisposed(),j.conv2dTranspose(this,t,e,n,o,i)},r.prototype.depthwiseConv2D=function(t,e,n,o,i,a){return o===void 0&&(o="NHWC"),i===void 0&&(i=[1,1]),this.throwIfDisposed(),j.depthwiseConv2d(this,t,e,n,o,i,a)},r.prototype.separableConv2d=function(t,e,n,o,i,a){return i===void 0&&(i=[1,1]),a===void 0&&(a="NHWC"),this.throwIfDisposed(),j.separableConv2d(this,t,e,n,o,i,a)},r.prototype.avgPool=function(t,e,n,o){return this.throwIfDisposed(),j.avgPool(this,t,e,n,o)},r.prototype.maxPool=function(t,e,n,o){return this.throwIfDisposed(),j.maxPool(this,t,e,n,o)},r.prototype.localResponseNormalization=function(t,e,n,o){return t===void 0&&(t=5),e===void 0&&(e=1),n===void 0&&(n=1),o===void 0&&(o=.5),j.localResponseNormalization(this,t,e,n,o)},r.prototype.pool=function(t,e,n,o,i){return this.throwIfDisposed(),j.pool(this,t,e,n,o,i)},r.prototype.variable=function(t,e,n){return t===void 0&&(t=!0),this.throwIfDisposed(),ft().makeVariable(this,t,e,n)},r.prototype.unsortedSegmentSum=function(t,e){return this.throwIfDisposed(),j.unsortedSegmentSum(this,t,e)},r.prototype.batchToSpaceND=function(t,e){return this.throwIfDisposed(),j.batchToSpaceND(this,t,e)},r.prototype.spaceToBatchND=function(t,e){return this.throwIfDisposed(),j.spaceToBatchND(this,t,e)},r.prototype.topk=function(t,e){return t===void 0&&(t=1),e===void 0&&(e=!0),this.throwIfDisposed(),j.topk(this,t,e)},r.prototype.stridedSlice=function(t,e,n,o,i,a,s,u){return o===void 0&&(o=0),i===void 0&&(i=0),a===void 0&&(a=0),s===void 0&&(s=0),u===void 0&&(u=0),this.throwIfDisposed(),j.stridedSlice(this,t,e,n,o,i,a,s,u)},r.prototype.depthToSpace=function(t,e){return this.throwIfDisposed(),j.depthToSpace(this,t,e)},r.prototype.fft=function(){return this.throwIfDisposed(),j.spectral.fft(this)},r.prototype.ifft=function(){return this.throwIfDisposed(),j.spectral.ifft(this)},r.prototype.rfft=function(){return this.throwIfDisposed(),j.spectral.rfft(this)},r.prototype.irfft=function(){return this.throwIfDisposed(),j.spectral.irfft(this)},r}();Object.defineProperty(at,Symbol.hasInstance,{value:function(r){return!!r&&r.dataId!=null&&r.shape!=null&&r.dtype!=null}});var In,mn,Kn,Sn,$n,ln=function(r){function t(e,n,o,i){var a=r.call(this,e.shape,e.dtype,e.dataId,i)||this;return a.trainable=n,a.name=o,a}return Pe(t,r),t.prototype.assign=function(e){if(e.dtype!==this.dtype)throw new Error("dtype of the new value ("+e.dtype+") and previous value ("+this.dtype+") must match");if(!Ke(e.shape,this.shape))throw new Error("shape of the new value ("+e.shape+") and previous value ("+this.shape+") must match");ft().disposeTensor(this),this.dataId=e.dataId,ft().incRef(this,null)},t.prototype.dispose=function(){ft().disposeVariable(this),this.isDisposedInternal=!0},t}(at);Object.defineProperty(ln,Symbol.hasInstance,{value:function(r){return r instanceof at&&r.assign!=null&&r.assign instanceof Function}}),function(r){r.R0="R0",r.R1="R1",r.R2="R2",r.R3="R3",r.R4="R4",r.R5="R5",r.R6="R6"}(In||(In={})),function(r){r.float32="float32",r.int32="int32",r.bool="int32",r.complex64="complex64"}(mn||(mn={})),function(r){r.float32="float32",r.int32="int32",r.bool="bool",r.complex64="complex64"}(Kn||(Kn={})),function(r){r.float32="float32",r.int32="float32",r.bool="float32",r.complex64="complex64"}(Sn||(Sn={})),function(r){r.float32="complex64",r.int32="complex64",r.bool="complex64",r.complex64="complex64"}($n||($n={}));var tn={float32:Sn,int32:mn,bool:Kn,complex64:$n};function Lt(r,t){if(r==="string"||t==="string"){if(r==="string"&&t==="string")return"string";throw new Error("Can not upcast "+r+" with "+t)}return tn[r][t]}function pn(r){return Lt(r,"int32")}function vt(r,t){if(r.dtype===t.dtype)return[r,t];var e=Lt(r.dtype,t.dtype);return[r.cast(e),t.cast(e)]}function lo(r,t){B(r.dtype===t.dtype,function(){return"The dtypes of the first("+r.dtype+") and second("+t.dtype+") input must match"})}function fo(r){var t=[];return function e(n,o,i){if(n!=null){if(n instanceof at)return void o.push(n);if(a=n,!(!Array.isArray(a)&&typeof a!="object")){var a,s=n;for(var u in s){var c=s[u];i.has(c)||(i.add(c),e(c,o,i))}}}}(r,t,new Set),t}var Oo,hu=Object.freeze({makeTypesMatch:vt,assertTypesMatch:lo,isTensorInList:function(r,t){return t.some(function(e){return e.id===r.id})},getTensorsInContainer:fo}),Jr=function(){function r(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}return r.prototype.dispose=function(){for(var t in this.registeredVariables)this.registeredVariables[t].dispose()},r}(),ho=function(){function r(t){this.ENV=t,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new Jr}return r.prototype.ready=function(){return be(this,void 0,void 0,function(){var t,e,n;return Se(this,function(o){switch(o.label){case 0:if(this.pendingBackendInit!=null)return[2,this.pendingBackendInit.then(function(){})];if(this.backendInstance!=null)return[2];t=this.getSortedBackends(),e=0,o.label=1;case 1:return e<t.length?(n=t[e],[4,this.initializeBackend(n).success]):[3,5];case 2:return o.sent()?[4,this.setBackend(n)]:[3,4];case 3:return o.sent(),[2];case 4:return e++,[3,1];case 5:throw new Error("Could not initialize any backends, all backend initializations failed.")}})})},Object.defineProperty(r.prototype,"backend",{get:function(){if(this.pendingBackendInit!=null)throw new Error("Backend '"+this.backendName+"' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods");if(this.backendInstance==null){var t=this.initializeBackendsAndReturnBest(),e=t.name;if(t.asyncInit)throw new Error("The highest priority backend '"+e+"' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods");this.setBackend(e)}return this.backendInstance},enumerable:!0,configurable:!0}),r.prototype.backendNames=function(){return Object.keys(this.registryFactory)},r.prototype.findBackend=function(t){return!(t in this.registry)&&(!(t in this.registryFactory)||this.initializeBackend(t).asyncInit)?null:this.registry[t]},r.prototype.findBackendFactory=function(t){return t in this.registryFactory?this.registryFactory[t].factory:null},r.prototype.registerBackend=function(t,e,n){return n===void 0&&(n=1),t in this.registryFactory?(console.warn(t+" backend was already registered. Reusing existing backend factory."),!1):(this.registryFactory[t]={factory:e,priority:n},!0)},r.prototype.setBackend=function(t){return be(this,void 0,void 0,function(){var e,n,o;return Se(this,function(i){switch(i.label){case 0:if(this.registryFactory[t]==null)throw new Error("Backend name '"+t+"' not found in registry");return this.backendName=t,this.registry[t]!=null?[3,4]:(this.backendInstance=null,e=this.initializeBackend(t),n=e.success,e.asyncInit?[4,n]:[3,2]);case 1:return o=i.sent(),[3,3];case 2:o=n,i.label=3;case 3:if(!o)return[2,!1];i.label=4;case 4:return this.backendInstance=this.registry[t],this.setupRegisteredKernels(),this.profiler=new ut(this.backendInstance),[2,!0]}})})},r.prototype.setupRegisteredKernels=function(){var t=this;Ut(this.backendName).forEach(function(e){e.setupFunc!=null&&e.setupFunc(t.backendInstance)})},r.prototype.disposeRegisteredKernels=function(t){var e=this;Ut(t).forEach(function(n){n.disposeFunc!=null&&n.disposeFunc(e.registry[t])})},r.prototype.initializeBackend=function(t){var e=this,n=this.registryFactory[t];if(n==null)throw new Error("Cannot initialize backend "+t+", no registration found.");try{var o=n.factory();if(Promise.resolve(o)===o){var i=++this.pendingBackendInitId,a=o.then(function(s){return!(i<e.pendingBackendInitId)&&(e.registry[t]=s,e.pendingBackendInit=null,!0)}).catch(function(s){return!(i<e.pendingBackendInitId)&&(e.pendingBackendInit=null,console.warn("Initialization of backend "+t+" failed"),console.warn(s.stack||s.message),!1)});return this.pendingBackendInit=a,{success:a,asyncInit:!0}}return this.registry[t]=o,{success:!0,asyncInit:!1}}catch(s){return console.warn("Initialization of backend "+t+" failed"),console.warn(s.stack||s.message),{success:!1,asyncInit:!1}}},r.prototype.removeBackend=function(t){if(!(t in this.registryFactory))throw new Error(t+" backend not found in registry");this.backendName===t&&this.pendingBackendInit!=null&&this.pendingBackendInitId++,t in this.registry&&(this.disposeRegisteredKernels(t),this.registry[t].dispose(),delete this.registry[t]),delete this.registryFactory[t],this.backendName===t&&(this.pendingBackendInit=null,this.backendName=null,this.backendInstance=null)},r.prototype.getSortedBackends=function(){var t=this;if(Object.keys(this.registryFactory).length===0)throw new Error("No backend found in registry.");return Object.keys(this.registryFactory).sort(function(e,n){return t.registryFactory[n].priority-t.registryFactory[e].priority})},r.prototype.initializeBackendsAndReturnBest=function(){for(var t=this.getSortedBackends(),e=0;e<t.length;e++){var n=t[e],o=this.initializeBackend(n),i=o.success,a=o.asyncInit;if(a||i)return{name:n,asyncInit:a}}throw new Error("Could not initialize any backends, all backend initializations failed.")},r.prototype.moveData=function(t,e){var n=this.state.tensorInfo.get(e),o=n.backend,i=this.readSync(e);o.disposeData(e),n.backend=t,t.move(e,i,n.shape,n.dtype),this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack[this.state.numDataMovesStack.length-1]++},r.prototype.tidy=function(t,e){var n,o=this,i=null;if(e==null){if(typeof t!="function")throw new Error("Please provide a function to tidy()");e=t}else{if(typeof t!="string"&&!(t instanceof String))throw new Error("When calling with two arguments, the first argument to tidy() must be a string");if(typeof e!="function")throw new Error("When calling with two arguments, the 2nd argument to tidy() must be a function");i=t}return this.scopedRun(function(){return o.startScope(i)},function(){return o.endScope(n)},function(){return(n=e())instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),n})},r.prototype.scopedRun=function(t,e,n){t();try{var o=n();return e(),o}catch(i){throw e(),i}},r.prototype.nextTensorId=function(){return r.nextTensorId++},r.prototype.nextVariableId=function(){return r.nextVariableId++},r.prototype.clone=function(t){var e=this.makeTensorFromDataId(t.dataId,t.shape,t.dtype),n={x:t};return this.addTapeNode(this.state.activeScope.name,n,[e],function(o){return{x:function(){return o.toFloat()}}},[]),e},r.prototype.runKernel=function(t,e,n,o,i){return this.runKernelFunc(null,e,null,t,n,o,i)},r.prototype.shouldCheckForMemLeaks=function(){return this.ENV.getBool("IS_TEST")},r.prototype.checkKernelForMemLeak=function(t,e,n){var o=this.backend.numDataIds(),i=0;n.forEach(function(u){i+=u.dtype==="complex64"?3:1});var a=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],s=o-e-i-a;if(s>0)throw new Error("Backend '"+this.backendName+"' has an internal memory leak ("+s+" data ids) after running '"+t+"'")},r.prototype.runKernelFunc=function(t,e,n,o,i,a,s){var u,c=this;a===void 0&&(a=[]),s===void 0&&(s=[]);var l=[],f=this.isTapeOn();o==null&&(o=this.state.activeScope!=null?this.state.activeScope.name:"");var h,d=function(w){f&&(l=w.map(function(E){return c.keep(c.clone(E))}))},p=this.state.numBytes,v=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);var g,m=Vt(o,this.backendName);return h=m!=null?function(){var w=c.backend.numDataIds();g=m.kernelFunc({inputs:e,attrs:i,backend:c.backend});var E=Array.isArray(g)?g:[g];c.shouldCheckForMemLeaks()&&c.checkKernelForMemLeak(o,w,E);var b=E.map(function(S){var N=S.dataId,O=S.shape,F=S.dtype;return c.makeTensorFromDataId(N,O,F)}),C=b.filter(function(S,N){return s[N]});return d((a||[]).slice().concat(C)),b}:function(){var w=c.backend.numDataIds();g=c.tidy(function(){return t(c.backend,d)});var E=Array.isArray(g)?g:[g];return c.shouldCheckForMemLeaks()&&c.checkKernelForMemLeak(o,w,E),E},this.scopedRun(function(){return c.state.kernelDepth++},function(){return c.state.kernelDepth--},function(){u=c.ENV.getBool("DEBUG")?c.profiler.profileKernel(o,e,function(){return h()}):h()}),f&&this.addTapeNode(o,e,u,n,l),this.state.profiling&&this.state.activeProfile.kernels.push({name:o,bytesAdded:this.state.numBytes-p,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-v,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(e).map(function(w){return e[w].shape}),outputShapes:u.map(function(w){return w.shape})}),Array.isArray(g)?u:u[0]},r.prototype.makeTensor=function(t,e,n,o){if(t==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",o=o||this.backend;var i=t;n==="string"&&ie(t[0])&&(i=t.map(function(l){return De(l)}));var a=o.write(i,e,n),s=new at(e,n,a,this.nextTensorId());if(this.incRef(s,o),n==="string"){var u=this.state.tensorInfo.get(a),c=G(i);this.state.numBytes+=c-u.bytes,u.bytes=c}return s},r.prototype.makeTensorFromDataId=function(t,e,n,o){var i=new at(e,n=n||"float32",t,this.nextTensorId());return this.incRef(i,o),i},r.prototype.makeVariable=function(t,e,n,o){e===void 0&&(e=!0),n=n||this.nextVariableId().toString(),o!=null&&o!==t.dtype&&(t=t.asType(o));var i=new ln(t,e,n,this.nextTensorId());if(this.state.registeredVariables[i.name]!=null)throw new Error("Variable with name "+i.name+" was already registered");return this.state.registeredVariables[i.name]=i,this.incRef(i,this.backend),i},r.prototype.incRef=function(t,e){var n=this.state.tensorInfo.has(t.dataId)?this.state.tensorInfo.get(t.dataId).refCount:0;if(this.state.numTensors++,t.dtype==="string"&&this.state.numStringTensors++,n===0){this.state.numDataBuffers++;var o=0;t.dtype!=="complex64"&&t.dtype!=="string"&&(o=t.size*L(t.dtype)),this.state.tensorInfo.set(t.dataId,{backend:e||this.backend,dtype:t.dtype,shape:t.shape,bytes:o,refCount:0}),this.state.numBytes+=o}this.state.tensorInfo.get(t.dataId).refCount++,t instanceof ln||this.track(t)},r.prototype.disposeTensor=function(t){if(this.state.tensorInfo.has(t.dataId)){this.state.numTensors--,t.dtype==="string"&&this.state.numStringTensors--;var e=this.state.tensorInfo.get(t.dataId);e.refCount<=1?(t.dtype!=="complex64"&&(this.state.numBytes-=e.bytes),this.state.numDataBuffers--,e.backend.disposeData(t.dataId),this.state.tensorInfo.delete(t.dataId)):this.state.tensorInfo.get(t.dataId).refCount--}},r.prototype.disposeVariables=function(){for(var t in this.state.registeredVariables){var e=this.state.registeredVariables[t];this.disposeVariable(e)}},r.prototype.disposeVariable=function(t){this.disposeTensor(t),this.state.registeredVariables[t.name]!=null&&delete this.state.registeredVariables[t.name]},r.prototype.memory=function(){var t=this.backend.memory();return t.numTensors=this.state.numTensors,t.numDataBuffers=this.state.numDataBuffers,t.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(t.unreliable=!0,t.reasons==null&&(t.reasons=[]),t.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),t},r.prototype.profile=function(t){return be(this,void 0,void 0,function(){var e,n;return Se(this,function(o){return this.state.profiling=!0,e=this.state.numBytes,n=this.state.numTensors,this.state.activeProfile.kernels=[],this.state.activeProfile.result=t(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,this.state.activeProfile.kernels.map(function(i){return i.totalBytesSnapshot})),this.state.activeProfile.newBytes=this.state.numBytes-e,this.state.activeProfile.newTensors=this.state.numTensors-n,[2,this.state.activeProfile]})})},r.prototype.isTapeOn=function(){return this.state.gradientDepth>0&&this.state.kernelDepth===0},r.prototype.addTapeNode=function(t,e,n,o,i){var a=this,s={id:this.state.nextTapeNodeId++,kernelName:t,inputs:e,outputs:n,saved:i},u=zt(t);u!=null&&(o=u.gradFunc),o!=null&&(s.gradient=function(c){return c=c.map(function(l,f){if(l==null){var h=n[f],d=Z(h.size,h.dtype);return a.makeTensor(d,h.shape,h.dtype)}return l}),o(c.length>1?c:c[0],i)}),this.state.activeTape.push(s)},r.prototype.keep=function(t){return t.kept=!0,t},r.prototype.startTape=function(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++},r.prototype.endTape=function(){this.state.gradientDepth--},r.prototype.startScope=function(t){var e={track:[],name:"unnamed scope",id:this.state.nextScopeId++};t&&(e.name=t),this.state.scopeStack.push(e),this.state.activeScope=e},r.prototype.endScope=function(t){for(var e=this,n=fo(t),o=new Set(n.map(function(u){return u.id})),i=0;i<this.state.activeScope.track.length;i++){var a=this.state.activeScope.track[i];a.kept||o.has(a.id)||a.dispose()}var s=this.state.scopeStack.pop();this.state.activeScope=this.state.scopeStack.length===0?null:this.state.scopeStack[this.state.scopeStack.length-1],n.forEach(function(u){u.kept||u.scopeId!==s.id||e.track(u)})},r.prototype.gradients=function(t,e,n,o){var i=this;if(o===void 0&&(o=!1),B(e.length>0,function(){return"gradients() received an empty list of xs."}),n!=null&&n.dtype!=="float32")throw new Error("dy must have 'float32' dtype, but has '"+n.dtype+"'");var a=this.scopedRun(function(){return i.startTape()},function(){return i.endTape()},function(){return i.tidy("forward",t)});B(a instanceof at,function(){return"The result y returned by f() must be a tensor."});var s=function(u,c,l){for(var f={},h={},d=0;d<c.length;d++)f[c[d].id]=!0;for(d=0;d<u.length;d++){var p=(S=u[d]).inputs;for(var v in p){for(var g=p[v],m=!1,w=0;w<c.length;w++)if(f[g.id]){S.outputs.forEach(function(P){return f[P.id]=!0}),m=!0,h[S.id]=!0;break}if(m)break}}var E={};E[l.id]=!0;var b={};for(d=u.length-1;d>=0;d--)for(p=(S=u[d]).inputs,w=0;w<S.outputs.length;w++)if(E[S.outputs[w].id]){for(var v in p)E[p[v].id]=!0,b[S.id]=!0;break}var C=[];for(d=0;d<u.length;d++){var S;if(h[(S=u[d]).id]&&b[S.id]){var N={};for(var v in S.inputs){var O=S.inputs[v];f[O.id]&&(N[v]=O)}var F=Object.assign({},S);F.inputs=N,F.outputs=S.outputs,C.push(F)}}return C}(this.state.activeTape,e,a);if(!o&&s.length===0&&e.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",function(){var u,c,l={};l[a.id]=n==null?(u=a.shape,c=z(Re(u),"float32"),W.makeTensor(c,u,"float32")):n,function(h,d,p){for(var v=function(m){var w=d[m],E=[];if(w.outputs.forEach(function(N){var O=h[N.id];O!=null?E.push(O):E.push(null)}),w.gradient==null)throw new Error("Cannot compute gradient: gradient function not found for "+w.kernelName+".");var b=w.gradient(E),C=function(N){if(!(N in b))throw new Error("Cannot backprop through input "+N+". Available gradients found: "+Object.keys(b)+".");var O=p(function(){return b[N]()});if(O.dtype!=="float32")throw new Error("Error in gradient for op "+w.kernelName+". The gradient of input "+N+" must have 'float32' dtype, but has '"+O.dtype+"'");var F=w.inputs[N];if(!Ke(O.shape,F.shape))throw new Error("Error in gradient for op "+w.kernelName+". The gradient of input '"+N+"' has shape '"+O.shape+"', which does not match the shape of the input '"+F.shape+"'");if(h[F.id]==null)h[F.id]=O;else{var P=h[F.id];h[F.id]=P.add(O),P.dispose()}};for(var S in w.inputs)C(S)},g=d.length-1;g>=0;g--)v(g)}(l,s,function(h){return i.tidy(h)});var f=e.map(function(h){return l[h.id]});return i.state.gradientDepth===0&&(i.state.activeTape.forEach(function(h){for(var d=0,p=h.saved;d<p.length;d++)p[d].dispose()}),i.state.activeTape=null),{value:a,grads:f}})},r.prototype.customGrad=function(t){var e=this;return B(Ze(t),function(){return"The f passed in customGrad(f) must be a function."}),function(){for(var n,o=[],i=0;i<arguments.length;i++)o[i]=arguments[i];B(o.every(function(s){return s instanceof at}),function(){return"The args passed in customGrad(f)(x1, x2,...) must all be tensors"});var a={};return o.forEach(function(s,u){a[u]=s}),e.runKernelFunc(function(s,u){return B((n=t.apply(void 0,o.concat([u]))).value instanceof at,function(){return"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"}),B(Ze(n.gradFunc),function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."}),n.value},a,function(s,u){var c=n.gradFunc(s,u),l=Array.isArray(c)?c:[c];B(l.length===o.length,function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."}),B(l.every(function(h){return h instanceof at}),function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors."});var f={};return l.forEach(function(h,d){f[d]=function(){return h}}),f})}},r.prototype.readSync=function(t){return this.state.tensorInfo.get(t).backend.readSync(t)},r.prototype.read=function(t){return this.state.tensorInfo.get(t).backend.read(t)},r.prototype.time=function(t){return be(this,void 0,void 0,function(){var e,n;return Se(this,function(o){switch(o.label){case 0:return e=ee(),[4,this.backend.time(t)];case 1:return(n=o.sent()).wallMs=ee()-e,[2,n]}})})},r.prototype.track=function(t){return this.state.activeScope!=null&&(t.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(t)),t},Object.defineProperty(r.prototype,"registeredVariables",{get:function(){return this.state.registeredVariables},enumerable:!0,configurable:!0}),r.prototype.reset=function(){for(var t in this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new Jr,this.registry)this.disposeRegisteredKernels(t),this.registry[t].dispose(),delete this.registry[t];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null},r.nextTensorId=0,r.nextVariableId=0,r}(),W=function(){var r=function(){if(Oo==null){var e=void 0;if(typeof window!="undefined")e=window;else if(typeof H.g!="undefined")e=H.g;else if(typeof ge!="undefined")e=ge;else{if(typeof self=="undefined")throw new Error("Could not find a global object");ge=self}Oo=e}return Oo}();if(r._tfengine==null){var t=new St(r);r._tfengine=new ho(t)}return function(e){Zt=e}(r._tfengine.ENV),ft=function(){return r._tfengine},r._tfengine}();function wr(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var Un=J();Un.registerFlag("DEBUG",function(){return!1},function(r){r&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")}),Un.registerFlag("IS_BROWSER",function(){return wr()}),Un.registerFlag("IS_NODE",function(){return typeof ge!="undefined"&&ge.versions!==void 0&&ge.versions.node!==void 0}),Un.registerFlag("IS_CHROME",function(){return typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}),Un.registerFlag("PROD",function(){return!1}),Un.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",function(){return Un.getBool("DEBUG")}),Un.registerFlag("DEPRECATION_WARNINGS_ENABLED",function(){return!0}),Un.registerFlag("IS_TEST",function(){return!1});var er,wn,Rn,ur={},ci={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function li(r,t){ur[r]=t}function cr(r){r in ur||(ur[r]=function(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");var n=function(o){if(typeof OffscreenCanvas!="undefined"&&o===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}(e);return n.addEventListener("webglcontextlost",function(o){o.preventDefault(),delete ur[e]},!1),e===1?n.getContext("webgl",ci)||n.getContext("experimental-webgl",ci):n.getContext("webgl2",ci)}(r));var t=ur[r];return t.isContextLost()?(delete ur[r],cr(r)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),ur[r])}function fi(r,t){return[t,r]}function Mo(r){var t=Re(r);return Tt(Math.ceil(t/4))}function Lo(r,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(r/2))]}function fa(r,t){var e,n,o,i,a,s,u,c,l,f=r;return J().getNumber("WEBGL_VERSION")===2?(e=f.R32F,n=f.R16F,o=f.RGBA16F,i=f.RGBA32F,a=f.RED,s=4,u=1,c=f.HALF_FLOAT,l=f.FLOAT):(e=r.RGBA,n=r.RGBA,o=r.RGBA,i=f.RGBA,a=r.RGBA,s=4,u=4,c=t!=null?t.HALF_FLOAT_OES:null,l=r.FLOAT),{internalFormatFloat:e,internalFormatHalfFloat:n,internalFormatPackedHalfFloat:o,internalFormatPackedFloat:i,textureFormatFloat:a,downloadTextureFormat:r.RGBA,downloadUnpackNumChannels:s,defaultNumChannels:u,textureTypeHalfFloat:c,textureTypeFloat:l}}function We(r,t,e){var n=e();return t&&function(o){var i=o.getError();if(i!==o.NO_ERROR)throw new Error("WebGL Error: "+pu(o,i))}(r),n}(function(r){r[r.DENSE=0]="DENSE",r[r.SHARED_BATCH=1]="SHARED_BATCH"})(er||(er={})),function(r){r[r.RENDER=0]="RENDER",r[r.UPLOAD=1]="UPLOAD",r[r.PIXELS=2]="PIXELS",r[r.DOWNLOAD=3]="DOWNLOAD"}(wn||(wn={})),function(r){r[r.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",r[r.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",r[r.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",r[r.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",r[r.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"}(Rn||(Rn={}));var uh=596e-10,ch=65504;function du(r){return!!(J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||r===0||uh<Math.abs(r)&&Math.abs(r)<ch)}function pu(r,t){switch(t){case r.NO_ERROR:return"NO_ERROR";case r.INVALID_ENUM:return"INVALID_ENUM";case r.INVALID_VALUE:return"INVALID_VALUE";case r.INVALID_OPERATION:return"INVALID_OPERATION";case r.INVALID_FRAMEBUFFER_OPERATION:return"INVALID_FRAMEBUFFER_OPERATION";case r.OUT_OF_MEMORY:return"OUT_OF_MEMORY";case r.CONTEXT_LOST_WEBGL:return"CONTEXT_LOST_WEBGL";default:return"Unknown error code "+t}}function Wo(r,t,e){return Er(r,t,function(){return r.getExtension(e)},'Extension "'+e+'" not supported on this browser.')}function vu(r,t,e){var n=Er(r,t,function(){return r.createShader(r.VERTEX_SHADER)},"Unable to create vertex WebGLShader.");if(We(r,t,function(){return r.shaderSource(n,e)}),We(r,t,function(){return r.compileShader(n)}),r.getShaderParameter(n,r.COMPILE_STATUS)===!1)throw console.log(r.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function gu(r,t,e){var n=Er(r,t,function(){return r.createShader(r.FRAGMENT_SHADER)},"Unable to create fragment WebGLShader.");if(We(r,t,function(){return r.shaderSource(n,e)}),We(r,t,function(){return r.compileShader(n)}),r.getShaderParameter(n,r.COMPILE_STATUS)===!1)throw function(o,i){var a=lh.exec(i);if(a==null)return console.log("Couldn't parse line number in error: "+i),void console.log(o);for(var s=+a[1],u=o.split(`
`),c=u.length.toString().length+2,l=u.map(function(g,m){return At((m+1).toString(),c)+g}),f=0,h=0;h<l.length;h++)f=Math.max(l[h].length,f);var d=l.slice(0,s-1),p=l.slice(s-1,s),v=l.slice(s);console.log(d.join(`
`)),console.log(i.split(`
`)[0]),console.log("%c "+At(p[0],f),"border:1px solid red; background-color:#e3d2d2; color:#a61717"),console.log(v.join(`
`))}(e,r.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var hi,di,lh=/ERROR: [0-9]+:([0-9]+):/g;function mu(r,t){return Er(r,t,function(){return r.createProgram()},"Unable to create WebGLProgram.")}function Au(r,t,e){if(We(r,t,function(){return r.linkProgram(e)}),r.getProgramParameter(e,r.LINK_STATUS)===!1)throw console.log(r.getProgramInfoLog(e)),new Error("Failed to link vertex and fragment shaders.")}function pi(r,t,e){if(We(r,t,function(){return r.validateProgram(e)}),r.getProgramParameter(e,r.VALIDATE_STATUS)===!1)throw console.log(r.getProgramInfoLog(e)),new Error("Shader program validation failed.")}function yu(r,t,e){var n=Er(r,t,function(){return r.createBuffer()},"Unable to create WebGLBuffer");return We(r,t,function(){return r.bindBuffer(r.ARRAY_BUFFER,n)}),We(r,t,function(){return r.bufferData(r.ARRAY_BUFFER,e,r.STATIC_DRAW)}),n}function xu(r,t,e){var n=Er(r,t,function(){return r.createBuffer()},"Unable to create WebGLBuffer");return We(r,t,function(){return r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,n)}),We(r,t,function(){return r.bufferData(r.ELEMENT_ARRAY_BUFFER,e,r.STATIC_DRAW)}),n}function bu(r,t){return Er(r,t,function(){return r.createTexture()},"Unable to create WebGLTexture.")}function wu(r,t){var e=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(r<=0||t<=0){var n="["+r+"x"+t+"]";throw new Error("Requested texture size "+n+" is invalid.")}if(r>e||t>e)throw n="["+r+"x"+t+"]",new Error("Requested texture size "+n+" greater than WebGL maximum on this browser / GPU "+("["+e+"x"+e+"]")+".")}function Eu(r,t){return Er(r,t,function(){return r.createFramebuffer()},"Unable to create WebGLFramebuffer.")}function ha(r,t,e,n,o,i,a,s){var u=r.getAttribLocation(e,n);return u!==-1&&(We(r,t,function(){return r.bindBuffer(r.ARRAY_BUFFER,o)}),We(r,t,function(){return r.vertexAttribPointer(u,i,r.FLOAT,!1,a,s)}),We(r,t,function(){return r.enableVertexAttribArray(u)}),!0)}function Cu(r,t,e,n){ku(r,n),We(r,t,function(){return r.activeTexture(r.TEXTURE0+n)}),We(r,t,function(){return r.bindTexture(r.TEXTURE_2D,e)})}function Iu(r,t,e,n){return Er(r,t,function(){return r.getUniformLocation(e,n)},'uniform "'+n+'" not present in program.')}function Su(r,t,e){return r.getUniformLocation(t,e)}function Ru(r,t,e,n,o,i){We(r,t,function(){return Cu(r,t,n,i)}),We(r,t,function(){return r.uniform1i(o,i)})}function vi(r,t,e,n){We(r,t,function(){return r.bindFramebuffer(r.FRAMEBUFFER,n)}),We(r,t,function(){return r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e,0)})}function da(r,t,e){We(r,t,function(){return r.bindFramebuffer(r.FRAMEBUFFER,e)}),We(r,t,function(){return r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,null,0)})}function _o(r){var t=r.checkFramebufferStatus(r.FRAMEBUFFER);if(t!==r.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+Bu(r,t))}function Bu(r,t){switch(t){case r.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case r.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case r.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case r.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error "+t}}function Er(r,t,e,n){var o=We(r,t,function(){return e()});if(o==null)throw new Error(n);return o}function ku(r,t){var e=r.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,n=t+r.TEXTURE0;if(n<r.TEXTURE0||n>e)throw new Error("textureUnit must be in "+("[gl.TEXTURE0, gl.TEXTURE"+e+"]")+".")}function Qo(r,t){return t===void 0&&(t=2),Re(r.slice(0,r.length-t))}function zo(r){if(r.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[r.length>1?r[r.length-2]:1,r[r.length-1]]}function gi(r){var t=[1,1,1];return r.length===0||r.length===1&&r[0]===1||(t=[Qo(r)].concat(zo(r))),t}function Tu(r,t){var e;t===void 0&&(t=!1);var n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(t&&(n*=2,(r=r.map(function(c,l){return l>=r.length-2?Qe(r[l]):r[l]})).length===1&&(r=[2,r[0]])),r.length!==2){var o=an(r);r=o.newShape}var i=Re(r);if(r.length<=1&&i<=n)return[1,i];if(r.length===2&&r[0]<=n&&r[1]<=n)return r;if(r.length===3&&r[0]*r[1]<=n&&r[2]<=n)return[r[0]*r[1],r[2]];if(r.length===3&&r[0]<=n&&r[1]*r[2]<=n)return[r[0],r[1]*r[2]];if(r.length===4&&r[0]*r[1]*r[2]<=n&&r[3]<=n)return[r[0]*r[1]*r[2],r[3]];if(r.length===4&&r[0]<=n&&r[1]*r[2]*r[3]<=n)return[r[0],r[1]*r[2]*r[3]];if(t){var a=Qo(r),s=2,u=2;return r.length&&(s=(e=zo(r))[0],u=e[1]),Tt(i=a*(s/2)*(u/2)).map(function(c){return 2*c})}return Tt(i)}function mi(r){return r%2==0}function Uo(r,t){if(Ke(r=r.slice(-2),t=t.slice(-2))||!r.length||!t.length||r[0]===0||r[1]===0||t[0]===0||t[1]===0)return!0;if(r.length!==t.length){var e=r.slice(-1)[0],n=t.slice(-1)[0];if(e===n||mi(e)&&mi(n)&&(r[0]===1||t[0]===1))return!0}return r[1]===t[1]&&mi(r[0])&&mi(t[0])}function Du(r){if(hi==null){var t=cr(r);hi=t.getParameter(t.MAX_TEXTURE_SIZE)}return hi}function Fu(r){if(di==null){var t=cr(r);di=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,di)}function Pu(r){if(r===0)return 0;var t=cr(r);return Hn(t,"EXT_disjoint_timer_query_webgl2")&&r===2?2:Hn(t,"EXT_disjoint_timer_query")?1:0}function Hn(r,t){return r.getExtension(t)!=null}function pa(r){try{if(cr(r)!=null)return!0}catch(t){return!1}return!1}function Nu(r){if(r===0)return!1;var t=cr(r);if(r===1){if(!Hn(t,"OES_texture_float"))return!1}else if(!Hn(t,"EXT_color_buffer_float"))return!1;return va(t)}function Ou(r){if(r===0)return!1;var t=cr(r);if(r!==1){if(Hn(t,"EXT_color_buffer_float"))return va(t);if(Hn(t,"EXT_color_buffer_half_float")){var e=t.getExtension("EXT_color_buffer_half_float");return function(n,o){var i=fa(n,o),a=n.createTexture();n.bindTexture(n.TEXTURE_2D,a),n.texImage2D(n.TEXTURE_2D,0,i.internalFormatHalfFloat,1,1,0,i.textureFormatFloat,i.textureTypeHalfFloat,null);var s=n.createFramebuffer();n.bindFramebuffer(n.FRAMEBUFFER,s),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,a,0);var u=n.checkFramebufferStatus(n.FRAMEBUFFER)===n.FRAMEBUFFER_COMPLETE;return n.bindTexture(n.TEXTURE_2D,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.deleteTexture(a),n.deleteFramebuffer(s),u}(t,e)}return!1}return!!Hn(t,"OES_texture_float")&&!!Hn(t,"WEBGL_color_buffer_float")&&va(t)}function va(r){var t=fa(r),e=r.createTexture();r.bindTexture(r.TEXTURE_2D,e),r.texImage2D(r.TEXTURE_2D,0,t.internalFormatFloat,1,1,0,t.textureFormatFloat,t.textureTypeFloat,null);var n=r.createFramebuffer();r.bindFramebuffer(r.FRAMEBUFFER,n),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e,0);var o=r.checkFramebufferStatus(r.FRAMEBUFFER)===r.FRAMEBUFFER_COMPLETE;return r.bindTexture(r.TEXTURE_2D,null),r.bindFramebuffer(r.FRAMEBUFFER,null),r.deleteTexture(e),r.deleteFramebuffer(n),o}function Mu(r){return r===2&&cr(r).fenceSync!=null}var fh=Object.freeze({callAndCheck:We,canBeRepresented:du,getWebGLErrorMessage:pu,getExtensionOrThrow:Wo,createVertexShader:vu,createFragmentShader:gu,createProgram:mu,linkProgram:Au,validateProgram:pi,createStaticVertexBuffer:yu,createStaticIndexBuffer:xu,getNumChannels:function(){return J().getNumber("WEBGL_VERSION")===2?1:4},createTexture:bu,validateTextureSize:wu,createFramebuffer:Eu,bindVertexBufferToProgramAttribute:ha,bindTextureUnit:Cu,unbindTextureUnit:function(r,t,e){ku(r,e),We(r,t,function(){return r.activeTexture(r.TEXTURE0+e)}),We(r,t,function(){return r.bindTexture(r.TEXTURE_2D,null)})},getProgramUniformLocationOrThrow:Iu,getProgramUniformLocation:Su,bindTextureToProgramUniformSampler:Ru,bindCanvasToFramebuffer:function(r,t){We(r,t,function(){return r.bindFramebuffer(r.FRAMEBUFFER,null)}),We(r,t,function(){return r.viewport(0,0,r.canvas.width,r.canvas.height)}),We(r,t,function(){return r.scissor(0,0,r.canvas.width,r.canvas.height)})},bindColorTextureToFramebuffer:vi,unbindColorTextureFromFramebuffer:da,validateFramebuffer:_o,getFramebufferErrorMessage:Bu,getBatchDim:Qo,getRowsCols:zo,getShapeAs3D:gi,getTextureShapeFromLogicalShape:Tu,isReshapeFree:Uo,getWebGLMaxTextureSize:Du,resetMaxTextureSize:function(){hi=null},resetMaxTexturesInShader:function(){di=null},getMaxTexturesInShader:Fu,getWebGLDisjointQueryTimerVersion:Pu,hasExtension:Hn,isWebGLVersionEnabled:pa,isCapableOfRenderingToFloatTexture:Nu,isDownloadFloatTextureEnabled:Ou,isWebGLFenceEnabled:Mu}),tt=J();function NA(){J().set("PROD",!0)}function OA(){J().set("DEBUG",!0)}function MA(){J().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function Lu(r){J().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(r+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}function LA(){W.disposeVariables()}function WA(){return W}function _A(){return W.memory()}function QA(r){return W.profile(r)}function Le(r,t){return W.tidy(r,t)}function Wn(r){fo(r).forEach(function(t){return t.dispose()})}function hh(r){return W.keep(r)}function zA(r){return W.time(r)}function UA(r){return W.setBackend(r)}function HA(){return W.ready()}function jA(){return W.backendName}function VA(r){W.removeBackend(r)}function GA(r){return W.findBackend(r)}function XA(r){return W.findBackendFactory(r)}function JA(r,t,e){return e===void 0&&(e=1),W.registerBackend(r,t,e)}function KA(){return W.backend}function ZA(r,t){J().setPlatform(r,t)}function Ai(){for(var r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];J().getBool("IS_TEST")||console.warn.apply(console,r)}function lr(r,t){var e=r;if(I(r))return t==="string"?[]:[r.length];if(!Array.isArray(r))return[];for(var n=[];Array.isArray(e)||I(e)&&t!=="string";)n.push(e.length),e=e[0];return Array.isArray(r)&&J().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&function o(i,a,s){if(s=s||[],!Array.isArray(i)&&!I(i))return void B(a.length===0,function(){return"Element arr["+s.join("][")+"] is a primitive, but should be an array/TypedArray of "+a[0]+" elements"});B(a.length>0,function(){return"Element arr["+s.join("][")+"] should be a primitive, but is an array of "+i.length+" elements"}),B(i.length===a[0],function(){return"Element arr["+s.join("][")+"] should have "+a[0]+" elements, but has "+i.length+" elements"});for(var u=a.slice(1),c=0;c<i.length;++c)o(i[c],u,s.concat(c))}(r,n,[]),n}function Wu(r,t,e,n){if(r!=null&&(r!=="numeric"&&r!==t||r==="numeric"&&t==="string"))throw new Error("Argument '"+e+"' passed to '"+n+"' must be "+r+" tensor, but got "+t+" tensor")}function k(r,t,e,n){if(n===void 0&&(n="numeric"),r instanceof at)return Wu(n,r.dtype,t,e),r;var o=ze(r);if(o!=="string"&&["bool","int32","float32"].indexOf(n)>=0&&(o=n),Wu(n,o,t,e),r==null||!I(r)&&!Array.isArray(r)&&typeof r!="number"&&typeof r!="boolean"&&typeof r!="string"){var i=r==null?"null":r.constructor.name;throw new Error("Argument '"+t+"' passed to '"+e+"' must be a Tensor or TensorLike, but got '"+i+"'")}var a=lr(r,o);I(r)||Array.isArray(r)||(r=[r]);var s=o!=="string"?hn(r,o,J().getBool("DEBUG")):Rt(r,[],!0);return W.makeTensor(s,a,o)}function Ho(r,t,e,n){if(n===void 0&&(n="numeric"),!Array.isArray(r))throw new Error("Argument "+t+" passed to "+e+" must be a `Tensor[]` or `TensorLike[]`");return r.map(function(o,i){return k(o,t+"["+i+"]",e)},n)}function ga(r,t){for(var e=0;e<r.length;++e)if(r[r.length-e-1]!==t-1-e)return!1;return!0}function _u(r,t,e){for(var n=r.length+t.length,o=[],i=0,a=0,s=0;s<n;s++)e.indexOf(s)===-1?o.push(r[i++]):o.push(t[a++]);return o}function Bn(r,t){for(var e=[],n=r.length,o=0;o<n;o++)t.indexOf(o)===-1&&e.push(r[o]);return[e,t.map(function(i){return r[i]})]}function Mn(r,t){return _u(r,t.map(function(e){return 1}),t)}function _n(r,t,e){B(ga(t,e),function(){return r+" supports only inner-most axes for now. Got axes "+t+" and rank-"+e+" input."})}function tr(r,t){if(ga(r,t))return null;for(var e=[],n=0;n<t;++n)r.indexOf(n)===-1&&e.push(n);return r.forEach(function(o){return e.push(o)}),e}function yi(r){return r.map(function(t,e){return[e,t]}).sort(function(t,e){return t[1]-e[1]}).map(function(t){return t[0]})}function nr(r,t){for(var e=[],n=t-r;n<t;++n)e.push(n);return e}function Qu(r,t){var e=r[0].length;r.forEach(function(o,i){B(o.length===e,function(){return"Error in concat"+e+"D: rank of tensors["+i+"] must be the same as the rank of the rest ("+e+")"})}),B(t>=0&&t<e,function(){return"Error in concat"+e+"D: axis must be between 0 and "+(e-1)+"."});var n=r[0];r.forEach(function(o,i){for(var a=0;a<e;a++)B(a===t||o[a]===n[a],function(){return"Error in concat"+e+"D: Shape of tensors["+i+"] ("+o+") does not match the shape of the rest ("+n+") along the non-concatenated axis "+i+"."})})}function Kr(r,t){for(var e=r[0].slice(),n=1;n<r.length;n++)e[t]+=r[n][t];return e}function _(r){var t=Object.keys(r);if(t.length!==1)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+t.length+" keys.");var e=t[0],n=r[e];e.endsWith("_")&&(e=e.substring(0,e.length-1));var o=function(){for(var i=[],a=0;a<arguments.length;a++)i[a]=arguments[a];W.startScope(e);try{var s=n.apply(void 0,i);return s instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),W.endScope(s),s}catch(u){throw W.endScope(null),u}};return Object.defineProperty(o,"name",{value:e,configurable:!0}),o}tt.registerFlag("HAS_WEBGL",function(){return tt.getNumber("WEBGL_VERSION")>0}),tt.registerFlag("WEBGL_VERSION",function(){return pa(2)?2:pa(1)?1:0}),tt.registerFlag("WEBGL_BUFFER_SUPPORTED",function(){return tt.get("WEBGL_VERSION")===2}),tt.registerFlag("WEBGL_CPU_FORWARD",function(){return!0}),tt.registerFlag("WEBGL_FORCE_F16_TEXTURES",function(){return!1}),tt.registerFlag("WEBGL_PACK",function(){return tt.getBool("HAS_WEBGL")}),tt.registerFlag("WEBGL_PACK_NORMALIZATION",function(){return tt.getBool("WEBGL_PACK")}),tt.registerFlag("WEBGL_PACK_CLIP",function(){return tt.getBool("WEBGL_PACK")}),tt.registerFlag("WEBGL_PACK_DEPTHWISECONV",function(){return!1}),tt.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",function(){return tt.getBool("WEBGL_PACK")}),tt.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",function(){return tt.getBool("WEBGL_PACK")}),tt.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",function(){return tt.getBool("WEBGL_PACK")}),tt.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",function(){return tt.getBool("WEBGL_PACK")}),tt.registerFlag("WEBGL_PACK_REDUCE",function(){return tt.getBool("WEBGL_PACK")}),tt.registerFlag("WEBGL_LAZILY_UNPACK",function(){return tt.getBool("WEBGL_PACK")}),tt.registerFlag("WEBGL_CONV_IM2COL",function(){return tt.getBool("WEBGL_PACK")}),tt.registerFlag("WEBGL_MAX_TEXTURE_SIZE",function(){return Du(tt.getNumber("WEBGL_VERSION"))}),tt.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",function(){return Fu(tt.getNumber("WEBGL_VERSION"))}),tt.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",function(){var r=tt.getNumber("WEBGL_VERSION");return r===0?0:Pu(r)}),tt.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",function(){return tt.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&(r=navigator.userAgent||navigator.vendor||window.opera,!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(r)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(r.substr(0,4))));var r}),tt.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",function(){return Nu(tt.getNumber("WEBGL_VERSION"))}),tt.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",function(){return!tt.getBool("WEBGL_FORCE_F16_TEXTURES")&&tt.getBool("WEBGL_RENDER_FLOAT32_CAPABLE")}),tt.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",function(){return Ou(tt.getNumber("WEBGL_VERSION"))}),tt.registerFlag("WEBGL_FENCE_API_ENABLED",function(){return Mu(tt.getNumber("WEBGL_VERSION"))}),tt.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",function(){return tt.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0}),dn=Lu;var kn=_({complex_:function(r,t){var e=k(r,"real","complex"),n=k(t,"imag","complex");return Je(e.shape,n.shape,"real and imag shapes, "+e.shape+" and "+n.shape+", must match in call to tf.complex()."),W.runKernelFunc(function(o){return o.complex(e,n)},{$real:e,$imag:n})}}),Zn=_({real_:function(r){var t=k(r,"input","real");return W.runKernelFunc(function(e){return e.real(t)},{$input:t})}}),fr=_({imag_:function(r){var t=k(r,"input","imag");return W.runKernelFunc(function(e){return e.imag(t)},{$input:t})}});function Tn(r,t,e){return Or(r,t,lr(r,e),e)}function Or(r,t,e,n){if(n==null&&(n=ze(r)),n==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!I(r)&&!Array.isArray(r)&&typeof r!="number"&&typeof r!="boolean"&&typeof r!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){Ie(t);var o=Re(t),i=Re(e);B(o===i,function(){return"Based on the provided shape, ["+t+"], the tensor should have "+o+" values but has "+i});for(var a=0;a<e.length;++a){var s=e[a],u=a!==e.length-1||s!==Re(t.slice(a));B(e[a]===t[a]||!u,function(){return"Error creating a new Tensor. Inferred shape ("+e+") does not match the provided shape ("+t+"). "})}}return I(r)||Array.isArray(r)||(r=[r]),t=t||e,r=n!=="string"?hn(r,n,J().getBool("DEBUG")):Rt(r,[],!0),W.makeTensor(r,t,n)}function Fe(r,t){if((I(r)&&t!=="string"||Array.isArray(r))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&I(r)&&!(r instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Or(r,[],[],t)}function vn(r,t){$t(r);var e=lr(r,t);if(e.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Or(r,null,e,t)}function Mr(r,t,e){if($t(r),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");var n=lr(r,e);if(n.length!==2&&n.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Or(r,t,n,e)}function ma(r,t,e){if($t(r),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");var n=lr(r,e);if(n.length!==3&&n.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Or(r,t,n,e)}function Qn(r,t,e){if($t(r),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");var n=lr(r,e);if(n.length!==4&&n.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Or(r,t,n,e)}function dh(r,t,e){if($t(r),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");var n=lr(r,e);if(n.length!==5&&n.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Or(r,t,n,e)}function ph(r,t,e){if($t(r),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");var n=lr(r,e);if(n.length!==6&&n.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return Or(r,t=t||n,n,e)}function vh(r,t,e,n){return t===void 0&&(t=!0),W.makeVariable(r,t,e,n)}function po(r,t){if(t===void 0&&(t="float32"),t==="complex64"){var e=po(r,"float32"),n=en(r,"float32");return kn(e,n)}var o=z(Re(r),t);return W.makeTensor(o,r,t)}function en(r,t){if(t===void 0&&(t="float32"),t==="complex64"){var e=en(r,"float32"),n=en(r,"float32");return kn(e,n)}var o=Z(Re(r),t);return W.makeTensor(o,r,t)}function hr(r,t,e){return W.runKernelFunc(function(n){return n.fill(r,t,e)},{})}function gh(r,t,e){if(e<=0)throw new Error("The number of values should be positive.");return W.runKernelFunc(function(n){return n.linspace(r,t,e)},{})}function xi(r,t,e,n){if(e===void 0&&(e=1),n===void 0&&(n="float32"),e===0)throw new Error("Cannot have a step of zero");if(r===t||r<t&&e<0||t<r&&e>1)return en([0],n);var o=Z(Math.abs(Math.ceil((t-r)/e)),n);t<r&&e===1&&(e=-1),o[0]=r;for(var i=1;i<o.length;i++)o[i]=o[i-1]+e;return vn(o,n)}var zu=_({onesLike_:function(r){var t=k(r,"x","onesLike");if(t.dtype==="complex64"){var e=zu(Zn(t)),n=Bt(fr(t));return kn(e,n)}return W.runKernelFunc(function(o){return o.onesLike(t)},{$x:t},function(o,i){return{$x:function(){return Bt(o)}}})}}),Bt=_({zerosLike_:function(r){var t=k(r,"x","zerosLike");return W.runKernelFunc(function(e){return e.zerosLike(t)},{$x:t},function(e,n){return{$x:function(){return Bt(e)}}})}}),An=_({concat_:function(r,t){t===void 0&&(t=0),B(r.length>=1,function(){return"Pass at least one tensor to concat"});var e=Ho(r,"tensors","concat");e[0].dtype==="complex64"&&e.forEach(function(s){if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor
with dtype `+s.dtype+". ")}),t=Dt(t,e[0].shape)[0];var n=Kr(e.map(function(s){return s.shape}),t);if(Re(n)===0)return Tn([],n);if((e=e.filter(function(s){return s.size>0})).length===1)return e[0];var o=e.map(function(s){return s.shape});Qu(o,t);var i=e,a={axis:t};return W.runKernelFunc(function(s){return s.concat(e,t)},i,function(s){var u=o.map(function(c){return c[t]});return Aa(s,u,t).map(function(c){return function(){return c}})},"Concat",a)}}),mh=_({concat1d_:function(r){return An(r,0)}}),Ah=_({concat2d_:function(r,t){return An(r,t)}}),yh=_({concat3d_:function(r,t){return An(r,t)}}),xh=_({concat4d_:function(r,t){return An(r,t)}}),Aa=_({split_:function(r,t,e){e===void 0&&(e=0);var n,o=k(r,"x","split");return e=Dt(e,o.shape)[0],typeof t=="number"?(B(o.shape[e]%t==0,function(){return"Number of splits must evenly divide the axis."}),n=new Array(t).fill(o.shape[e]/t)):(B(o.shape[e]===t.reduce(function(i,a){return i+a}),function(){return"The sum of sizes must match the size of the axis dimension."}),n=t),W.runKernelFunc(function(i){return i.split(o,n,e)},{$x:o},function(i){return{$x:function(){return An(i,e)}}})}});typeof globalThis!="undefined"||typeof window!="undefined"||typeof H.g!="undefined"&&H.g;function Zr(r,t){return r(t={exports:{}},t.exports),t.exports}var bh=Zr(function(r){(function(t,e,n){function o(s){var u,c=this,l=(u=4022871197,function(f){f=f.toString();for(var h=0;h<f.length;h++){var d=.02519603282416938*(u+=f.charCodeAt(h));d-=u=d>>>0,u=(d*=u)>>>0,u+=4294967296*(d-=u)}return 23283064365386963e-26*(u>>>0)});c.next=function(){var f=2091639*c.s0+23283064365386963e-26*c.c;return c.s0=c.s1,c.s1=c.s2,c.s2=f-(c.c=0|f)},c.c=1,c.s0=l(" "),c.s1=l(" "),c.s2=l(" "),c.s0-=l(s),c.s0<0&&(c.s0+=1),c.s1-=l(s),c.s1<0&&(c.s1+=1),c.s2-=l(s),c.s2<0&&(c.s2+=1),l=null}function i(s,u){return u.c=s.c,u.s0=s.s0,u.s1=s.s1,u.s2=s.s2,u}function a(s,u){var c=new o(s),l=u&&u.state,f=c.next;return f.int32=function(){return 4294967296*c.next()|0},f.double=function(){return f()+11102230246251565e-32*(2097152*f()|0)},f.quick=f,l&&(typeof l=="object"&&i(l,c),f.state=function(){return i(c,{})}),f}e&&e.exports?e.exports=a:n&&n.amd?n(function(){return a}):this.alea=a})(0,r,!1)}),wh=Zr(function(r){(function(t,e,n){function o(s){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var f=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^f^f>>>8},s===(0|s)?u.x=s:c+=s;for(var l=0;l<c.length+64;l++)u.x^=0|c.charCodeAt(l),u.next()}function i(s,u){return u.x=s.x,u.y=s.y,u.z=s.z,u.w=s.w,u}function a(s,u){var c=new o(s),l=u&&u.state,f=function(){return(c.next()>>>0)/4294967296};return f.double=function(){do var h=((c.next()>>>11)+(c.next()>>>0)/4294967296)/2097152;while(h===0);return h},f.int32=c.next,f.quick=f,l&&(typeof l=="object"&&i(l,c),f.state=function(){return i(c,{})}),f}e&&e.exports?e.exports=a:n&&n.amd?n(function(){return a}):this.xor128=a})(0,r,!1)}),Eh=Zr(function(r){(function(t,e,n){function o(s){var u=this,c="";u.next=function(){var f=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^f^f<<1)|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,s===(0|s)?u.x=s:c+=s;for(var l=0;l<c.length+64;l++)u.x^=0|c.charCodeAt(l),l==c.length&&(u.d=u.x<<10^u.x>>>4),u.next()}function i(s,u){return u.x=s.x,u.y=s.y,u.z=s.z,u.w=s.w,u.v=s.v,u.d=s.d,u}function a(s,u){var c=new o(s),l=u&&u.state,f=function(){return(c.next()>>>0)/4294967296};return f.double=function(){do var h=((c.next()>>>11)+(c.next()>>>0)/4294967296)/2097152;while(h===0);return h},f.int32=c.next,f.quick=f,l&&(typeof l=="object"&&i(l,c),f.state=function(){return i(c,{})}),f}e&&e.exports?e.exports=a:n&&n.amd?n(function(){return a}):this.xorwow=a})(0,r,!1)}),Ch=Zr(function(r){(function(t,e,n){function o(s){var u=this;u.next=function(){var c,l,f=u.x,h=u.i;return c=f[h],l=(c^=c>>>7)^c<<24,l^=(c=f[h+1&7])^c>>>10,l^=(c=f[h+3&7])^c>>>3,l^=(c=f[h+4&7])^c<<7,c=f[h+7&7],l^=(c^=c<<13)^c<<9,f[h]=l,u.i=h+1&7,l},function(c,l){var f,h=[];if(l===(0|l))h[0]=l;else for(l=""+l,f=0;f<l.length;++f)h[7&f]=h[7&f]<<15^l.charCodeAt(f)+h[f+1&7]<<13;for(;h.length<8;)h.push(0);for(f=0;f<8&&h[f]===0;++f);for(f==8?h[7]=-1:h[f],c.x=h,c.i=0,f=256;f>0;--f)c.next()}(u,s)}function i(s,u){return u.x=s.x.slice(),u.i=s.i,u}function a(s,u){s==null&&(s=+new Date);var c=new o(s),l=u&&u.state,f=function(){return(c.next()>>>0)/4294967296};return f.double=function(){do var h=((c.next()>>>11)+(c.next()>>>0)/4294967296)/2097152;while(h===0);return h},f.int32=c.next,f.quick=f,l&&(l.x&&i(l,c),f.state=function(){return i(c,{})}),f}e&&e.exports?e.exports=a:n&&n.amd?n(function(){return a}):this.xorshift7=a})(0,r,!1)}),Ih=Zr(function(r){(function(t,e,n){function o(s){var u=this;u.next=function(){var c,l,f=u.w,h=u.X,d=u.i;return u.w=f=f+1640531527|0,l=h[d+34&127],c=h[d=d+1&127],l^=l<<13,c^=c<<17,l^=l>>>15,c^=c>>>12,l=h[d]=l^c,u.i=d,l+(f^f>>>16)|0},function(c,l){var f,h,d,p,v,g=[],m=128;for(l===(0|l)?(h=l,l=null):(l+="\0",h=0,m=Math.max(m,l.length)),d=0,p=-32;p<m;++p)l&&(h^=l.charCodeAt((p+32)%l.length)),p===0&&(v=h),h^=h<<10,h^=h>>>15,h^=h<<4,h^=h>>>13,p>=0&&(v=v+1640531527|0,d=(f=g[127&p]^=h+v)==0?d+1:0);for(d>=128&&(g[127&(l&&l.length||0)]=-1),d=127,p=512;p>0;--p)h=g[d+34&127],f=g[d=d+1&127],h^=h<<13,f^=f<<17,h^=h>>>15,f^=f>>>12,g[d]=h^f;c.w=v,c.X=g,c.i=d}(u,s)}function i(s,u){return u.i=s.i,u.w=s.w,u.X=s.X.slice(),u}function a(s,u){s==null&&(s=+new Date);var c=new o(s),l=u&&u.state,f=function(){return(c.next()>>>0)/4294967296};return f.double=function(){do var h=((c.next()>>>11)+(c.next()>>>0)/4294967296)/2097152;while(h===0);return h},f.int32=c.next,f.quick=f,l&&(l.X&&i(l,c),f.state=function(){return i(c,{})}),f}e&&e.exports?e.exports=a:n&&n.amd?n(function(){return a}):this.xor4096=a})(0,r,!1)}),Sh=Zr(function(r){(function(t,e,n){function o(s){var u=this,c="";u.next=function(){var f=u.b,h=u.c,d=u.d,p=u.a;return f=f<<25^f>>>7^h,h=h-d|0,d=d<<24^d>>>8^p,p=p-f|0,u.b=f=f<<20^f>>>12^h,u.c=h=h-d|0,u.d=d<<16^h>>>16^p,u.a=p-f|0},u.a=0,u.b=0,u.c=-1640531527,u.d=1367130551,s===Math.floor(s)?(u.a=s/4294967296|0,u.b=0|s):c+=s;for(var l=0;l<c.length+20;l++)u.b^=0|c.charCodeAt(l),u.next()}function i(s,u){return u.a=s.a,u.b=s.b,u.c=s.c,u.d=s.d,u}function a(s,u){var c=new o(s),l=u&&u.state,f=function(){return(c.next()>>>0)/4294967296};return f.double=function(){do var h=((c.next()>>>11)+(c.next()>>>0)/4294967296)/2097152;while(h===0);return h},f.int32=c.next,f.quick=f,l&&(typeof l=="object"&&i(l,c),f.state=function(){return i(c,{})}),f}e&&e.exports?e.exports=a:n&&n.amd?n(function(){return a}):this.tychei=a})(0,r,!1)}),qr=Zr(function(r){(function(t,e){var n,o=this,i=256,a=6,s="random",u=e.pow(i,a),c=e.pow(2,52),l=2*c,f=i-1;function h(m,w,E){var b=[],C=v(function O(F,P){var U,Q=[],V=typeof F;if(P&&V=="object")for(U in F)try{Q.push(O(F[U],P-1))}catch(X){}return Q.length?Q:V=="string"?F:F+"\0"}((w=w==1?{entropy:!0}:w||{}).entropy?[m,g(t)]:m==null?function(){try{var O;return n&&(O=n.randomBytes)?O=O(i):(O=new Uint8Array(i),(o.crypto||o.msCrypto).getRandomValues(O)),g(O)}catch(U){var F=o.navigator,P=F&&F.plugins;return[+new Date,o,P,o.screen,g(t)]}}():m,3),b),S=new d(b),N=function(){for(var O=S.g(a),F=u,P=0;O<c;)O=(O+P)*i,F*=i,P=S.g(1);for(;O>=l;)O/=2,F/=2,P>>>=1;return(O+P)/F};return N.int32=function(){return 0|S.g(4)},N.quick=function(){return S.g(4)/4294967296},N.double=N,v(g(S.S),t),(w.pass||E||function(O,F,P,U){return U&&(U.S&&p(U,S),O.state=function(){return p(S,{})}),P?(e[s]=O,F):O})(N,C,"global"in w?w.global:this==e,w.state)}function d(m){var w,E=m.length,b=this,C=0,S=b.i=b.j=0,N=b.S=[];for(E||(m=[E++]);C<i;)N[C]=C++;for(C=0;C<i;C++)N[C]=N[S=f&S+m[C%E]+(w=N[C])],N[S]=w;(b.g=function(O){for(var F,P=0,U=b.i,Q=b.j,V=b.S;O--;)F=V[U=f&U+1],P=P*i+V[f&(V[U]=V[Q=f&Q+F])+(V[Q]=F)];return b.i=U,b.j=Q,P})(i)}function p(m,w){return w.i=m.i,w.j=m.j,w.S=m.S.slice(),w}function v(m,w){for(var E,b=m+"",C=0;C<b.length;)w[f&C]=f&(E^=19*w[f&C])+b.charCodeAt(C++);return g(w)}function g(m){return String.fromCharCode.apply(0,m)}if(e["seed"+s]=h,v(e.random(),t),r.exports){r.exports=h;try{n=H(91423)}catch(m){}}})([],Math)});qr.alea=bh,qr.xor128=wh,qr.xorwow=Eh,qr.xorshift7=Ch,qr.xor4096=Ih,qr.tychei=Sh;var bi=qr.alea,ya=function(){function r(t,e,n,o,i){this.mean=t,this.stdDev=e,this.dtype=n,this.nextVal=NaN,this.truncated=o,this.truncated&&(this.upper=this.mean+2*this.stdDev,this.lower=this.mean-2*this.stdDev);var a=i||Math.random();this.random=bi(a.toString())}return r.prototype.nextValue=function(){if(!isNaN(this.nextVal)){var t=this.nextVal;return this.nextVal=NaN,t}for(var e,n,o=!1;!o;){var i=void 0,a=void 0,s=void 0;do s=(i=2*this.random()-1)*i+(a=2*this.random()-1)*a;while(s>=1||s===0);var u=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*i*u,n=this.mean+this.stdDev*a*u,this.truncated&&!this.isValidTruncated(e)||(o=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(e)},r.prototype.convertValue=function(t){return this.dtype==null||this.dtype==="float32"?t:Math.round(t)},r.prototype.isValidTruncated=function(t){return t<=this.upper&&t>=this.lower},r}(),Rh=function(){function r(t,e,n,o){this.alpha=t,this.beta=1/e,this.dtype=n;var i=o||Math.random();this.randu=bi(i.toString()),this.randn=new ya(0,1,n,!1,this.randu()),this.d=t<1?t+2/3:t-1/3,this.c=1/Math.sqrt(9*this.d)}return r.prototype.nextValue=function(){for(var t,e,n,o,i,a;;){do o=this.randn.nextValue(),a=1+this.c*o;while(a<=0);if(a*=a*a,e=1-.331*(t=o*o)*t,n=.5*t+this.d*(1-a+Math.log(a)),(i=this.randu())<e||Math.log(i)<n)break}return a=1/this.beta*this.d*a,this.alpha<1&&(a*=Math.pow(this.randu(),1/this.alpha)),this.convertValue(a)},r.prototype.convertValue=function(t){return this.dtype==="float32"?t:Math.round(t)},r}(),Bh=function(){function r(t,e,n,o){var i=this;if(t===void 0&&(t=0),e===void 0&&(e=1),this.canReturnFloat=function(){return i.dtype==null||i.dtype==="float32"},this.min=t,this.range=e-t,this.dtype=n,o==null&&(o=Math.random()),typeof o=="number"&&(o=o.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error("The difference between "+t+" - "+e+" <= 1 and dtype is not float");this.random=bi(o)}return r.prototype.convertValue=function(t){return this.canReturnFloat()?t:Math.round(t)},r.prototype.nextValue=function(){return this.convertValue(this.min+this.range*this.random())},r}();function ot(r,t,e){return t===void 0&&(t="float32"),t=t||"float32",Ie(r),new wt(r,t,e)}function kh(r,t){t===void 0&&(t=!1),console.log(r.toString(t))}var Uu=_({batchToSpaceND_:function(r,t,e){var n=k(r,"x","batchToSpaceND"),o=t.reduce(function(i,a){return i*a});return B(n.rank>=1+t.length,function(){return"input rank is "+n.rank+" but should be > than blockShape.length "+t.length}),B(e.length===t.length,function(){return"crops.length is "+e.length+" but should be equal to blockShape.length "+t.length}),B(n.shape[0]%o==0,function(){return"input tensor batch is "+n.shape[0]+" but is not divisible by the product of the elements of blockShape "+t.join(" * ")+" === "+o}),W.runKernelFunc(function(i){return i.batchToSpaceND(n,t,e)},{$x:n},function(i){return{$x:function(){return i.spaceToBatchND(t,e)}}})}}),Th=_({broadcastTo_:function(r,t){var e=k(r,"broadcastTo","x"),n=e.shape;if(t.some(function(u){return!(u>0)||u%1!=0}))throw new Error("broadcastTo(): Invalid broadcast shape ["+t+"].");if(t.length<e.rank)throw new Error("broadcastTo(): shape.length="+t.length+" < input.rank="+e.rank+".");if(t.length>e.rank){for(var o=e.shape.slice();o.length<t.length;)o.unshift(1);e=e.reshape(o)}for(var i=Array.from(t),a=t.length-1;a>=0;a--)if(e.shape[a]===t[a])i[a]=1;else if(e.shape[a]!==1)throw new Error("broadcastTo(): ["+n+"] cannot be broadcast to ["+t+"].");var s=i.map(function(u,c){return u>1?c:-1}).filter(function(u){return u>=0});return s.length===0?e.clone():W.runKernelFunc(function(u){return u.tile(e,i)},{input:e},function(u){return{input:function(){return u.sum(s,!0)}}})}}),Dh=_({cast_:function(r,t){var e=k(r,"x","cast");if(!R(t))throw new Error("Failed to cast to unknown dtype "+t);if(t==="string"&&e.dtype!=="string"||t!=="string"&&e.dtype==="string")throw new Error("Only strings can be casted to strings");var n={dtype:t};return W.runKernelFunc(function(o){return o.cast(e,t)},{x:e},function(o){return{x:function(){return o.clone()}}},"Cast",n)}}),Fh=_({clone_:function(r){var t=k(r,"x","clone",null);return W.runKernelFunc(function(){return W.makeTensorFromDataId(t.dataId,t.shape,t.dtype)},{$x:t},function(e){return{$x:function(){return e.toFloat()}}})}}),Ph=_({cumsum_:function(r,t,e,n){t===void 0&&(t=0),e===void 0&&(e=!1),n===void 0&&(n=!1);var o=k(r,"x","cumsum"),i=tr([t|=0],o.rank),a=o;i!=null&&(a=o.transpose(i));var s=nr(1,o.rank)[0],u=W.runKernelFunc(function(c){return c.cumsum(a,s,e,n)},{permutedX:a},function(c){return{permutedX:function(){return c.cumsum(t,e,!n)}}});return i!=null&&(u=u.transpose(i)),u}}),Nh=_({depthToSpace_:function(r,t,e){e===void 0&&(e="NHWC");var n=k(r,"x","depthToSpace"),o=e==="NHWC"?n.shape[1]:n.shape[2],i=e==="NHWC"?n.shape[2]:n.shape[3],a=e==="NHWC"?n.shape[3]:n.shape[1];return B(o*t>=0,function(){return`Negative dimension size caused by overflow when multiplying
`+o+" and "+t+` for depthToSpace with input shape
`+n.shape}),B(i*t>=0,function(){return`Negative dimension size caused by overflow when multiplying
`+i+" and "+t+` for depthToSpace with input shape
`+n.shape}),B(a%(t*t)==0,function(){return"Dimension size must be evenly divisible by "+t*t+" but is "+a+" for depthToSpace with input shape "+n.shape}),W.runKernelFunc(function(s){return s.depthToSpace(n,t,e)},{$x:n})}}),qn=_({expandDims_:function(r,t){t===void 0&&(t=0);var e=k(r,"x","expandDims",null);B(t<=e.rank,function(){return"Axis must be <= rank of the tensor"});var n=e.shape.slice();return t<0&&(B(-(e.rank+1)<=t,function(){return"Axis must be in the interval ["+-(e.rank+1)+", "+e.rank+"]"}),t=e.rank+t+1),n.splice(t,0,1),rr(e,n)}}),Hu=_({eye_:function(r,t,e,n){n===void 0&&(n="float32"),t==null&&(t=r);for(var o=ot([r,t],n),i=r<=t?r:t,a=0;a<i;++a)o.set(1,a,a);var s=o.toTensor().as2D(r,t);if(e==null)return s;if(e.length===1)return vo(qn(s,0),[e[0],1,1]);if(e.length===2)return vo(qn(qn(s,0),0),[e[0],e[1],1,1]);if(e.length===3)return vo(qn(qn(qn(s,0),0),0),[e[0],e[1],e[2],1,1]);throw new Error("eye() currently supports only 1D and 2D batchShapes, but received "+e.length+"D.")}}),Oh=_({multinomial_:function(r,t,e,n){n===void 0&&(n=!1);var o=k(r,"logits","multinomial"),i=o.size,a=o.rank;if(i<2)throw new Error("Error in multinomial: you need at least 2 outcomes, but got "+i+".");if(a>2)throw new Error("Rank of probabilities must be 1 or 2, but is "+a);e=e||Math.random();var s=a===1?o.as2D(1,-1):o,u=W.runKernelFunc(function(c){return c.multinomial(s,n,t,e)},{logits2D:s});return a===1?u.as1D():u}}),xa=_({oneHot_:function(r,t,e,n){if(e===void 0&&(e=1),n===void 0&&(n=0),t<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+t);var o=k(r,"indices","oneHot","int32"),i=o.shape.concat([t]);return o=o.flatten(),W.runKernelFunc(function(a){return a.oneHot(o,t,e,n)},{$indices:o},function(a){return{$indices:function(){return en(o.shape,"float32")}}}).reshape(i)}}),Yr=_({pad_:function(r,t,e){e===void 0&&(e=0);var n=k(r,"x","pad");if(n.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var o={paddings:t,constantValue:e};return W.runKernelFunc(function(i){return i.pad(n,t,e)},{x:n},function(i){var a=t.map(function(s){return s[0]});return{x:function(){return i.slice(a,n.shape)}}},"PadV2",o)}}),Mh=_({pad1d_:function(r,t,e){return e===void 0&&(e=0),B(t.length===2,function(){return"Invalid number of paddings. Must be length of 2."}),Yr(r,[t],e)}}),Lh=_({pad2d_:function(r,t,e){return e===void 0&&(e=0),B(t.length===2&&t[0].length===2&&t[1].length===2,function(){return"Invalid number of paddings. Must be length of 2 each."}),Yr(r,t,e)}}),Wh=_({pad3d_:function(r,t,e){return e===void 0&&(e=0),B(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,function(){return"Invalid number of paddings. Must be length of 2 each."}),Yr(r,t,e)}}),_h=_({pad4d_:function(r,t,e){return e===void 0&&(e=0),B(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,function(){return"Invalid number of paddings. Must be length of 2 each."}),Yr(r,t,e)}}),Qh=_({rand_:function(r,t,e){var n=Re(r),o=null;if(e==null||e==="float32")o=new Float32Array(n);else if(e==="int32")o=new Int32Array(n);else{if(e!=="bool")throw new Error("Unknown data type "+e);o=new Uint8Array(n)}for(var i=0;i<n;i++)o[i]=t();return W.makeTensor(o,r,e)}}),zh=_({randomNormal_:function(r,t,e,n,o){if(t===void 0&&(t=0),e===void 0&&(e=1),n!=null&&n==="bool")throw new Error("Unsupported data type "+n);for(var i=new ya(t,e,n,!1,o),a=ot(r,n),s=0;s<a.values.length;s++)a.values[s]=i.nextValue();return a.toTensor()}}),Uh=_({randomGamma_:function(r,t,e,n,o){if(e===void 0&&(e=1),n===void 0&&(n="float32"),e==null&&(e=1),n==null&&(n="float32"),n!=="float32"&&n!=="int32")throw new Error("Unsupported data type "+n);for(var i=new Rh(t,e,n,o),a=ot(r,n),s=0;s<a.values.length;s++)a.values[s]=i.nextValue();return a.toTensor()}}),ju=_({randomUniform_:function(r,t,e,n,o){t===void 0&&(t=0),e===void 0&&(e=1),n===void 0&&(n="float32");for(var i=ot(r,n),a=new Bh(t,e,null,o),s=0;s<i.values.length;s++)i.values[s]=a.nextValue();return i.toTensor()}}),rr=_({reshape_:function(r,t){var e=k(r,"x","reshape",null);t=Kt(t,e.size),B(e.size===Re(t),function(){return"new shape and old shape must have the same number of elements."});var n={shape:t};return W.runKernelFunc(function(o){return o.reshape(e,t)},{x:e},function(o){return{x:function(){return o.reshape(e.shape)}}},"Reshape",n)}}),Vu=_({spaceToBatchND_:function(r,t,e){var n=k(r,"x","spaceToBatchND");return B(n.rank>=1+t.length,function(){return"input rank "+n.rank+" should be > than [blockShape] "+t.length}),B(e.length===t.length,function(){return"paddings.shape[0] "+e.length+" must be equal to [blockShape] "+t.length}),B(n.shape.reduce(function(o,i,a){return a>0&&a<=t.length?o&&(i+e[a-1][0]+e[a-1][1])%t[a-1]==0:o},!0),function(){return"input spatial dimensions "+n.shape.slice(1)+" with paddings "+e.toString()+" must be divisible by blockShapes "+t.toString()}),W.runKernelFunc(function(o){return o.spaceToBatchND(n,t,e)},{$x:n},function(o){return{$x:function(){return o.batchToSpaceND(t,e)}}})}}),Gu=_({squeeze_:function(r,t){var e=k(r,"x","squeeze");return rr(e,an(e.shape,t).newShape)}}),jn=_({stack_:function(r,t){t===void 0&&(t=0);var e=Ho(r,"tensors","stack");if(B(e.length>=1,function(){return"Pass at least one tensor to tf.stack"}),e.length===1)return e[0].expandDims(t);var n=e[0].rank,o=e[0].shape,i=e[0].dtype;B(t<=n,function(){return"Axis must be <= rank of the tensor"}),e.forEach(function(s){Je(o,s.shape,"All tensors passed to stack must have matching shapes")}),e.forEach(function(s){B(i===s.dtype,function(){return"All tensors passed to stack must have matching dtypes"})});var a=e.map(function(s){return s.expandDims(t)});return An(a,t)}}),vo=_({tile_:function(r,t){var e=k(r,"x","tile",null);B(e.rank===t.length,function(){return"Error in transpose: rank of input "+e.rank+" must match length of reps "+t+"."});var n=[e],o={reps:t};return W.runKernelFunc(function(i,a){var s=i.tile(e,t);return a([e]),s},{x:e},function(i,a){var s=a[0];return{x:function(){var u=Bt(s);if(s.rank===1)for(var c=0;c<t[0];++c)u=u.add(i.slice([c*s.shape[0]],[s.shape[0]]));else if(s.rank===2)for(c=0;c<t[0];++c)for(var l=0;l<t[1];++l)u=u.add(i.slice([c*s.shape[0],l*s.shape[1]],[s.shape[0],s.shape[1]]));else if(s.rank===3)for(c=0;c<t[0];++c)for(l=0;l<t[1];++l)for(var f=0;f<t[2];++f)u=u.add(i.slice([c*s.shape[0],l*s.shape[1],f*s.shape[2]],[s.shape[0],s.shape[1],s.shape[2]]));else{if(s.rank!==4)throw new Error("Gradient for tile operation is not implemented for rank-"+s.rank+" tensors yet.");for(c=0;c<t[0];++c)for(l=0;l<t[1];++l)for(f=0;f<t[2];++f)for(var h=0;h<t[3];++h)u=u.add(i.slice([c*s.shape[0],l*s.shape[1],f*s.shape[2],h*s.shape[3]],[s.shape[0],s.shape[1],s.shape[2],s.shape[3]]))}return u}}},"Tile",o,n)}}),Hh=_({truncatedNormal_:function(r,t,e,n,o){if(t===void 0&&(t=0),e===void 0&&(e=1),n!=null&&n==="bool")throw new Error("Unsupported data type "+n);for(var i=new ya(t,e,n,!0,o),a=ot(r,n),s=0;s<a.values.length;s++)a.values[s]=i.nextValue();return a.toTensor()}}),yn=_({unstack_:function(r,t){t===void 0&&(t=0),t=t||0;var e=k(r,"x","unstack");B(t>=-e.shape.length&&t<e.shape.length,function(){return"Axis = "+t+" is not in [-"+e.shape.length+", "+e.shape.length+")"}),t<0&&(t+=e.shape.length);var n={axis:t};return W.runKernelFunc(function(o){return o.unstack(e,t)},{x:e},function(o){return{x:function(){return jn(o,t)}}},"Unpack",n)}}),jh=function(r,t){return be(this,void 0,void 0,function(){var e,n,o,i,a,s,u,c,l,f;return Se(this,function(h){switch(h.label){case 0:return e=k(r,"x","setdiff1d"),n=k(t,"y","setdiff1d"),B(e.dtype===n.dtype,function(){return"x and y should have the same dtype, but got x ("+e.dtype+") and y ("+n.dtype+")."}),B(e.rank===1,function(){return"x should be 1D tensor, but got x ("+e.shape+")."}),B(n.rank===1,function(){return"y should be 1D tensor, but got y ("+n.shape+")."}),[4,e.data()];case 1:return o=h.sent(),[4,n.data()];case 2:for(i=h.sent(),a=new Set(i),s=0,l=0;l<o.length;l++)a.has(o[l])||s++;for(u=new wt([s],e.dtype),c=new wt([s],"int32"),l=0,f=0;l<o.length;l++)a.has(o[l])||(u.values[f]=o[l],c.values[f]=l,f++);return[2,[u.toTensor(),c.toTensor()]]}})})};function wi(r,t,e,n){n===void 0&&(n=!0);var o=[];if(n)(o=o.concat(t.slice(0))).push(r[0]/e),o=o.concat(r.slice(1));else{o=o.concat(r[0]);for(var i=t.length,a=0;a<i;++a)o=o.concat([r[a+1]/t[a],t[a]]);o=o.concat(r.slice(i+1))}return o}function Ei(r,t,e){e===void 0&&(e=!0);var n=[];if(e){n.push(t);for(var o=t+1;o<r;++o)o<=2*t?(n.push(o),n.push(o-(t+1))):n.push(o)}else{var i=[],a=[];for(o=1;o<r;++o)o>=2*t+1||o%2==1?a.push(o):i.push(o);n.push.apply(n,i),n.push(0),n.push.apply(n,a)}return n}function Ci(r,t,e,n){n===void 0&&(n=!0);var o=[];n?o.push(r[0]/e):o.push(r[0]*e);for(var i=1;i<r.length;++i)i<=t.length?n?o.push(t[i-1]*r[i]):o.push(r[i]/t[i-1]):o.push(r[i]);return o}function Xu(r,t){for(var e=[0],n=0;n<t;++n)e.push(r[n][0]);return e}function Ju(r,t,e){for(var n=r.slice(0,1),o=0;o<e;++o)n.push(r[o+1]-t[o][0]-t[o][1]);return n}function ba(r,t){if(r.rank<1)throw new Error("tf.gatherND() expects the input to be rank 1 or higher, but the rank was "+r.rank+".");if(t.rank<1)throw new Error("tf.gatherND() expects the indices to be rank 1 or higher, but the rank was "+t.rank+".");if(t.dtype!=="int32")throw new Error("tf.gatherND() expects the indices to be int32 type, but the dtype was "+t.dtype+".");if(t.shape[t.rank-1]>r.rank)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+t.shape[t.rank-1]+" vs. "+r.rank);if(r.size===0)throw new Error("Requested more than 0 entries, but input is empty. Input shape: "+r.shape+".");for(var e=t.shape,n=e[e.length-1],o=1,i=0;i<e.length-1;++i)o*=e[i];var a=r.shape,s=e.slice();s.pop();var u=1;for(i=n;i<r.rank;++i)u*=a[i],s.push(a[i]);var c=dt(r.shape).map(function(l){return l/u}).concat([1]).slice(0,n);return[s,o,u,c]}var qA=Object.freeze({prepareAndValidate:ba}),wa=30;function Ii(r){return r<=wa?r:Ft(r,Math.floor(Math.sqrt(r)))}function Ku(r,t,e){var n=t.rank>1?t.shape[t.rank-1]:1,o=t.rank>1?t.rank-1:1,i="Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: "+e.shape+", indices.shape: "+t.shape+", shape: "+r+", sliceDim: "+n+", and batchDim: "+o+".";if(e.rank<o)throw new Error(i+" update.rank < "+o+". ");if(r.length<n+(e.rank-o))throw new Error(i+" Output shape length < "+(n+(e.rank-o)));if(e.rank!==o+r.length-n)throw new Error(i+" update.rank != "+(o+r.length-n));for(var a=0;a<o;++a)if(e.shape[a]!==t.shape[a])throw new Error(i+" updates.shape["+a+"] ("+e.shape[a]+") != indices.shape["+a+"] ("+t.shape[a]+").");for(a=0;a<e.rank-o;++a)if(e.shape[a+o]!==r[a+n])throw new Error(i+" updates.shape["+(a+o)+"] ("+e.shape[a+o]+") != shape["+(a+o)+"] ("+r[a+o]+")")}function Zu(r,t,e){if(t.rank<1)throw new Error("tf.scatterND() expects the indices to be rank 1 or higher, but the rank was "+t.rank+".");if(r.rank<1)throw new Error("tf.scatterND() expects the updates to be rank 1 or higher, but the rank was "+r.rank+".");if(t.dtype!=="int32")throw new Error("The dtype of 'indices' should be int32, but got dtype: "+t.dtype);if(e.length<1)throw new Error("Output rank must be greater or equal to 1, but got shape: "+e);if(e.length===0){if(t.size===0)throw new Error("Indices specified for empty output. indices shape: "+t.shape);if(r.size===0)throw new Error("Updates specified for empty output. updates shape: "+r.shape)}Ku(e,t,r)}function jo(r,t,e){for(var n=t.shape.length,o=n>1?t.shape[n-1]:1,i=e.length,a=1,s=o;s<i;++s)a*=e[s];var u=o<1?1:o;return{sliceRank:o,numUpdates:Re(t.shape)/u,sliceSize:a,strides:dt(e.slice(0,o)).concat([1]),outputSize:Re(e)}}var YA=Object.freeze({validateUpdateShape:Ku,validateInput:Zu,calculateShapes:jo});function qu(r,t,e){B(r.rank===t.length,function(){return"Error in slice"+r.rank+"D: Length of begin "+t+" must match the rank of the array ("+r.rank+")."}),B(r.rank===e.length,function(){return"Error in slice"+r.rank+"D: Length of size "+e+" must match the rank of the array ("+r.rank+")."});for(var n=function(i){B(t[i]+e[i]<=r.shape[i],function(){return"Error in slice"+r.rank+"D: begin["+i+"] + size["+i+"] ("+(t[i]+e[i])+") would overflow input.shape["+i+"] ("+r.shape[i]+")"})},o=0;o<r.rank;++o)n(o)}function Ea(r){for(var t=[],e=0;r>0;)1&r&&t.push(e),r/=2,e++;return t}function Si(r,t,e){for(var n=[],o=0;o<r.length;o++)n[o]=Math.ceil((t[o]-r[o])/e[o]);return n}function Yu(r,t,e,n,o){var i=t[o],a=e[o]||1;(r&1<<o||i==null)&&(i=a>0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var s=n[o];return i<0&&(i+=s),i=Me(0,i,s-1)}function $u(r,t,e,n,o){var i=t[o],a=e[o]||1;(r&1<<o||i==null)&&(i=a>0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var s=n[o];return i<0&&(i+=s),i=a>0?Me(0,i,s):Me(-1,i,s-1)}function Ca(r,t,e){for(var n=e.length,o=0;o<e.length;o++)if(e[o]>1){n=o;break}for(o=n+1;o<e.length;o++)if(t[o]>0||e[o]!==r[o])return!1;return!0}function Ia(r,t){for(var e=r.length>0?r[r.length-1]:1,n=0;n<r.length-1;n++)e+=r[n]*t[n];return e}var $A=Object.freeze({assertParamsValid:qu,maskToAxes:Ea,computeOutShape:Si,startForAxis:Yu,stopForAxis:$u,isSliceContinous:Ca,computeFlatOffset:Ia});function e1(r){return B(Ze(r),function(){return"The f passed in grad(f) must be a function"}),function(t,e){var n=k(t,"x","tf.grad",null),o=e!=null?k(e,"dy","tf.grad"):null;return W.tidy(function(){var i=W.gradients(function(){return r(n)},[n],o),a=i.value,s=i.grads;return o!=null&&Je(a.shape,o.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),Bi(s),s[0]})}}function t1(r){return B(Ze(r),function(){return"The f passed in grads(f) must be a function"}),function(t,e){B(Array.isArray(t),function(){return"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s"});var n=Ho(t,"args","tf.grads",null),o=e!=null?k(e,"dy","tf.grads"):null;return W.tidy(function(){var i=W.gradients(function(){return r.apply(void 0,n)},n,o),a=i.value,s=i.grads;return o!=null&&Je(a.shape,o.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Bi(s),s})}}function n1(r){return B(Ze(r),function(){return"The f passed in valueAndGrad(f) must be a function"}),function(t,e){B(t instanceof at,function(){return"The x passed in valueAndGrad(f)(x) must be a tensor"}),B(e==null||e instanceof at,function(){return"The dy passed in valueAndGrad(f)(x, dy) must be a tensor"});var n=W.gradients(function(){return r(t)},[t],e),o=n.grads,i=n.value;return Bi(o),{grad:o[0],value:i}}}function r1(r){return B(Ze(r),function(){return"The f passed in valueAndGrads(f) must be a function"}),function(t,e){B(Array.isArray(t)&&t.every(function(o){return o instanceof at}),function(){return"The args passed in valueAndGrads(f)(args) must be array of tensors"}),B(e==null||e instanceof at,function(){return"The dy passed in valueAndGrads(f)(args, dy) must be a tensor"});var n=W.gradients(function(){return r.apply(void 0,t)},t,e);return e!=null&&Je(n.value.shape,e.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Bi(n.grads),n}}function Vh(r,t){B(Ze(r),function(){return"The f passed in variableGrads(f) must be a function"}),B(t==null||Array.isArray(t)&&t.every(function(l){return l instanceof ln}),function(){return"The varList passed in variableGrads(f, varList) must be an array of variables"});var e=t!=null;if(!e)for(var n in t=[],W.registeredVariables)t.push(W.registeredVariables[n]);var o=e?t.filter(function(l){return!l.trainable}):null,i=t.length;B((t=t.filter(function(l){return l.trainable})).length>0,function(){return"variableGrads() expects at least one of the input variables to be trainable, but none of the "+i+" variables is trainable."});var a=W.gradients(r,t,null,!0),s=a.value,u=a.grads;B(u.some(function(l){return l!=null}),function(){return"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."}),B(s.rank===0,function(){return"The f passed in variableGrads(f) must return a scalar, but it returned a rank-"+s.rank+" tensor"});var c={};return t.forEach(function(l,f){u[f]!=null&&(c[l.name]=u[f])}),o!=null&&o.forEach(function(l){return c[l.name]=null}),{value:s,grads:c}}function Ri(r){return W.customGrad(r)}function Bi(r){if(r.filter(function(t){return t==null}).length>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that
the f you passed encloses all operations that lead from x to y.`)}var Cr=_({softmax_:function(r,t){t===void 0&&(t=-1);var e=k(r,"logits","softmax","float32");if(t===-1&&(t=e.rank-1),t!==e.rank-1)throw Error("Softmax along a non-last dimension is not yet supported. Logits was rank "+e.rank+" and dim was "+t);return W.runKernelFunc(function(n,o){var i=n.softmax(e,t);return o([i]),i},{logits:e},function(n,o){var i=o[0],a=n.mul(i);return{logits:function(){return a.sub(a.sum([t],!0).mul(i))}}},"Softmax",{dim:t},[],[!0])}}),Gh=_({logSoftmax_:function(r,t){t===void 0&&(t=-1);var e=k(r,"logits","logSoftmax");if(t===-1&&(t=e.rank-1),t!==e.rank-1)throw Error("Log Softmax along a non-last dimension is not yet supported. Logits was rank "+e.rank+" and axis was "+t);return Ri(function(n,o){var i=n.max(t,!0),a=n.sub(i),s=a.toFloat().sub(a.exp().sum(t,!0).log());return o([s]),{value:s,gradFunc:function(u,c){var l=c[0].exp();return u.sub(u.sum(t,!0).mul(l))}}})(e)}}),ec=function(){function r(t,e){this.backend=t,this.dataMover=e,this.data=new WeakMap,this.dataIdsCount=0}return r.prototype.get=function(t){return this.data.has(t)||this.dataMover.moveData(this.backend,t),this.data.get(t)},r.prototype.set=function(t,e){this.dataIdsCount++,this.data.set(t,e)},r.prototype.has=function(t){return this.data.has(t)},r.prototype.delete=function(t){return this.dataIdsCount--,this.data.delete(t)},r.prototype.numDataIds=function(){return this.dataIdsCount},r}(),tc=function(){function r(){}return r.prototype.time=function(t){return q("time")},r.prototype.read=function(t){return q("read")},r.prototype.readSync=function(t){return q("readSync")},r.prototype.numDataIds=function(){return q("numDataIds")},r.prototype.disposeData=function(t){return q("disposeData")},r.prototype.write=function(t,e,n){return q("write")},r.prototype.move=function(t,e,n,o){return q("move")},r.prototype.memory=function(){return q("memory")},r.prototype.floatPrecision=function(){return q("floatPrecision")},r.prototype.epsilon=function(){return this.floatPrecision()===32?1e-7:1e-4},r.prototype.batchMatMul=function(t,e,n,o){return q("batchMatMul")},r.prototype.fusedBatchMatMul=function(t){return t.a,t.b,t.transposeA,t.transposeB,t.bias,t.activation,t.preluActivationWeights,q("fusedBatchMatMul")},r.prototype.slice=function(t,e,n){return q("slice")},r.prototype.stridedSlice=function(t,e,n,o){return q("stridedSlice")},r.prototype.unstack=function(t,e){return q("unstack")},r.prototype.reverse=function(t,e){return q("reverse")},r.prototype.concat=function(t,e){return q("concat")},r.prototype.neg=function(t){return q("neg")},r.prototype.add=function(t,e){return q("add")},r.prototype.addN=function(t){return q("addN")},r.prototype.subtract=function(t,e){return q("subtract")},r.prototype.multiply=function(t,e){return q("multiply")},r.prototype.realDivide=function(t,e){return q("realDivide")},r.prototype.floorDiv=function(t,e){return q("floorDiv")},r.prototype.sum=function(t,e){return q("sum")},r.prototype.prod=function(t,e){return q("prod")},r.prototype.unsortedSegmentSum=function(t,e,n){return q("unsortedSegmentSum")},r.prototype.argMin=function(t,e){return q("argMin")},r.prototype.argMax=function(t,e){return q("argMax")},r.prototype.equal=function(t,e){return q("equal")},r.prototype.notEqual=function(t,e){return q("notEqual")},r.prototype.less=function(t,e){return q("less")},r.prototype.lessEqual=function(t,e){return q("lessEqual")},r.prototype.greater=function(t,e){return q("greater")},r.prototype.greaterEqual=function(t,e){return q("greaterEqual")},r.prototype.logicalNot=function(t){return q("logicalNot")},r.prototype.logicalAnd=function(t,e){return q("logicalAnd")},r.prototype.logicalOr=function(t,e){return q("logicalOr")},r.prototype.where=function(t){return q("where")},r.prototype.select=function(t,e,n){return q("select")},r.prototype.topk=function(t,e,n){return q("topk")},r.prototype.min=function(t,e){return q("min")},r.prototype.minimum=function(t,e){return q("minimum")},r.prototype.mod=function(t,e){return q("mod")},r.prototype.max=function(t,e){return q("max")},r.prototype.maximum=function(t,e){return q("maximum")},r.prototype.all=function(t,e){return q("all")},r.prototype.any=function(t,e){return q("any")},r.prototype.squaredDifference=function(t,e){return q("squaredDifference")},r.prototype.ceil=function(t){return q("ceil")},r.prototype.floor=function(t){return q("floor")},r.prototype.round=function(t){return q("round")},r.prototype.sign=function(t){return q("sign")},r.prototype.isNaN=function(t){return q("isNaN")},r.prototype.isInf=function(t){return q("isInf")},r.prototype.isFinite=function(t){return q("isFinite")},r.prototype.pow=function(t,e){return q("pow")},r.prototype.exp=function(t){return q("exp")},r.prototype.expm1=function(t){return q("expm1")},r.prototype.softmax=function(t,e){return q("softmax")},r.prototype.log=function(t){return q("log")},r.prototype.log1p=function(t){return q("log1p")},r.prototype.sqrt=function(t){return q("sqrt")},r.prototype.rsqrt=function(t){return q("rsqrt")},r.prototype.square=function(t){return q("square")},r.prototype.reciprocal=function(t){return q("reciprocal")},r.prototype.relu=function(t){return q("relu")},r.prototype.relu6=function(t){return q("relu6")},r.prototype.prelu=function(t,e){return q("prelu")},r.prototype.elu=function(t){return q("elu")},r.prototype.eluDer=function(t,e){return q("eluDer")},r.prototype.selu=function(t){return q("selu")},r.prototype.int=function(t){return q("int")},r.prototype.clip=function(t,e,n){return q("clip")},r.prototype.abs=function(t){return q("abs")},r.prototype.complexAbs=function(t){return q("complexAbs")},r.prototype.sigmoid=function(t){return q("sigmoid")},r.prototype.softplus=function(t){return q("softplus")},r.prototype.sin=function(t){return q("sin")},r.prototype.cos=function(t){return q("cos")},r.prototype.tan=function(t){return q("tan")},r.prototype.asin=function(t){return q("asin")},r.prototype.acos=function(t){return q("acos")},r.prototype.atan=function(t){return q("atan")},r.prototype.atan2=function(t,e){return q("atan2")},r.prototype.sinh=function(t){return q("sinh")},r.prototype.cosh=function(t){return q("cosh")},r.prototype.tanh=function(t){return q("tanh")},r.prototype.asinh=function(t){return q("asinh")},r.prototype.acosh=function(t){return q("acosh")},r.prototype.atanh=function(t){return q("atanh")},r.prototype.erf=function(t){return q("erf")},r.prototype.step=function(t,e){return q("step")},r.prototype.fusedConv2d=function(t){return t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights,q("fusedConv2d")},r.prototype.conv2d=function(t,e,n){return q("conv2d")},r.prototype.conv2dDerInput=function(t,e,n){return q("conv2dDerInput")},r.prototype.conv2dDerFilter=function(t,e,n){return q("conv2dDerFilter")},r.prototype.fusedDepthwiseConv2D=function(t){return t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights,q("fusedDepthwiseConv2D")},r.prototype.depthwiseConv2D=function(t,e,n){return q("depthwiseConv2D")},r.prototype.depthwiseConv2DDerInput=function(t,e,n){return q("depthwiseConv2DDerInput")},r.prototype.depthwiseConv2DDerFilter=function(t,e,n){return q("depthwiseConv2DDerFilter")},r.prototype.conv3d=function(t,e,n){return q("conv3d")},r.prototype.conv3dDerInput=function(t,e,n){return q("conv3dDerInput")},r.prototype.conv3dDerFilter=function(t,e,n){return q("conv3dDerFilter")},r.prototype.maxPool=function(t,e){return q("maxPool")},r.prototype.maxPoolBackprop=function(t,e,n,o){return q("maxPoolBackprop")},r.prototype.avgPool=function(t,e){return q("avgPool")},r.prototype.avgPoolBackprop=function(t,e,n){return q("avgPoolBackprop")},r.prototype.avgPool3d=function(t,e){return q("avgPool3d")},r.prototype.avgPool3dBackprop=function(t,e,n){return q("avgPool3dBackprop")},r.prototype.maxPool3d=function(t,e){return q("maxPool3d")},r.prototype.maxPool3dBackprop=function(t,e,n,o){return q("maxPool3dBackprop")},r.prototype.reshape=function(t,e){return q("reshape")},r.prototype.cast=function(t,e){return q("cast")},r.prototype.tile=function(t,e){return q("tile")},r.prototype.pad=function(t,e,n){return q("pad")},r.prototype.transpose=function(t,e){return q("transpose")},r.prototype.gather=function(t,e,n){return q("gather")},r.prototype.gatherND=function(t,e){return q("gatherND")},r.prototype.scatterND=function(t,e,n){return q("scatterND")},r.prototype.batchToSpaceND=function(t,e,n){return q("batchToSpaceND")},r.prototype.spaceToBatchND=function(t,e,n){return q("spaceToBatchND")},r.prototype.resizeBilinear=function(t,e,n,o){return q("resizeBilinear")},r.prototype.resizeBilinearBackprop=function(t,e,n){return q("resizeBilinearBackprop")},r.prototype.resizeNearestNeighbor=function(t,e,n,o){return q("resizeNearestNeighbor")},r.prototype.resizeNearestNeighborBackprop=function(t,e,n){return q("resizeNearestNeighborBackprop")},r.prototype.batchNormalization=function(t,e,n,o,i,a){return q("batchNormalization")},r.prototype.localResponseNormalization4D=function(t,e,n,o,i){return q("localResponseNormalization4D")},r.prototype.LRNGrad=function(t,e,n,o,i,a,s){return q("LRNGrad")},r.prototype.multinomial=function(t,e,n,o){return q("multinomial")},r.prototype.oneHot=function(t,e,n,o){return q("oneHot")},r.prototype.cumsum=function(t,e,n,o){return q("cumsum")},r.prototype.nonMaxSuppression=function(t,e,n,o,i){return q("nonMaxSuppression")},r.prototype.fft=function(t){return q("fft")},r.prototype.ifft=function(t){return q("ifft")},r.prototype.complex=function(t,e){return q("complex")},r.prototype.real=function(t){return q("real")},r.prototype.imag=function(t){return q("imag")},r.prototype.cropAndResize=function(t,e,n,o,i,a){return q("cropAndResize")},r.prototype.depthToSpace=function(t,e,n){return q("depthToSpace")},r.prototype.split=function(t,e,n){return q("split")},r.prototype.sparseToDense=function(t,e,n,o){return q("sparseToDense")},r.prototype.diag=function(t){return q("diag")},r.prototype.fill=function(t,e,n){return q("fill")},r.prototype.onesLike=function(t){return q("onesLike")},r.prototype.zerosLike=function(t){return q("zerosLike")},r.prototype.linspace=function(t,e,n){return q("linspace")},r.prototype.dispose=function(){return q("dispose")},r}();function q(r){throw new Error("'"+r+"' not yet implemented or not found in the registry. Did you forget to import the kernel?")}function Ir(r,t){for(var e=r.length,n=[],o=0;o<e;o++){var i=e-1-o,a=r[i]||1;(t[t.length-1-o]||1)>1&&a===1&&n.unshift(i)}return n}function gn(r,t){for(var e=[],n=0;n<t.length;n++){var o=r[r.length-n-1],i=t.length-n-1,a=t[i];(o==null||o===1&&a>1)&&e.unshift(i)}return e}function gt(r,t){for(var e=[],n=Math.max(r.length,t.length),o=0;o<n;o++){var i=r[r.length-o-1];i==null&&(i=1);var a=t[t.length-o-1];if(a==null&&(a=1),i===1)e.unshift(a);else if(a===1)e.unshift(i);else{if(i!==a)throw Error("Operands could not be broadcast together with shapes "+r+" and "+t+".");e.unshift(i)}}return e}function go(r,t,e,n,o,i,a){a===void 0&&(a="channelsLast");var s,u=ki(t),c=u[0],l=u[1];if(a==="channelsLast")s=[c,l,r[3],r[3]];else{if(a!=="channelsFirst")throw new Error("Unknown dataFormat "+a);s=[c,l,r[1],r[1]]}return Lr(r,s,e,n,o,i,!1,a)}function Vo(r,t,e,n,o,i,a){a===void 0&&(a="NDHWC");var s,u,c=Ra(t),l=c[0],f=c[1],h=c[2];if(a==="NDHWC")u="channelsLast",s=[l,f,h,r[4],r[4]];else{if(a!=="NCDHW")throw new Error("Unknown dataFormat "+a);u="channelsFirst",s=[l,f,h,r[1],r[1]]}return Go(r,s,e,n,o,!1,u,i)}function Lr(r,t,e,n,o,i,a,s){a===void 0&&(a=!1),s===void 0&&(s="channelsLast");var u=[-1,-1,-1,-1],c=u[0],l=u[1],f=u[2],h=u[3];if(s==="channelsLast")c=r[0],l=r[1],f=r[2],h=r[3];else{if(s!=="channelsFirst")throw new Error("Unknown dataFormat "+s);c=r[0],h=r[1],l=r[2],f=r[3]}var d,p=t[0],v=t[1],g=t[3],m=ki(e),w=m[0],E=m[1],b=ki(n),C=b[0],S=b[1],N=mo(p,C),O=mo(v,S),F=function(X,te,ue,se,oe,he,pe,xe){var ke,Ne,et;if(typeof X=="number"){ke={top:X,bottom:X,left:X,right:X,type:X===0?"VALID":"NUMBER"};var Ye=function(It,Jt,_t,un,rn){un==null&&(un=Sa(It,Jt,_t));var on=It[0],yr=It[1],xr=Xo((on-Jt+2*un)/_t+1,rn);B(Ue(xr),function(){return"The output # of rows ("+xr+") must be an integer. Change the stride and/or zero pad parameters"});var Jn=Xo((yr-Jt+2*un)/_t+1,rn);return B(Ue(Jn),function(){return"The output # of columns ("+Jn+") must be an integer. Change the stride and/or zero pad parameters"}),[xr,Jn]}([te,ue],he,se,X,xe);Ne=Ye[0],et=Ye[1]}else if(X==="same"){Ne=Math.ceil(te/se),et=Math.ceil(ue/oe);var st=Math.max(0,(Ne-1)*se+he-te),xt=Math.max(0,(et-1)*oe+pe-ue),Ct=Math.floor(st/2),kt=st-Ct,fn=Math.floor(xt/2);ke={top:Ct,bottom:kt,left:fn,right:xt-fn,type:"SAME"}}else{if(X!=="valid")throw Error("Unknown padding parameter: "+X);ke={top:0,bottom:0,left:0,right:0,type:"VALID"},Ne=Math.ceil((te-he+1)/se),et=Math.ceil((ue-pe+1)/oe)}return{padInfo:ke,outHeight:Ne,outWidth:et}}(o,l,f,w,E,N,O,i),P=F.padInfo,U=F.outHeight,Q=F.outWidth,V=a?g*h:g;return s==="channelsFirst"?d=[c,V,U,Q]:s==="channelsLast"&&(d=[c,U,Q,V]),{batchSize:c,dataFormat:s,inHeight:l,inWidth:f,inChannels:h,outHeight:U,outWidth:Q,outChannels:V,padInfo:P,strideHeight:w,strideWidth:E,filterHeight:p,filterWidth:v,effectiveFilterHeight:N,effectiveFilterWidth:O,dilationHeight:C,dilationWidth:S,inShape:r,outShape:d,filterShape:t}}function Go(r,t,e,n,o,i,a,s){i===void 0&&(i=!1),a===void 0&&(a="channelsLast");var u=[-1,-1,-1,-1,-1],c=u[0],l=u[1],f=u[2],h=u[3],d=u[4];if(a==="channelsLast")c=r[0],l=r[1],f=r[2],h=r[3],d=r[4];else{if(a!=="channelsFirst")throw new Error("Unknown dataFormat "+a);c=r[0],d=r[1],l=r[2],f=r[3],h=r[4]}var p,v=t[0],g=t[1],m=t[2],w=t[4],E=Ra(e),b=E[0],C=E[1],S=E[2],N=Ra(n),O=N[0],F=N[1],P=N[2],U=mo(v,O),Q=mo(g,F),V=mo(m,P),X=function(pe,xe,ke,Ne,et,Ye,st,xt,Ct,kt,fn){var It,Jt,_t,un;if(typeof pe=="number"){It={top:pe,bottom:pe,left:pe,right:pe,front:pe,back:pe,type:pe===0?"VALID":"NUMBER"};var rn=function(Po,Nr,su,No,br,uu){br==null&&(br=Sa(Po,Nr,No));var DA=Po[0],FA=Po[1],PA=Po[2],cu=Xo((DA-Nr+2*br)/No+1,uu);B(Ue(cu),function(){return"The output # of depths ("+cu+") must be an integer. Change the stride and/or zero pad parameters"});var lu=Xo((FA-Nr+2*br)/No+1,uu);B(Ue(lu),function(){return"The output # of rows ("+lu+") must be an integer. Change the stride and/or zero pad parameters"});var fu=Xo((PA-Nr+2*br)/No+1,uu);return B(Ue(fu),function(){return"The output # of columns ("+fu+") must be an integer. Change the stride and/or zero pad parameters"}),[cu,lu,fu,su]}([xe,ke,Ne,1],xt,1,et,pe,fn);Jt=rn[0],_t=rn[1],un=rn[2]}else if(pe==="same"){Jt=Math.ceil(xe/et),_t=Math.ceil(ke/Ye),un=Math.ceil(Ne/st);var on=(Jt-1)*et+xt-xe,yr=(_t-1)*Ye+Ct-ke,xr=(un-1)*st+kt-Ne,Jn=Math.floor(on/2),Fo=on-Jn,Fr=Math.floor(yr/2),Xr=yr-Fr,Pr=Math.floor(xr/2);It={top:Fr,bottom:Xr,left:Pr,right:xr-Pr,front:Jn,back:Fo,type:"SAME"}}else{if(pe!=="valid")throw Error("Unknown padding parameter: "+pe);It={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},Jt=Math.ceil((xe-xt+1)/et),_t=Math.ceil((ke-Ct+1)/Ye),un=Math.ceil((Ne-kt+1)/st)}return{padInfo:It,outDepth:Jt,outHeight:_t,outWidth:un}}(o,l,f,h,b,C,S,U,Q,V,s),te=X.padInfo,ue=X.outDepth,se=X.outHeight,oe=X.outWidth,he=i?w*d:w;return a==="channelsFirst"?p=[c,he,ue,se,oe]:a==="channelsLast"&&(p=[c,ue,se,oe,he]),{batchSize:c,dataFormat:a,inDepth:l,inHeight:f,inWidth:h,inChannels:d,outDepth:ue,outHeight:se,outWidth:oe,outChannels:he,padInfo:te,strideDepth:b,strideHeight:C,strideWidth:S,filterDepth:v,filterHeight:g,filterWidth:m,effectiveFilterDepth:U,effectiveFilterHeight:Q,effectiveFilterWidth:V,dilationDepth:O,dilationHeight:F,dilationWidth:P,inShape:r,outShape:p,filterShape:t}}function Sa(r,t,e,n){n===void 0&&(n=1);var o=mo(t,n);return Math.floor((r[0]*(e-1)-e+o)/2)}function ki(r){return typeof r=="number"?[r,r,r]:r.length===2?[r[0],r[1],1]:r}function Ra(r){return typeof r=="number"?[r,r,r]:r}function mo(r,t){return t<=1?r:r+(r-1)*(t-1)}function Xo(r,t){if(!t)return r;switch(t){case"round":return Math.round(r);case"ceil":return Math.ceil(r);case"floor":return Math.floor(r);default:throw new Error("Unknown roundingMode "+t)}}function $r(r){var t=ki(r),e=t[0],n=t[1],o=t[2];return e===1&&n===1&&o===1}function Ln(r,t){return $r(r)||$r(t)}function Ti(r){if(r==="NHWC")return"channelsLast";if(r==="NCHW")return"channelsFirst";throw new Error("Unknown dataFormat "+r)}function Ba(r,t,e){if(t==="complex64"){if(r.dtype==="complex64")return r.clone();var n=en(r.shape),o=r.toFloat(),i=e.complex(o,n);return n.dispose(),o.dispose(),i}if(!x(r.dtype,t))return W.makeTensorFromDataId(r.dataId,r.shape,t);if(r.dtype==="complex64"){var a=e.real(r);return i=a.cast(t),a.dispose(),i}if(t==="int32")return e.int(r);if(t==="bool"){var s=Fe(0,r.dtype);return i=e.notEqual(r,s),s.dispose(),i}throw new Error("Error in Cast: failed to cast "+r.dtype+" to "+t)}function Di(r,t){return W.makeTensorFromDataId(r.dataId,t,r.dtype)}function ka(r,t,e){var n=(t-r)/(e-1),o=Z(e,"float32");o[0]=r;for(var i=1;i<o.length;i++)o[i]=o[i-1]+n;return vn(o,"float32")}var o1=Object.freeze({castTensor:Ba,reshapeTensor:Di,linspaceImpl:ka,upcastType:Lt,axesAreInnerMostDims:ga,combineLocations:_u,computeOutAndReduceShapes:Bn,expandShapeToKeepDim:Mn,assertAxesAreInnerMostDims:_n,getAxesPermutation:tr,getUndoAxesPermutation:yi,getInnerMostAxes:nr,getBroadcastDims:Ir,getReductionAxes:gn,assertAndGetBroadcastShape:gt,assertParamsConsistent:Qu,computeOutShape:Kr,computePool2DInfo:go,computePool3DInfo:Vo,computeConv2DInfo:Lr,computeConv3DInfo:Go,computeDefaultPad:Sa,tupleValuesAreOne:$r,eitherStridesOrDilationsAreOne:Ln,convertConv2DDataFormat:Ti,PARALLELIZE_THRESHOLD:wa,computeOptimalWindowSize:Ii});function Ta(r,t){if(r.length!==t.length)throw new Error("Cannot merge real and imag arrays of different lengths. real:"+r.length+", imag: "+t.length+".");for(var e=new Float32Array(2*r.length),n=0;n<e.length;n+=2)e[n]=r[n/2],e[n+1]=t[n/2];return e}function nc(r,t){return{real:r[2*t],imag:r[2*t+1]}}function Xh(r,t,e,n){r[2*n]=t,r[2*n+1]=e}function Jh(r,t,e){var n=(e?2:-2)*Math.PI*(r/t);return{real:Math.cos(n),imag:Math.sin(n)}}function Kh(r,t,e){var n=function(i,a,s){return function(u,c,l){for(var f=0,h=u.length,d=0,p=!1;f<h;){var v=l(c,u[d=f+(h-f>>>1)]);v>0?f=d+1:(h=d,p=!v)}return p?f:-f-1}(i,a,s||Zh)}(r,t,e),o=n<0?-(n+1):n;r.splice(o,0,t)}function Zh(r,t){return r>t?1:r<t?-1:0}function Da(r,t,e,n,o){return rc(r,t,e,n,o,0).selectedIndices}function Fa(r,t,e,n,o,i){var a=rc(r,t,e,n,o,i,!0);return a.numValidOutputs.dispose(),{selectedIndices:a.selectedIndices,selectedScores:a.selectedScores}}function rc(r,t,e,n,o,i,a,s){a===void 0&&(a=!1),s===void 0&&(s=!1);for(var u=Array.from(t).map(function(b,C){return{score:b,boxIndex:C,suppressBeginIndex:0}}).filter(function(b){return b.score>o}).sort(oc),c=i>0?-.5/i:0,l=[],f=[];l.length<e&&u.length>0;){var h=u.pop(),d=h.score,p=h.boxIndex,v=h.suppressBeginIndex;if(d<o)break;for(var g=!1,m=l.length-1;m>=v;--m){var w=qh(r,p,l[m]);if(w>=n){g=!0;break}if(h.score=h.score*Yh(n,c,w),h.score<=o)break}h.suppressBeginIndex=l.length,g||(h.score===d?(l.push(p),f.push(h.score)):h.score>o&&Kh(u,h,oc))}var E=l.length;return s&&(l.fill(0,E),f.fill(0,E)),{selectedIndices:vn(l,"int32"),selectedScores:vn(f,"float32"),numValidOutputs:Fe(E,"int32")}}function qh(r,t,e){var n=r.subarray(4*t,4*t+4),o=r.subarray(4*e,4*e+4),i=Math.min(n[0],n[2]),a=Math.min(n[1],n[3]),s=Math.max(n[0],n[2]),u=Math.max(n[1],n[3]),c=Math.min(o[0],o[2]),l=Math.min(o[1],o[3]),f=Math.max(o[0],o[2]),h=Math.max(o[1],o[3]),d=(s-i)*(u-a),p=(f-c)*(h-l);if(d<=0||p<=0)return 0;var v=Math.max(i,c),g=Math.max(a,l),m=Math.min(s,f),w=Math.min(u,h),E=Math.max(m-v,0)*Math.max(w-g,0);return E/(d+p-E)}function Yh(r,t,e){var n=Math.exp(t*e*e);return e<=r?n:0}function oc(r,t){return r.score-t.score||r.score===t.score&&t.boxIndex-r.boxIndex}function ic(r,t,e){var n=new Array(r.rank).fill(0),o=r.shape.slice();return t.map(function(i){o[e]=i;var a=r.slice(n,o);return n[e]+=i,a})}function ac(r,t){for(var e=new Array(r.rank),n=0;n<e.length;n++)e[n]=r.shape[n]*t[n];var o=ot(e,r.dtype);for(n=0;n<o.values.length;++n){for(var i=o.indexToLoc(n),a=new Array(r.rank),s=0;s<a.length;s++)a[s]=i[s]%r.shape[s];var u=r.locToIndex(a);o.values[n]=r.values[u]}return o.toTensor()}function sc(r,t,e,n,o){for(var i=t[t.length-1],a=[r.length/i,i],s=a[0],u=a[1],c=T(e,s*n),l=T("int32",s*n),f=0;f<s;f++){for(var h=f*u,d=r.subarray(h,h+u),p=[],v=0;v<d.length;v++)p.push({value:d[v],index:v});p.sort(function(b,C){return C.value-b.value});var g=f*n,m=c.subarray(g,g+n),w=l.subarray(g,g+n);for(v=0;v<n;v++)m[v]=p[v].value,w[v]=p[v].index}var E=t.slice();return E[E.length-1]=n,[Tn(c,E,e),Tn(l,E,"int32")]}function Pa(r,t){for(var e=[],n=0;n<t.length;n++)t[n]&&e.push(n);var o=ot(r,"int32"),i=ot([e.length,r.length],"int32");for(n=0;n<e.length;n++){var a=o.indexToLoc(e[n]),s=n*r.length;i.values.set(a,s)}return i.toTensor()}var $h=function(r,t){this.outputShape=[],this.outputShape=r,this.variableNames=t.map(function(o,i){return"T"+i});var e=[];this.variableNames.forEach(function(o){e.push("float v"+o+" = get"+o+"AtOutCoords();")});var n=this.variableNames.map(function(o){return"v"+o}).join(" + ");this.userCode=`
void main() {
`+e.join(`
`)+`
float result = `+n+`;
setOutput(result);
}
`},ed=function(r,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=r,this.variableNames=t.map(function(o,i){return"T"+i});var e=[];this.variableNames.forEach(function(o){e.push("vec4 v"+o+" = get"+o+"AtOutCoords();")});var n=this.variableNames.map(function(o){return"v"+o}).join(" + ");this.userCode=`
void main() {
`+e.join(`
`)+`
vec4 result = `+n+`;
setOutput(result);
}
`},td=function(r,t,e){this.variableNames=["A"];var n=r.windowSize,o=r.batchSize,i=r.inSize,a=Math.ceil(i/n);e||this.variableNames.push("bestIndicesA"),this.outputShape=[o,a];var s=t==="max"?">":"<",u=e?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=`
void main() {
ivec2 coords = getOutputCoords();
int batch = coords[0];
int outIdx = coords[1];
int inOffset = outIdx * `+n+`;
int bestIndex = inOffset;
float bestValue = getA(batch, bestIndex);
for (int i = 0; i < `+n+`; i++) {
int inIdx = `+u+`;
float candidate = getA(batch, inIdx);
if (candidate `+s+` bestValue) {
bestValue = candidate;
bestIndex = inIdx;
}
}
setOutput(float(bestIndex));
}
`};function uc(r,t){return["x","y","z","w","u","v"].slice(0,t).map(function(e){return r+"."+e})}function zn(r,t){return t===1?[r]:uc(r,t)}function Dn(){var r,t,e,n,o,i,a,s,u,c;return J().getNumber("WEBGL_VERSION")===2?(r="#version 300 es",t="in",e="out",n="in",o="texture",i="outputColor",a="out vec4 outputColor;",s=`
bool isnan_custom(float val) {
return (val > 0.0 || val < 0.0) ? false : val != 0.0;
}
bvec4 isnan_custom(vec4 val) {
return bvec4(isnan_custom(val.x),
isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));
}
#define isnan(value) isnan_custom(value)
`,u="",c=`
#define round(value) newRound(value)
int newRound(float value) {
return int(floor(value + 0.5));
}
ivec4 newRound(vec4 value) {
return ivec4(floor(value + vec4(0.5)));
}
`):(r="",t="attribute",e="varying",n="varying",o="texture2D",i="gl_FragColor",a="",s=`
#define isnan(value) isnan_custom(value)
bool isnan_custom(float val) {
return (val > 0. || val < 1. || val == 0.) ? false : true;
}
bvec4 isnan_custom(vec4 val) {
return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));
}
`,u=`
uniform float INFINITY;
bool isinf(float val) {
return abs(val) == INFINITY;
}
bvec4 isinf(vec4 val) {
return equal(abs(val), vec4(INFINITY));
}
`,c=`
int round(float value) {
return int(floor(value + 0.5));
}
ivec4 round(vec4 value) {
return ivec4(floor(value + vec4(0.5)));
}
`),{version:r,attribute:t,varyingVs:e,varyingFs:n,texture2D:o,output:i,defineOutput:a,defineSpecialNaN:s,defineSpecialInf:u,defineRound:c}}function eo(r,t,e){e===void 0&&(e="index");var n=dt(t);return n.map(function(o,i){return"int "+r[i]+" = "+e+" / "+o+"; "+(i===n.length-1?"int "+r[i+1]+" = "+e+" - "+r[i]+" * "+o:"index -= "+r[i]+" * "+o)+";"}).join("")}function Na(r){var t=dt(r).map(function(e){return e.toString()});return`
int getFlatIndex(ivec3 coords) {
return coords.x * `+t[0]+" + coords.y * "+t[1]+` + coords.z;
}
`}var cc=`
const float FLOAT_MAX = 1.70141184e38;
const float FLOAT_MIN = 1.17549435e-38;
lowp vec4 encode_float(highp float v) {
if (isnan(v)) {
return vec4(255, 255, 255, 255);
}
highp float av = abs(v);
if(av < FLOAT_MIN) {
return vec4(0.0, 0.0, 0.0, 0.0);
} else if(v > FLOAT_MAX) {
return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;
} else if(v < -FLOAT_MAX) {
return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;
}
highp vec4 c = vec4(0,0,0,0);
highp float e = floor(log2(av));
highp float m = exp2(fract(log2(av))) - 1.0;
c[2] = floor(128.0 * m);
m -= c[2] / 128.0;
c[1] = floor(32768.0 * m);
m -= c[1] / 32768.0;
c[0] = floor(8388608.0 * m);
highp float ebias = e + 127.0;
c[3] = floor(ebias / 2.0);
ebias -= c[3] * 2.0;
c[2] += floor(ebias) * 128.0;
c[3] += 128.0 * step(0.0, -v);
return c / 255.0;
}
`;function nd(r,t,e,n){var o=[];r.forEach(function(d){var p=Re(d.shapeInfo.logicalShape);d.shapeInfo.isUniform?o.push("uniform float "+d.name+(p>1?"["+p+"]":"")+";"):(o.push("uniform sampler2D "+d.name+";"),o.push("uniform int offset"+d.name+";"))});var i,a,s=o.join(`
`),u=r.map(function(d){return function(p,v,g){g===void 0&&(g=!1);var m="";m+=g?lc(p):Ao(p);var w=p.shapeInfo.logicalShape,E=v.logicalShape;return w.length<=E.length&&(m+=g?function(b,C){var S,N=b.name,O=N.charAt(0).toUpperCase()+N.slice(1),F="get"+O+"AtOutCoords",P=b.shapeInfo.logicalShape.length,U=C.logicalShape.length,Q=Ir(b.shapeInfo.logicalShape,C.logicalShape),V=Yt(U),X=U-P,te=["x","y","z","w","u","v"];S=P===0?"":U<2&&Q.length>=1?"coords = 0;":Q.map(function(ke){return"coords."+te[ke+X]+" = 0;"}).join(`
`);var ue="";ue=U<2&&P>0?"coords":b.shapeInfo.logicalShape.map(function(ke,Ne){return"coords."+te[Ne+X]}).join(", ");var se="return outputValue;",oe=Re(b.shapeInfo.logicalShape)===1,he=Re(C.logicalShape)===1;if(P!==1||oe||he){if(oe&&!he)se=U===1?`
return vec4(outputValue.x, outputValue.x, 0., 0.);
`:`
return vec4(outputValue.x);
`;else if(Q.length){var pe=P-2,xe=P-1;Q.indexOf(pe)>-1&&Q.indexOf(xe)>-1?se="return vec4(outputValue.x);":Q.indexOf(pe)>-1?se="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":Q.indexOf(xe)>-1&&(se="return vec4(outputValue.xx, outputValue.zz);")}}else se=`
return vec4(outputValue.xy, outputValue.xy);
`;return`
vec4 `+F+`() {
`+V+` coords = getOutputCoords();
`+S+`
vec4 outputValue = get`+O+"("+ue+`);
`+se+`
}
`}(p,v):function(b,C){var S=b.name,N=S.charAt(0).toUpperCase()+S.slice(1),O="get"+N+"AtOutCoords",F=C.texShape,P=b.shapeInfo.texShape,U=b.shapeInfo.logicalShape.length,Q=C.logicalShape.length;if(!b.shapeInfo.isUniform&&U===Q&&b.shapeInfo.flatOffset==null&&Ke(P,F))return`
float `+O+`() {
return sampleTexture(`+S+`, resultUV);
}
`;var V,X=Yt(Q),te=Ir(b.shapeInfo.logicalShape,C.logicalShape),ue=Q-U,se=["x","y","z","w","u","v"];V=U===0?"":Q<2&&te.length>=1?"coords = 0;":te.map(function(he){return"coords."+se[he+ue]+" = 0;"}).join(`
`);var oe="";return oe=Q<2&&U>0?"coords":b.shapeInfo.logicalShape.map(function(he,pe){return"coords."+se[pe+ue]}).join(", "),`
float `+O+`() {
`+X+` coords = getOutputCoords();
`+V+`
return get`+N+"("+oe+`);
}
`}(p,v)),m}(d,t,n)}).join(`
`),c=t.texShape,l=Dn(),f=function(d){return`
float sampleTexture(sampler2D textureSampler, vec2 uv) {
return `+d.texture2D+`(textureSampler, uv).r;
}
`}(l),h=function(d){return d.version+`
precision highp float;
precision highp int;
precision highp sampler2D;
`+d.varyingFs+` vec2 resultUV;
`+d.defineOutput+`
const vec2 halfCR = vec2(0.5, 0.5);
struct ivec5
{
int x;
int y;
int z;
int w;
int u;
};
struct ivec6
{
int x;
int y;
int z;
int w;
int u;
int v;
};
uniform float NAN;
`+d.defineSpecialNaN+`
`+d.defineSpecialInf+`
`+d.defineRound+`
int imod(int x, int y) {
return x - y * (x / y);
}
int idiv(int a, int b, float sign) {
int res = a / b;
int mod = imod(a, b);
if (sign < 0. && mod != 0) {
res -= 1;
}
return res;
}
//Based on the work of Dave Hoskins
//https://www.shadertoy.com/view/4djSRW
#define HASHSCALE1 443.8975
float random(float seed){
vec2 p = resultUV * seed;
vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);
p3 += dot(p3, p3.yzx + 19.19);
return fract((p3.x + p3.y) * p3.z);
}
`+rd+`
`+od+`
`+id+`
`}(l);return t.isPacked?(i=function(d,p){switch(d.length){case 0:return`
int getOutputCoords() {
return 0;
}
`;case 1:return function(b,C){var S=[Math.ceil(C[0]/2),Math.ceil(C[1]/2)];return S[0]===1?`
int getOutputCoords() {
return 2 * int(resultUV.x * `+S[1]+`.0);
}
`:S[1]===1?`
int getOutputCoords() {
return 2 * int(resultUV.y * `+S[0]+`.0);
}
`:`
int getOutputCoords() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+S[0]+", "+S[1]+`));
return 2 * (resTexRC.x * `+S[1]+` + resTexRC.y);
}
`}(0,p);case 2:return function(b,C){var S=[Math.ceil(C[0]/2),Math.ceil(C[1]/2)];if(Ke(b,C))return`
ivec2 getOutputCoords() {
return 2 * ivec2(resultUV.yx * vec2(`+S[0]+", "+S[1]+`));
}
`;var N=Math.ceil(b[1]/2);return`
ivec2 getOutputCoords() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+S[0]+", "+S[1]+`));
int index = resTexRC.x * `+S[1]+` + resTexRC.y;
int r = 2 * (index / `+N+`);
int c = imod(index, `+N+`) * 2;
return ivec2(r, c);
}
`}(d,p);case 3:return v=d,g=p,m=[Math.ceil(g[0]/2),Math.ceil(g[1]/2)],w=Math.ceil(v[2]/2),E=w*Math.ceil(v[1]/2),`
ivec3 getOutputCoords() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+m[0]+", "+m[1]+`));
int index = resTexRC.x * `+m[1]+` + resTexRC.y;
int b = index / `+E+`;
index -= b * `+E+`;
int r = 2 * (index / `+w+`);
int c = imod(index, `+w+`) * 2;
return ivec3(b, r, c);
}
`;default:return function(b,C){for(var S=[Math.ceil(C[0]/2),Math.ceil(C[1]/2)],N=Math.ceil(b[b.length-1]/2),O=N*Math.ceil(b[b.length-2]/2),F=O,P="",U="b, r, c",Q=2;Q<b.length-1;Q++)F*=b[b.length-Q-1],P=`
int b`+Q+" = index / "+F+`;
index -= b`+Q+" * "+F+`;
`+P,U="b"+Q+", "+U;return`
ivec`+b.length+` getOutputCoords() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+S[0]+", "+S[1]+`));
int index = resTexRC.x * `+S[1]+` + resTexRC.y;
`+P+`
int b = index / `+O+`;
index -= b * `+O+`;
int r = 2 * (index / `+N+`);
int c = imod(index, `+N+`) * 2;
return ivec`+b.length+"("+U+`);
}
`}(d,p)}var v,g,m,w,E}(t.logicalShape,c),a=function(d){return`
void setOutput(vec4 val) {
`+d.output+` = val;
}
`}(l)):(i=function(d,p){switch(d.length){case 0:return`
int getOutputCoords() {
return 0;
}
`;case 1:return function(m,w){return w[0]===1?`
int getOutputCoords() {
return int(resultUV.x * `+w[1]+`.0);
}
`:w[1]===1?`
int getOutputCoords() {
return int(resultUV.y * `+w[0]+`.0);
}
`:`
int getOutputCoords() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+w[0]+", "+w[1]+`));
return resTexRC.x * `+w[1]+` + resTexRC.y;
}
`}(0,p);case 2:return function(m,w){return Ke(m,w)?`
ivec2 getOutputCoords() {
return ivec2(resultUV.yx * vec2(`+w[0]+", "+w[1]+`));
}
`:m[1]===1?`
ivec2 getOutputCoords() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+w[0]+", "+w[1]+`));
int index = resTexRC.x * `+w[1]+` + resTexRC.y;
return ivec2(index, 0);
}
`:m[0]===1?`
ivec2 getOutputCoords() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+w[0]+", "+w[1]+`));
int index = resTexRC.x * `+w[1]+` + resTexRC.y;
return ivec2(0, index);
}
`:`
ivec2 getOutputCoords() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+w[0]+", "+w[1]+`));
int index = resTexRC.x * `+w[1]+` + resTexRC.y;
int r = index / `+m[1]+`;
int c = index - r * `+m[1]+`;
return ivec2(r, c);
}
`}(d,p);case 3:return v=p,g=eo(["r","c","d"],d),`
ivec3 getOutputCoords() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+v[0]+", "+v[1]+`));
int index = resTexRC.x * `+v[1]+` + resTexRC.y;
`+g+`
return ivec3(r, c, d);
}
`;case 4:return function(m,w){var E=eo(["r","c","d","d2"],m);return`
ivec4 getOutputCoords() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+w[0]+", "+w[1]+`));
int index = resTexRC.x * `+w[1]+` + resTexRC.y;
`+E+`
return ivec4(r, c, d, d2);
}
`}(d,p);case 5:return function(m,w){var E=eo(["r","c","d","d2","d3"],m);return`
ivec5 getOutputCoords() {
ivec2 resTexRC = ivec2(resultUV.yx * vec2(`+w[0]+`,
`+w[1]+`));
int index = resTexRC.x * `+w[1]+` + resTexRC.y;
`+E+`
ivec5 outShape = ivec5(r, c, d, d2, d3);
return outShape;
}
`}(d,p);case 6:return function(m,w){var E=eo(["r","c","d","d2","d3","d4"],m);return`
ivec6 getOutputCoords() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+w[0]+", "+w[1]+`));
int index = resTexRC.x * `+w[1]+` + resTexRC.y;
`+E+`
ivec6 result = ivec6(r, c, d, d2, d3, d4);
return result;
}
`}(d,p);default:throw new Error(d.length+"-D output sampling is not yet supported")}var v,g}(t.logicalShape,c),a=function(d){return`
void setOutput(float val) {
`+d.output+` = vec4(val, 0, 0, 0);
}
`}(l)),n&&(h+=ad),[h,f,a,s,i,u,e].join(`
`)}function Ao(r){var t=r.shapeInfo.logicalShape;switch(t.length){case 0:return function(e){var n=e.name,o="get"+n.charAt(0).toUpperCase()+n.slice(1);if(e.shapeInfo.isUniform)return"float "+o+"() {return "+n+";}";var i=e.shapeInfo.texShape,a=i[0],s=i[1];if(a===1&&s===1)return`
float `+o+`() {
return sampleTexture(`+n+`, halfCR);
}
`;var u=e.shapeInfo.texShape,c=u[0],l=u[1],f=to(n);return`
float `+o+`() {
vec2 uv = uvFromFlat(`+c+", "+l+", "+f+`);
return sampleTexture(`+n+`, uv);
}
`}(r);case 1:return function(e){var n=e.name,o="get"+n.charAt(0).toUpperCase()+n.slice(1);if(e.shapeInfo.isUniform)return`
float `+o+`(int index) {
`+yo(e)+`
}
`;var i=e.shapeInfo.texShape,a=i[0],s=i[1];if(s===1&&a===1)return`
float `+o+`(int index) {
return sampleTexture(`+n+`, halfCR);
}
`;var u=to(n);return s===1?`
float `+o+`(int index) {
vec2 uv = vec2(0.5, (float(index + `+u+") + 0.5) / "+a+`.0);
return sampleTexture(`+n+`, uv);
}
`:a===1?`
float `+o+`(int index) {
vec2 uv = vec2((float(index + `+u+") + 0.5) / "+s+`.0, 0.5);
return sampleTexture(`+n+`, uv);
}
`:`
float `+o+`(int index) {
vec2 uv = uvFromFlat(`+a+", "+s+", index + "+u+`);
return sampleTexture(`+n+`, uv);
}
`}(r);case 2:return function(e){var n=e.shapeInfo.logicalShape,o=e.name,i="get"+o.charAt(0).toUpperCase()+o.slice(1),a=e.shapeInfo.texShape;if(a!=null&&Ke(n,a)){var s=a[0],u=a[1];return`
float `+i+`(int row, int col) {
vec2 uv = (vec2(col, row) + halfCR) / vec2(`+u+".0, "+s+`.0);
return sampleTexture(`+o+`, uv);
}
`}var c=an(n),l=c.newShape,f=c.keptDims,h=l;if(h.length<n.length){var d=xo(e,h);return`
`+Ao(d)+`
float `+i+`(int row, int col) {
return `+i+"("+bo(["row","col"],f)+`);
}
`}if(e.shapeInfo.isUniform)return`
float `+i+`(int row, int col) {
int index = round(dot(vec2(row, col), vec2(`+n[1]+`, 1)));
`+yo(e)+`
}
`;var p=a[0],v=a[1],g=to(o);return v===1?`
float `+i+`(int row, int col) {
float index = dot(vec3(row, col, `+g+"), vec3("+n[1]+`, 1, 1));
vec2 uv = vec2(0.5, (index + 0.5) / `+p+`.0);
return sampleTexture(`+o+`, uv);
}
`:p===1?`
float `+i+`(int row, int col) {
float index = dot(vec3(row, col, `+g+"), vec3("+n[1]+`, 1, 1));
vec2 uv = vec2((index + 0.5) / `+v+`.0, 0.5);
return sampleTexture(`+o+`, uv);
}
`:`
float `+i+`(int row, int col) {
// Explicitly use integer operations as dot() only works on floats.
int index = row * `+n[1]+" + col + "+g+`;
vec2 uv = uvFromFlat(`+p+", "+v+`, index);
return sampleTexture(`+o+`, uv);
}
`}(r);case 3:return function(e){var n=e.shapeInfo.logicalShape,o=e.name,i="get"+o.charAt(0).toUpperCase()+o.slice(1),a=n[1]*n[2],s=n[2],u=an(n),c=u.newShape,l=u.keptDims,f=c;if(f.length<n.length){var h=xo(e,f);return`
`+Ao(h)+`
float `+i+`(int row, int col, int depth) {
return `+i+"("+bo(["row","col","depth"],l)+`);
}
`}if(e.shapeInfo.isUniform)return`
float `+i+`(int row, int col, int depth) {
int index = round(dot(vec3(row, col, depth),
vec3(`+a+", "+s+`, 1)));
`+yo(e)+`
}
`;var d=e.shapeInfo.texShape,p=d[0],v=d[1],g=e.shapeInfo.flatOffset;if(v===a&&g==null)return`
float `+i+`(int row, int col, int depth) {
float texR = float(row);
float texC = dot(vec2(col, depth), vec2(`+s+`, 1));
vec2 uv = (vec2(texC, texR) + halfCR) /
vec2(`+v+".0, "+p+`.0);
return sampleTexture(`+o+`, uv);
}
`;if(v===s&&g==null)return`
float `+i+`(int row, int col, int depth) {
float texR = dot(vec2(row, col), vec2(`+n[1]+`, 1));
float texC = float(depth);
vec2 uv = (vec2(texC, texR) + halfCR) / vec2(`+v+".0, "+p+`.0);
return sampleTexture(`+o+`, uv);
}
`;var m=to(o);return`
float `+i+`(int row, int col, int depth) {
// Explicitly use integer operations as dot() only works on floats.
int index = row * `+a+" + col * "+s+" + depth + "+m+`;
vec2 uv = uvFromFlat(`+p+", "+v+`, index);
return sampleTexture(`+o+`, uv);
}
`}(r);case 4:return function(e){var n=e.shapeInfo.logicalShape,o=e.name,i="get"+o.charAt(0).toUpperCase()+o.slice(1),a=n[3],s=n[2]*a,u=n[1]*s,c=an(n),l=c.newShape,f=c.keptDims;if(l.length<n.length){var h=xo(e,l);return`
`+Ao(h)+`
float `+i+`(int row, int col, int depth, int depth2) {
return `+i+"("+bo(["row","col","depth","depth2"],f)+`);
}
`}if(e.shapeInfo.isUniform)return`
float `+i+`(int row, int col, int depth, int depth2) {
int index = round(dot(vec4(row, col, depth, depth2),
vec4(`+u+", "+s+", "+a+`, 1)));
`+yo(e)+`
}
`;var d=e.shapeInfo.flatOffset,p=e.shapeInfo.texShape,v=p[0],g=p[1];if(g===u&&d==null)return`
float `+i+`(int row, int col, int depth, int depth2) {
float texR = float(row);
float texC =
dot(vec3(col, depth, depth2),
vec3(`+s+", "+a+`, 1));
vec2 uv = (vec2(texC, texR) + halfCR) /
vec2(`+g+".0, "+v+`.0);
return sampleTexture(`+o+`, uv);
}
`;if(g===a&&d==null)return`
float `+i+`(int row, int col, int depth, int depth2) {
float texR = dot(vec3(row, col, depth),
vec3(`+n[1]*n[2]+", "+n[2]+`, 1));
float texC = float(depth2);
vec2 uv = (vec2(texC, texR) + halfCR) /
vec2(`+g+".0, "+v+`.0);
return sampleTexture(`+o+`, uv);
}
`;var m=to(o);return`
float `+i+`(int row, int col, int depth, int depth2) {
// Explicitly use integer operations as dot() only works on floats.
int index = row * `+u+" + col * "+s+` +
depth * `+a+` + depth2;
vec2 uv = uvFromFlat(`+v+", "+g+", index + "+m+`);
return sampleTexture(`+o+`, uv);
}
`}(r);case 5:return function(e){var n=e.shapeInfo.logicalShape,o=e.name,i="get"+o.charAt(0).toUpperCase()+o.slice(1),a=n[4],s=n[3]*a,u=n[2]*s,c=n[1]*u,l=an(n),f=l.newShape,h=l.keptDims;if(f.length<n.length){var d=xo(e,f);return`
`+Ao(d)+`
float `+i+`(int row, int col, int depth, int depth2, int depth3) {
return `+i+"("+bo(["row","col","depth","depth2","depth3"],h)+`);
}
`}if(e.shapeInfo.isUniform)return`
float `+i+`(int row, int col, int depth, int depth2, int depth3) {
float index = dot(
vec4(row, col, depth, depth2),
vec4(`+c+", "+u+", "+s+", "+a+`)) +
depth3;
`+yo(e)+`
}
`;var p=e.shapeInfo.flatOffset,v=e.shapeInfo.texShape,g=v[0],m=v[1];if(m===c&&p==null)return`
float `+i+`(int row, int col, int depth, int depth2, int depth3) {
int texR = row;
float texC = dot(vec4(col, depth, depth2, depth3),
vec4(`+u+", "+s+", "+a+`, 1));
vec2 uv = (vec2(texC, texR) + halfCR) /
vec2(`+m+".0, "+g+`.0);
return sampleTexture(`+o+`, uv);
}
`;if(m===a&&p==null)return`
float `+i+`(int row, int col, int depth, int depth2, int depth3) {
float texR = dot(
vec4(row, col, depth, depth2),
vec4(`+n[1]*n[2]*n[3]+`,
`+n[2]*n[3]+", "+n[3]+`, 1));
int texC = depth3;
vec2 uv = (vec2(texC, texR) + halfCR) /
vec2(`+m+".0, "+g+`.0);
return sampleTexture(`+o+`, uv);
}
`;var w=to(o);return`
float `+i+`(int row, int col, int depth, int depth2, int depth3) {
// Explicitly use integer operations as dot() only works on floats.
int index = row * `+c+" + col * "+u+" + depth * "+s+` +
depth2 * `+a+" + depth3 + "+w+`;
vec2 uv = uvFromFlat(`+g+", "+m+`, index);
return sampleTexture(`+o+`, uv);
}
`}(r);case 6:return function(e){var n=e.shapeInfo.logicalShape,o=e.name,i="get"+o.charAt(0).toUpperCase()+o.slice(1),a=an(n),s=a.newShape,u=a.keptDims;if(s.length<n.length){var c=xo(e,s);return`
`+Ao(c)+`
float `+i+`(int row, int col, int depth,
int depth2, int depth3, int depth4) {
return `+i+"("+bo(["row","col","depth","depth2","depth3","depth4"],u)+`);
}
`}var l=n[5],f=n[4]*l,h=n[3]*f,d=n[2]*h,p=n[1]*d;if(e.shapeInfo.isUniform)return`
float `+i+`(int row, int col, int depth,
int depth2, int depth3, int depth4) {
int index = round(dot(
vec4(row, col, depth, depth2),
vec4(`+p+", "+d+", "+h+", "+f+`)) +
dot(
vec2(depth3, depth4),
vec2(`+l+`, 1)));
`+yo(e)+`
}
`;var v=e.shapeInfo.flatOffset,g=e.shapeInfo.texShape,m=g[0],w=g[1];if(w===p&&v==null)return`
float `+i+`(int row, int col, int depth,
int depth2, int depth3, int depth4) {
int texR = row;
float texC = dot(vec4(col, depth, depth2, depth3),
vec4(`+d+", "+h+", "+f+", "+l+`)) +
float(depth4);
vec2 uv = (vec2(texC, texR) + halfCR) /
vec2(`+w+".0, "+m+`.0);
return sampleTexture(`+o+`, uv);
}
`;if(w===l&&v==null)return`
float `+i+`(int row, int col, int depth,
int depth2, int depth3, int depth4) {
float texR = dot(vec4(row, col, depth, depth2),
vec4(`+n[1]*n[2]*n[3]*n[4]+`,
`+n[2]*n[3]*n[4]+`,
`+n[3]*n[4]+`,
`+n[4]+`)) + float(depth3);
int texC = depth4;
vec2 uv = (vec2(texC, texR) + halfCR) /
vec2(`+w+".0, "+m+`.0);
return sampleTexture(`+o+`, uv);
}
`;var E=to(o);return`
float `+i+`(int row, int col, int depth,
int depth2, int depth3, int depth4) {
// Explicitly use integer operations as dot() only works on floats.
int index = row * `+p+" + col * "+d+" + depth * "+h+` +
depth2 * `+f+" + depth3 * "+l+" + depth4 + "+E+`;
vec2 uv = uvFromFlat(`+m+", "+w+`, index);
return sampleTexture(`+o+`, uv);
}
`}(r);default:throw new Error(t.length+"-D input sampling is not yet supported")}}function lc(r){var t,e,n;switch(r.shapeInfo.logicalShape.length){case 0:return t=r.name,e="get"+t.charAt(0).toUpperCase()+t.slice(1),n=Dn(),`
vec4 `+e+`() {
return `+n.texture2D+"("+t+`, halfCR);
}
`;case 1:return function(o){var i=o.name,a="get"+i.charAt(0).toUpperCase()+i.slice(1),s=o.shapeInfo.texShape,u=[Math.ceil(s[0]/2),Math.ceil(s[1]/2)],c=Dn();return`
vec4 `+a+`(int index) {
vec2 uv = packedUVfrom1D(
`+u[0]+", "+u[1]+`, index);
return `+c.texture2D+"("+i+`, uv);
}
`}(r);case 2:return function(o){var i=o.shapeInfo.logicalShape,a=o.name,s="get"+a.charAt(0).toUpperCase()+a.slice(1),u=o.shapeInfo.texShape,c=u[0],l=u[1],f=Dn();if(u!=null&&Ke(i,u))return`
vec4 `+s+`(int row, int col) {
vec2 uv = (vec2(col, row) + halfCR) / vec2(`+l+".0, "+c+`.0);
return `+f.texture2D+"("+a+`, uv);
}
`;var h=[Math.ceil(u[0]/2),Math.ceil(u[1]/2)],d=Math.ceil(i[1]/2);return`
vec4 `+s+`(int row, int col) {
vec2 uv = packedUVfrom2D(`+d+", "+h[0]+", "+h[1]+`, row, col);
return `+f.texture2D+"("+a+`, uv);
}
`}(r);case 3:return function(o){var i=o.shapeInfo.logicalShape,a=o.name,s="get"+a.charAt(0).toUpperCase()+a.slice(1),u=o.shapeInfo.texShape,c=[Math.ceil(u[0]/2),Math.ceil(u[1]/2)];if(i[0]===1){var l=i.slice(1),f=xo(o,l);return`
`+lc(f)+`
vec4 `+s+`(int b, int row, int col) {
return `+s+"("+bo(["b","row","col"],[1,2])+`);
}
`}var h=c[0],d=c[1],p=Math.ceil(i[2]/2),v=p*Math.ceil(i[1]/2),g=Dn();return`
vec4 `+s+`(int b, int row, int col) {
vec2 uv = packedUVfrom3D(
`+h+", "+d+", "+v+", "+p+`, b, row, col);
return `+g.texture2D+"("+a+`, uv);
}
`}(r);default:return function(o){for(var i=o.shapeInfo.logicalShape,a=i.length,s=o.name,u="get"+s.charAt(0).toUpperCase()+s.slice(1),c=o.shapeInfo.texShape,l=[Math.ceil(c[0]/2),Math.ceil(c[1]/2)],f=l[0],h=l[1],d=Math.ceil(i[a-1]/2),p=d*Math.ceil(i[a-2]/2),v="int b, int row, int col",g="b * "+p+" + (row / 2) * "+d+" + (col / 2)",m=2;m<a-1;m++)v="int b"+m+", "+v,p*=i[a-m-1],g="b"+m+" * "+p+" + "+g;var w=Dn();return`
vec4 `+u+"("+v+`) {
int index = `+g+`;
int texR = index / `+h+`;
int texC = index - texR * `+h+`;
vec2 uv = (vec2(texC, texR) + halfCR) / vec2(`+h+", "+f+`);
return `+w.texture2D+"("+s+`, uv);
}
`}(r)}}var rd=`
vec2 uvFromFlat(int texNumR, int texNumC, int index) {
int texR = index / texNumC;
int texC = index - texR * texNumC;
return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
}
vec2 packedUVfrom1D(int texNumR, int texNumC, int index) {
int texelIndex = index / 2;
int texR = texelIndex / texNumC;
int texC = texelIndex - texR * texNumC;
return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
}
`,od=`
vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,
int texNumC, int row, int col) {
int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);
int texR = texelIndex / texNumC;
int texC = texelIndex - texR * texNumC;
return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
}
`,id=`
vec2 packedUVfrom3D(int texNumR, int texNumC,
int texelsInBatch, int texelsInLogicalRow, int b,
int row, int col) {
int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);
int texR = index / texNumC;
int texC = index - texR * texNumC;
return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
}
`,ad=`
float getChannel(vec4 frag, vec2 innerDims) {
vec2 modCoord = mod(innerDims, 2.);
return modCoord.x == 0. ?
(modCoord.y == 0. ? frag.r : frag.g) :
(modCoord.y == 0. ? frag.b : frag.a);
}
float getChannel(vec4 frag, int dim) {
float modCoord = mod(float(dim), 2.);
return modCoord == 0. ? frag.r : frag.g;
}
`;function to(r){return"offset"+r}function yo(r){var t=r.name,e=Re(r.shapeInfo.logicalShape);return e<2?"return "+t+";":`
for (int i = 0; i < `+e+`; i++) {
if (i == index) {
return `+t+`[i];
}
}
`}function Yt(r){if(r<=1)return"int";if(r===2)return"ivec2";if(r===3)return"ivec3";if(r===4)return"ivec4";if(r===5)return"ivec5";if(r===6)return"ivec6";throw Error("GPU for rank "+r+" is not yet supported")}function xo(r,t){var e=JSON.parse(JSON.stringify(r));return e.shapeInfo.logicalShape=t,e}function bo(r,t){return t.map(function(e){return r[e]}).join(", ")}var sd=function(r,t,e,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,B(r.length>2,function(){return"Packed arg"+(e.charAt(0).toUpperCase()+e.slice(1))+" supports only inputs with rank above 2."});var o=r[r.length-1],i=Math.ceil(o/t);this.outputShape=r.slice(0,-1),i>1&&this.outputShape.push(i),n||this.variableNames.push("bestIndicesA");var a,s,u=this.outputShape,c=u.length,l=Yt(c),f=zn("coords",c);if(i===1){var h=Yt(s=c+1);a=`
`+h+" sourceLocR = "+h+"("+f.join()+`, 0);
++`+f[c-1]+`;
`+h+" sourceLocG = "+h+"("+f.join()+`, 0);
++`+f[c-2]+`;
`+h+" sourceLocA = "+h+"("+f.join()+`, 0);
--`+f[c-1]+`;
`+h+" sourceLocB = "+h+"("+f.join()+`, 0);
--`+f[c-2]+";"}else s=c,a=`
`+l+` sourceLocR = coords;
++`+f[c-1]+`;
`+l+` sourceLocG = coords;
++`+f[c-2]+`;
`+l+` sourceLocA = coords;
--`+f[c-1]+`;
`+l+` sourceLocB = coords;
--`+f[c-2]+";";var d=["x","y","z","w","u","v"].slice(0,s),p="."+d[s-1],v=d.map(function(O){return"int "+O}),g=zn("sourceLocR",s-1).concat("inIdx.r"),m=zn("sourceLocG",s-1).concat("inIdx.g"),w=zn("sourceLocB",s-1).concat("inIdx.b"),E=zn("sourceLocA",s-1).concat("inIdx.a"),b=e==="max"?"greaterThan":"lessThan",C=n?"":`
inIdx = round(vec4(getBestIndicesAChannel(`+g.join()+`),
getBestIndicesAChannel(`+m.join()+`),
getBestIndicesAChannel(`+w.join()+`),
getBestIndicesAChannel(`+E.join()+")));",S=`vec4(
getAChannel(`+g.join()+`),
hasNextCol ? getAChannel(`+m.join()+`) : 0.,
hasNextRow ? getAChannel(`+w.join()+`) : 0.,
hasNextRow && hasNextCol ? getAChannel(`+E.join()+") : 0.)",N=n?"":`
float getBestIndicesAChannel(`+v.join()+`) {
return getChannel(getBestIndicesA(`+d.join()+`),
vec2(`+d.slice(-2).join()+`));
}`;this.userCode=`
float getAChannel(`+v.join()+`) {
return getChannel(getA(`+d.join()+`),
vec2(`+d.slice(-2).join()+`));
}
`+N+`
void main() {
`+l+` coords = getOutputCoords();
bool hasNextCol = `+f[c-1]+" < "+(u[c-1]-1)+`;
bool hasNextRow = `+f[c-2]+" < "+(u[c-2]-1)+`;
`+a+`
ivec4 srcIdx = ivec4(sourceLocR`+p+", sourceLocG"+p+`,
sourceLocB`+p+", sourceLocA"+p+") * "+t+`;
ivec4 inIdx = srcIdx;
vec4 bestIndex = vec4(inIdx);
vec4 bestValue = `+S+`;
for (int i = 0; i < `+t+`; i++) {
inIdx = srcIdx;
`+C+`
vec4 candidate = `+S+`;
bvec4 nan = isnan(candidate);
bvec4 replace = bvec4(
vec4(`+b+`(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));
bestValue = vec4(replace.x ? candidate.x : bestValue.x,
replace.y ? candidate.y : bestValue.y,
replace.z ? candidate.z : bestValue.z,
replace.w ? candidate.w : bestValue.w);
bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));
srcIdx++;
}
setOutput(bestIndex);
}
`},ud=function(r){this.variableNames=["dy"],this.outputShape=r.inShape;var t=r.filterHeight,e=r.filterWidth,n=r.strideHeight,o=r.strideWidth,i=r.dilationHeight,a=r.dilationWidth,s=r.effectiveFilterHeight,u=r.effectiveFilterWidth,c=s-1-r.padInfo.top,l=u-1-r.padInfo.left,f=1/(t*e);this.userCode=`
const ivec2 pads = ivec2(`+c+", "+l+`);
const float avgMultiplier = float(`+f+`);
void main() {
ivec4 coords = getOutputCoords();
int b = coords[0];
int d = coords[3];
ivec2 dyRCCorner = coords.yz - pads;
int dyRCorner = dyRCCorner.x;
int dyCCorner = dyRCCorner.y;
// Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).
// ? = to be determined. : = across all values in that axis.
float dotProd = 0.0;
for (int wR = 0; wR < `+s+`;
wR += `+i+`) {
float dyR = float(dyRCorner + wR) / `+n+`.0;
if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 || fract(dyR) > 0.0) {
continue;
}
int idyR = int(dyR);
for (int wC = 0; wC < `+u+`;
wC+= `+a+`) {
float dyC = float(dyCCorner + wC) / `+o+`.0;
if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
fract(dyC) > 0.0) {
continue;
}
int idyC = int(dyC);
float dyValue = getDy(b, idyR, idyC, d);
dotProd += dyValue * avgMultiplier;
}
}
setOutput(dotProd);
}
`},cd=function(r){this.variableNames=["dy"],this.outputShape=r.inShape;var t=r.filterDepth,e=r.filterHeight,n=r.filterWidth,o=r.strideDepth,i=r.strideHeight,a=r.strideWidth,s=r.dilationDepth,u=r.dilationHeight,c=r.dilationWidth,l=r.effectiveFilterDepth,f=r.effectiveFilterHeight,h=r.effectiveFilterWidth,d=l-1-r.padInfo.front,p=f-1-r.padInfo.top,v=h-1-r.padInfo.left,g=1/(t*e*n);this.userCode=`
const ivec3 pads = ivec3(`+d+", "+p+", "+v+`);
const float avgMultiplier = float(`+g+`);
void main() {
ivec5 coords = getOutputCoords();
int batch = coords.x;
int ch = coords.u;
ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;
int dyDCorner = dyCorner.x;
int dyRCorner = dyCorner.y;
int dyCCorner = dyCorner.z;
// Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get
// dx(xD, xR, xC, ch).
// ? = to be determined. : = across all values in that axis.
float dotProd = 0.0;
for (int wD = 0; wD < `+l+`;
wD += `+s+`) {
float dyD = float(dyDCorner + wD) / `+o+`.0;
if (dyD < 0.0 || dyD >= `+r.outDepth+`.0 || fract(dyD) > 0.0) {
continue;
}
int idyD = int(dyD);
for (int wR = 0; wR < `+f+`;
wR += `+u+`) {
float dyR = float(dyRCorner + wR) / `+i+`.0;
if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 ||
fract(dyR) > 0.0) {
continue;
}
int idyR = int(dyR);
for (int wC = 0; wC < `+h+`;
wC += `+c+`) {
float dyC = float(dyCCorner + wC) / `+a+`.0;
if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
fract(dyC) > 0.0) {
continue;
}
int idyC = int(dyC);
float dyValue = getDy(batch, idyD, idyR, idyC, ch);
dotProd += dyValue * avgMultiplier;
}
}
}
setOutput(dotProd);
}
`},ld=function(r,t,e,n,o,i){this.outputShape=[],this.variableNames=["x","mean","variance"],gt(r,t),gt(r,e);var a="0.0";n!=null&&(gt(r,n),this.variableNames.push("offset"),a="getOffsetAtOutCoords()");var s="1.0";o!=null&&(gt(r,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=r,this.userCode=`
void main() {
float x = getXAtOutCoords();
float mean = getMeanAtOutCoords();
float variance = getVarianceAtOutCoords();
float offset = `+a+`;
float scale = `+s+`;
float inv = scale * inversesqrt(variance + float(`+i+`));
setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));
}
`},fd=function(r,t,e,n,o,i){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],gt(r,t),gt(r,e);var a="vec4(0.0)";n!=null&&(gt(r,n),this.variableNames.push("offset"),a="getOffsetAtOutCoords()");var s="vec4(1.0)";o!=null&&(gt(r,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=r,this.userCode=`
void main() {
vec4 offset = `+a+`;
vec4 scale = `+s+`;
vec4 x = getXAtOutCoords();
vec4 mean = getMeanAtOutCoords();
vec4 variance = getVarianceAtOutCoords();
vec4 inv = scale * inversesqrt(variance + vec4(`+i+`));
setOutput((x - mean) * inv + offset);
}
`},hd="return areal * breal - aimag * bimag;",dd="return areal * bimag + aimag * breal;",fc=function(r,t,e){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=gt(t,e),this.userCode=`
float binaryOpComplex(
float areal, float aimag, float breal, float bimag) {
`+r+`
}
void main() {
float areal = getARealAtOutCoords();
float aimag = getAImagAtOutCoords();
float breal = getBRealAtOutCoords();
float bimag = getBImagAtOutCoords();
setOutput(binaryOpComplex(areal, aimag, breal, bimag));
}
`},Oa="return a + b;",Ma="return a - b;",hc="return a * b;",dc="return (a < 0.) ? b * a : a;",sn=function(r,t,e){this.variableNames=["A","B"],this.outputShape=gt(t,e),this.userCode=`
float binaryOperation(float a, float b) {
`+r+`
}
void main() {
float a = getAAtOutCoords();
float b = getBAtOutCoords();
setOutput(binaryOperation(a, b));
}
`},pc=`
vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));
return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);
`,Sr=function(r,t,e,n){n===void 0&&(n=!1),this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=gt(t,e);var o=this.outputShape.length,i="";if(n)if(o===0||Re(this.outputShape)===1)i=`
result.y = 0.;
result.z = 0.;
result.w = 0.;
`;else if(i=`
`+Yt(o)+` coords = getOutputCoords();
`,o===1)i+=`
result.y = (coords + 1) >= `+this.outputShape[0]+` ? 0. : result.y;
result.z = 0.;
result.w = 0.;
`;else{var a=zn("coords",o);i+=`
bool nextRowOutOfBounds =
(`+a[o-2]+" + 1) >= "+this.outputShape[o-2]+`;
bool nextColOutOfBounds =
(`+a[o-1]+" + 1) >= "+this.outputShape[o-1]+`;
result.y = nextColOutOfBounds ? 0. : result.y;
result.z = nextRowOutOfBounds ? 0. : result.z;
result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;
`}this.userCode=`
vec4 binaryOperation(vec4 a, vec4 b) {
`+r+`
}
void main() {
vec4 a = getAAtOutCoords();
vec4 b = getBAtOutCoords();
vec4 result = binaryOperation(a, b);
`+i+`
setOutput(result);
}
`},pd=function(){function r(t){this.variableNames=["A"],this.outputShape=t,this.userCode=`
uniform float minVal;
uniform float maxVal;
void main() {
float value = getAAtOutCoords();
if (isnan(value)) {
setOutput(value);
return;
}
setOutput(clamp(value, minVal, maxVal));
}
`}return r.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(o,i){n.minLoc==null&&(n.minLoc=o.getUniformLocationNoThrow(i,"minVal"),n.maxLoc=o.getUniformLocationNoThrow(i,"maxVal")),o.gl.uniform1f(n.minLoc,t),o.gl.uniform1f(n.maxLoc,e)}},r}(),vd=function(){function r(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.userCode=`
uniform float minVal;
uniform float maxVal;
void main() {
vec4 value = getAAtOutCoords();
if (any(isnan(value))) {
setOutput(value);
return;
}
setOutput(clamp(value, vec4(minVal), vec4(maxVal)));
}
`}return r.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(o,i){n.minLoc==null&&(n.minLoc=o.getUniformLocationNoThrow(i,"minVal"),n.maxLoc=o.getUniformLocationNoThrow(i,"maxVal")),o.gl.uniform1f(n.minLoc,t),o.gl.uniform1f(n.maxLoc,e)}},r}(),gd=function(r){this.variableNames=["real","imag"],this.outputShape=r,this.userCode=`
void main() {
float re = abs(getRealAtOutCoords());
float im = abs(getImagAtOutCoords());
float mx = max(re, im);
// sadly the length function in glsl is not underflow-safe
// (at least not on Intel GPUs). So the safe solution is
// to ensure underflow-safety in all cases.
setOutput(
mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))
);
}
`},md=function(r){this.outputShape=[],this.outputShape=Kr(r,1),this.variableNames=r.map(function(s,u){return"T"+u});var t=new Array(r.length-1);t[0]=r[0][1];for(var e=1;e<t.length;e++)t[e]=t[e-1]+r[e][1];var n=["if (yC < "+t[0]+") setOutput(getT0(yR, yC));"];for(e=1;e<t.length;e++){var o=t[e-1];n.push("else if (yC < "+t[e]+") setOutput(getT"+e+"(yR, yC-"+o+"));")}var i=t.length,a=t[t.length-1];n.push("else setOutput(getT"+i+"(yR, yC-"+a+"));"),this.userCode=`
void main() {
ivec2 coords = getOutputCoords();
int yR = coords.x;
int yC = coords.y;
`+n.join(`
`)+`
}
`},Ad=function(r,t){this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[],this.outputShape=Kr(r,t);var e=this.outputShape,n=e.length,o=Yt(n),i=zn("coords",n),a=["x","y","z","w","u","v"].slice(0,n);this.variableNames=r.map(function(g,m){return"T"+m});var s=new Array(r.length-1);s[0]=r[0][t];for(var u=1;u<s.length;u++)s[u]=s[u-1]+r[u][t];var c=a[t],l=a.slice(-2),f=a.join(),h="if ("+c+" < "+s[0]+`) {
return getChannel(
getT0(`+f+"), vec2("+l.join()+`));
}`;for(u=1;u<s.length;u++){var d=s[u-1];h+=`
if (`+c+" < "+s[u]+" && "+c+" >= "+s[u-1]+`) {
return getChannel(
getT`+u+"("+Fi(a,c,d)+`),
vec2(`+Fi(l,c,d)+`));
}`}var p=s.length,v=s[s.length-1];h+=`
return getChannel(
getT`+p+"("+Fi(a,c,v)+`),
vec2(`+Fi(l,c,v)+"));",this.userCode=`
float getValue(`+a.map(function(g){return"int "+g})+`) {
`+h+`
}
void main() {
`+o+` coords = getOutputCoords();
vec4 result = vec4(getValue(`+i+`), 0., 0., 0.);
`+i[n-1]+" = "+i[n-1]+` + 1;
if (`+i[n-1]+" < "+e[n-1]+`) {
result.g = getValue(`+i+`);
}
`+i[n-2]+" = "+i[n-2]+` + 1;
if (`+i[n-2]+" < "+e[n-2]+`) {
result.a = getValue(`+i+`);
}
`+i[n-1]+" = "+i[n-1]+` - 1;
if (`+i[n-2]+" < "+e[n-2]+` &&
`+i[n-1]+" < "+e[n-1]+`) {
result.b = getValue(`+i+`);
}
setOutput(result);
}
`};function Fi(r,t,e){var n=r.indexOf(t);return r.map(function(o,i){return i===n?o+" - "+e:o}).join()}var yd=function(r){this.variableNames=["x","dy"],this.outputShape=r.filterShape;var t=r.strideHeight,e=r.strideWidth,n=r.padInfo.top,o=r.padInfo.left,i=r.dataFormat==="channelsLast";this.userCode=`
void main() {
ivec4 coords = getOutputCoords();
int wR = coords.x;
int wC = coords.y;
int d1 = coords.z;
int d2 = coords.w;
// Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).
// ? = to be determined. : = across all values in that axis.
float dotProd = 0.0;
for (int b = 0; b < `+r.batchSize+`; b++) {
for (int yR = 0; yR < `+r.outHeight+`; yR++) {
int xR = wR + yR * `+t+" - "+n+`;
if (xR < 0 || xR >= `+r.inHeight+`) {
continue;
}
for (int yC = 0; yC < `+r.outWidth+`; yC++) {
int xC = wC + yC * `+e+" - "+o+`;
if (xC < 0 || xC >= `+r.inWidth+`) {
continue;
}
if (`+i+`) {
float dyValue = getDy(b, yR, yC, d2);
float xValue = getX(b, xR, xC, d1);
dotProd += (xValue * dyValue);
} else {
float dyValue = getDy(b, d2, yR, yC);
float xValue = getX(b, d1, xR, xC);
dotProd += (xValue * dyValue);
}
}
}
}
setOutput(dotProd);
}
`},xd=function(r){this.variableNames=["dy","W"],this.outputShape=r.inShape;var t=r.filterHeight,e=r.filterWidth,n=r.strideHeight,o=r.strideWidth,i=r.dataFormat==="channelsLast",a=t-1-r.padInfo.top,s=e-1-r.padInfo.left,u=i?1:2,c=i?2:3,l=i?3:1;this.userCode=`
const ivec2 pads = ivec2(`+a+", "+s+`);
void main() {
ivec4 coords = getOutputCoords();
int batch = coords[0];
int d1 = coords[`+l+`];
ivec2 dyCorner = ivec2(coords[`+u+"], coords["+c+`]) - pads;
int dyRCorner = dyCorner.x;
int dyCCorner = dyCorner.y;
// Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).
// ? = to be determined. : = across all values in that axis.
float dotProd = 0.0;
for (int wR = 0; wR < `+t+`; wR++) {
float dyR = float(dyRCorner + wR) / `+n+`.0;
if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 || fract(dyR) > 0.0) {
continue;
}
int idyR = int(dyR);
int wRPerm = `+t+` - 1 - wR;
for (int wC = 0; wC < `+e+`; wC++) {
float dyC = float(dyCCorner + wC) / `+o+`.0;
if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
fract(dyC) > 0.0) {
continue;
}
int idyC = int(dyC);
int wCPerm = `+e+` - 1 - wC;
for (int d2 = 0; d2 < `+r.outChannels+`; d2++) {
if (`+i+`) {
float xValue = getDy(batch, idyR, idyC, d2);
float wValue = getW(wRPerm, wCPerm, d1, d2);
dotProd += xValue * wValue;
} else {
float xValue = getDy(batch, d2, idyR, idyC);
float wValue = getW(wRPerm, wCPerm, d1, d2);
dotProd += xValue * wValue;
}
}
}
}
setOutput(dotProd);
}
`},bd=function(r){this.variableNames=["x","dy"],this.outputShape=r.filterShape;var t=r.strideDepth,e=r.strideHeight,n=r.strideWidth,o=r.padInfo.front,i=r.padInfo.top,a=r.padInfo.left;this.userCode=`
void main() {
ivec5 coords = getOutputCoords();
int wF = coords.x;
int wR = coords.y;
int wC = coords.z;
int d1 = coords.w;
int d2 = coords.u;
float dotProd = 0.0;
for (int b = 0; b < `+r.batchSize+`; b++) {
for (int yF = 0; yF < `+r.outDepth+`; yF++) {
int xF = wF + yF * `+t+" - "+o+`;
if (xF < 0 || xF >= `+r.inDepth+`) {
continue;
}
for (int yR = 0; yR < `+r.outHeight+`; yR++) {
int xR = wR + yR * `+e+" - "+i+`;
if (xR < 0 || xR >= `+r.inHeight+`) {
continue;
}
for (int yC = 0; yC < `+r.outWidth+`; yC++) {
int xC = wC + yC * `+n+" - "+a+`;
if (xC < 0 || xC >= `+r.inWidth+`) {
continue;
}
float dyValue = getDy(b, yF, yR, yC, d2);
float xValue = getX(b, xF, xR, xC, d1);
dotProd += (xValue * dyValue);
}
}
}
}
setOutput(dotProd);
}
`},wd=function(r){this.variableNames=["dy","W"],this.outputShape=r.inShape;var t=r.filterDepth,e=r.filterHeight,n=r.filterWidth,o=r.strideDepth,i=r.strideHeight,a=r.strideWidth,s=t-1-r.padInfo.front,u=e-1-r.padInfo.top,c=n-1-r.padInfo.left;this.userCode=`
const ivec3 pads = ivec3(`+s+", "+u+", "+c+`);
void main() {
ivec5 coords = getOutputCoords();
int batch = coords.x;
int d1 = coords.u;
ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;
int dyFCorner = dyCorner.x;
int dyRCorner = dyCorner.y;
int dyCCorner = dyCorner.z;
float dotProd = 0.0;
for (int wF = 0; wF < `+t+`; wF++) {
float dyF = float(dyFCorner + wF) / `+o+`.0;
if (dyF < 0.0 || dyF >= `+r.outDepth+`.0 || fract(dyF) > 0.0) {
continue;
}
int idyF = int(dyF);
int wFPerm = `+t+` - 1 - wF;
for (int wR = 0; wR < `+e+`; wR++) {
float dyR = float(dyRCorner + wR) / `+i+`.0;
if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 ||
fract(dyR) > 0.0) {
continue;
}
int idyR = int(dyR);
int wRPerm = `+e+` - 1 - wR;
for (int wC = 0; wC < `+n+`; wC++) {
float dyC = float(dyCCorner + wC) / `+a+`.0;
if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
fract(dyC) > 0.0) {
continue;
}
int idyC = int(dyC);
int wCPerm = `+n+` - 1 - wC;
for (int d2 = 0; d2 < `+r.outChannels+`; d2++) {
float xValue = getDy(batch, idyF, idyR, idyC, d2);
float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);
dotProd += xValue * wValue;
}
}
}
}
setOutput(dotProd);
}
`},Ed=function(r){this.variableNames=["x","dy"],this.outputShape=r.filterShape;var t=r.strideHeight,e=r.strideWidth,n=r.padInfo.top,o=r.padInfo.left,i=r.outChannels/r.inChannels;this.userCode=`
void main() {
ivec4 coords = getOutputCoords();
int wR = coords.x;
int wC = coords.y;
int d1 = coords.z;
int dm = coords.w;
int d2 = d1 * `+i+` + dm;
float dotProd = 0.0;
// TO DO: Vec4 over the batch size
for (int b = 0; b < `+r.batchSize+`; b++) {
for (int yR = 0; yR < `+r.outHeight+`; yR++) {
int xR = wR + yR * `+t+" - "+n+`;
if (xR < 0 || xR >= `+r.inHeight+`) {
continue;
}
for (int yC = 0; yC < `+r.outWidth+`; yC++) {
int xC = wC + yC * `+e+" - "+o+`;
if (xC < 0 || xC >= `+r.inWidth+`) {
continue;
}
float dyValue = getDy(b, yR, yC, d2);
float xValue = getX(b, xR, xC, d1);
dotProd += (xValue * dyValue);
}
}
}
setOutput(dotProd);
}
`},Cd=function(r){this.variableNames=["dy","W"],this.outputShape=r.inShape;var t=r.filterHeight,e=r.filterWidth,n=r.strideHeight,o=r.strideWidth,i=t-1-r.padInfo.top,a=e-1-r.padInfo.left,s=r.outChannels/r.inChannels;this.userCode=`
const ivec2 pads = ivec2(`+i+", "+a+`);
void main() {
ivec4 coords = getOutputCoords();
int batch = coords[0];
int d1 = coords[3];
ivec2 dyCorner = coords.yz - pads;
int dyRCorner = dyCorner.x;
int dyCCorner = dyCorner.y;
float dotProd = 0.0;
for (int wR = 0; wR < `+t+`; wR++) {
float dyR = float(dyRCorner + wR) / `+n+`.0;
if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 || fract(dyR) > 0.0) {
continue;
}
int idyR = int(dyR);
int wRPerm = `+t+` - 1 - wR;
for (int wC = 0; wC < `+e+`; wC++) {
float dyC = float(dyCCorner + wC) / `+o+`.0;
if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
fract(dyC) > 0.0) {
continue;
}
int idyC = int(dyC);
int wCPerm = `+e+` - 1 - wC;
// TO DO: Vec4 over the channelMul
for (int dm = 0; dm < `+s+`; dm++) {
int d2 = d1 * `+s+` + dm;
float xValue = getDy(batch, idyR, idyC, d2);
float wValue = getW(wRPerm, wCPerm, d1, dm);
dotProd += xValue * wValue;
}
}
}
setOutput(dotProd);
}
`},vc=function(r,t,e,n){t===void 0&&(t=!1),e===void 0&&(e=null),n===void 0&&(n=!1),this.variableNames=["x","W"],this.outputShape=r.outShape;var o=r.padInfo.top,i=r.padInfo.left,a=r.strideHeight,s=r.strideWidth,u=r.dilationHeight,c=r.dilationWidth,l=r.filterHeight,f=r.filterWidth,h=4*Math.floor(r.inChannels/4),d=r.inChannels%4,p=r.dataFormat==="channelsLast",v=p?1:2,g=p?2:3,m=p?3:1,w="",E="";e&&(w=n?`float activation(float a) {
float b = getPreluActivationWeightsAtOutCoords();
`+e+`
}`:`
float activation(float x) {
`+e+`
}
`,E="result = activation(result);");var b=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),n&&this.variableNames.push("preluActivationWeights"),this.userCode=`
`+w+`
const ivec2 strides = ivec2(`+a+", "+s+`);
const ivec2 pads = ivec2(`+o+", "+i+`);
void main() {
ivec4 coords = getOutputCoords();
int batch = coords[0];
int d2 = coords[`+m+`];
ivec2 xRCCorner =
ivec2(coords[`+v+"], coords["+g+`]) * strides - pads;
int xRCorner = xRCCorner.x;
int xCCorner = xRCCorner.y;
// Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).
// ? = to be determined. : = across all values in that axis.
float dotProd = 0.0;
for (int wR = 0; wR < `+l+`; wR++) {
int xR = xRCorner + wR * `+u+`;
if (xR < 0 || xR >= `+r.inHeight+`) {
continue;
}
for (int wC = 0; wC < `+f+`; wC++) {
int xC = xCCorner + wC * `+c+`;
if (xC < 0 || xC >= `+r.inWidth+`) {
continue;
}
for (int d1 = 0; d1 < `+h+`; d1 += 4) {
vec4 wValues = vec4(
getW(wR, wC, d1, d2),
getW(wR, wC, d1 + 1, d2),
getW(wR, wC, d1 + 2, d2),
getW(wR, wC, d1 + 3, d2)
);
if (`+p+`) {
vec4 xValues = vec4(
getX(batch, xR, xC, d1),
getX(batch, xR, xC, d1 + 1),
getX(batch, xR, xC, d1 + 2),
getX(batch, xR, xC, d1 + 3)
);
dotProd += dot(xValues, wValues);
} else {
vec4 xValues = vec4(
getX(batch, d1, xR, xC),
getX(batch, d1 + 1, xR, xC),
getX(batch, d1 + 2, xR, xC),
getX(batch, d1 + 3, xR, xC)
);
dotProd += dot(xValues, wValues);
}
}
if (`+(d===1)+`) {
if (`+p+`) {
dotProd +=
getX(batch, xR, xC, `+h+`) *
getW(wR, wC, `+h+`, d2);
} else {
dotProd +=
getX(batch, `+h+`, xR, xC) *
getW(wR, wC, `+h+`, d2);
}
} else if (`+(d===2)+`) {
vec2 wValues = vec2(
getW(wR, wC, `+h+`, d2),
getW(wR, wC, `+h+` + 1, d2)
);
if (`+p+`) {
vec2 xValues = vec2(
getX(batch, xR, xC, `+h+`),
getX(batch, xR, xC, `+h+` + 1)
);
dotProd += dot(xValues, wValues);
} else {
vec2 xValues = vec2(
getX(batch, `+h+`, xR, xC),
getX(batch, `+h+` + 1, xR, xC)
);
dotProd += dot(xValues, wValues);
}
} else if (`+(d===3)+`) {
vec3 wValues = vec3(
getW(wR, wC, `+h+`, d2),
getW(wR, wC, `+h+` + 1, d2),
getW(wR, wC, `+h+` + 2, d2)
);
if (`+p+`) {
vec3 xValues = vec3(
getX(batch, xR, xC, `+h+`),
getX(batch, xR, xC, `+h+` + 1),
getX(batch, xR, xC, `+h+` + 2)
);
dotProd += dot(xValues, wValues);
} else {
vec3 xValues = vec3(
getX(batch, `+h+`, xR, xC),
getX(batch, `+h+` + 1, xR, xC),
getX(batch, `+h+` + 2, xR, xC)
);
dotProd += dot(xValues, wValues);
}
}
}
}
float result = dotProd;
`+b+`
`+E+`
setOutput(result);
}
`},Id=function(r){this.variableNames=["x","W"],this.outputShape=r.outShape;var t=r.padInfo.front,e=r.padInfo.top,n=r.padInfo.left,o=r.strideDepth,i=r.strideHeight,a=r.strideWidth,s=r.dilationDepth,u=r.dilationHeight,c=r.dilationWidth,l=r.filterDepth,f=r.filterHeight,h=r.filterWidth,d=4*Math.floor(r.inChannels/4),p=r.inChannels%4;this.userCode=`
const ivec3 strides = ivec3(`+o+", "+i+", "+a+`);
const ivec3 pads = ivec3(`+t+", "+e+", "+n+`);
void main() {
ivec5 coords = getOutputCoords();
int batch = coords.x;
int d2 = coords.u;
ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;
int xFCorner = xFRCCorner.x;
int xRCorner = xFRCCorner.y;
int xCCorner = xFRCCorner.z;
// Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get
// y(yF, yR, yC, d2). ? = to be determined. : = across all
// values in that axis.
float dotProd = 0.0;
for (int wF = 0; wF < `+l+`; wF++) {
int xF = xFCorner + wF * `+s+`;
if (xF < 0 || xF >= `+r.inDepth+`) {
continue;
}
for (int wR = 0; wR < `+f+`; wR++) {
int xR = xRCorner + wR * `+u+`;
if (xR < 0 || xR >= `+r.inHeight+`) {
continue;
}
for (int wC = 0; wC < `+h+`; wC++) {
int xC = xCCorner + wC * `+c+`;
if (xC < 0 || xC >= `+r.inWidth+`) {
continue;
}
for (int d1 = 0; d1 < `+d+`; d1 += 4) {
vec4 xValues = vec4(
getX(batch, xF, xR, xC, d1),
getX(batch, xF, xR, xC, d1 + 1),
getX(batch, xF, xR, xC, d1 + 2),
getX(batch, xF, xR, xC, d1 + 3)
);
vec4 wValues = vec4(
getW(wF, wR, wC, d1, d2),
getW(wF, wR, wC, d1 + 1, d2),
getW(wF, wR, wC, d1 + 2, d2),
getW(wF, wR, wC, d1 + 3, d2)
);
dotProd += dot(xValues, wValues);
}
if (`+(p===1)+`) {
dotProd +=
getX(batch, xF, xR, xC, `+d+`) *
getW(wF, wR, wC, `+d+`, d2);
} else if (`+(p===2)+`) {
vec2 xValues = vec2(
getX(batch, xF, xR, xC, `+d+`),
getX(batch, xF, xR, xC, `+d+` + 1)
);
vec2 wValues = vec2(
getW(wF, wR, wC, `+d+`, d2),
getW(wF, wR, wC, `+d+` + 1, d2)
);
dotProd += dot(xValues, wValues);
} else if (`+(p===3)+`) {
vec3 xValues = vec3(
getX(batch, xF, xR, xC, `+d+`),
getX(batch, xF, xR, xC, `+d+` + 1),
getX(batch, xF, xR, xC, `+d+` + 2)
);
vec3 wValues = vec3(
getW(wF, wR, wC, `+d+`, d2),
getW(wF, wR, wC, `+d+` + 1, d2),
getW(wF, wR, wC, `+d+` + 2, d2)
);
dotProd += dot(xValues, wValues);
}
}
}
}
setOutput(dotProd);
}
`},gc=function(r,t,e,n){t===void 0&&(t=!1),e===void 0&&(e=null),n===void 0&&(n=!1),this.variableNames=["x","W"],this.outputShape=r.outShape;var o=r.inHeight,i=r.inWidth,a=r.padInfo.top,s=r.padInfo.left,u=r.strideHeight,c=r.strideWidth,l=r.dilationHeight,f=r.dilationWidth,h=r.filterHeight,d=r.filterWidth,p=r.outChannels/r.inChannels,v="",g="";e&&(v=n?`float activation(float a) {
float b = getPreluActivationWeightsAtOutCoords();
`+e+`
}`:`
float activation(float x) {
`+e+`
}
`,g="result = activation(result);");var m=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),n&&this.variableNames.push("preluActivationWeights"),this.userCode=`
`+v+`
const ivec2 strides = ivec2(`+u+", "+c+`);
const ivec2 pads = ivec2(`+a+", "+s+`);
void main() {
ivec4 coords = getOutputCoords();
int batch = coords.x;
ivec2 xRCCorner = coords.yz * strides - pads;
int d2 = coords.w;
int d1 = d2 / `+p+`;
int q = d2 - d1 * `+p+`;
int xRCorner = xRCCorner.x;
int xCCorner = xRCCorner.y;
// Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).
// ? = to be determined. : = across all values in that axis.
float dotProd = 0.0;
// TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.
for (int wR = 0; wR < `+h+`; wR++) {
int xR = xRCorner + wR * `+l+`;
if (xR < 0 || xR >= `+o+`) {
continue;
}
for (int wC = 0; wC < `+d+`; wC++) {
int xC = xCCorner + wC * `+f+`;
if (xC < 0 || xC >= `+i+`) {
continue;
}
float xVal = getX(batch, xR, xC, d1);
float wVal = getW(wR, wC, d1, q);
dotProd += xVal * wVal;
}
}
float result = dotProd;
`+m+`
`+g+`
setOutput(result);
}
`},mc=function(r,t,e,n){t===void 0&&(t=!1),e===void 0&&(e=null),n===void 0&&(n=!1),this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=r.outShape;for(var o=r.inHeight,i=r.inWidth,a=r.padInfo.top,s=r.padInfo.left,u=r.strideHeight,c=r.strideWidth,l=r.dilationHeight,f=r.dilationWidth,h=r.filterHeight,d=r.filterWidth,p=d,v="int xR; int xC; int xCOffset;",g=0;g<h;g++)for(var m=0;m<d;m++)v+=`
vec4 xTexelR`+g+"C"+2*m+` = vec4(0.);
vec4 wR`+g+"C"+m+` = vec4(0.);
vec4 xR`+g+"C"+m+" = vec4(0.);";for(g=0;g<h;g++)for(var w=0;w<p;w++){if(v+=`
xR = xRCorner + `+g*l+`;
xC = xCCorner + `+(m=2*w)*f+`;
`,c===1){if(m<d&&(v+=s%2==1?`
xCOffset = xC + 1;
if(xR >= 0 && xR < `+o+" && xCOffset >= 0 && xCOffset < "+i+`) {
xTexelR`+g+"C"+m+` = getX(batch, xR, xCOffset, d1);
// Need to manually clear unused channels in case
// we're reading from recycled texture.
if(xCOffset + 1 >= `+i+`) {
xTexelR`+g+"C"+m+`.zw = vec2(0.);
}
} else {
xTexelR`+g+"C"+m+` = vec4(0.);
}
xCOffset = xC + 1 - 2;
if(xR >= 0 && xR < `+o+" && xCOffset >= 0 && xCOffset < "+i+`) {
vec4 previous = getX(batch, xR, xCOffset, d1);
// Need to manually clear unused channels in case
// we're reading from recycled texture.
if(xCOffset + 1 >= `+i+`) {
previous.zw = vec2(0.);
}
xR`+g+"C"+m+" = vec4(previous.zw, xTexelR"+g+"C"+m+`.xy);
} else {
xR`+g+"C"+m+" = vec4(0, 0, xTexelR"+g+"C"+m+`.xy);
}
`:`
if(xR >= 0 && xR < `+o+" && xC >= 0 && xC < "+i+`) {
xTexelR`+g+"C"+m+` = getX(batch, xR, xC, d1);
} else {
xTexelR`+g+"C"+m+` = vec4(0.);
}
xR`+g+"C"+m+" = xTexelR"+g+"C"+m+`;
`,m+1<d)){var E=s%2==0?Qe(f):f;f%2==0&&s%2==1||f%2!=0&&s%2!=1?(v+=`
xCOffset = xC + `+s%2+" + "+E+`;
if(xR >= 0 && xR < `+o+` &&
xCOffset >= 0 && xCOffset < `+i+`) {
xTexelR`+g+"C"+(m+2)+` = getX(batch, xR, xCOffset, d1);
}
`,f>1&&(v+=`
xCOffset -= 2;
if(xR >= 0 && xR < `+o+` &&
xCOffset >= 0 && xCOffset < `+i+`) {
xTexelR`+g+"C"+m+` = getX(batch, xR, xCOffset, d1);
} else {
xTexelR`+g+"C"+m+` = vec4(0.);
}
`),v+=`
xR`+g+"C"+(m+1)+` = vec4(
xTexelR`+g+"C"+m+".zw, xTexelR"+g+"C"+(m+2)+`.xy);
`):v+=`
xCOffset = xC + `+E+`;
if(xR >= 0 && xR < `+o+` &&
xCOffset >= 0 && xCOffset < `+i+`) {
xTexelR`+g+"C"+(m+2)+` = getX(batch, xR, xCOffset, d1);
}
xR`+g+"C"+(m+1)+" = xTexelR"+g+"C"+(m+2)+`;
`}}else m<d&&(v+=`
if(xR >= 0 && xR < `+o+`) {
`,s%2==1?(v+=`
xCOffset = xC + 1 - `+c+`;
if(xCOffset >= 0 && xCOffset < `+i+`) {
xTexelR`+g+"C"+m+` = getX(batch, xR, xCOffset, d1);
} else {
xTexelR`+g+"C"+m+` = vec4(0.);
}
if(xC + 1 >= 0 && xC + 1 < `+i+`) {
xTexelR`+g+"C"+(m+2)+` = getX(batch, xR, xC + 1, d1);
} else {
xTexelR`+g+"C"+(m+2)+` = vec4(0.);
}
xR`+g+"C"+m+` = vec4(
xTexelR`+g+"C"+m+".zw, xTexelR"+g+"C"+(m+2)+`.zw);
`,m+1<d&&(v+=`
vec4 final = vec4(0.);
xCOffset = xC + 1 + `+c+`;
if(xCOffset >= 0 && xCOffset < `+i+`) {
final = getX(batch, xR, xCOffset, d1);
}
xR`+g+"C"+(m+1)+" = vec4(xTexelR"+g+"C"+(m+2)+`.xy, final.xy);
`)):(v+=`
if(xC >= 0 && xC < `+i+`) {
xTexelR`+g+"C"+m+` = getX(batch, xR, xC, d1);
} else {
xTexelR`+g+"C"+m+` = vec4(0.);
}
xCOffset = xC + `+c+`;
if(xCOffset >= 0 && xCOffset < `+i+`) {
xTexelR`+g+"C"+(m+2)+` = getX(batch, xR, xCOffset, d1);
} else {
xTexelR`+g+"C"+(m+2)+` = vec4(0.);
}
xR`+g+"C"+m+` = vec4(
xTexelR`+g+"C"+m+".xy, xTexelR"+g+"C"+(m+2)+`.xy);
`,m+1<d&&(v+=`
xR`+g+"C"+(m+1)+` = vec4(
xTexelR`+g+"C"+m+".zw, xTexelR"+g+"C"+(m+2)+`.zw);
`)),v+="}");m<d&&(v+=`
vec4 wTexelR`+g+"C"+m+" = getW("+g+", "+m+`, d1, q);
wR`+g+"C"+m+" = vec4(wTexelR"+g+"C"+m+".xz, wTexelR"+g+"C"+m+`.xz);
`,m+1<d&&(v+=`
vec4 wTexelR`+g+"C"+(m+1)+" = getW("+g+", "+(m+1)+`, d1, q);
wR`+g+"C"+(m+1)+` =
vec4(wTexelR`+g+"C"+(m+1)+".xz, wTexelR"+g+"C"+(m+1)+".xz);"))}for(g=0;g<h;g++)for(m=0;m<d;m++)v+="dotProd += xR"+g+"C"+m+" * wR"+g+"C"+m+";";var b="",C="";e&&(b=n?`vec4 activation(vec4 a) {
vec4 b = getPreluActivationWeightsAtOutCoords();
`+e+`
}`:`vec4 activation(vec4 x) {
`+e+`
}`,C="result = activation(result);");var S=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),n&&this.variableNames.push("preluActivationWeights"),this.userCode=`
`+b+`
const ivec2 strides = ivec2(`+u+", "+c+`);
const ivec2 pads = ivec2(`+a+", "+s+`);
void main() {
ivec4 coords = getOutputCoords();
int batch = coords.x;
ivec2 xRCCorner = coords.yz * strides - pads;
int d2 = coords.w;
int d1 = d2;
int q = 0;
int xRCorner = xRCCorner.x;
int xCCorner = xRCCorner.y;
vec4 dotProd = vec4(0.);
`+v+`
vec4 result = dotProd;
`+S+`
`+C+`
setOutput(result);
}
`},Sd=function(r,t,e,n,o){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];var i=r[0],a=r[1],s=r[2],u=r[3],c=t[0],l=e[0],f=e[1];this.outputShape=[c,l,f,u];var h=n==="bilinear"?1:0,d=[a-1+".0",s-1+".0"],p=d[0],v=d[1],g=l>1?[""+(a-1)/(l-1),"(y2-y1) * height_ratio","y1*"+p+" + float(y)*(height_scale)"]:["0.0","0.0","0.5 * (y1+y2) * "+p],m=g[0],w=g[1],E=g[2],b=f>1?[""+(s-1)/(f-1),"(x2-x1) * width_ratio","x1*"+v+" + float(x)*(width_scale)"]:["0.0","0.0","0.5 * (x1+x2) * "+v],C=b[0],S=b[1],N=b[2];this.userCode=`
const float height_ratio = float(`+m+`);
const float width_ratio = float(`+C+`);
void main() {
ivec4 coords = getOutputCoords();
int b = coords[0];
int y = coords[1];
int x = coords[2];
int d = coords[3];
// get box vals
float y1 = getBoxes(b,0);
float x1 = getBoxes(b,1);
float y2 = getBoxes(b,2);
float x2 = getBoxes(b,3);
// get image in batch index
int bInd = round(getBoxInd(b));
if(bInd < 0 || bInd >= `+i+`) {
return;
}
float height_scale = `+w+`;
float width_scale = `+S+`;
float in_y = `+E+`;
if( in_y < 0.0 || in_y > `+p+` ) {
setOutput(float(`+o+`));
return;
}
float in_x = `+N+`;
if( in_x < 0.0 || in_x > `+v+` ) {
setOutput(float(`+o+`));
return;
}
vec2 sourceFracIndexCR = vec2(in_x,in_y);
if(`+h+` == 1) {
// Compute the four integer indices.
ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);
ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));
float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);
float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);
float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);
float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);
vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);
float top = topLeft + (topRight - topLeft) * fracCR.x;
float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;
float newValue = top + (bottom - top) * fracCR.y;
setOutput(newValue);
} else {
// Compute the coordinators of nearest neighbor point.
ivec2 sourceNearestCR = ivec2(floor(
sourceFracIndexCR + vec2(0.5,0.5)));
float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);
setOutput(newValue);
}
}
`},Rd=function(r,t,e){this.variableNames=["x"],this.outputShape=r;var n=r.length,o=r[r.length-1],i=e?"<":">";this.userCode=`
int getIndex(int i) {
`+(e?"return "+o+" -i - 1;":"return i;")+`
}
void main() {
`+Yt(n)+` coords = getOutputCoords();
int end = `+Ac(n,"coords")+`;
float val = 0.0;
for (int i = `+o+` - 1; i >= 0; i -= 1) {
int idx = getIndex(i);
if (idx `+i+` end) {
continue;
}
if (idx == end && `+t+`) {
continue;
}
`+Ac(n,"coords")+` = idx;
val += getX(`+function(a,s){if(a===1)return""+s;if(a===2)return s+".x, "+s+".y";if(a===3)return s+".x, "+s+".y, "+s+".z";if(a===4)return s+".x, "+s+".y, "+s+".z, "+s+".w";throw Error("Cumulative sum for rank "+a+" is not yet supported")}(n,"coords")+`);
}
setOutput(val);
}
`};function Ac(r,t){if(r===1)return""+t;if(r===2)return t+".y";if(r===3)return t+".z";if(r===4)return t+".w";throw Error("Cumulative sum for rank "+r+" is not yet supported")}var Bd=function(r){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=er.DENSE;var t=Mo(r),e=Dn();this.outputShape=r,this.userCode=`
ivec3 outCoordsFromFlatIndex(int index) {
`+eo(["r","c","d"],r)+`
return ivec3(r, c, d);
}
void main() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+t[0]+", "+t[1]+`));
int index = 4 * (resTexRC.x * `+t[1]+` + resTexRC.y);
vec4 result = vec4(0.);
for (int i=0; i<4; i++) {
int flatIndex = index + i;
ivec3 rc = outCoordsFromFlatIndex(flatIndex);
result[i] = getA(rc.x, rc.y, rc.z);
}
`+e.output+` = result;
}
`},kd=function(r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=er.DENSE;var t=Mo(r),e=Dn();this.outputShape=r,this.userCode=`
ivec3 outCoordsFromFlatIndex(int index) {
`+eo(["r","c","d"],r)+`
return ivec3(r, c, d);
}
void main() {
ivec2 resTexRC = ivec2(resultUV.yx *
vec2(`+t[0]+", "+t[1]+`));
int index = 4 * (resTexRC.x * `+t[1]+` + resTexRC.y);
vec4 result = vec4(0.);
for (int i=0; i<4; i++) {
int flatIndex = index + i;
ivec3 rc = outCoordsFromFlatIndex(flatIndex);
result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z));
}
`+e.output+` = result;
}
`},Td=function(){function r(t,e,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=t,this.blockSize=e,this.dataFormat=n,this.userCode=`
void main() {
ivec4 coords = getOutputCoords();
int b = coords[0];
int h = `+this.getHeightCoordString()+`;
int w = `+this.getWidthCoordString()+`;
int d = `+this.getDepthCoordString()+`;
int in_h = h / `+e+`;
int offset_h = imod(h, `+e+`);
int in_w = w / `+e+`;
int offset_w = imod(w, `+e+`);
int offset_d = (offset_h * `+e+` + offset_w) *
`+this.getOutputDepthSize()+`;
int in_d = d + offset_d;
float result = `+this.getInputSamplingString()+`;
setOutput(result);
}
`}return r.prototype.getHeightCoordString=function(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"},r.prototype.getWidthCoordString=function(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"},r.prototype.getDepthCoordString=function(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"},r.prototype.getOutputDepthSize=function(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]},r.prototype.getInputSamplingString=function(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},r}(),Dd=function(r){this.variableNames=["X"],this.outputShape=[r,r],this.userCode=`
void main() {
ivec2 coords = getOutputCoords();
float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;
setOutput(val);
}
`},Fd=function(r){this.variableNames=["A"],this.outTexUsage=wn.DOWNLOAD;var t=Dn();this.outputShape=r,this.userCode=`
`+cc+`
void main() {
float x = getAAtOutCoords();
`+t.output+` = encode_float(x);
}
`},Pd=function(r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=wn.DOWNLOAD;var t=Dn();this.outputShape=r,this.userCode=`
`+cc+`
void main() {
ivec3 coords = getOutputCoords();
float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z));
`+t.output+` = encode_float(x);
}
`},Nd=function(r,t,e){e===void 0&&(e=!1),this.variableNames=["A"];var n=Dn(),o=t[0],i=t[1];this.outputShape=r;var a="result";e&&(a="floor(result * 255. + 0.5)"),this.userCode=`
`+Na(r)+`
void main() {
ivec3 coords = getOutputCoords();
int flatIndex = getFlatIndex(coords);
int offset = imod(flatIndex, 4);
flatIndex = idiv(flatIndex, 4, 1.);
int r = flatIndex / `+i+`;
int c = imod(flatIndex, `+i+`);
vec2 uv = (vec2(c, r) + halfCR) / vec2(`+i+".0, "+o+`.0);
vec4 values = `+n.texture2D+`(A, uv);
float result;
if(offset == 0) {
result = values[0];
} else if(offset == 1) {
result = values[1];
} else if(offset == 2) {
result = values[2];
} else {
result = values[3];
}
`+n.output+" = vec4("+a+`, 0., 0., 0.);
}
`},Od=function(r,t,e){e===void 0&&(e=!1),this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;var n=Dn(),o=t[0],i=t[1];this.outputShape=r;var a="",s="result";e&&(s="floor(result * 255. + 0.5)");for(var u=0;u<=1;u++)for(var c=0;c<=1;c++){var l=2*u+c;a+=`
localCoords = coords;
if(localCoords[2] + `+c+" < "+r[2]+`) {
localCoords[2] += `+c+`;
if(localCoords[1] + `+u+" < "+r[1]+`) {
localCoords[1] += `+u+`;
flatIndex = getFlatIndex(localCoords);
offset = imod(flatIndex, 4);
flatIndex = idiv(flatIndex, 4, 1.);
r = flatIndex / `+i+`;
c = imod(flatIndex, `+i+`);
uv = (vec2(c, r) + halfCR) / vec2(`+i+".0, "+o+`.0);
values = `+n.texture2D+`(A, uv);
if(offset == 0) {
result[`+l+`] = values[0];
} else if(offset == 1) {
result[`+l+`] = values[1];
} else if(offset == 2) {
result[`+l+`] = values[2];
} else {
result[`+l+`] = values[3];
}
}
}
`}this.userCode=`
`+Na(r)+`
void main() {
ivec3 coords = getOutputCoords();
vec4 result = vec4(0.);
int flatIndex, r, c, offset;
ivec3 localCoords;
vec2 uv;
vec4 values;
`+a+`
`+n.output+" = "+s+`;
}
`},Md="return real * expR - imag * expI;",Ld="return real * expI + imag * expR;",yc=function(r,t,e){this.variableNames=["real","imag"];var n=t[1];this.outputShape=t;var o=e?"2.0 * "+Math.PI:"-2.0 * "+Math.PI,i=e?n+".0":"1.0";this.userCode=`
const float exponentMultiplier = `+o+`;
float unaryOpComplex(float real, float expR, float imag, float expI) {
`+r+`
}
float mulMatDFT(int batch, int index) {
float indexRatio = float(index) / float(`+n+`);
float exponentMultiplierTimesIndexRatio =
exponentMultiplier * indexRatio;
float result = 0.0;
for (int i = 0; i < `+n+`; i++) {
// x = (-2|2 * PI / N) * index * i;
float x = exponentMultiplierTimesIndexRatio * float(i);
float expR = cos(x);
float expI = sin(x);
float real = getReal(batch, i);
float imag = getImag(batch, i);
result +=
unaryOpComplex(real, expR, imag, expI) / `+i+`;
}
return result;
}
void main() {
ivec2 coords = getOutputCoords();
setOutput(mulMatDFT(coords[0], coords[1]));
}
`},Wd=function(){function r(t,e){this.outputShape=[],this.variableNames=["x"],this.outputShape=t,this.userCode=`
uniform float value;
void main() {
// Input can be obtained from uniform value.
setOutput(value);
}
`}return r.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,o){e.valueLoc==null&&(e.valueLoc=n.getUniformLocationNoThrow(o,"value")),n.gl.uniform1f(e.valueLoc,t)}},r}(),_d=function(r,t,e){this.variableNames=["A","indices"];var n=r.slice();n[e]=t,this.outputShape=n,this.rank=n.length;var o=Yt(this.rank),i=function(a,s){var u=a.length;if(u>4)throw Error("Gather for rank "+u+" is not yet supported");if(u===1)return"int(getIndices(resRC))";for(var c=["resRC.x","resRC.y","resRC.z","resRC.w"],l=[],f=0;f<a.length;f++)f===s?l.push("int(getIndices("+c[f]+"))"):l.push(""+c[f]);return l.join()}(r,e);this.userCode=`
void main() {
`+o+` resRC = getOutputCoords();
setOutput(getA(`+i+`));
}
`},Qd=function(r,t,e){this.sliceDim=r,this.strides=t,this.variableNames=["x","indices"],this.outputShape=e;var n=Yt(t.length),o=Yt(e.length),i=this.sliceDim>1?"strides[j]":"strides";this.userCode=`
`+n+" strides = "+n+"("+this.strides+`);
void main() {
`+o+` coords = getOutputCoords();
int flattenIndex = 0;
for (int j = 0; j < `+this.sliceDim+`; j++) {
int index = round(getIndices(coords[0], j));
flattenIndex += index * `+i+`;
}
setOutput(getX(flattenIndex, coords[1]));
}
`};function xc(r,t){var e=Dn();return vu(r,t,e.version+`
precision highp float;
`+e.attribute+` vec3 clipSpacePos;
`+e.attribute+` vec2 uv;
`+e.varyingVs+` vec2 resultUV;
void main() {
gl_Position = vec4(clipSpacePos, 1);
resultUV = uv;
}`)}function bc(r,t){return yu(r,t,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function wc(r,t){return xu(r,t,new Uint16Array([0,1,2,2,1,3]))}function Jo(r,t,e,n,o,i,a){wu(e,n);var s=bu(r,t),u=r.TEXTURE_2D;return We(r,t,function(){return r.bindTexture(u,s)}),We(r,t,function(){return r.texParameteri(u,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE)}),We(r,t,function(){return r.texParameteri(u,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE)}),We(r,t,function(){return r.texParameteri(u,r.TEXTURE_MIN_FILTER,r.NEAREST)}),We(r,t,function(){return r.texParameteri(u,r.TEXTURE_MAG_FILTER,r.NEAREST)}),We(r,t,function(){return r.texImage2D(u,0,o,e,n,0,i,a,null)}),We(r,t,function(){return r.bindTexture(r.TEXTURE_2D,null)}),s}function Ec(r,t,e,n,o){var i=fi(e,n);return Jo(r,t,i[0],i[1],o.internalFormatFloat,o.textureFormatFloat,r.FLOAT)}function Cc(r,t,e,n,o){var i=fi(e,n);return Jo(r,t,i[0],i[1],o.internalFormatHalfFloat,o.textureFormatFloat,o.textureTypeHalfFloat)}function Ic(r,t,e,n,o){var i=fi(e,n);return Jo(r,t,i[0],i[1],r.RGBA,r.RGBA,r.UNSIGNED_BYTE)}function Sc(r,t,e,n,o){var i=Lo(e,n);return Jo(r,t,i[0],i[1],o.internalFormatPackedFloat,r.RGBA,r.FLOAT)}function Rc(r,t,e,n,o){var i=Lo(e,n);return Jo(r,t,i[0],i[1],o.internalFormatPackedHalfFloat,r.RGBA,o.textureTypeHalfFloat)}function Bc(r,t,e,n){return We(r,t,function(){return r.bindBuffer(r.ARRAY_BUFFER,n)}),ha(r,t,e,"clipSpacePos",n,3,20,0)&&ha(r,t,e,"uv",n,2,20,12)}function kc(r,t,e,n,o,i,a){var s,u,c;We(r,t,function(){return r.bindTexture(r.TEXTURE_2D,e)}),i instanceof Uint8Array?(s=new Uint8Array(n*o*4),u=r.UNSIGNED_BYTE,c=r.RGBA):(s=new Float32Array(n*o*4),u=r.FLOAT,c=a.internalFormatPackedFloat),s.set(i),We(r,t,function(){return r.texImage2D(r.TEXTURE_2D,0,c,n,o,0,r.RGBA,u,s)}),We(r,t,function(){return r.bindTexture(r.TEXTURE_2D,null)})}function Tc(r,t,e,n){We(r,t,function(){return r.bindTexture(r.TEXTURE_2D,e)}),n.data instanceof Uint8Array?We(r,t,function(){return r.texImage2D(r.TEXTURE_2D,0,r.RGBA,n.width,n.height,0,r.RGBA,r.UNSIGNED_BYTE,n.data)}):We(r,t,function(){return r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,n)}),We(r,t,function(){return r.bindTexture(r.TEXTURE_2D,null)})}function Dc(r,t,e,n,o){var i=r.createBuffer();We(r,t,function(){return r.bindBuffer(r.PIXEL_PACK_BUFFER,i)});var a=16*e*n;return We(r,t,function(){return r.bufferData(r.PIXEL_PACK_BUFFER,a,r.STREAM_READ)}),We(r,t,function(){return r.readPixels(0,0,n,e,r.RGBA,r.FLOAT,0)}),We(r,t,function(){return r.bindBuffer(r.PIXEL_PACK_BUFFER,null)}),i}function Fc(r,t,e){var n=r,o=new Float32Array(e);return n.bindBuffer(n.PIXEL_PACK_BUFFER,t),n.getBufferSubData(n.PIXEL_PACK_BUFFER,0,o),n.bindBuffer(n.PIXEL_PACK_BUFFER,null),o}function Pc(r,t,e,n,o){var i=fi(e,n),a=i[0],s=i[1],u=new Uint8Array(e*n*4);return We(r,t,function(){return r.readPixels(0,0,a,s,o.downloadTextureFormat,r.UNSIGNED_BYTE,u)}),new Float32Array(u.buffer)}function Nc(r,t,e,n,o,i,a,s){var u=r,c=new Float32Array(function(l,f){var h=Lo(l,f);return h[0]*h[1]*4}(i,a));return u.bindBuffer(u.PIXEL_PACK_BUFFER,t),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,c),u.bindBuffer(u.PIXEL_PACK_BUFFER,null),c}function Oc(r,t,e,n){var o=new Float32Array(e*n*4);return We(r,t,function(){return r.readPixels(0,0,n,e,r.RGBA,r.FLOAT,o)}),o}var zd=Object.freeze({createVertexShader:xc,createVertexBuffer:bc,createIndexBuffer:wc,createFloat32MatrixTexture:Ec,createFloat16MatrixTexture:Cc,createUnsignedBytesMatrixTexture:Ic,createPackedMatrixTexture:Sc,createFloat16PackedMatrixTexture:Rc,bindVertexProgramAttributeStreams:Bc,uploadDenseMatrixToTexture:kc,uploadPixelDataToTexture:Tc,createBufferFromOutputTexture:Dc,downloadFloat32MatrixFromBuffer:Fc,downloadByteEncodedFloatMatrixFromOutputTexture:Pc,downloadPackedMatrixFromBuffer:Nc,downloadMatrixFromPackedOutputTexture:Oc}),Mc=function(){function r(t){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];var e=J().getNumber("WEBGL_VERSION");t!=null?(this.gl=t,li(e,t)):this.gl=cr(e);var n="WEBGL_color_buffer_float";if(J().getNumber("WEBGL_VERSION")===1){if(this.textureFloatExtension=Wo(this.gl,this.debug,"OES_texture_float"),Hn(this.gl,"OES_texture_half_float"))this.textureHalfFloatExtension=Wo(this.gl,this.debug,"OES_texture_half_float");else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),Hn(this.gl,"EXT_color_buffer_half_float"))this.colorBufferHalfFloatExtension=Wo(this.gl,this.debug,"EXT_color_buffer_half_float");else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",Hn(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else{if(!Hn(this.gl,"EXT_color_buffer_half_float"))throw new Error("GL context does not support color renderable floats");this.colorBufferHalfFloatExtension=this.gl.getExtension("EXT_color_buffer_half_float")}this.vertexBuffer=bc(this.gl,this.debug),this.indexBuffer=wc(this.gl,this.debug),this.framebuffer=Eu(this.gl,this.debug),this.textureConfig=fa(this.gl,this.textureHalfFloatExtension)}return Object.defineProperty(r.prototype,"debug",{get:function(){return J().getBool("DEBUG")},enumerable:!0,configurable:!0}),r.prototype.dispose=function(){var t=this;if(!this.disposed){this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");var e=this.gl;We(e,this.debug,function(){return e.finish()}),We(e,this.debug,function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)}),We(e,this.debug,function(){return e.deleteFramebuffer(t.framebuffer)}),We(e,this.debug,function(){return e.bindBuffer(e.ARRAY_BUFFER,null)}),We(e,this.debug,function(){return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)}),We(e,this.debug,function(){return e.deleteBuffer(t.indexBuffer)}),this.disposed=!0}},r.prototype.createFloat32MatrixTexture=function(t,e){return this.throwIfDisposed(),Ec(this.gl,this.debug,t,e,this.textureConfig)},r.prototype.createFloat16MatrixTexture=function(t,e){return this.throwIfDisposed(),Cc(this.gl,this.debug,t,e,this.textureConfig)},r.prototype.createUnsignedBytesMatrixTexture=function(t,e){return this.throwIfDisposed(),Ic(this.gl,this.debug,t,e,this.textureConfig)},r.prototype.uploadPixelDataToTexture=function(t,e){this.throwIfDisposed(),Tc(this.gl,this.debug,t,e)},r.prototype.uploadDenseMatrixToTexture=function(t,e,n,o){this.throwIfDisposed(),kc(this.gl,this.debug,t,e,n,o,this.textureConfig)},r.prototype.createFloat16PackedMatrixTexture=function(t,e){return this.throwIfDisposed(),Rc(this.gl,this.debug,t,e,this.textureConfig)},r.prototype.createPackedMatrixTexture=function(t,e){return this.throwIfDisposed(),Sc(this.gl,this.debug,t,e,this.textureConfig)},r.prototype.deleteMatrixTexture=function(t){var e=this;this.throwIfDisposed(),this.outputTexture===t&&(da(this.gl,this.debug,this.framebuffer),this.outputTexture=null),We(this.gl,this.debug,function(){return e.gl.deleteTexture(t)})},r.prototype.downloadByteEncodedFloatMatrixFromOutputTexture=function(t,e,n){var o=this;return this.downloadMatrixDriver(t,function(){return Pc(o.gl,o.debug,e,n,o.textureConfig)})},r.prototype.downloadPackedMatrixFromBuffer=function(t,e,n,o,i,a){return Nc(this.gl,t,0,0,0,i,a,this.textureConfig)},r.prototype.downloadFloat32MatrixFromBuffer=function(t,e){return Fc(this.gl,t,e)},r.prototype.createBufferFromTexture=function(t,e,n){this.bindTextureToFrameBuffer(t);var o=Dc(this.gl,this.debug,e,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),o},r.prototype.createAndWaitForFence=function(){var t=this.createFence(this.gl);return this.pollFence(t)},r.prototype.createFence=function(t){var e,n,o=this;if(J().getBool("WEBGL_FENCE_API_ENABLED")){var i=t,a=i.fenceSync(i.SYNC_GPU_COMMANDS_COMPLETE,0);t.flush(),n=function(){var s=i.clientWaitSync(a,0,0);return s===i.ALREADY_SIGNALED||s===i.CONDITION_SATISFIED},e=a}else J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(e=this.beginQuery(),this.endQuery(),n=function(){return o.isQueryAvailable(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):n=function(){return!0};return{query:e,isFencePassed:n}},r.prototype.downloadMatrixFromPackedTexture=function(t,e,n){var o=this;return this.downloadMatrixDriver(t,function(){return Oc(o.gl,o.debug,e,n)})},r.prototype.createProgram=function(t){this.throwIfDisposed();var e=this.gl,n=gu(e,this.debug,t),o=xc(e,this.debug),i=mu(e,this.debug);return We(e,this.debug,function(){return e.attachShader(i,o)}),We(e,this.debug,function(){return e.attachShader(i,n)}),Au(e,this.debug,i),this.debug&&pi(e,this.debug,i),this.vertexAttrsAreBound||(this.setProgram(i),this.vertexAttrsAreBound=Bc(e,this.debug,this.program,this.vertexBuffer)),i},r.prototype.deleteProgram=function(t){var e=this;this.throwIfDisposed(),t===this.program&&(this.program=null),t!=null&&We(this.gl,this.debug,function(){return e.gl.deleteProgram(t)})},r.prototype.setProgram=function(t){var e=this;this.throwIfDisposed(),this.program=t,this.program!=null&&this.debug&&pi(this.gl,this.debug,this.program),We(this.gl,this.debug,function(){return e.gl.useProgram(t)})},r.prototype.getUniformLocation=function(t,e,n){return n===void 0&&(n=!0),this.throwIfDisposed(),n?Iu(this.gl,this.debug,t,e):Su(this.gl,t,e)},r.prototype.getAttributeLocation=function(t,e){var n=this;return this.throwIfDisposed(),We(this.gl,this.debug,function(){return n.gl.getAttribLocation(t,e)})},r.prototype.getUniformLocationNoThrow=function(t,e){return this.throwIfDisposed(),this.gl.getUniformLocation(t,e)},r.prototype.setInputMatrixTexture=function(t,e,n){this.throwIfDisposed(),this.throwIfNoProgram(),Ru(this.gl,this.debug,this.program,t,e,n)},r.prototype.setOutputMatrixTexture=function(t,e,n){this.setOutputMatrixTextureDriver(t,n,e)},r.prototype.setOutputPackedMatrixTexture=function(t,e,n){this.throwIfDisposed();var o=Lo(e,n),i=o[0],a=o[1];this.setOutputMatrixTextureDriver(t,i,a)},r.prototype.setOutputMatrixWriteRegion=function(t,e,n,o){this.setOutputMatrixWriteRegionDriver(n,t,o,e)},r.prototype.setOutputPackedMatrixWriteRegion=function(t,e,n,o){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},r.prototype.debugValidate=function(){this.program!=null&&pi(this.gl,this.debug,this.program),_o(this.gl)},r.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var t=this.gl;this.debug&&this.debugValidate(),We(t,this.debug,function(){return t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0)})},r.prototype.blockUntilAllProgramsCompleted=function(){var t=this;this.throwIfDisposed(),We(this.gl,this.debug,function(){return t.gl.finish()})},r.prototype.getQueryTimerExtension=function(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=Wo(this.gl,this.debug,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},r.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},r.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},r.prototype.beginQuery=function(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){var t=this.gl,e=this.getQueryTimerExtensionWebGL2(),n=t.createQuery();return t.beginQuery(e.TIME_ELAPSED_EXT,n),n}var o=this.getQueryTimerExtensionWebGL1(),i=o.createQueryEXT();return o.beginQueryEXT(o.TIME_ELAPSED_EXT,i),i},r.prototype.endQuery=function(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")!==2){var t=this.getQueryTimerExtensionWebGL1();t.endQueryEXT(t.TIME_ELAPSED_EXT)}else{var e=this.gl,n=this.getQueryTimerExtensionWebGL2();e.endQuery(n.TIME_ELAPSED_EXT)}},r.prototype.waitForQueryAndGetTime=function(t){return be(this,void 0,void 0,function(){var e=this;return Se(this,function(n){switch(n.label){case 0:return[4,jt(function(){return e.disposed||e.isQueryAvailable(t,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))})];case 1:return n.sent(),[2,this.getQueryTime(t,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}})})},r.prototype.getQueryTime=function(t,e){if(e===0)return null;if(e===2){var n=this.gl;return n.getQueryParameter(t,n.QUERY_RESULT)/1e6}var o=this.getQueryTimerExtensionWebGL1();return o.getQueryObjectEXT(t,o.QUERY_RESULT_EXT)/1e6},r.prototype.isQueryAvailable=function(t,e){if(e===0)return!0;if(e===2){var n=this.gl,o=this.getQueryTimerExtensionWebGL2(),i=n.getQueryParameter(t,n.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(o.GPU_DISJOINT_EXT)),i&&!this.disjoint}return i=(o=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(t,o.QUERY_RESULT_AVAILABLE_EXT),this.disjoint==null&&(this.disjoint=this.gl.getParameter(o.GPU_DISJOINT_EXT)),i&&!this.disjoint},r.prototype.pollFence=function(t){var e=this;return new Promise(function(n){e.addItemToPoll(function(){return t.isFencePassed()},function(){return n()})})},r.prototype.pollItems=function(){for(var t=function(n){for(var o=0;o<n.length&&n[o]();++o);return o-1}(this.itemsToPoll.map(function(n){return n.isDoneFn})),e=0;e<=t;++e)(0,this.itemsToPoll[e].resolveFn)();this.itemsToPoll=this.itemsToPoll.slice(t+1)},r.prototype.addItemToPoll=function(t,e){var n=this;this.itemsToPoll.push({isDoneFn:t,resolveFn:e}),this.itemsToPoll.length>1||jt(function(){return n.pollItems(),n.itemsToPoll.length===0})},r.prototype.bindTextureToFrameBuffer=function(t){this.throwIfDisposed(),vi(this.gl,this.debug,t,this.framebuffer),this.debug&&_o(this.gl)},r.prototype.unbindTextureToFrameBuffer=function(){this.outputTexture!=null?(vi(this.gl,this.debug,this.outputTexture,this.framebuffer),this.debug&&_o(this.gl)):da(this.gl,this.debug,this.framebuffer)},r.prototype.downloadMatrixDriver=function(t,e){this.bindTextureToFrameBuffer(t);var n=e();return this.unbindTextureToFrameBuffer(),n},r.prototype.setOutputMatrixTextureDriver=function(t,e,n){this.throwIfDisposed();var o=this.gl;vi(o,this.debug,t,this.framebuffer),this.debug&&_o(o),this.outputTexture=t,We(o,this.debug,function(){return o.viewport(0,0,e,n)}),We(o,this.debug,function(){return o.scissor(0,0,e,n)})},r.prototype.setOutputMatrixWriteRegionDriver=function(t,e,n,o){var i=this;this.throwIfDisposed(),We(this.gl,this.debug,function(){return i.gl.scissor(t,e,n,o)})},r.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},r.prototype.throwIfNoProgram=function(){if(this.program==null)throw new Error("No GPU program is currently set.")},r}();function Lc(r,t){if(r.length!==t.length)throw Error("Binary was compiled with "+r.length+" inputs, but was executed with "+t.length+" inputs");r.forEach(function(e,n){var o=e.logicalShape,i=t[n],a=i.shape;if(!Ke(o,a))throw Error("Binary was compiled with different shapes than the current args. Shapes "+o+" and "+a+" must match");if(!e.isUniform||!i.isUniform){var s=e.texShape,u=i.isUniform?null:i.texData.texShape;if(!Ke(s,u))throw Error("Binary was compiled with different texture shapes than the current args. Shape "+s+" and "+u+" must match")}})}var Ud=function(r,t,e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=r;for(var n=e.filterWidth,o=e.inChannels,i=e.strideWidth,a=e.strideHeight,s=e.padInfo,u=e.outWidth,c=e.dilationWidth,l=e.dilationHeight,f=e.dataFormat,h=s.left,d=s.top,p=o*n,v=Dn(),g=f==="channelsLast",m=g?0:1,w=g?1:2,E="",b=0;b<=1;b++)for(var C=0;C<=1;C++)E+=`
blockIndex = rc.y + `+C+`;
pos = rc.x + `+b+`;
if(blockIndex < `+r[1]+" && pos < "+r[0]+`) {
offsetY = int(blockIndex / (`+u+")) * "+a+" - "+d+`;
d0 = offsetY + `+l+" * (pos / "+p+`);
if(d0 < `+t[m]+` && d0 >= 0) {
offsetX = int(mod(float(blockIndex), `+u+".) * "+i+". - "+h+`.);
d1 = offsetX + `+c+" * (int(mod(float(pos), "+p+".) / "+o+`.));
if(d1 < `+t[w]+` && d1 >= 0) {
ch = int(mod(float(pos), `+o+`.));
if (`+g+`) {
innerDims = vec2(d1, ch);
result[`+(2*b+C)+`] = getChannel(
getA(d0, int(innerDims.x),
int(innerDims.y)), innerDims);
} else {
innerDims = vec2(d0, d1);
result[`+(2*b+C)+`] = getChannel(
getA(ch, int(innerDims.x),
int(innerDims.y)), innerDims);
}
}
}
}
`;this.userCode=`
void main() {
ivec2 rc = getOutputCoords();
vec4 result = vec4(0);
int blockIndex, pos, offsetY, d0, offsetX, d1, ch;
vec2 innerDims;
`+E+`
`+v.output+` = result;
}
`},Hd=function(r,t,e,n,o){this.variableNames=["x"],this.outputShape=[];var i,a=t,s=r[3]-1;this.outputShape=r;var u="float("+e+") + float("+n+") * sum";i=o===.5?"inversesqrt("+u+")":o===1?"1.0/("+u+")":"exp(log("+u+") * float(-"+o+"));",this.userCode=`
void main() {
ivec4 coords = getOutputCoords();
int b = coords[0];
int r = coords[1];
int c = coords[2];
int d = coords[3];
float x = getX(b, r, c, d);
float sum = 0.0;
for (int j = -`+a+"; j <= "+a+`; j++) {
int idx = d + j;
if (idx >= 0 && idx <= `+s+`) {
float z = getX(b, r, c, idx);
sum += z * z;
}
}
float val = x * `+i+`;
setOutput(val);
}
`},jd=function(r,t,e,n,o){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=r,this.depth=r[3],this.depthRadius=t,this.bias=e,this.alpha=n,this.beta=o,this.userCode=`
void main() {
ivec4 coords = getOutputCoords();
int b = coords[0];
int r = coords[1];
int c = coords[2];
float result = 0.0;
for (int d = 0; d < `+this.depth+`; ++d) {
int depthBegin = int(max(0.0, float(d - `+t+`)));
int depthEnd = int(min(float(`+this.depth+`),
float(d + `+t+` + 1)));
const int MIN_DEPTH_BEGIN = 0;
const int MAX_DEPTH_END = `+this.depth+`;
float norm = 0.0;
for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {
if (k < depthBegin){
continue;
}
else if (k >= depthBegin && k < depthEnd) {
norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);
}
else {
break;
}
}
norm = float(`+n+") * norm + float("+e+`);
for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){
if (k < depthBegin){
continue;
}
else if (k >= depthBegin && k < depthEnd){
float dyi = -2.0 * float(`+n+`)
* float(`+o+`)
* getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)
/ norm;
if (k == d) {
dyi += pow(norm, -1.0 * `+o+`);
}
if (k == coords[3]) {
dyi *= getDy(b, r, c, d);
result += dyi;
}
}
else {
break;
}
}
}
setOutput(result);
}
`},Vd=function(r,t,e,n,o){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;var i,a=t,s=r[3]-1;this.outputShape=r;var u="float("+e+") + float("+n+") * sum";i=o===.5?"inversesqrt("+u+")":o===1?"1.0/("+u+")":"exp(log("+u+") * float(-"+o+"));",this.userCode=`
void main() {
ivec4 coords = getOutputCoords();
int b = coords.x;
int r = coords.y;
int c = coords.z;
int d = coords.w;
bool hasNextCol = d < `+this.outputShape[3]+`;
bool hasNextRow = c < `+this.outputShape[2]+`;
vec4 sum = vec4(0.);
vec4 xFragAtOutputCoords = getX(b, r, c, d);
vec4 xAtOutputCoords = vec4(
getChannel(xFragAtOutputCoords, vec2(c, d)),
hasNextCol ?
getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,
hasNextRow ?
getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,
(hasNextRow && hasNextCol) ?
getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0
);
int firstChannel = d - `+a+`;
vec2 cache = vec2(0.);
if(firstChannel >= 0){
vec4 firstChannelFrag = getX(b, r, c, firstChannel);
cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));
if(hasNextRow){
cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));
}
}
ivec2 depth = ivec2(d, d + 1);
for (int j = - `+a+"; j <= "+a+`; j++) {
ivec2 idx = depth + j;
bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));
bvec2 belowUpperBound = lessThanEqual(idx, ivec2(`+s+`));
bool depthInRange = aboveLowerBound.x && belowUpperBound.x;
bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;
if(depthInRange || depthPlusOneInRange){
vec4 z = vec4(0.);
vec4 xFragAtCurrentDepth;
z.xz = cache.xy;
if(depthPlusOneInRange && hasNextCol){
xFragAtCurrentDepth = idx.y != d ?
getX(b, r, c, idx.y) : xFragAtOutputCoords;
z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));
if(hasNextRow){
z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));
}
}
cache.xy = z.yw;
sum += z * z;
}
}
vec4 result = xAtOutputCoords * `+i+`;
setOutput(result);
}
`},Gd=function(r){this.variableNames=["dy","maxPos"],this.outputShape=r.inShape;var t=r.strideHeight,e=r.strideWidth,n=r.dilationHeight,o=r.effectiveFilterHeight,i=r.effectiveFilterWidth,a=o-1-r.padInfo.top,s=i-1-r.padInfo.left,u=o*i-1;this.userCode=`
const ivec2 pads = ivec2(`+a+", "+s+`);
void main() {
ivec4 coords = getOutputCoords();
int b = coords[0];
int d = coords[3];
ivec2 dyRCCorner = coords.yz - pads;
int dyRCorner = dyRCCorner.x;
int dyCCorner = dyRCCorner.y;
// Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).
// ? = to be determined. : = across all values in that axis.
float dotProd = 0.0;
for (int wR = 0; wR < `+o+`;
wR += `+n+`) {
float dyR = float(dyRCorner + wR) / `+t+`.0;
if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 || fract(dyR) > 0.0) {
continue;
}
int idyR = int(dyR);
for (int wC = 0; wC < `+i+`; wC++) {
float dyC = float(dyCCorner + wC) / `+e+`.0;
if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
fract(dyC) > 0.0) {
continue;
}
int idyC = int(dyC);
float dyValue = getDy(b, idyR, idyC, d);
int maxPosValue = `+u+` - int(getMaxPos(b, idyR, idyC, d));
// Get the current value, check it against the value from the
// position matrix.
int curPosValue = wR * `+i+` + wC;
float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);
dotProd += dyValue * mask;
}
}
setOutput(dotProd);
}
`},Xd=function(r){this.variableNames=["dy","maxPos"],this.outputShape=r.inShape;var t=r.strideDepth,e=r.strideHeight,n=r.strideWidth,o=r.dilationDepth,i=r.dilationHeight,a=r.dilationWidth,s=r.effectiveFilterDepth,u=r.effectiveFilterHeight,c=r.effectiveFilterWidth,l=s-1-r.padInfo.front,f=u-1-r.padInfo.top,h=c-1-r.padInfo.left,d=s*u*c-1;this.userCode=`
const ivec3 pads = ivec3(`+l+", "+f+", "+h+`);
void main() {
ivec5 coords = getOutputCoords();
int batch = coords.x;
int ch = coords.u;
ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;
int dyDCorner = dyCorner.x;
int dyRCorner = dyCorner.y;
int dyCCorner = dyCorner.z;
// Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get
// dx(xD, xR, xC, ch).
// ? = to be determined. : = across all values in that axis.
float dotProd = 0.0;
for (int wD = 0; wD < `+s+`;
wD += `+o+`) {
float dyD = float(dyDCorner + wD) / `+t+`.0;
if (dyD < 0.0 || dyD >= `+r.outDepth+`.0 || fract(dyD) > 0.0) {
continue;
}
int idyD = int(dyD);
for (int wR = 0; wR < `+u+`;
wR += `+i+`) {
float dyR = float(dyRCorner + wR) / `+e+`.0;
if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 ||
fract(dyR) > 0.0) {
continue;
}
int idyR = int(dyR);
for (int wC = 0; wC < `+c+`;
wC += `+a+`) {
float dyC = float(dyCCorner + wC) / `+n+`.0;
if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
fract(dyC) > 0.0) {
continue;
}
int idyC = int(dyC);
float dyValue = getDy(batch, idyD, idyR, idyC, ch);
int maxPosValue = `+d+` -
int(getMaxPos(batch, idyD, idyR, idyC, ch));
// Get the current value, check it against the value from the
// position matrix.
int curPosValue =
wD * `+u+" * "+c+` +
wR * `+c+` + wC;
float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);
dotProd += dyValue * mask;
}
}
}
setOutput(dotProd);
}
`},La=function(r,t,e,n,o,i,a){e===void 0&&(e=!1),n===void 0&&(n=!1),o===void 0&&(o=!1),i===void 0&&(i=null),a===void 0&&(a=!1),this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;var s=e?r[1]:r[2],u=Math.ceil(s/2),c=e?"i * 2, rc.y":"rc.y, i * 2",l=n?"rc.z, i * 2":"i * 2, rc.z",f=e?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],h=n?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],d="",p="";i&&(d=a?`vec4 activation(vec4 a) {
vec4 b = getPreluActivationWeightsAtOutCoords();
`+i+`
}`:`vec4 activation(vec4 x) {
`+i+`
}`,p="result = activation(result);");var v=o?"result += getBiasAtOutCoords();":"";o&&this.variableNames.push("bias"),a&&this.variableNames.push("preluActivationWeights"),this.userCode=`
`+d+`
const float sharedDimension = `+u+`.0;
vec4 dot2x2ARowBCol(ivec3 rc) {
vec4 result = vec4(0);
for (int i = 0; i < `+u+`; i++) {
vec4 a = getMatrixA(rc.x, `+c+`);
vec4 b = getMatrixB(rc.x, `+l+`);
// These swizzled products need to be separately added.
// See: https://github.com/tensorflow/tfjs/issues/1735
result += (`+f[0]+" * "+h[0]+`);
result += (`+f[1]+" * "+h[1]+`);
}
return result;
}
void main() {
ivec3 rc = getOutputCoords();
vec4 result = dot2x2ARowBCol(rc);
`+v+`
`+p+`
setOutput(result);
}
`},Jd=function(){function r(t,e,n){this.variableNames=["probs"],this.outputShape=[t,n],this.userCode=`
uniform float seed;
void main() {
ivec2 coords = getOutputCoords();
int batch = coords[0];
float r = random(seed);
float cdf = 0.0;
for (int i = 0; i < `+(e-1)+`; i++) {
cdf += getProbs(batch, i);
if (r < cdf) {
setOutput(float(i));
return;
}
}
// If no other event happened, last event happened.
setOutput(float(`+(e-1)+`));
}
`}return r.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,o){e.seedLoc==null&&(e.seedLoc=n.getUniformLocation(o,"seed")),n.gl.uniform1f(e.seedLoc,t)}},r}(),Kd=function(r,t,e,n){this.variableNames=["indices"],this.outputShape=[r,t],this.userCode=`
void main() {
ivec2 coords = getOutputCoords();
int index = round(getIndices(coords.x));
setOutput(mix(float(`+n+"), float("+e+`),
float(index == coords.y)));
}
`},Zd=function(r){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outputShape=r;var t=r.length;if(t===0)this.userCode=`
void main() {
setOutput(vec4(getA(), 0., 0., 0.));
}
`;else{var e=zn("rc",t),n=Yt(t),o=function(s,u,c){if(s===1)return"rc > "+u[0];for(var l="",f=s-2;f<s;f++)l+=c[f]+" >= "+u[f],f<s-1&&(l+="||");return l}(t,r,e),i=function(s,u,c,l){if(s===1)return"";var f=l.slice(-2);return`
int r = `+f[0]+`;
int c = `+f[1]+`;
int rp1 = r + 1;
int cp1 = c + 1;
bool cEdge = cp1 >= `+u+`;
bool rEdge = rp1 >= `+c+`;
`}(t,r[r.length-1],r[r.length-2],e),a=function(s,u){var c=s.length,l=function(f,h){for(var d=[],p=0;p<=1;p++)for(var v=0;v<=1;v++){for(var g=(p===0?"r":"rp1")+", "+(v===0?"c":"cp1"),m=2;m<f;m++)g=h[h.length-1-m]+","+g;d.push(g)}return d}(c,u);return c===1?`getA(rc),
rc + 1 >= `+s[0]+` ? 0. : getA(rc + 1),
0, 0`:"getA("+l[0]+`),
cEdge ? 0. : getA(`+l[1]+`),
rEdge ? 0. : getA(`+l[2]+`),
rEdge || cEdge ? 0. : getA(`+l[3]+")"}(r,e);this.userCode=`
void main() {
`+n+` rc = getOutputCoords();
if(`+o+`) {
setOutput(vec4(0));
} else {
`+i+`
setOutput(vec4(`+a+`));
}
}
`}},qd=function(r,t,e){this.variableNames=["x"],this.outputShape=t.map(function(u,c){return u[0]+r[c]+u[1]});var n=r.length,o=Yt(n),i=t.map(function(u){return u[0]}).join(","),a=t.map(function(u,c){return u[0]+r[c]}).join(","),s=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,n);this.userCode=n!==1?`
`+o+" start = "+o+"("+i+`);
`+o+" end = "+o+"("+a+`);
void main() {
`+o+` outC = getOutputCoords();
if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {
setOutput(float(`+e+`));
} else {
`+o+` coords = outC - start;
setOutput(getX(`+s+`));
}
}
`:`
int start = `+i+`;
int end = `+a+`;
void main() {
int outC = getOutputCoords();
if (outC < start || outC >= end) {
setOutput(float(`+e+`));
} else {
setOutput(getX(outC - start));
}
}
`},Yd=function(r,t,e){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map(function(g,m){return g[0]+r[m]+g[1]});for(var n=r.length,o=Yt(n),i=t.map(function(g){return g[0]}).join(","),a=t.map(function(g,m){return g[0]+r[m]}).join(","),s=zn("rc",n),u=zn("source",n),c=s[n-1]+" < "+this.outputShape[n-1],l=n===1?"source":"vec2("+u.slice(-2).join()+")",f=[o+" rc = outputLoc;",s[n-1]+` += 1;
if(`+c+`) {
`,n===1?"":`}
rc = outputLoc;
`+s[n-2]+` += 1;
if(`+s[n-2]+" < "+this.outputShape[n-2]+") {",n===1?"":" "+s[n-1]+` += 1;
if(`+c+") {"],h=n===1?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",d="",p=0,v=n===1?2:4;p<v;p++)d+=`
`+f[p]+`
if (`+h+`) {
result[`+p+"] = float("+e+`);
} else {
`+o+` source = rc - start;
result[`+p+"] = getChannel(getX("+u.join()+"), "+l+`);
}
`;d+=n===1?"} ":"}}",this.userCode=`
const `+o+" start = "+o+"("+i+`);
const `+o+" end = "+o+"("+a+`);
void main() {
`+o+` outputLoc = getOutputCoords();
vec4 result = vec4(0.);
`+d+`
setOutput(result);
}
`},Wa=function(r,t,e){if(this.variableNames=["x"],t==="avg"&&e)throw new Error("Cannot compute positions for average pool.");var n=r.filterWidth,o=r.strideHeight,i=r.strideWidth,a=r.dilationHeight,s=r.dilationWidth,u=r.effectiveFilterHeight,c=r.effectiveFilterWidth,l=r.padInfo.top,f=r.padInfo.left;this.outputShape=r.outShape;var h=t==="avg",d="0.0";if(h||(d="-1.0 / 1e-20"),e)this.userCode=`
const ivec2 strides = ivec2(`+o+", "+i+`);
const ivec2 pads = ivec2(`+l+", "+f+`);
void main() {
ivec4 coords = getOutputCoords();
int batch = coords[0];
int d = coords[3];
ivec2 xRCCorner = coords.yz * strides - pads;
int xRCorner = xRCCorner.x;
int xCCorner = xRCCorner.y;
// max/min x(?, ?, d) to get y(yR, yC, d).
// ? = to be determined
float minMaxValue = 0.0;
float minMaxValueFound = 0.0;
int minMaxPosition = 0;
float avgValue = 0.0;
for (int wR = 0; wR < `+u+`;
wR += `+a+`) {
int xR = xRCorner + wR;
if (xR < 0 || xR >= `+r.inHeight+`) {
continue;
}
for (int wC = 0; wC < `+c+`;
wC += `+s+`) {
int xC = xCCorner + wC;
if (xC < 0 || xC >= `+r.inWidth+`) {
continue;
}
float value = getX(batch, xR, xC, d);
// If a min / max value has already been found, use it. If not,
// use the current value.
float currMinMaxValue = mix(
value, minMaxValue, minMaxValueFound);
if (value >= currMinMaxValue) {
minMaxValue = value;
minMaxValueFound = 1.0;
minMaxPosition = wR * `+c+` + wC;
}
}
}
setOutput(float(minMaxPosition));
}
`;else{var p=t+"("+t+"("+t+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";t==="avg"&&(p="avgValue / count");var v=4*Math.floor(n/4),g=n%4,m=`
if (`+h+`) {
avgValue += dot(values, ones);
} else {
minMaxValue = max(values, minMaxValue);
}
`;this.userCode=`
const ivec2 strides = ivec2(`+o+", "+i+`);
const ivec2 pads = ivec2(`+l+", "+f+`);
const float initializationValue = `+d+`;
const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);
float count = 0.0;
float getValue(int batch, int xR, int xC, int d) {
if (xC < 0 || xC >= `+r.inWidth+`) {
return initializationValue;
}
count += 1.0;
return getX(batch, xR, xC, d);
}
void main() {
ivec4 coords = getOutputCoords();
int batch = coords[0];
int d = coords[3];
ivec2 xRCCorner = coords.yz * strides - pads;
int xRCorner = xRCCorner.x;
int xCCorner = xRCCorner.y;
// max/min x(?, ?, d) to get y(yR, yC, d).
// ? = to be determined
vec4 minMaxValue = vec4(`+d+`);
float avgValue = 0.0;
count = 0.0;
for (int wR = 0; wR < `+u+`;
wR += `+a+`) {
int xR = xRCorner + wR;
if (xR < 0 || xR >= `+r.inHeight+`) {
continue;
}
for (int wC = 0; wC < `+v+`; wC += 4) {
int xC = xCCorner + wC * `+s+`;
vec4 values = vec4(
getValue(batch, xR, xC, d),
getValue(batch, xR, xC + `+s+`, d),
getValue(batch, xR, xC + 2 * `+s+`, d),
getValue(batch, xR, xC + 3 * `+s+`, d)
);
`+m+`
}
int xC = xCCorner + `+v+`;
if (`+(g===1)+`) {
vec4 values = vec4(
getValue(batch, xR, xC, d),
initializationValue,
initializationValue,
initializationValue
);
`+m+`
} else if (`+(g===2)+`) {
vec4 values = vec4(
getValue(batch, xR, xC, d),
getValue(batch, xR, xC + `+s+`, d),
initializationValue,
initializationValue
);
`+m+`
} else if (`+(g===3)+`) {
vec4 values = vec4(
getValue(batch, xR, xC, d),
getValue(batch, xR, xC + `+s+`, d),
getValue(batch, xR, xC + 2 * `+s+`, d),
initializationValue
);
`+m+`
}
}
setOutput(`+p+`);
}
`}},_a=function(r,t,e){if(this.variableNames=["x"],t==="avg"&&e)throw new Error("Cannot compute positions for average pool.");var n=r.filterWidth,o=r.strideDepth,i=r.strideHeight,a=r.strideWidth,s=r.dilationDepth,u=r.dilationHeight,c=r.dilationWidth,l=r.effectiveFilterDepth,f=r.effectiveFilterHeight,h=r.effectiveFilterWidth,d=r.padInfo.front,p=r.padInfo.top,v=r.padInfo.left;this.outputShape=r.outShape;var g=t==="avg",m="0.0";if(g||(m="-1.0 / 1e-20"),e)this.userCode=`
const ivec3 strides =
ivec3(`+o+", "+i+", "+a+`);
const ivec3 pads = ivec3(`+d+", "+p+", "+v+`);
void main() {
ivec5 coords = getOutputCoords();
int batch = coords.x;
int ch = coords.u;
ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;
int xDCorner = xCorner.x;
int xRCorner = xCorner.y;
int xCCorner = xCorner.z;
// max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).
// ? = to be determined
float minMaxValue = 0.0;
float minMaxValueFound = 0.0;
int minMaxPosition = 0;
for (int wD = 0; wD < `+l+`;
wD += `+s+`) {
int xD = xDCorner + wD;
if (xD < 0 || xD >= `+r.inDepth+`) {
continue;
}
for (int wR = 0; wR < `+f+`;
wR += `+u+`) {
int xR = xRCorner + wR;
if (xR < 0 || xR >= `+r.inHeight+`) {
continue;
}
for (int wC = 0; wC < `+h+`;
wC += `+c+`) {
int xC = xCCorner + wC;
if (xC < 0 || xC >= `+r.inWidth+`) {
continue;
}
float value = getX(batch, xD, xR, xC, ch);
// If a min / max value has already been found, use it. If not,
// use the current value.
float currMinMaxValue = mix(
value, minMaxValue, minMaxValueFound);
if (value >= currMinMaxValue) {
minMaxValue = value;
minMaxValueFound = 1.0;
minMaxPosition =
wD * `+f+" * "+h+` +
wR * `+h+` + wC;;
}
}
}
}
setOutput(float(minMaxPosition));
}
`;else{var w=t+"("+t+"("+t+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";t==="avg"&&(w="avgValue / count");var E=4*Math.floor(n/4),b=n%4,C=`
if (`+g+`) {
avgValue += dot(values, ones);
} else {
minMaxValue = max(values, minMaxValue);
}
`;this.userCode=`
const ivec3 strides =
ivec3(`+o+", "+i+", "+a+`);
const ivec3 pads = ivec3(`+d+", "+p+", "+v+`);
const float initializationValue = `+m+`;
const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);
float count = 0.0;
float getValue(int batch, int xD, int xR, int xC, int ch) {
if (xC < 0 || xC >= `+r.inWidth+`) {
return initializationValue;
}
count += 1.0;
return getX(batch, xD, xR, xC, ch);
}
void main() {
ivec5 coords = getOutputCoords();
int batch = coords.x;
int ch = coords.u;
ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;
int xDCorner = xCorner.x;
int xRCorner = xCorner.y;
int xCCorner = xCorner.z;
// max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).
// ? = to be determined
vec4 minMaxValue = vec4(`+m+`);
float avgValue = 0.0;
count = 0.0;
for (int wD = 0; wD < `+l+`;
wD += `+s+`) {
int xD = xDCorner + wD;
if (xD < 0 || xD >= `+r.inDepth+`) {
continue;
}
for (int wR = 0; wR < `+f+`;
wR += `+u+`) {
int xR = xRCorner + wR;
if (xR < 0 || xR >= `+r.inHeight+`) {
continue;
}
for (int wC = 0; wC < `+E+`; wC += 4) {
int xC = xCCorner + wC * `+c+`;
vec4 values = vec4(
getValue(batch, xD, xR, xC, ch),
getValue(batch, xD, xR, xC + `+c+`, ch),
getValue(batch, xD, xR, xC + 2 * `+c+`, ch),
getValue(batch, xD, xR, xC + 3 * `+c+`, ch)
);
`+C+`
}
int xC = xCCorner + `+E+`;
if (`+(b===1)+`) {
vec4 values = vec4(
getValue(batch, xD, xR, xC, ch),
initializationValue,
initializationValue,
initializationValue
);
`+C+`
} else if (`+(b===2)+`) {
vec4 values = vec4(
getValue(batch, xD, xR, xC, ch),
getValue(batch, xD, xR, xC + `+c+`, ch),
initializationValue,
initializationValue
);
`+C+`
} else if (`+(b===3)+`) {
vec4 values = vec4(
getValue(batch, xD, xR, xC, ch),
getValue(batch, xD, xR, xC + `+c+`, ch),
getValue(batch, xD, xR, xC + 2 * `+c+`, ch),
initializationValue
);
`+C+`
}
}
setOutput(`+w+`);
}
}
`}},$d=function(r,t){this.variableNames=["x"];var e=r.windowSize,n=r.batchSize,o=r.inSize,i=Math.ceil(o/e);this.outputShape=[n,i];var a="0.0",s="";t==="prod"?a="1.0":t==="min"?(a="1.0 / 1e-20",s="min"):t==="max"&&(a="-1.0 / 1e-20",s="max");var u=t+"("+t+"("+t+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";t==="sum"?u="sumValue":t==="prod"?u="prodValue":t==="all"?u="allValue":t==="any"&&(u="anyValue");var c=4*Math.floor(e/4),l=e%4,f=`
if (`+(t==="sum")+`) {
sumValue += dot(values, ones);
} else if (`+(t==="prod")+`) {
vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);
prodValue *= tmp[0] * tmp[1];
} else {
minMaxValue = `+s+`(values, minMaxValue);
}
`,h="vec4";t==="all"?(a="1.0",f=`
bool reducedAllValue = all(values);
float floatedReducedAllValue = float(reducedAllValue);
allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);
`,h="bvec4"):t==="any"&&(a="0.0",f=`
bool reducedAnyValue = any(values);
float floatedReducedAnyValue = float(reducedAnyValue);
anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);
`,h="bvec4");var d="";o%e>0&&(d=`
if (inIdx < 0 || inIdx >= `+o+`) {
return initializationValue;
}
`),this.userCode=`
const float initializationValue = `+a+`;
const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);
float getValue(int batch, int inIdx) {
`+d+`
return getX(batch, inIdx);
}
void main() {
ivec2 coords = getOutputCoords();
int batch = coords[0];
int outIdx = coords[1];
int inOffset = outIdx * `+e+`;
vec4 minMaxValue = vec4(`+a+`);
float prodValue = 1.0;
float sumValue = 0.0;
float allValue = 1.0;
float anyValue = 0.0;
for (int i = 0; i < `+c+`; i += 4) {
int inIdx = inOffset + i;
`+h+" values = "+h+`(
getValue(batch, inIdx),
getValue(batch, inIdx + 1),
getValue(batch, inIdx + 2),
getValue(batch, inIdx + 3)
);
`+f+`
}
int inIdx = inOffset + `+c+`;
if (`+(l===1)+`) {
`+h+" values = "+h+`(
getValue(batch, inIdx),
initializationValue,
initializationValue,
initializationValue
);
`+f+`
} else if (`+(l===2)+`) {
`+h+" values = "+h+`(
getValue(batch, inIdx),
getValue(batch, inIdx + 1),
initializationValue,
initializationValue
);
`+f+`
} else if (`+(l===3)+`) {
`+h+" values = "+h+`(
getValue(batch, inIdx),
getValue(batch, inIdx + 1),
getValue(batch, inIdx + 2),
initializationValue
);
`+f+`
}
setOutput(`+u+`);
}
`},ep=function(r,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=r;for(var e="",n=0;n<4;n++){var o="thisRC = rc;";n%2==1&&(o+="thisRC.z += 1;"),n>1&&(o+="thisRC.y += 1;"),e+=`
`+o+`
`+(n>0?"if(thisRC.y < rows && thisRC.z < cols){":"")+`
int flatIndex = getFlatIndex(thisRC);
ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);
vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));
result[`+n+`] =
getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);
`+(n>0?"}":"")+`
`}this.userCode=`
ivec3 inputCoordsFromReshapedOutCoords(int index) {
`+eo(["r","c","d"],t)+`
return ivec3(r, c, d);
}
`+Na(r)+`
void main() {
ivec3 rc = getOutputCoords();
vec4 result = vec4(0.);
ivec3 thisRC;
int rows = `+r[1]+`;
int cols = `+r[2]+`;
`+e+`
setOutput(result);
}
`},tp=function(r,t,e){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;var n=t.shape,o=n[1],i=n[2],a=r.shape,s=a[1],u=a[2],c=[e&&s>1?o-1:o,e&&u>1?i-1:i],l=[e&&s>1?s-1:s,e&&u>1?u-1:u],f=c[0]/l[0],h=c[1]/l[1],d=1/f,p=1/h,v=2*Math.ceil(d)+2,g=2*Math.ceil(p)+2;this.userCode=`
void main() {
ivec4 coords = getOutputCoords();
int b = coords[0];
int d = coords[3];
int r = coords[1];
int c = coords[2];
float accumulator = 0.0;
const float heightScale = float(`+f+`);
const float widthScale = float(`+h+`);
const float invHeightScale = float(`+d+`);
const float invWidthScale = float(`+p+`);
const int winHeight = int(`+v+`);
const int winWidth = int(`+g+`);
// Compute bounds for where in dy we will look
float startRLerp = floor(float(r) * invHeightScale);
int startDyR = int(startRLerp - float(winHeight / 2));
float startCLerp = floor(float(c) * invWidthScale);
int startDyC = int(startCLerp - float(winWidth / 2));
// Loop over dy
for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {
int dyR = dyROffset + startDyR;
// Guard against the window exceeding the bounds of dy
if (dyR < 0 || dyR >= `+s+`) {
continue;
}
for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {
int dyC = dyCOffset + startDyC;
// Guard against the window exceeding the bounds of dy
if (dyC < 0 || dyC >= `+u+`) {
continue;
}
float dxR = float(dyR) * heightScale;
int topDxRIndex = int(floor(dxR));
int bottomDxRIndex = int(min(ceil(dxR), `+(o-1)+`.0));
float dxRLerp = dxR - float(topDxRIndex);
float inverseDxRLerp = 1.0 - dxRLerp;
float dxC = float(dyC) * widthScale;
int leftDxCIndex = int(floor(dxC));
int rightDxCIndex = int(min(ceil(dxC), `+(i-1)+`.0));
float dxCLerp = dxC - float(leftDxCIndex);
float inverseDxCLerp = 1.0 - dxCLerp;
if (r == topDxRIndex && c == leftDxCIndex) {
// topLeft
accumulator +=
getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;
}
if (r == topDxRIndex && c == rightDxCIndex) {
// topRight
accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;
}
if (r == bottomDxRIndex && c == leftDxCIndex) {
// bottomLeft
accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;
}
if (r == bottomDxRIndex && c == rightDxCIndex) {
// bottomRight
accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;
}
}
}
// End loop over dy
setOutput(accumulator);
}
`},np=function(r,t,e,n){this.variableNames=["A"],this.outputShape=[];var o=r[0],i=r[1],a=r[2],s=r[3];this.outputShape=[o,t,e,s];var u=[n&&t>1?i-1:i,n&&e>1?a-1:a],c=[n&&t>1?t-1:t,n&&e>1?e-1:e];this.userCode=`
const vec2 effectiveInputOverOutputRatioRC = vec2(
`+u[0]/c[0]+`,
`+u[1]/c[1]+`);
const vec2 inputShapeRC = vec2(`+i+".0, "+a+`.0);
void main() {
ivec4 coords = getOutputCoords();
int b = coords[0];
int d = coords[3];
ivec2 yRC = coords.yz;
// Fractional source index.
vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;
// Compute the four integer indices.
ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);
ivec2 sourceCeilRC = ivec2(
min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));
float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);
float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);
float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);
float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);
vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);
float top = topLeft + (topRight - topLeft) * fracRC.y;
float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;
float newValue = top + (bottom - top) * fracRC.x;
setOutput(newValue);
}
`},rp=function(r,t,e,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];var o=r[0],i=r[1],a=r[2],s=r[3];this.outputShape=[o,t,e,s];var u=[n&&t>1?i-1:i,n&&e>1?a-1:a],c=[n&&t>1?t-1:t,n&&e>1?e-1:e];this.userCode=`
const vec3 effectiveInputOverOutputRatioRC = vec3(
`+u[0]/c[0]+`,
`+u[1]/c[1]+`,
`+u[1]/c[1]+`);
const vec3 inputShapeRC = vec3(`+i+".0, "+a+`.0,
`+a+`.0);
float getAValue(int b, int r, int c, int d) {
return getChannel(getA(b, r, c, d), vec2(c, d));
}
void main() {
ivec4 coords = getOutputCoords();
int b = coords[0];
int d = coords[3];
// Calculate values for next column in yRC.z.
ivec3 yRC = coords.yzz + ivec3(0, 0, 1);
// Fractional source index.
vec3 sourceFracIndexRC = vec3(yRC) * effectiveInputOverOutputRatioRC;
// Compute the four integer indices.
ivec3 sourceFloorRC = ivec3(sourceFracIndexRC);
ivec3 sourceCeilRC = ivec3(
min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));
// Should we calculate next column and row elements in 2x2 packed cell.
bool hasNextCol = d < `+(s-1)+`;
bool hasNextRow = coords.z < `+(e-1)+`;
// In parallel, construct four corners for all four components in
// packed 2x2 cell.
vec4 topLeft = vec4(
getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),
hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)
: 0.0,
hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)
: 0.0,
(hasNextRow && hasNextCol) ?
getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);
vec4 bottomLeft = vec4(
getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),
hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)
: 0.0,
hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)
: 0.0,
(hasNextRow && hasNextCol) ?
getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);
vec4 topRight = vec4(
getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),
hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)
: 0.0,
hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)
: 0.0,
(hasNextRow && hasNextCol) ?
getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);
vec4 bottomRight = vec4(
getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),
hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)
: 0.0,
hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)
: 0.0,
(hasNextRow && hasNextCol) ?
getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);
vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);
vec4 top = mix(topLeft, topRight, fracRC.yyzz);
vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);
vec4 newValue = mix(top, bottom, fracRC.x);
setOutput(newValue);
}
`},op=function(r,t,e){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;var n=t.shape,o=n[1],i=n[2],a=r.shape,s=a[1],u=a[2],c=[e&&s>1?o-1:o,e&&u>1?i-1:i],l=[e&&s>1?s-1:s,e&&u>1?u-1:u],f=c[0]/l[0],h=c[1]/l[1],d=1/f,p=1/h,v=2*Math.ceil(d)+2,g=2*Math.ceil(p)+2;this.userCode=`
void main() {
ivec4 coords = getOutputCoords();
int b = coords[0];
int d = coords[3];
int r = coords[1];
int c = coords[2];
float accumulator = 0.0;
const float heightScale = float(`+f+`);
const float widthScale = float(`+h+`);
const float invHeightScale = float(`+d+`);
const float invWidthScale = float(`+p+`);
const int winHeight = int(`+v+`);
const int winWidth = int(`+g+`);
// Compute bounds for where in dy we will look
float startRLerp = floor(float(r) * invHeightScale);
int startDyR = int(floor(startRLerp - float(winHeight / 2)));
float startCLerp = floor(float(c) * invWidthScale);
int startDyC = int(floor(startCLerp - float(winWidth / 2)));
// Loop over dy
for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {
int dyR = dyROffset + startDyR;
// Guard against the window exceeding the bounds of dy
if (dyR < 0 || dyR >= `+s+`) {
continue;
}
for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {
int dyC = dyCOffset + startDyC;
// Guard against the window exceeding the bounds of dy
if (dyC < 0 || dyC >= `+u+`) {
continue;
}
float sourceFracRow =
float(`+c[0]+`) *
(float(dyR) / float(`+l[0]+`));
float sourceFracCol =
float(`+c[1]+`) *
(float(dyC) / float(`+l[1]+`));
int sourceNearestRow = int(min(
float(int(`+o+`) - 1),
`+e+` ? float(round(sourceFracRow)) :
float(floor(sourceFracRow))));
int sourceNearestCol = int(min(
float(int(`+i+`) - 1),
`+e+` ? float(round(sourceFracCol)) :
float(floor(sourceFracCol))));
if (r == sourceNearestRow && c == sourceNearestCol) {
accumulator += getDy(b, dyR, dyC, d);
}
}
}
// End loop over dy
setOutput(accumulator);
}
`},ip=function(r,t,e,n){this.variableNames=["A"],this.outputShape=[];var o=r[0],i=r[1],a=r[2],s=r[3];this.outputShape=[o,t,e,s];var u=[n&&t>1?i-1:i,n&&e>1?a-1:a],c=[n&&t>1?t-1:t,n&&e>1?e-1:e],l=n?"0.5":"0.0";this.userCode=`
const vec2 effectiveInputOverOutputRatioRC = vec2(
`+u[0]/c[0]+`,
`+u[1]/c[1]+`);
const vec2 inputShapeRC = vec2(`+i+".0, "+a+`.0);
void main() {
ivec4 coords = getOutputCoords();
int b = coords[0];
int d = coords[3];
ivec2 yRC = coords.yz;
// Fractional source index.
vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;
// Compute the coordinators of nearest neighbor point.
ivec2 sourceNearestRC = ivec2(
min(inputShapeRC - 1.0, floor(sourceFracIndexRC + `+l+`)));
float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);
setOutput(newValue);
}
`},ap=function(r,t){this.variableNames=["x"];var e=r.length;if(e>4)throw new Error("WebGL backend: Reverse of rank-"+e+" tensor is not yet supported");if(this.outputShape=r,e!==1){var n=r.map(function(i,a){return function(s){return t.indexOf(s)!==-1&&r[s]!==1?r[s]+" - coords["+s+"] - 1":"coords["+s+"]"}(a)}).join(","),o=Yt(e);this.userCode=`
void main() {
`+o+` coords = getOutputCoords();
setOutput(getX(`+n+`));
}
`}else this.userCode=`
void main() {
int coord = getOutputCoords();
setOutput(getX(`+r[0]+` - coord - 1));
}
`},sp=function(r,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;var e=r.length;if(e>4)throw new Error("WebGL backend: Reverse of rank-"+e+" tensor is not yet supported");this.outputShape=r;var n=zn("rc",e),o=n[e-1]+" + 1 < "+this.outputShape[e-1],i=n[e-2]+" + 1 < "+this.outputShape[e-2],a=Yt(e);function s(u){var c=r.map(function(l,f){return function(h,d){return t.indexOf(h)!==-1&&r[h]!==1?r[h]+" - "+d[h]+" - 1":""+d[h]}(f,u)});return"getChannel(getX("+c.join(",")+"), vec2("+c.slice(-2).join(",")+"))"}this.userCode=e===1?`
void main(){
int rc = getOutputCoords();
vec4 result = vec4(0.);
result.r = getChannel(getX(`+r[0]+` - rc - 1),
`+r[0]+` - rc - 1);
if(`+o+`){
result.g = getChannel(getX(`+r[0]+` - (rc + 1) - 1),
`+r[0]+` - (rc + 1) - 1);
}
setOutput(result);
}
`:`
void main() {
`+a+` rc = getOutputCoords();
vec4 result = vec4(0.);
result.r = `+function(u){return s(u)}(n.slice())+`;
if(`+o+`){
result.g = `+function(u){return u[e-1]="("+u[e-1]+" + 1)",s(u)}(n.slice())+`;
}
if(`+i+`) {
result.b = `+function(u){return u[e-2]="("+u[e-2]+" + 1)",s(u)}(n.slice())+`;
if(`+o+`) {
result.a = `+function(u){return u[e-1]="("+u[e-1]+" + 1)",u[e-2]="("+u[e-2]+" + 1)",s(u)}(n.slice())+`;
}
}
setOutput(result);
}
`},Wc=function(r,t,e,n,o,i,a){a===void 0&&(a=!0),this.variableNames=["updates","indices","defaultValue"],this.outputShape=i;var s=Yt(o.length),u=Yt(i.length),c="";e===1?c="i":e===2&&(c="i, j");var l="getIndices("+c+")",f="";n===1?f="i":n===2&&(f="i, coords[1]");var h="getUpdates("+f+")",d=t>1?"strides[j]":"strides";this.userCode=`
`+s+" strides = "+s+"("+o+`);
void main() {
`+u+` coords = getOutputCoords();
float sum = 0.0;
bool found = false;
for (int i = 0; i < `+r+`; i++) {
int flattenedIndex = 0;
for (int j = 0; j < `+t+`; j++) {
int index = round(`+l+`);
flattenedIndex += index * `+d+`;
}
if (flattenedIndex == coords[0]) {
sum += `+h+`;
found = true;
}
}
setOutput(mix(getDefaultValue(), sum, float(found)));
}
`},up=function(r,t){this.variableNames=["x","segmentIds"];var e=r.windowSize,n=r.batchSize,o=r.inSize,i=r.numSegments,a=i*Math.ceil(o/e);this.outputShape=[n,a];var s=4*Math.floor(e/4),u=e%4,c=`
sumValue += dot(values, segFilter);
`,l="";o%e>0&&(l=`
if (inIdx < 0 || inIdx >= `+o+`) {
return initializationValue;
}
`);var f="";o%e>0&&(f=`
if (inIdx < 0 || inIdx >= `+o+`) {
return -1.0;
}
`),this.userCode=`
const float initializationValue = 0.0;
float getValue(int batch, int inIdx) {
`+l+`
return getX(batch, inIdx);
}
float getSegmentIdAtIndex(int inIdx) {
`+f+`
return getSegmentIds(inIdx);
}
void main() {
ivec2 coords = getOutputCoords();
int batch = coords[0];
int outIdx = coords[1];
int inOffset = int(floor(float(outIdx) / float(
`+i+")) * float("+e+`));
int currentSeg = int(mod(float(outIdx), float(`+i+`)));
float sumValue = 0.0;
for (int i = 0; i < `+s+`; i += 4) {
int inIdx = inOffset + i;
vec4 values = vec4(
getValue(batch, inIdx),
getValue(batch, inIdx + 1),
getValue(batch, inIdx + 2),
getValue(batch, inIdx + 3)
);
vec4 segFilter = vec4(
int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,
int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,
int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,
int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0
);
`+c+`
}
int inIdx = inOffset + `+s+`;
if (`+(u===1)+`) {
vec4 values = vec4(
getValue(batch, inIdx),
initializationValue,
initializationValue,
initializationValue
);
int inIdxSeg = int(getSegmentIdAtIndex(inIdx));
vec4 segFilter = vec4(
int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,
0,
0,
0
);
`+c+`
} else if (`+(u===2)+`) {
vec4 values = vec4(
getValue(batch, inIdx),
getValue(batch, inIdx + 1),
initializationValue,
initializationValue
);
vec4 segFilter = vec4(
int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,
int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,
0,
0
);
`+c+`
} else if (`+(u===3)+`) {
vec4 values = vec4(
getValue(batch, inIdx),
getValue(batch, inIdx + 1),
getValue(batch, inIdx + 2),
initializationValue
);
vec4 segFilter = vec4(
int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,
int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,
int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,
0
);
`+c+`
}
setOutput(sumValue);
}
`},cp=function(r,t,e){var n,o;if(this.variableNames=["c","a","b"],this.outputShape=t,e>4)throw Error("Where for rank "+e+" is not yet supported");if(e===1)o="resRC",n="resRC";else{for(var i=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[],s=[],u=0;u<t.length;u++)s.push(""+i[u]),u<r&&a.push(""+i[u]);n=a.join(),o=s.join()}var c=Yt(e);this.userCode=`
void main() {
`+c+` resRC = getOutputCoords();
float cVal = getC(`+n+`);
if (cVal >= 1.0) {
setOutput(getA(`+o+`));
} else {
setOutput(getB(`+o+`));
}
}
`},lp=function(){function r(t){this.variableNames=["source"],this.outputShape=t,this.rank=t.length;var e,n=Yt(this.rank),o="uniform int start["+this.rank+"];",i=function(a){if(a===1)return"sourceLoc";if(a<=6)return Qa.slice(0,a).map(function(s){return"sourceLoc."+s}).join(",");throw Error("Slicing for rank "+a+" is not yet supported")}(this.rank);e=`
`+n+` sourceLoc;
`+n+` coords = getOutputCoords();
`+t.map(function(a,s){return"sourceLoc."+Qa[s]+" = start["+s+"] + coords."+Qa[s]+";"}).join(`
`)+`
`,this.userCode=`
`+o+`
void main() {
`+e+`
setOutput(getSource(`+i+`));
}
`}return r.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,o){e.startLoc==null&&(e.startLoc=n.getUniformLocationNoThrow(o,"start"),e.startLoc==null)||n.gl.uniform1iv(e.startLoc,t)}},r}(),Qa=["x","y","z","w","u","v"],fp=function(){function r(t){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.rank=t.length;var e=Yt(this.rank),n=zn("coords",this.rank),o=zn("sourceLoc",this.rank),i=this.rank===1?"sourceLoc":"vec2("+o.slice(-2).join()+")",a="getChannel(getSource("+o.join()+"), "+i+")",s=`
result.x = `+a+`;
if (++`+n[this.rank-1]+" < "+t[this.rank-1]+`) {
++`+o[this.rank-1]+`;
result.y = `+a+`;
--`+o[this.rank-1]+`;
}
`,u=this.rank===1?"":`
--`+n[this.rank-1]+`;
if (++`+n[this.rank-2]+" < "+t[this.rank-2]+`) {
++`+o[this.rank-2]+`;
result.z = `+a+`;
if (++`+n[this.rank-1]+" < "+t[this.rank-1]+`) {
++`+o[this.rank-1]+`;
result.w = `+a+`;
}
}
`,c=this.rank<=4?`sourceLoc = coords +
`+e+"("+t.map(function(l,f){return"start["+f+"]"}).join()+");":t.map(function(l,f){return o[f]+" = "+n[f]+" + start["+f+"];"}).join(`
`);this.userCode=`
uniform int start[`+this.rank+`];
void main() {
`+e+` coords = getOutputCoords();
`+e+` sourceLoc;
`+c+`
vec4 result = vec4(0.);
`+s+`
`+u+`
setOutput(result);
}
`}return r.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,o){e.startLoc==null&&(e.startLoc=n.getUniformLocationNoThrow(o,"start"),e.startLoc==null)||n.gl.uniform1iv(e.startLoc,t)}},r}(),hp=function(r,t,e){this.variableNames=["x"],this.outputShape=e;var n=e.length,o=Yt(e.length),i=Yt(e.length),a="";if(n===1)a="coords * strides + begin";else{var s=0;a=e.map(function(u,c){return s++,e.length===1?"coords * strides["+c+"] + begin["+c+"]":"coords["+(s-1)+"] * strides["+c+"] + begin["+c+"]"}).join(",")}this.userCode=`
`+o+" begin = "+o+"("+r+`);
`+o+" strides = "+o+"("+t+`);
void main() {
`+i+` coords = getOutputCoords();
setOutput(getX(`+a+`));
}
`},dp=function(){function r(t){this.gpgpu=t,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}return r.prototype.acquireTexture=function(t,e,n){var o,i=_c(e,n),a=Qc(t,i,n);if(a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]),this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var s=this.freeTextures[a].shift();return this.usedTextures[a].push(s),s}return this.numUsedTextures++,this.log(),i===Rn.PACKED_2X2_FLOAT32?o=this.gpgpu.createPackedMatrixTexture(t[0],t[1]):i===Rn.PACKED_2X2_FLOAT16?o=this.gpgpu.createFloat16PackedMatrixTexture(t[0],t[1]):i===Rn.UNPACKED_FLOAT32?o=this.gpgpu.createFloat32MatrixTexture(t[0],t[1]):i===Rn.UNPACKED_FLOAT16?o=this.gpgpu.createFloat16MatrixTexture(t[0],t[1]):i===Rn.PACKED_4X1_UNSIGNED_BYTE&&(o=this.gpgpu.createUnsignedBytesMatrixTexture(t[0],t[1])),this.usedTextures[a].push(o),o},r.prototype.releaseTexture=function(t,e,n,o){if(this.freeTextures!=null){var i=Qc(e,_c(n,o),o);i in this.freeTextures||(this.freeTextures[i]=[]),this.freeTextures[i].push(t),this.numFreeTextures++,this.numUsedTextures--;var a=this.usedTextures[i],s=a.indexOf(t);if(s<0)throw new Error("Cannot release a texture that was never provided by this texture manager");a.splice(s,1),this.log()}},r.prototype.log=function(){if(this.logEnabled){var t=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",this.numFreeTextures+" / "+this.numUsedTextures,"("+t+")")}},r.prototype.getNumUsedTextures=function(){return this.numUsedTextures},r.prototype.getNumFreeTextures=function(){return this.numFreeTextures},r.prototype.dispose=function(){var t=this;if(this.freeTextures!=null){for(var e in this.freeTextures)this.freeTextures[e].forEach(function(n){t.gpgpu.deleteMatrixTexture(n)});for(var e in this.usedTextures)this.usedTextures[e].forEach(function(o){t.gpgpu.deleteMatrixTexture(o)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0}},r}();function _c(r,t){if(r===wn.UPLOAD)return Rn.PACKED_2X2_FLOAT32;if(r===wn.RENDER||r==null)return function(e){return J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?Rn.PACKED_2X2_FLOAT32:Rn.UNPACKED_FLOAT32:e?Rn.PACKED_2X2_FLOAT16:Rn.UNPACKED_FLOAT16}(t);if(r===wn.DOWNLOAD||r===wn.PIXELS)return Rn.PACKED_4X1_UNSIGNED_BYTE;throw new Error("Unknown logical texture type "+r)}function Qc(r,t,e){return r[0]+"_"+r[1]+"_"+t+"_"+e}var pp=function(r,t){this.variableNames=["A"];for(var e=new Array(r.length),n=0;n<e.length;n++)e[n]=r[n]*t[n];this.outputShape=e,this.rank=e.length;var o=Yt(this.rank),i=function(a){var s=a.length;if(s>5)throw Error("Tile for rank "+s+" is not yet supported");if(s===1)return"imod(resRC, "+a[0]+")";for(var u=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],c=[],l=0;l<a.length;l++)c.push("imod("+u[l]+", "+a[l]+")");return c.join()}(r);this.userCode=`
void main() {
`+o+` resRC = getOutputCoords();
setOutput(getA(`+i+`));
}
`},vp=function(r,t){this.variableNames=["A"];for(var e=new Array(r.length),n=0;n<e.length;n++)e[n]=r[t[n]];this.outputShape=e,this.rank=e.length;var o=Yt(this.rank),i=function(a){var s=a.length;if(s>6)throw Error("Transpose for rank "+s+" is not yet supported");for(var u=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],c=new Array(s),l=0;l<a.length;l++)c[a[l]]=u[l];return c.join()}(t);this.userCode=`
void main() {
`+o+` resRC = getOutputCoords();
setOutput(getA(`+i+`));
}
`},gp=function(r,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0;for(var e=new Array(r.length),n=0;n<e.length;n++)e[n]=r[t[n]];if(this.outputShape=e,this.rank=e.length,this.rank>6)throw Error("Packed transpose for rank "+this.rank+" is not yet supported.");var o=Yt(this.rank),i=uc("rc",this.rank),a=new Array(this.rank);for(n=0;n<t.length;n++)a[t[n]]=i[n];var s="vec2("+a.slice(-2).join()+")",u="++"+i[this.rank-1]+" < "+e[this.rank-1],c="getChannel(getA("+a.join()+"), "+s+")";this.userCode=`
void main() {
`+o+` rc = getOutputCoords();
vec4 result = vec4(0.);
result[0] = `+c+`;
if(`+u+`) {
result[1] = `+c+`;
}
--`+i[this.rank-1]+`;
if(++`+i[this.rank-2]+" < "+e[this.rank-2]+`) {
result[2] = `+c+`;
if(`+u+`) {
result[3] = `+c+`;
}
}
setOutput(result);
}
`},za=1.7580993408473768,Ua=1.0507009873554805,ht=function(r,t){this.variableNames=["A"],this.outputShape=r,this.userCode=`
float unaryOperation(float x) {
`+t+`
}
void main() {
float x = getAAtOutCoords();
float y = unaryOperation(x);
setOutput(y);
}
`},or="if (isnan(x)) return x;",mp="return x;",zc="return abs(x);",Uc=or+`
return (x < 0.0) ? 0.0 : x;
`,Hc=or+`
return (x < 0.0) ? 0.0 : min(6.0, x);
`,jc="return (x >= 0.0) ? x : (exp(x) - 1.0);",Ap=`
// Stable and Attracting Fixed Point (0, 1) for Normalized Weights.
// see: https://arxiv.org/abs/1706.02515
float scaleAlpha = `+za+`;
float scale = `+Ua+`;
return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);
`,Vc="return -x;",Gc="return ceil(x);",Xc="return floor(x);",Jc="return exp(x);",Kc="return exp(x) - 1.0;",yp=or+`
return sin(x);
`,xp=or+`
return cos(x);
`,bp=or+`
if (abs(x) > 1.) {
return NAN;
}
return asin(x);
`,wp=or+`
if (abs(x) > 1.) {
return NAN;
}
return acos(x);
`,Ep=or+`
return atan(x);
`,Cp=or+"return log(x + sqrt(x * x + 1.0));",Ip=or+`
if (x < 1.0) return NAN;
return log(x + sqrt(x * x - 1.0));`,Sp=or+`
if ((x < -1.0) || (x > 1.0)) return NAN;
return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,Pi="return x;",Rp="return x;",Zc=`
vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));
bvec4 isNaN = isnan(x);
result.r = isNaN.r ? x.r : result.r;
result.g = isNaN.g ? x.g : result.g;
result.b = isNaN.b ? x.b : result.b;
result.a = isNaN.a ? x.a : result.a;
return result;
`,qc=`
vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));
bvec4 isNaN = isnan(x);
result.r = isNaN.r ? x.r : result.r;
result.g = isNaN.g ? x.g : result.g;
result.b = isNaN.b ? x.b : result.b;
result.a = isNaN.a ? x.a : result.a;
return result;
`,Yc=`
vec4 result;
result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);
result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);
result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);
result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);
return result;
`,Ko=function(r,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=r,this.userCode=`
vec4 unaryOperation(vec4 x) {
`+t+`
}
void main() {
vec4 x = getAAtOutCoords();
vec4 y = unaryOperation(x);
setOutput(y);
}
`},Bp=function(r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=r;var t=r.length,e=zn("rc",t),n=Yt(t),o=function(s,u){if(s===1)return"rc";for(var c="",l=0;l<s;l++)c+=u[l],l<s-1&&(c+=",");return c}(t,e),i=e.slice(-2),a=t<=1?"rc":"vec2("+i.join(",")+")";this.userCode=`
void main() {
`+n+` rc = getOutputCoords();
vec4 packedInput = getA(`+o+`);
setOutput(getChannel(packedInput, `+a+`));
}
`},Ni={};function Oi(r,t){if(t===void 0&&(t=!1),r==="linear")return t?Rp:mp;if(r==="relu")return t?Zc:Uc;if(r==="elu")return t?Yc:jc;if(r==="relu6")return t?qc:Hc;if(r==="prelu")return t?pc:dc;throw new Error("Activation "+r+" has not been implemented for the WebGL backend.")}var kp=600,$c=function(r){function t(e){var n,o=r.call(this)||this;if(o.pendingRead=new WeakMap,o.pendingDisposal=new WeakSet,o.dataRefCount=new WeakMap,o.numBytesInGPU=0,o.uploadWaitMs=0,o.downloadWaitMs=0,o.warnedAboutMemory=!1,o.pendingDeletes=0,o.disposed=!1,!J().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){var i=cr(J().getNumber("WEBGL_VERSION"));o.binaryCache=((n=J().getNumber("WEBGL_VERSION"))in Ni||(Ni[n]={}),Ni[n]),o.gpgpu=new Mc(i),o.canvas=i.canvas,o.gpgpuCreatedLocally=!0}else o.gpgpu=e,o.binaryCache={},o.gpgpuCreatedLocally=!1,o.canvas=e.gl.canvas;return o.textureManager=new dp(o.gpgpu),o.numMBBeforeWarning=J().global.screen==null?1024:J().global.screen.height*J().global.screen.width*window.devicePixelRatio*kp/1024/1024,o.texData=new ec(o,W),o}return Pe(t,r),t.prototype.numDataIds=function(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes},t.prototype.write=function(e,n,o){if(J().getBool("DEBUG")&&this.checkNumericalProblems(e),o==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");var i={};return this.texData.set(i,{shape:n,dtype:o,values:e,usage:wn.UPLOAD}),i},t.prototype.move=function(e,n,o,i){if(J().getBool("DEBUG")&&this.checkNumericalProblems(n),i==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:o,dtype:i,values:n,usage:wn.UPLOAD})},t.prototype.readSync=function(e){var n=this.texData.get(e),o=n.values,i=n.dtype,a=n.complexTensors,s=n.slice,u=n.shape,c=n.isPacked;if(s!=null){var l=void 0;l=c?new Ko(u,Pi):new ht(u,Pi);var f=this.runWebGLProgram(l,[{dataId:e,shape:u,dtype:i}],i),h=this.readSync(f.dataId);return this.disposeData(f.dataId),h}if(o!=null)return this.convertAndCacheOnCPU(e);if(i==="string")return o;var d,p,v=this.activeTimers!=null;return v&&(d=ee()),i==="complex64"?p=Ta(a.real.dataSync(),a.imag.dataSync()):p=this.getValuesFromTexture(e),v&&(this.downloadWaitMs+=ee()-d),this.convertAndCacheOnCPU(e,p)},t.prototype.read=function(e){return be(this,void 0,void 0,function(){var n,o,i,a,s,u,c,l,f,h,d,p,v,g,m,w,E,b,C,S,N,O;return Se(this,function(F){switch(F.label){case 0:if(this.pendingRead.has(e))return n=this.pendingRead.get(e),[2,new Promise(function(P){return n.push(P)})];if(o=this.texData.get(e),i=o.values,a=o.shape,s=o.slice,u=o.dtype,c=o.complexTensors,l=o.isPacked,s!=null)return f=void 0,f=l?new Ko(a,Pi):new ht(a,Pi),h=this.runWebGLProgram(f,[{dataId:e,shape:a,dtype:u}],u),d=this.read(h.dataId),this.disposeData(h.dataId),[2,d];if(i!=null)return[2,this.convertAndCacheOnCPU(e)];if(!J().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&J().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");return p=null,u!=="complex64"&&J().get("WEBGL_BUFFER_SUPPORTED")&&(v=this.decode(e),g=this.texData.get(v.dataId),p=(O=this.gpgpu).createBufferFromTexture.apply(O,[g.texture].concat(Mo(a)))),this.pendingRead.set(e,[]),u==="complex64"?[3,2]:[4,this.gpgpu.createAndWaitForFence()];case 1:F.sent(),F.label=2;case 2:return u!=="complex64"?[3,4]:[4,Promise.all([c.real.data(),c.imag.data()])];case 3:return w=F.sent(),E=w[0],b=w[1],m=Ta(E,b),[3,5];case 4:p==null?m=this.getValuesFromTexture(e):(C=Re(a),m=this.gpgpu.downloadFloat32MatrixFromBuffer(p,C)),F.label=5;case 5:return v!=null&&this.disposeData(v.dataId),S=this.convertAndCacheOnCPU(e,m),N=this.pendingRead.get(e),this.pendingRead.delete(e),N.forEach(function(P){return P(S)}),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e),this.pendingDeletes--),[2,S]}})})},t.prototype.checkNumericalProblems=function(e){if(e!=null)for(var n=0;n<e.length;n++){var o=e[n];if(!du(o))throw J().getBool("WEBGL_RENDER_FLOAT32_CAPABLE")?Error("The value "+o+" cannot be represented with your current settings. Consider enabling float32 rendering: 'tf.env().set('WEBGL_RENDER_FLOAT32_ENABLED', true);'"):Error("The value "+o+" cannot be represented on this device.")}},t.prototype.getValuesFromTexture=function(e){var n,o=this.texData.get(e),i=o.shape,a=o.dtype,s=o.isPacked,u=Re(i);if(J().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")){var c=this.decode(e),l=this.texData.get(c.dataId),f=(n=this.gpgpu).downloadMatrixFromPackedTexture.apply(n,[l.texture].concat(Mo(i))).subarray(0,u);return this.disposeData(c.dataId),f}var h=J().getBool("WEBGL_PACK")&&s===!0,d=h?gi(i):i,p=h?new Pd(d):new Fd(d),v=this.runWebGLProgram(p,[{shape:d,dtype:a,dataId:e}],"float32"),g=this.texData.get(v.dataId),m=this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(g.texture,g.texShape[0],g.texShape[1]).subarray(0,u);return this.disposeData(v.dataId),m},t.prototype.time=function(e){return be(this,void 0,void 0,function(){var n,o,i,a,s,u,c;return Se(this,function(l){switch(l.label){case 0:return n=this.activeTimers,o=[],i=!1,this.programTimersStack==null?(this.programTimersStack=o,i=!0):this.activeTimers.push(o),this.activeTimers=o,e(),a=Rt(this.activeTimers.map(function(f){return f.query})).filter(function(f){return f!=null}),s=Rt(this.activeTimers.map(function(f){return f.name})).filter(function(f){return f!=null}),this.activeTimers=n,i&&(this.programTimersStack=null),u={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null},J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?[4,Promise.all(a)]:[3,2];case 1:return c=l.sent(),u.kernelMs=Ge(c),u.getExtraProfileInfo=function(){return c.map(function(f,h){return{name:s[h],ms:f}}).map(function(f){return f.name+": "+f.ms}).join(", ")},[3,3];case 2:u.kernelMs={error:"WebGL query timers are not supported in this environment."},l.label=3;case 3:return this.uploadWaitMs=0,this.downloadWaitMs=0,[2,u]}})})},t.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU}},t.prototype.startTimer=function(){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:ee(),endMs:null}},t.prototype.endTimer=function(e){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=ee(),e)},t.prototype.getQueryTime=function(e){return be(this,void 0,void 0,function(){var n;return Se(this,function(o){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?[2,this.gpgpu.waitForQueryAndGetTime(e)]:[2,(n=e).endMs-n.startMs]})})},t.prototype.disposeData=function(e){if(!this.pendingDisposal.has(e)){if(this.pendingRead.has(e))return this.pendingDisposal.add(e),void this.pendingDeletes++;if(this.texData.has(e)){this.releaseGPUData(e);var n=this.texData.get(e).complexTensors;n!=null&&(n.real.dispose(),n.imag.dispose()),this.texData.delete(e)}}},t.prototype.releaseGPUData=function(e){var n=this.texData.get(e),o=n.texture,i=n.dtype,a=n.texShape,s=n.usage,u=n.isPacked,c=n.slice,l=c&&c.origDataId||e,f=this.dataRefCount.get(l);f>1?this.dataRefCount.set(l,f-1):(this.dataRefCount.delete(l),o!=null&&(this.numBytesInGPU-=this.computeBytes(a,i),this.textureManager.releaseTexture(o,a,s,u)));var h=this.texData.get(e);h.texture=null,h.texShape=null,h.isPacked=!1,h.slice=null},t.prototype.getTexture=function(e){return this.uploadToGPU(e),this.texData.get(e).texture},t.prototype.getDataInfo=function(e){return this.texData.get(e)},t.prototype.getCPUBackend=function(){return J().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=W.findBackend("cpu")),this.cpuBackend):null},t.prototype.shouldExecuteOnCPU=function(e,n){var o=this;return n===void 0&&(n=128),this.getCPUBackend()!=null&&e.every(function(i){return o.texData.get(i.dataId).texture==null&&i.size<n})},t.prototype.getGPGPUContext=function(){return this.gpgpu},t.prototype.complex=function(e,n){var o=this.makeOutput(e.shape,"complex64");return this.texData.get(o.dataId).complexTensors={real:W.keep(e.clone()),imag:W.keep(n.clone())},o},t.prototype.real=function(e){return this.texData.get(e.dataId).complexTensors.real.clone()},t.prototype.imag=function(e){return this.texData.get(e.dataId).complexTensors.imag.clone()},t.prototype.slice=function(e,n,o){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.slice(e,n,o);if(Re(o)===0)return Tn([],o,e.dtype);var i=this.texData.get(e.dataId).isPacked,a=Ca(e.shape,n,o);if(i||!a){var s=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new fp(o):new lp(o),u=s.getCustomSetupFunc(n);return this.compileAndRun(s,[e],null,u)}return this.uploadToGPU(e.dataId),this.shallowSlice(e,n,o)},t.prototype.shallowSlice=function(e,n,o){var i=this.texData.get(e.dataId),a=this.makeOutput(o,e.dtype),s=this.texData.get(a.dataId);Object.assign(s,i),s.shape=o,s.dtype=e.dtype;var u=Ia(n,e.strides);i.slice&&(u+=i.slice.flatOffset),s.slice={flatOffset:u,origDataId:i.slice&&i.slice.origDataId||e.dataId};var c=this.dataRefCount.get(s.slice.origDataId)||1;return this.dataRefCount.set(s.slice.origDataId,c+1),a},t.prototype.stridedSlice=function(e,n,o,i){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.stridedSlice(e,n,o,i);var a=Si(n,o,i);if(a.some(function(u){return u===0}))return Tn([],a);var s=new hp(n,i,a);return this.compileAndRun(s,[e])},t.prototype.reverse=function(e,n){var o=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new sp(e.shape,n):new ap(e.shape,n);return this.compileAndRun(o,[e])},t.prototype.concat=function(e,n){if(e[0].dtype==="complex64"){var o=e.map(function(d){return Zn(d)}),i=e.map(function(d){return fr(d)});return kn(this.concat(o,n),this.concat(i,n))}if(this.shouldExecuteOnCPU(e))return this.cpuBackend.concat(e,n);if(e.length===1)return e[0];if(e.length>J().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){var a=Math.floor(e.length/2),s=this.concat(e.slice(0,a),n),u=this.concat(e.slice(a),n);return this.concat([s,u],n)}if(J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].rank>1){var c=new Ad(e.map(function(d){return d.shape}),n);return this.compileAndRun(c,e)}var l=Kr(e.map(function(d){return d.shape}),n),f=e.map(function(d){return d.as2D(-1,Re(d.shape.slice(n)))}),h=new md(f.map(function(d){return d.shape}));return this.compileAndRun(h,f).reshape(l)},t.prototype.neg=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.neg(e);if(J().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Vc,e.dtype);var n=new ht(e.shape,Vc);return this.compileAndRun(n,[e])},t.prototype.batchMatMul=function(e,n,o,i){var a=o?e.shape[2]:e.shape[1],s=i?n.shape[1]:n.shape[2],u=o?e.shape[1]:e.shape[2],c=e.shape[0];if((a===1||s===1)&&u>1e3){o&&(e=e.transpose([0,2,1])),i&&(n=n.transpose([0,2,1]));var l=s===1?e:e.as3D(c,u,1),f=s===1?2:1,h=s===1?n.as3D(c,1,u):n;return this.multiply(l,h).sum(f,!0)}var d=Lt(e.dtype,n.dtype),p=new La(e.shape,[c,a,s],o,i);return this.compileAndRun(p,[e,n],d)},t.prototype.fusedBatchMatMul=function(e){var n=e.a,o=e.b,i=e.transposeA,a=e.transposeB,s=e.bias,u=e.activation,c=e.preluActivationWeights,l=i?n.shape[2]:n.shape[1],f=a?o.shape[1]:o.shape[2],h=n.shape[0],d=Lt(n.dtype,o.dtype),p=s!=null,v=c!=null,g=u?Oi(u,!0):null,m=new La(n.shape,[h,l,f],i,a,p,g,v),w=[n,o];return s&&w.push(s),c&&w.push(c),this.compileAndRun(m,w,d)},t.prototype.multiply=function(e,n){if(e.dtype==="complex64"){var o=this.texData.get(e.dataId),i=this.texData.get(n.dataId),a=new fc(hd,e.shape,n.shape),s=new fc(dd,e.shape,n.shape),u=[this.makeComplexComponentTensorInfo(e,o.complexTensors.real),this.makeComplexComponentTensorInfo(e,o.complexTensors.imag),this.makeComplexComponentTensorInfo(n,i.complexTensors.real),this.makeComplexComponentTensorInfo(n,i.complexTensors.imag)],c=this.compileAndRun(a,u),l=this.compileAndRun(s,u),f=this.complex(c,l);return c.dispose(),l.dispose(),f}if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.multiply(e,n);if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,hc,e.dtype);var h=new sn(hc,e.shape,n.shape);return this.compileAndRun(h,[e,n],e.dtype)},t.prototype.batchNormalization=function(e,n,o,i,a,s){var u=[e,n,o],c=null;s!=null&&(c=s.shape,u.push(s));var l=null;if(a!=null&&(l=a.shape,u.push(a)),J().getBool("WEBGL_PACK_NORMALIZATION")){var f=new fd(e.shape,n.shape,o.shape,c,l,i);return this.compileAndRun(f,u)}var h=new ld(e.shape,n.shape,o.shape,c,l,i);return this.compileAndRun(h,u)},t.prototype.localResponseNormalization4D=function(e,n,o,i,a){var s=J().getBool("WEBGL_PACK_NORMALIZATION")?new Vd(e.shape,n,o,i,a):new Hd(e.shape,n,o,i,a);return this.compileAndRun(s,[e])},t.prototype.LRNGrad=function(e,n,o,i,a,s,u){var c=new jd(n.shape,i,a,s,u);return this.compileAndRun(c,[n,o,e])},t.prototype.tile=function(e,n){if(e.dtype==="string"){var o=this.readSync(e.dataId).map(function(a){return Oe(a)});return ac(ot(e.shape,e.dtype,o),n)}var i=new pp(e.shape,n);return this.compileAndRun(i,[e])},t.prototype.pad=function(e,n,o){var i=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Yd(e.shape,n,o):new qd(e.shape,n,o);return this.compileAndRun(i,[e])},t.prototype.transpose=function(e,n){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.transpose(e,n);var o=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new gp(e.shape,n):new vp(e.shape,n);return this.compileAndRun(o,[e])},t.prototype.gather=function(e,n,o){if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.gather(e,n,o);var i=new _d(e.shape,n.size,o);return this.compileAndRun(i,[e,n])},t.prototype.batchToSpaceND=function(e,n,o){B(e.rank<=4,function(){return"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"});var i=n.reduce(function(f,h){return f*h}),a=wi(e.shape,n,i),s=Ei(a.length,n.length),u=Ci(e.shape,n,i),c=Xu(o,n.length),l=Ju(u,o,n.length);return e.reshape(a).transpose(s).reshape(u).slice(c,l)},t.prototype.spaceToBatchND=function(e,n,o){B(e.rank<=4,function(){return"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"});var i=n.reduce(function(h,d){return h*d}),a=[[0,0]];a.push.apply(a,o);for(var s=1+n.length;s<e.shape.length;++s)a.push([0,0]);var u=e.pad(a),c=wi(u.shape,n,i,!1),l=Ei(c.length,n.length,!1),f=Ci(u.shape,n,i,!1);return u.reshape(c).transpose(l).reshape(f)},t.prototype.reduce=function(e,n,o){var i=e.shape[0],a=e.shape[1],s=Ii(a),u=new $d({windowSize:s,inSize:a,batchSize:i},n),c=this.compileAndRun(u,[e],o);return c.shape[1]===1?c:this.reduce(c,n,o)},t.prototype.argReduce=function(e,n,o){o===void 0&&(o=null);var i=e.shape[0],a=e.shape[1];o!=null&&(i=o.shape[0],a=o.shape[1]);var s=Ii(a),u=new td({windowSize:s,inSize:a,batchSize:i},n,o==null),c=[e];o!=null&&c.push(o);var l=this.compileAndRun(u,c,"int32");return l.shape[1]===1?l:this.argReduce(e,n,l)},t.prototype.argReducePacked=function(e,n,o){o===void 0&&(o=null);var i=o!=null?o.shape:e.shape,a=Ii(i[i.length-1]),s=new sd(i,a,n,o==null),u=o==null?[e]:[e,o],c=this.compileAndRun(s,u,"int32");return c.rank===e.rank?this.argReducePacked(e,n,c):c},t.prototype.sum=function(e,n){_n("sum",n,e.rank);var o=Bn(e.shape,n),i=o[0],a=Re(o[1]),s=e.as2D(-1,a),u=pn(e.dtype);return this.reduce(s,"sum",u).reshape(i)},t.prototype.prod=function(e,n){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.prod(e,n);var o=Bn(e.shape,n),i=o[0],a=Re(o[1]),s=e.as2D(-1,a),u=pn(e.dtype);return this.reduce(s,"prod",u).reshape(i)},t.prototype.unsortedSegmentSum=function(e,n,o){var i=0,a=tr([i],e.rank),s=e;a!=null&&(s=e.transpose(a),i=nr(1,e.rank)[0]);var u=function(d,p,v){for(var g=[],m=d.length,w=0;w<m;w++)w!==p?g.push(d[w]):g.push(v);return g}(s.shape,i,o),c=Re([s.shape[i]]),l=s.as2D(-1,c),f=pn(e.dtype),h=this.segOpCompute(l,"unsortedSegmentSum",n,f,o).reshape(u);return a!=null&&(h=h.transpose(yi(a))),h},t.prototype.segOpCompute=function(e,n,o,i,a){var s=e.shape[0],u=e.shape[1],c=function(h,d){var p,v=!1;for(h<=wa?(p=h,v=!0):p=Ft(h,Math.floor(Math.sqrt(h)));!v;)p>d||p===h?v=!0:p=Ft(h,p+1);return p}(u,a),l=new up({windowSize:c,inSize:u,batchSize:s,numSegments:a},n),f=this.compileAndRun(l,[e,o],i);return f.shape[1]===a?f:(o=xi(0,a).tile([u/c]),this.segOpCompute(f,n,o,i,a))},t.prototype.argMinMaxReduce=function(e,n,o){var i=[n];if(_n("arg"+o.charAt(0).toUpperCase()+o.slice(1),i,e.rank),!J().getBool("WEBGL_PACK_REDUCE")||e.rank<=2){var a=Bn(e.shape,i),s=a[0],u=Re(a[1]),c=e.as2D(-1,u);return this.argReduce(c,o).reshape(s)}return this.argReducePacked(e,o)},t.prototype.argMin=function(e,n){return this.argMinMaxReduce(e,n,"min")},t.prototype.argMax=function(e,n){return this.argMinMaxReduce(e,n,"max")},t.prototype.cumsum=function(e,n,o,i){if(n!==e.rank-1)throw new Error("WebGL cumsum shader expects an inner-most axis="+(e.rank-1)+" but got axis="+n);var a=new Rd(e.shape,o,i);return this.compileAndRun(a,[e])},t.prototype.equal=function(e,n){if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
return vec4(equal(a, b));
`,"bool");var o=new sn("return float(a == b);",e.shape,n.shape);return this.compileAndRun(o,[e,n],"bool")},t.prototype.notEqual=function(e,n){if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
return vec4(notEqual(a, b));
`,"bool");var o=new sn("return float(a != b);",e.shape,n.shape);return this.compileAndRun(o,[e,n],"bool")},t.prototype.less=function(e,n){if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.less(e,n);if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
return vec4(lessThan(a, b));
`,"bool");var o=new sn("return float(a < b);",e.shape,n.shape);return this.compileAndRun(o,[e,n],"bool")},t.prototype.lessEqual=function(e,n){if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
return vec4(lessThanEqual(a, b));
`,"bool");var o=new sn("return float(a <= b);",e.shape,n.shape);return this.compileAndRun(o,[e,n],"bool")},t.prototype.greater=function(e,n){if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.greater(e,n);if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
return vec4(greaterThan(a, b));
`,"bool");var o=new sn("return float(a > b);",e.shape,n.shape);return this.compileAndRun(o,[e,n],"bool")},t.prototype.greaterEqual=function(e,n){if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
return vec4(greaterThanEqual(a, b));
`,"bool");var o=new sn("return float(a >= b);",e.shape,n.shape);return this.compileAndRun(o,[e,n],"bool")},t.prototype.logicalNot=function(e){var n=new ht(e.shape,"return float(!(x >= 1.0));");return this.compileAndRun(n,[e])},t.prototype.logicalAnd=function(e,n){if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
return vec4(
vec4(greaterThanEqual(a, vec4(1.0))) *
vec4(greaterThanEqual(b, vec4(1.0))));
`,"bool");var o=new sn("return float(a >= 1.0 && b >= 1.0);",e.shape,n.shape);return this.compileAndRun(o,[e,n],"bool")},t.prototype.logicalOr=function(e,n){if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
return min(
vec4(greaterThanEqual(a, vec4(1.0))) +
vec4(greaterThanEqual(b, vec4(1.0))),
vec4(1.0));
`,"bool");var o=new sn("return float(a >= 1.0 || b >= 1.0);",e.shape,n.shape);return this.compileAndRun(o,[e,n],"bool")},t.prototype.select=function(e,n,o){var i=new cp(e.rank,n.shape,n.rank);return this.compileAndRun(i,[e,n,o],Lt(n.dtype,o.dtype))},t.prototype.where=function(e){Ai("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");var n=e.dataSync();return Pa(e.shape,n)},t.prototype.topk=function(e,n,o){return sc(e.dataSync(),e.shape,e.dtype,n)},t.prototype.min=function(e,n){_n("min",n,e.rank);var o=Bn(e.shape,n),i=o[0],a=Re(o[1]),s=e.as2D(-1,a);return this.reduce(s,"min",s.dtype).reshape(i)},t.prototype.minimum=function(e,n){if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.minimum(e,n);var o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Sr(`
vec4 result = vec4(min(a, b));
vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));
result.r = isNaN.r > 0. ? NAN : result.r;
result.g = isNaN.g > 0. ? NAN : result.g;
result.b = isNaN.b > 0. ? NAN : result.b;
result.a = isNaN.a > 0. ? NAN : result.a;
return result;
`,e.shape,n.shape):new sn(`
if (isnan(a)) return a;
if (isnan(b)) return b;
return min(a, b);
`,e.shape,n.shape);return this.compileAndRun(o,[e,n])},t.prototype.mod=function(e,n){var o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Sr(`
vec4 result = mod(a, b);
vec4 isNaN = vec4(equal(b, vec4(0.0)));
result.r = isNaN.r > 0. ? NAN : result.r;
result.g = isNaN.g > 0. ? NAN : result.g;
result.b = isNaN.b > 0. ? NAN : result.b;
result.a = isNaN.a > 0. ? NAN : result.a;
return result;
`,e.shape,n.shape):new sn(`if (b == 0.0) return NAN;
return mod(a, b);`,e.shape,n.shape);return this.compileAndRun(o,[e,n])},t.prototype.max=function(e,n){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.max(e,n);_n("max",n,e.rank);var o=Bn(e.shape,n),i=o[0],a=Re(o[1]),s=e.as2D(-1,a);return this.reduce(s,"max",s.dtype).reshape(i)},t.prototype.maximum=function(e,n){if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.maximum(e,n);var o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Sr(`
vec4 result = vec4(max(a, b));
vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));
result.r = isNaN.r > 0. ? NAN : result.r;
result.g = isNaN.g > 0. ? NAN : result.g;
result.b = isNaN.b > 0. ? NAN : result.b;
result.a = isNaN.a > 0. ? NAN : result.a;
return result;
`,e.shape,n.shape):new sn(`
if (isnan(a)) return a;
if (isnan(b)) return b;
return max(a, b);
`,e.shape,n.shape);return this.compileAndRun(o,[e,n])},t.prototype.all=function(e,n){_n("all",n,e.rank);var o=Bn(e.shape,n),i=o[0],a=Re(o[1]),s=e.as2D(-1,a);return this.reduce(s,"all",s.dtype).reshape(i)},t.prototype.any=function(e,n){_n("any",n,e.rank);var o=Bn(e.shape,n),i=o[0],a=Re(o[1]),s=e.as2D(-1,a);return this.reduce(s,"any",s.dtype).reshape(i)},t.prototype.realDivide=function(e,n){if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
// vec4 one = vec4(equal(a, b));
// return one + (vec4(1.0) - one) * a / b;
vec4 result = a / b;
if(a.x == b.x) {
result.x = 1.;
}
if(a.y == b.y) {
result.y = 1.;
}
if(a.z == b.z) {
result.z = 1.;
}
if(a.w == b.w) {
result.w = 1.;
}
return result;
`,"float32",!0);var o=new sn(`
if (a == b) {
return 1.0;
};
return a / b;`,e.shape,n.shape);return this.compileAndRun(o,[e,n],"float32")},t.prototype.floorDiv=function(e,n){if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
ivec4 ia = round(a);
ivec4 ib = round(b);
bvec4 cond = notEqual(ib, ivec4(0));
ivec4 result = ivec4(0);
vec4 s = sign(a) * sign(b);
// Windows (D3D) wants guaranteed non-zero int division at compile-time.
if (cond[0]) {
result[0] = idiv(ia[0], ib[0], s[0]);
}
if (cond[1]) {
result[1] = idiv(ia[1], ib[1], s[1]);
}
if (cond[2]) {
result[2] = idiv(ia[2], ib[2], s[2]);
}
if (cond[3]) {
result[3] = idiv(ia[3], ib[3], s[3]);
}
return vec4(result);
`,"int32");var o=new sn(`
float s = sign(a) * sign(b);
int ia = round(a);
int ib = round(b);
if (ib != 0) {
// Windows (D3D) wants guaranteed non-zero int division at compile-time.
return float(idiv(ia, ib, s));
} else {
return NAN;
}
`,e.shape,n.shape);return this.compileAndRun(o,[e,n],"int32")},t.prototype.add=function(e,n){if(e.dtype==="complex64"&&n.dtype==="complex64")return this.complexSeparableBinaryOp(e,n,Oa);if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.add(e,n);var o=Lt(e.dtype,n.dtype);if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,Oa,o);var i=new sn(Oa,e.shape,n.shape);return this.compileAndRun(i,[e,n],o)},t.prototype.packedUnaryOp=function(e,n,o){var i=new Ko(e.shape,n);return this.compileAndRun(i,[e],o)},t.prototype.packedBinaryOp=function(e,n,o,i,a){a===void 0&&(a=!1);var s=new Sr(o,e.shape,n.shape,a);return this.compileAndRun(s,[e,n],i)},t.prototype.complexSeparableBinaryOp=function(e,n,o){var i=this,a=this.texData.get(e.dataId),s=this.texData.get(n.dataId),u=[[a.complexTensors.real,s.complexTensors.real],[a.complexTensors.imag,s.complexTensors.imag]].map(function(h){var d=h[0],p=h[1],v=i.makeComplexComponentTensorInfo(e,d),g=i.makeComplexComponentTensorInfo(n,p),m=new sn(o,e.shape,n.shape);return i.compileAndRun(m,[v,g],Lt(d.dtype,p.dtype))}),c=u[0],l=u[1],f=this.complex(c,l);return c.dispose(),l.dispose(),f},t.prototype.makeComplexComponentTensorInfo=function(e,n){return{dataId:n.dataId,dtype:n.dtype,shape:e.shape}},t.prototype.addN=function(e){if(e.length===1)return e[0];if(e.length>J().get("WEBGL_MAX_TEXTURES_IN_SHADER")){var n=Math.floor(e.length/2),o=this.addN(e.slice(0,n)),i=this.addN(e.slice(n));return this.addN([o,i])}var a=e.map(function(c){return c.dtype}).reduce(function(c,l){return Lt(c,l)}),s=e.map(function(c){return c.shape}),u=J().getBool("WEBGL_PACK")?new ed(e[0].shape,s):new $h(e[0].shape,s);return this.compileAndRun(u,e,a)},t.prototype.subtract=function(e,n){if(e.dtype==="complex64"&&n.dtype==="complex64")return this.complexSeparableBinaryOp(e,n,Ma);if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.subtract(e,n);var o=Lt(e.dtype,n.dtype);if(J().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,Ma,e.dtype);var i=new sn(Ma,e.shape,n.shape);return this.compileAndRun(i,[e,n],o)},t.prototype.pow=function(e,n){var o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Sr(`
// isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.
vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));
vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);
vec4 result = multiplier * pow(abs(a), b);
// Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS
bvec4 isExpZero = equal(b, vec4(0.0));
result.r = isExpZero.r ? 1.0 : result.r;
result.g = isExpZero.g ? 1.0 : result.g;
result.b = isExpZero.b ? 1.0 : result.b;
result.a = isExpZero.a ? 1.0 : result.a;
vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b));
result.r = isNaN.r > 0. ? NAN : result.r;
result.g = isNaN.g > 0. ? NAN : result.g;
result.b = isNaN.b > 0. ? NAN : result.b;
result.a = isNaN.a > 0. ? NAN : result.a;
return result;
`,e.shape,n.shape):new sn(`
if(a < 0.0 && floor(b) < b){
return NAN;
}
if (b == 0.0) {
return 1.0;
}
return (round(mod(b, 2.0)) != 1) ?
pow(abs(a), b) : sign(a) * pow(abs(a), b);
`,e.shape,n.shape),i=Lt(e.dtype,n.dtype);return this.compileAndRun(o,[e,n],i)},t.prototype.ceil=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.ceil(e);if(J().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Gc,e.dtype);var n=new ht(e.shape,Gc);return this.compileAndRun(n,[e])},t.prototype.floor=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.floor(e);if(J().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Xc,e.dtype);var n=new ht(e.shape,Xc);return this.compileAndRun(n,[e])},t.prototype.sign=function(e){var n=new ht(e.shape,`
if (isnan(x)) { return 0.0; }
return sign(x);
`);return this.compileAndRun(n,[e])},t.prototype.isNaN=function(e){var n=new ht(e.shape,"return float(isnan(x));");return this.compileAndRun(n,[e],"bool")},t.prototype.isInf=function(e){var n=new ht(e.shape,"return float(isinf(x));");return this.compileAndRun(n,[e],"bool")},t.prototype.isFinite=function(e){var n=new ht(e.shape,"return float(!isnan(x) && !isinf(x));");return this.compileAndRun(n,[e],"bool")},t.prototype.round=function(e){var n=new ht(e.shape,`
// OpenGL ES does not support round function.
// The algorithm is based on banker's rounding.
float base = floor(x);
if ((x - base) < 0.5) {
return floor(x);
} else if ((x - base) > 0.5) {
return ceil(x);
} else {
if (mod(base, 2.0) == 0.0) {
return base;
} else {
return base + 1.0;
}
}
`);return this.compileAndRun(n,[e])},t.prototype.exp=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.exp(e);if(J().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Jc,e.dtype);var n=new ht(e.shape,Jc);return this.compileAndRun(n,[e])},t.prototype.expm1=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.expm1(e);if(J().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Kc,e.dtype);var n=new ht(e.shape,Kc);return this.compileAndRun(n,[e])},t.prototype.softmax=function(e,n){var o=Dt([n],e.shape),i=this.max(e,o),a=Mn(i.shape,o),s=this.subtract(e,i.reshape(a)),u=this.exp(s),c=this.sum(u,o).reshape(a);return this.realDivide(u,c)},t.prototype.log=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.log(e);if(J().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,`
vec4 result = log(x);
vec4 isNaN = vec4(lessThan(x, vec4(0.0)));
result.r = isNaN.r == 1.0 ? NAN : result.r;
result.g = isNaN.g == 1.0 ? NAN : result.g;
result.b = isNaN.b == 1.0 ? NAN : result.b;
result.a = isNaN.a == 1.0 ? NAN : result.a;
return result;
`,e.dtype);var n=new ht(e.shape,`if (x < 0.0) return NAN;
return log(x);`);return this.compileAndRun(n,[e])},t.prototype.log1p=function(e){var n=new ht(e.shape,"return log(1.0 + x);");return this.compileAndRun(n,[e])},t.prototype.sqrt=function(e){var n=new ht(e.shape,"return sqrt(x);");return this.compileAndRun(n,[e])},t.prototype.rsqrt=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.rsqrt(e);var n=new ht(e.shape,"return inversesqrt(x);");return this.compileAndRun(n,[e])},t.prototype.reciprocal=function(e){var n=new ht(e.shape,"return 1.0 / x;");return this.compileAndRun(n,[e])},t.prototype.relu=function(e){var n;return n=J().getBool("WEBGL_PACK")?new Ko(e.shape,Zc):new ht(e.shape,Uc),this.compileAndRun(n,[e])},t.prototype.relu6=function(e){var n;return n=J().getBool("WEBGL_PACK")?new Ko(e.shape,qc):new ht(e.shape,Hc),this.compileAndRun(n,[e])},t.prototype.prelu=function(e,n){var o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Sr(pc,e.shape,n.shape):new sn(dc,e.shape,n.shape);return this.compileAndRun(o,[e,n])},t.prototype.elu=function(e){if(J().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Yc,e.dtype);var n=new ht(e.shape,jc);return this.compileAndRun(n,[e])},t.prototype.eluDer=function(e,n){var o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Sr(`
vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));
return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));
`,e.shape,n.shape):new sn("return (b >= 1.0) ? a : a * (b + 1.0);",e.shape,n.shape);return this.compileAndRun(o,[e,n])},t.prototype.selu=function(e){var n=new ht(e.shape,Ap);return this.compileAndRun(n,[e])},t.prototype.int=function(e){var n=new ht(e.shape,"return float(int(x));");return this.compileAndRun(n,[e],"int32")},t.prototype.clip=function(e,n,o){var i,a=(i=J().getBool("WEBGL_PACK_CLIP")?new vd(e.shape):new pd(e.shape)).getCustomSetupFunc(n,o);return this.compileAndRun(i,[e],null,a)},t.prototype.abs=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.abs(e);if(J().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,zc,e.dtype);var n=new ht(e.shape,zc);return this.compileAndRun(n,[e])},t.prototype.complexAbs=function(e){var n=this.texData.get(e.dataId),o=new gd(e.shape),i=[this.makeComplexComponentTensorInfo(e,n.complexTensors.real),this.makeComplexComponentTensorInfo(e,n.complexTensors.imag)];return this.compileAndRun(o,i)},t.prototype.sigmoid=function(e){var n=new ht(e.shape,"return 1.0 / (1.0 + exp(-1.0 * x));");return this.compileAndRun(n,[e])},t.prototype.softplus=function(e){var n=new ht(e.shape,`
float epsilon = 1.1920928955078125e-7;
float threshold = log(epsilon) + 2.0;
bool too_large = x > -threshold;
bool too_small = x < threshold;
float result;
float exp_x = exp(x);
if (too_large){
result = x;
}
else if (too_small){
result = exp_x;
}
else{
result = log(exp_x + 1.0);
}
return result;
`);return this.compileAndRun(n,[e])},t.prototype.sin=function(e){var n=new ht(e.shape,yp);return this.compileAndRun(n,[e])},t.prototype.cos=function(e){var n=new ht(e.shape,xp);return this.compileAndRun(n,[e])},t.prototype.tan=function(e){var n=new ht(e.shape,"return tan(x);");return this.compileAndRun(n,[e])},t.prototype.asin=function(e){var n=new ht(e.shape,bp);return this.compileAndRun(n,[e])},t.prototype.acos=function(e){var n=new ht(e.shape,wp);return this.compileAndRun(n,[e])},t.prototype.atan=function(e){var n=new ht(e.shape,Ep);return this.compileAndRun(n,[e])},t.prototype.atan2=function(e,n){var o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Sr(`
vec4 result = atan(a, b);
vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));
result.r = isNaN.r > 0. ? NAN : result.r;
result.g = isNaN.g > 0. ? NAN : result.g;
result.b = isNaN.b > 0. ? NAN : result.b;
result.a = isNaN.a > 0. ? NAN : result.a;
return result;
`,e.shape,n.shape):new sn(`
if (isnan(a)) return a;
if (isnan(b)) return b;
return atan(a, b);
`,e.shape,n.shape);return this.compileAndRun(o,[e,n])},t.prototype.sinh=function(e){var n=new ht(e.shape,`
float e2x = exp(x);
return (e2x - 1.0 / e2x) / 2.0;
`);return this.compileAndRun(n,[e])},t.prototype.cosh=function(e){var n=new ht(e.shape,`
float e2x = exp(-x);
return (e2x + 1.0 / e2x) / 2.0;
`);return this.compileAndRun(n,[e])},t.prototype.tanh=function(e){var n=new ht(e.shape,`
float e2x = exp(-2.0 * abs(x));
return sign(x) * (1.0 - e2x) / (1.0 + e2x);
`);return this.compileAndRun(n,[e])},t.prototype.asinh=function(e){var n=new ht(e.shape,Cp);return this.compileAndRun(n,[e])},t.prototype.acosh=function(e){var n=new ht(e.shape,Ip);return this.compileAndRun(n,[e])},t.prototype.atanh=function(e){var n=new ht(e.shape,Sp);return this.compileAndRun(n,[e])},t.prototype.erf=function(e){var n=new ht(e.shape,`
// Error function is calculated approximately with elementary function.
// See "Handbook of Mathematical Functions with Formulas,
// Graphs, and Mathematical Tables", Abramowitz and Stegun.
float p = 0.3275911;
float a1 = 0.254829592;
float a2 = -0.284496736;
float a3 = 1.421413741;
float a4 = -1.453152027;
float a5 = 1.061405429;
float sign = sign(x);
x = abs(x);
float t = 1.0 / (1.0 + p * x);
return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));
`);return this.compileAndRun(n,[e])},t.prototype.step=function(e,n){var o=new ht(e.shape,function(i){return i===void 0&&(i=0),or+`
return x > 0.0 ? 1.0 : float(`+i+`);
`}(n));return this.compileAndRun(o,[e])},t.prototype.conv2dByMatMul=function(e,n,o,i,a,s){var u=e.shape,c=this.texData.get(e.dataId),l=o.inChannels,f=u[0]*u[1]*u[2],h=o.outChannels,d=o.dataFormat==="channelsLast",p=(f===1||h===1)&&l>1e3,v=u[2]%2!=0&&!!c.isPacked;if(p||!J().getBool("WEBGL_LAZILY_UNPACK")||!J().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!v){var g=d?u[0]*u[1]*u[2]:u[0]*u[2]*u[3],m=this.reshape(e,[1,g,o.inChannels]),w=this.reshape(n,[1,o.inChannels,o.outChannels]);return this.reshape(this.fusedBatchMatMul({a:m,b:w,transposeA:!1,transposeB:!1,bias:i,activation:a,preluActivationWeights:s}),o.outShape)}var E=d?u[0]*u[1]*(u[2]+1):u[0]*u[2]*(u[3]+1),b={dataId:e.dataId,shape:[1,E,o.inChannels],dtype:e.dtype},C=c.shape;c.shape=c.shape.slice(),c.shape[c.shape.length-2]++,B(Uo(c.shape,b.shape),function(){return"packed reshape "+c.shape+" to "+b.shape+" isn't free"});var S=this.reshape(n,[1,o.inChannels,o.outChannels]),N=this.fusedBatchMatMul({a:b,b:S,transposeA:!1,transposeB:!1,bias:i,activation:a,preluActivationWeights:s}),O=this.texData.get(N.dataId);return B(O.isPacked,function(){return"batchMatMul result is expected to be packed"}),c.shape=C,O.shape=o.outShape,W.makeTensorFromDataId(N.dataId,o.outShape,N.dtype)},t.prototype.conv2dWithIm2Row=function(e,n,o,i,a,s){var u=o.filterWidth,c=o.filterHeight,l=o.inChannels,f=o.outWidth,h=o.outHeight,d=o.dataFormat==="channelsLast",p=u*c*l,v=h*f,g=[p,v],m=e.squeeze([0]),w=n.reshape([1,p,-1]),E=new Ud(g,m.shape,o),b=this.compileAndRun(E,[m]).reshape([1,g[0],g[1]]),C=i!=null,S=s!=null,N=a?Oi(a,!0):null,O=new La(b.shape,[1,v,o.outChannels],!0,!1,C,N,S),F=[b,w];i&&F.push(i),S&&F.push(s);var P=this.compileAndRun(O,F);return d?P.reshape([1,h,f,o.outChannels]):P.reshape([1,o.outChannels,h,f])},t.prototype.fusedConv2d=function(e){var n=e.input,o=e.filter,i=e.convInfo,a=e.bias,s=e.activation,u=e.preluActivationWeights;if(i.filterHeight===1&&i.filterWidth===1&&i.dilationHeight===1&&i.dilationWidth===1&&i.strideHeight===1&&i.strideWidth===1&&(i.padInfo.type==="SAME"||i.padInfo.type==="VALID"))return this.conv2dByMatMul(n,o,i,a,s,u);if(J().getBool("WEBGL_CONV_IM2COL")&&n.shape[0]===1)return this.conv2dWithIm2Row(n,o,i,a,s,u);var c=a!=null,l=u!=null,f=s?Oi(s,!1):null,h=new vc(i,c,f,l),d=[n,o];return a&&d.push(a),u&&d.push(u),this.compileAndRun(h,d)},t.prototype.conv2d=function(e,n,o){if(o.filterHeight===1&&o.filterWidth===1&&o.dilationHeight===1&&o.dilationWidth===1&&o.strideHeight===1&&o.strideWidth===1&&(o.padInfo.type==="SAME"||o.padInfo.type==="VALID"))return this.conv2dByMatMul(e,n,o);if(J().getBool("WEBGL_CONV_IM2COL")&&e.shape[0]===1)return this.conv2dWithIm2Row(e,n,o);var i=new vc(o);return this.compileAndRun(i,[e,n])},t.prototype.conv2dDerInput=function(e,n,o){var i=new xd(o);return this.compileAndRun(i,[e,n])},t.prototype.conv2dDerFilter=function(e,n,o){var i=new yd(o);return this.compileAndRun(i,[e,n])},t.prototype.fusedDepthwiseConv2D=function(e){var n,o=e.input,i=e.filter,a=e.convInfo,s=e.bias,u=e.activation,c=e.preluActivationWeights,l=J().getBool("WEBGL_PACK_DEPTHWISECONV")&&a.strideWidth<=2&&a.outChannels/a.inChannels==1,f=u?Oi(u,l):null,h=[o,i],d=s!=null,p=c!=null;return d&&h.push(s),p&&h.push(c),l?(n=new mc(a,d,f,p),this.compileAndRun(n,h)):(n=new gc(a,d,f,p),this.compileAndRun(n,h))},t.prototype.depthwiseConv2D=function(e,n,o){var i;return J().getBool("WEBGL_PACK_DEPTHWISECONV")&&o.strideWidth<=2&&o.outChannels/o.inChannels==1?(i=new mc(o),this.compileAndRun(i,[e,n])):(i=new gc(o),this.compileAndRun(i,[e,n]))},t.prototype.depthwiseConv2DDerInput=function(e,n,o){var i=new Cd(o);return this.compileAndRun(i,[e,n])},t.prototype.depthwiseConv2DDerFilter=function(e,n,o){var i=new Ed(o);return this.compileAndRun(i,[e,n])},t.prototype.conv3d=function(e,n,o){var i=new Id(o);return this.compileAndRun(i,[e,n])},t.prototype.conv3dDerInput=function(e,n,o){var i=new wd(o);return this.compileAndRun(i,[e,n])},t.prototype.conv3dDerFilter=function(e,n,o){var i=new bd(o);return this.compileAndRun(i,[e,n])},t.prototype.maxPool=function(e,n){var o=new Wa(n,"max",!1);return this.compileAndRun(o,[e])},t.prototype.avgPool=function(e,n){var o=new Wa(n,"avg",!1);return this.compileAndRun(o,[e],"float32")},t.prototype.maxPoolBackprop=function(e,n,o,i){var a=new Wa(i,"max",!0),s=this.compileAndRun(a,[n]),u=new Gd(i),c=this.compileAndRun(u,[e,s],n.dtype);return s.dispose(),c},t.prototype.avgPoolBackprop=function(e,n,o){var i=new ud(o);return this.compileAndRun(i,[e],n.dtype)},t.prototype.cast=function(e,n){return Ba(e,n,this)},t.prototype.unstack=function(e,n){for(var o=e.shape[n],i=new Array(e.rank-1),a=0,s=0;s<e.rank;s++)s!==n&&(i[a++]=e.shape[s]);var u=new Array(e.rank).fill(0),c=e.shape.slice();c[n]=1;var l=new Array(o);for(s=0;s<l.length;s++)u[n]=s,l[s]=this.slice(e,u,c).reshape(i);return l},t.prototype.avgPool3d=function(e,n){var o=new _a(n,"avg",!1);return this.compileAndRun(o,[e],"float32")},t.prototype.avgPool3dBackprop=function(e,n,o){var i=new cd(o);return this.compileAndRun(i,[e],n.dtype)},t.prototype.maxPool3d=function(e,n){var o=new _a(n,"max",!1);return this.compileAndRun(o,[e],"float32")},t.prototype.maxPool3dBackprop=function(e,n,o,i){var a=new _a(i,"max",!0),s=this.compileAndRun(a,[n]),u=new Xd(i),c=this.compileAndRun(u,[e,s],n.dtype);return s.dispose(),c},t.prototype.reshape=function(e,n){var o=this.texData.get(e.dataId);if(o.isPacked&&!Uo(e.shape,n)&&(o.texture===null||!Uo(o.shape,n))){var i=this.packedReshape(e,n);return W.makeTensorFromDataId(i.dataId,i.shape,i.dtype)}return Di(e,n)},t.prototype.resizeBilinear=function(e,n,o,i){var a=J().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new rp(e.shape,n,o,i):new np(e.shape,n,o,i);return this.compileAndRun(a,[e],"float32")},t.prototype.resizeBilinearBackprop=function(e,n,o){var i=new tp(e,n,o);return this.compileAndRun(i,[e])},t.prototype.resizeNearestNeighbor=function(e,n,o,i){var a=new ip(e.shape,n,o,i);return this.compileAndRun(a,[e])},t.prototype.resizeNearestNeighborBackprop=function(e,n,o){var i=new op(e,n,o);return this.compileAndRun(i,[e])},t.prototype.multinomial=function(e,n,o,i){var a=n?e:Cr(e),s=a.shape[0],u=a.shape[1],c=new Jd(s,u,o),l=c.getCustomSetupFunc(i);return this.compileAndRun(c,[a],"int32",l)},t.prototype.oneHot=function(e,n,o,i){var a=new Kd(e.size,n,o,i);return this.compileAndRun(a,[e])},t.prototype.diag=function(e){var n=new Dd(e.size);return this.compileAndRun(n,[e])},t.prototype.nonMaxSuppression=function(e,n,o,i,a){return Ai("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead"),Da(e.dataSync(),n.dataSync(),o,i,a)},t.prototype.cropAndResize=function(e,n,o,i,a,s){var u=new Sd(e.shape,n.shape,i,a,s);return this.compileAndRun(u,[e,n,o],"float32")},t.prototype.depthToSpace=function(e,n,o){B(n>1,function(){return"blockSize should be > 1 for depthToSpace, but was: "+n});var i=e.shape[0],a=o==="NHWC"?e.shape[1]:e.shape[2],s=o==="NHWC"?e.shape[2]:e.shape[3],u=o==="NHWC"?e.shape[3]:e.shape[1],c=a*n,l=s*n,f=u/(n*n),h=new Td(o==="NHWC"?[i,c,l,f]:[i,f,c,l],n,o);return this.compileAndRun(h,[e])},t.prototype.split=function(e,n,o){return ic(e,n,o)},t.prototype.scatterND=function(e,n,o){var i=jo(0,e,o),a=i.sliceRank,s=i.numUpdates,u=i.sliceSize,c=i.strides,l=i.outputSize,f=[l/u,u],h=e.reshape([s,a]),d=n.reshape([s,u]);if(l===0)return Di(Tn([]),o);var p=Fe(0),v=new Wc(s,a,h.rank,d.rank,c,f);return this.compileAndRun(v,[d,h,p]).reshape(o)},t.prototype.sparseToDense=function(e,n,o,i){var a=jo(0,e,o),s=a.sliceRank,u=a.numUpdates,c=a.strides,l=a.outputSize,f=new Wc(u,s,e.rank,n.rank,c,[l,1],!1);return this.compileAndRun(f,[n,e,i]).reshape(o)},t.prototype.fft=function(e){return this.fftImpl(e,!1)},t.prototype.ifft=function(e){return this.fftImpl(e,!0)},t.prototype.fftImpl=function(e,n){var o=this.texData.get(e.dataId),i=new yc(Md,e.shape,n),a=new yc(Ld,e.shape,n),s=[this.makeComplexComponentTensorInfo(e,o.complexTensors.real),this.makeComplexComponentTensorInfo(e,o.complexTensors.imag)],u=this.compileAndRun(i,s),c=this.compileAndRun(a,s),l=this.complex(u,c).as2D(e.shape[0],e.shape[1]);return u.dispose(),c.dispose(),l},t.prototype.gatherND=function(e,n){var o=n.shape,i=o[o.length-1],a=ba(e,n),s=a[0],u=a[1],c=a[2],l=a[3],f=n.reshape([u,i]),h=e.reshape([e.size/c,c]),d=new Qd(i,l,[u,c]);return this.compileAndRun(d,[h,f]).reshape(s)},t.prototype.fill=function(e,n,o){if((o=o||ze(n))==="string"){var i=y(o,Re(e));return i.fill(n),W.makeTensor(i,e,o,this)}var a=new Wd(e,n),s=a.getCustomSetupFunc(n);return this.compileAndRun(a,[],o,s)},t.prototype.onesLike=function(e){if(e.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(e.shape,1,e.dtype)},t.prototype.zerosLike=function(e){return this.fill(e.shape,e.dtype==="string"?"":0,e.dtype)},t.prototype.linspace=function(e,n,o){return ka(e,n,o)},t.prototype.makeTensorInfo=function(e,n){var o=this.write(null,e,n);return this.texData.get(o).usage=null,{dataId:o,shape:e,dtype:n}},t.prototype.makeOutput=function(e,n){var o=this.makeTensorInfo(e,n).dataId;return W.makeTensorFromDataId(o,e,n,this)},t.prototype.unpackTensor=function(e){var n=new Bp(e.shape);return this.runWebGLProgram(n,[e],e.dtype)},t.prototype.packTensor=function(e){var n=new Zd(e.shape);return this.runWebGLProgram(n,[e],e.dtype,null,!0)},t.prototype.packedReshape=function(e,n){var o=[Qo(e.shape)].concat(zo(e.shape)),i={dtype:e.dtype,shape:o,dataId:e.dataId},a=[Qo(n)].concat(zo(n)),s=new ep(a,o),u=this.runWebGLProgram(s,[i],e.dtype,null,!0);return{dataId:u.dataId,shape:n,dtype:u.dtype}},t.prototype.decode=function(e){var n,o=this.texData.get(e),i=o.isPacked,a=o.shape,s=o.dtype,u=gi(a);return n=i?new kd(u):new Bd(u),{dtype:s,shape:a,dataId:this.runWebGLProgram(n,[{shape:u,dtype:s,dataId:e}],s,null,!0).dataId}},t.prototype.runWebGLProgram=function(e,n,o,i,a){var s=this;a===void 0&&(a=!1);var u=this.makeTensorInfo(e.outputShape,o),c=this.texData.get(u.dataId);if(e.packedOutput&&(c.isPacked=!0),e.outPackingScheme===er.DENSE){var l=Mo(e.outputShape);c.texShape=l.map(function(E){return 2*E})}if(e.outTexUsage!=null&&(c.usage=e.outTexUsage),Re(u.shape)===0)return c.values=T(u.dtype,0),u;var f=[],h=n.map(function(E){if(E.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var b=s.texData.get(E.dataId);if(b.texture==null){if(!e.packedInputs&&Re(E.shape)<=J().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:E.shape,texData:null,isUniform:!0,uniformValues:b.values};e.packedInputs&&(b.isPacked=!0,b.shape=E.shape)}else if(!!b.isPacked!=!!e.packedInputs)E=b.isPacked?s.unpackTensor(E):s.packTensor(E),f.push(E),b=s.texData.get(E.dataId);else if(b.isPacked&&!Uo(b.shape,E.shape)){var C=E,S=E.shape;E.shape=b.shape,E=s.packedReshape(E,S),f.push(E),b=s.texData.get(E.dataId),C.shape=S}return s.uploadToGPU(E.dataId),{shape:E.shape,texData:b,isUniform:!1}});this.uploadToGPU(u.dataId);var d,p={shape:u.shape,texData:c,isUniform:!1},v=function(E,b,C){var S="";b.concat(C).forEach(function(F){var P=F.texData!=null&&F.texData.slice!=null&&F.texData.slice.flatOffset>0,U=F.isUniform?"uniform":F.texData.texShape;S+=F.shape+"_"+U+"_"+P});var N=E.userCode,O=E.constructor.name;return O+="_"+S+"_"+N}(e,h,p),g=this.getAndSaveBinary(v,function(){return function(E,b,C,S){var N=b.userCode,O=C.map(function(oe,he){var pe={logicalShape:oe.shape,texShape:oe.isUniform?null:oe.texData.texShape,isUniform:oe.isUniform,isPacked:!oe.isUniform&&oe.texData.isPacked,flatOffset:null};return oe.texData!=null&&oe.texData.slice!=null&&oe.texData.slice.flatOffset>0&&(pe.flatOffset=oe.texData.slice.flatOffset),{name:b.variableNames[he],shapeInfo:pe}}),F=O.map(function(oe){return oe.shapeInfo}),P={logicalShape:S.shape,texShape:S.texData.texShape,isUniform:!1,isPacked:S.texData.isPacked,flatOffset:null},U=nd(O,P,N,b.packedInputs),Q=E.createProgram(U),V=null,X=E.getUniformLocation(Q,"NAN",!1);J().getNumber("WEBGL_VERSION")===1&&(V=E.getUniformLocation(Q,"INFINITY",!1));for(var te={},ue=0;ue<b.variableNames.length;ue++){var se=b.variableNames[ue];te[se]=E.getUniformLocation(Q,se,!1),te["offset"+se]=E.getUniformLocation(Q,"offset"+se,!1)}return{program:b,source:U,webGLProgram:Q,uniformLocations:te,inShapeInfos:F,outShapeInfo:P,infLoc:V,nanLoc:X}}(s.gpgpu,e,h,p)}),m=this.activeTimers!=null;if(m&&(d=this.startTimer()),function(E,b,C,S,N){Lc(b.inShapeInfos,C),Lc([b.outShapeInfo],[S]);var O=S.texData.texture,F=S.texData.texShape;S.texData.isPacked?E.setOutputPackedMatrixTexture(O,F[0],F[1]):E.setOutputMatrixTexture(O,F[0],F[1]),E.setProgram(b.webGLProgram),J().getNumber("WEBGL_VERSION")===1&&b.infLoc!==null&&E.gl.uniform1f(b.infLoc,1/0),b.nanLoc!==null&&E.gl.uniform1f(b.nanLoc,NaN),C.forEach(function(P,U){var Q=b.program.variableNames[U],V=b.uniformLocations[Q],X=b.uniformLocations["offset"+Q];if(V!=null)if(P.isUniform)if(Re(P.shape)<2)E.gl.uniform1f(V,P.uniformValues[0]);else{var te=P.uniformValues;te instanceof Float32Array||(te=new Float32Array(te)),E.gl.uniform1fv(V,te)}else P.texData.slice!=null&&X!=null&&E.gl.uniform1i(X,P.texData.slice.flatOffset),E.setInputMatrixTexture(P.texData.texture,V,U)}),N!=null&&N(E,b.webGLProgram),E.executeProgram()}(this.gpgpu,g,h,p,i),f.forEach(function(E){return s.disposeData(E.dataId)}),m&&(d=this.endTimer(d),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(d)})),!J().getBool("WEBGL_LAZILY_UNPACK")&&c.isPacked&&a===!1){var w=this.unpackTensor(u);return this.disposeData(u.dataId),w}return u},t.prototype.compileAndRun=function(e,n,o,i,a){a===void 0&&(a=!1),o=o||n[0].dtype;var s=this.runWebGLProgram(e,n,o,i,a);return W.makeTensorFromDataId(s.dataId,s.shape,s.dtype)},t.prototype.getAndSaveBinary=function(e,n){return e in this.binaryCache||(this.binaryCache[e]=n()),this.binaryCache[e]},t.prototype.getTextureManager=function(){return this.textureManager},t.prototype.dispose=function(){var e=this;this.disposed||(J().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(function(n){e.gpgpu.deleteProgram(e.binaryCache[n].webGLProgram),delete e.binaryCache[n]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)},t.prototype.floatPrecision=function(){var e=this;return this.floatPrecisionValue==null&&(this.floatPrecisionValue=Le(function(){if(!J().get("WEBGL_RENDER_FLOAT32_ENABLED")){var n=J().getBool("DEBUG");J().set("DEBUG",!1);var o=e.abs(Fe(1e-8)).dataSync()[0];if(J().set("DEBUG",n),o>0)return 32}return 16})),this.floatPrecisionValue},t.prototype.epsilon=function(){return this.floatPrecision()===32?1e-7:1e-4},t.prototype.uploadToGPU=function(e){var n,o=this.texData.get(e),i=o.shape,a=o.dtype,s=o.values,u=o.texture,c=o.usage,l=o.isPacked;if(u==null){var f,h=this.activeTimers!=null;h&&(f=ee());var d=o.texShape;if(d==null&&(d=Tu(i,l),o.texShape=d),s!=null){var p=gi(i),v=void 0,g=d[1],m=d[0],w=s instanceof Uint8Array;l?(g=(n=Lo(d[0],d[1]))[0],m=n[1],v=new Od(p,[m,g],w)):v=new Nd(p,[m,g],w);var E=this.makeTensorInfo([m,g],a);this.texData.get(E.dataId).usage=w?wn.PIXELS:wn.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(E.dataId),g,m,s);var b=this.runWebGLProgram(v,[E],a,null,!0),C=this.texData.get(b.dataId);o.texture=C.texture,o.texShape=C.texShape,o.isPacked=C.isPacked,o.usage=C.usage,this.disposeData(E.dataId),this.texData.delete(b.dataId),o.values=null,h&&(this.uploadWaitMs+=ee()-f)}else{var S=this.acquireTexture(d,c,a,l);o.texture=S}}},t.prototype.convertAndCacheOnCPU=function(e,n){var o=this.texData.get(e),i=o.dtype;return this.releaseGPUData(e),n!=null&&(o.values=function(a,s){if(s==="float32"||s==="complex64")return a;if(s==="int32"||s==="bool"){for(var u=s==="int32"?new Int32Array(a.length):new Uint8Array(a.length),c=0;c<u.length;++c)u[c]=Math.round(a[c]);return u}throw new Error("Unknown dtype "+s)}(n,i)),o.values},t.prototype.acquireTexture=function(e,n,o,i){if(this.numBytesInGPU+=this.computeBytes(e,o),!this.warnedAboutMemory&&this.numBytesInGPU>1024*this.numMBBeforeWarning*1024){var a=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn("High memory usage in GPU: "+a+" MB, most likely due to a memory leak")}return this.textureManager.acquireTexture(e,n,i)},t.prototype.computeBytes=function(e,n){return e[0]*e[1]*L(n)},t}(tc);wr()&&W.registerBackend("webgl",function(){return new $c},2);var Tp=_({square_:function(r){var t=k(r,"x","square"),e=[t];return W.runKernelFunc(function(n,o){return o([t]),n.square(t)},{x:t},null,"Square",{},e,[])}}),Zo="SquaredDifference",el=_({squaredDifference_:function(r,t){var e,n=k(r,"a","squaredDifference"),o=k(t,"b","squaredDifference");e=vt(n,o),n=e[0],o=e[1],gt(n.shape,o.shape);var i={a:n,b:o},a=[n,o];return W.runKernelFunc(function(s,u){var c=s.squaredDifference(n,o);return u([n,o]),c},i,function(s,u){var c=u[0],l=u[1],f=Fe(2);return{a:function(){return s.mul(c.sub(l).mul(f))},b:function(){return s.mul(l.sub(c).mul(f))}}},Zo,{},a,[])}}),Dp=_({abs_:function(r){var t=k(r,"x","abs");return t.dtype==="complex64"?W.runKernelFunc(function(e){return e.complexAbs(t)},{$x:t}):W.runKernelFunc(function(e,n){var o=e.abs(t);return n([t]),o},{x:t},function(e,n){var o=n[0];return{x:function(){return e.mul(o.toFloat().step(-1))}}},"Abs")}}),Fp=_({acos_:function(r){var t=k(r,"x","acos");return W.runKernelFunc(function(e,n){var o=e.acos(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.divStrict(Fe(1).sub(o.toFloat().square()).sqrt()).neg()}}})}}),Pp=_({acosh_:function(r){var t=k(r,"x","acosh");return W.runKernelFunc(function(e,n){var o=e.acosh(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.divStrict(o.toFloat().square().sub(1).sqrt())}}})}}),Np=_({asin_:function(r){var t=k(r,"x","asin");return W.runKernelFunc(function(e,n){var o=e.asin(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.divStrict(Fe(1).sub(o.toFloat().square()).sqrt())}}})}}),Op=_({asinh_:function(r){var t=k(r,"x","asinh");return W.runKernelFunc(function(e,n){var o=e.asinh(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.divStrict(Fe(1).add(o.toFloat().square()).sqrt())}}})}}),Mp=_({atan_:function(r){var t=k(r,"x","atan");return W.runKernelFunc(function(e,n){var o=e.atan(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.div(o.toFloat().square().add(1))}}})}}),Lp=_({atanh_:function(r){var t=k(r,"x","atanh");return W.runKernelFunc(function(e,n){var o=e.atanh(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.div(Fe(1).sub(o.toFloat().square()))}}})}}),Wp=_({ceil_:function(r){var t=k(r,"x","ceil");return W.runKernelFunc(function(e){return e.ceil(t)},{$x:t},function(e){return{$x:function(){return Bt(e)}}})}}),Ha=_({clipByValue_:function(r,t,e){var n=k(r,"x","clipByValue");B(t<=e,function(){return"Error in clip: min ("+t+") must be less than or equal to max ("+e+")."});var o=[n],i={min:t,max:e};return W.runKernelFunc(function(a,s){var u=a.clip(n,t,e);return s([n]),u},{x:n},function(a,s){var u=s[0];return{x:function(){return a.where(u.greaterEqual(t).logicalAnd(u.lessEqual(e)),Bt(a))}}},"ClipByValue",i,o)}}),_p=_({cos_:function(r){var t=k(r,"x","cos"),e=[t];return W.runKernelFunc(function(n,o){var i=n.cos(t);return o([t]),i},{x:t},function(n,o){var i=o[0];return{x:function(){return i.toFloat().sin().neg().mul(n)}}},"Cos",{},e)}}),Qp=_({cosh_:function(r){var t=k(r,"x","cosh");return W.runKernelFunc(function(e,n){var o=e.cosh(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return o.toFloat().sinh().mulStrict(e)}}})}}),zp=_({erf_:function(r){var t=k(r,"x","erf");return B(t.dtype==="int32"||t.dtype==="float32",function(){return"Input dtype must be `int32` or `float32`."}),t.dtype==="int32"&&(t=t.toFloat()),W.runKernelFunc(function(e,n){var o=e.erf(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.mul(o.square().neg().exp().mul(2/Math.sqrt(Math.PI)))}}})}}),ja=_({exp_:function(r){var t=k(r,"x","exp");return W.runKernelFunc(function(e,n){var o=e.exp(t);return n([o]),o},{x:t},function(e,n){return{x:function(){return e.mulStrict(n[0])}}},"Exp",{},[],[!0])}}),Up=_({expm1_:function(r){var t=k(r,"x","expm1");return W.runKernelFunc(function(e,n){var o=e.expm1(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.mul(o.exp())}}})}}),Hp=_({floor_:function(r){var t=k(r,"x","floor");return W.runKernelFunc(function(e){return e.floor(t)},{$x:t},function(e){return{$x:function(){return Bt(e)}}})}}),jp=_({log_:function(r){var t=k(r,"x","log"),e=[t];return W.runKernelFunc(function(n,o){var i=n.log(t);return o([t]),i},{x:t},function(n,o){var i=o[0];return{x:function(){return n.div(i.toFloat())}}},"Log",{},e)}}),Vp=_({log1p_:function(r){var t=k(r,"x","log1p");return W.runKernelFunc(function(e,n){var o=e.log1p(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.div(o.add(1))}}})}}),Gp=_({logSigmoid_:function(r){var t=k(r,"x","logSigmoid");return W.runKernelFunc(function(e,n){var o=e.softplus(t.neg()).neg();return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.mul(o.neg().sigmoid())}}})}}),Mi=_({neg_:function(r){var t=k(r,"x","neg"),e=[t];return W.runKernelFunc(function(n){return n.neg(t)},{x:t},function(n){return{x:function(){return n.neg()}}},"Neg",{},e)}}),Xp=_({reciprocal_:function(r){var t=k(r,"x","reciprocal");return W.runKernelFunc(function(e,n){var o=e.reciprocal(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.div(o.square().neg())}}})}}),Jp=_({round_:function(r){var t=k(r,"x","round");return W.runKernelFunc(function(e){return e.round(t)},{$x:t},function(e){return{$x:function(){return Bt(e)}}})}}),tl=_({rsqrt_:function(r){var t=k(r,"x","rsqrt"),e=[t];return W.runKernelFunc(function(n,o){var i=n.rsqrt(t);return o([t]),i},{x:t},function(n,o){var i=o[0];return{x:function(){return n.div(i.pow(1.5).mul(2)).neg()}}},"Rsqrt",{},e)}}),nl=_({sigmoid_:function(r){var t=k(r,"x","sigmoid");return W.runKernelFunc(function(e,n){var o=e.sigmoid(t);return n([o]),o},{x:t},function(e,n){var o=n[0];return{x:function(){return e.mul(o.mul(Fe(1).sub(o)))}}},"Sigmoid")}}),Kp=_({sign_:function(r){var t=k(r,"x","sign");return W.runKernelFunc(function(e){return e.sign(t)},{$x:t},function(e){return{$x:function(){return Bt(e)}}})}}),Zp=_({isNaN_:function(r){var t=k(r,"x","isNaN");return W.runKernelFunc(function(e){return e.isNaN(t)},{$x:t},function(e){return{$x:function(){return Bt(e)}}})}}),qp=_({isInf_:function(r){var t=k(r,"x","isInf");return W.runKernelFunc(function(e){return e.isInf(t)},{$x:t},function(e){return{$x:function(){return Bt(e)}}})}}),Yp=_({isFinite_:function(r){var t=k(r,"x","isFinite");return W.runKernelFunc(function(e){return e.isFinite(t)},{$x:t},function(e){return{$x:function(){return Bt(e)}}})}}),$p=_({sin_:function(r){var t=k(r,"x","sin"),e=[t];return W.runKernelFunc(function(n,o){var i=n.sin(t);return o([t]),i},{x:t},function(n,o){var i=o[0];return{x:function(){return i.toFloat().cos().mul(n)}}},"Sin",{},e)}}),ev=_({sinh_:function(r){var t=k(r,"x","sinh");return W.runKernelFunc(function(e,n){var o=e.sinh(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return o.toFloat().cosh().mulStrict(e)}}})}}),tv=_({softplus_:function(r){var t=k(r,"x","softplus");return W.runKernelFunc(function(e,n){var o=e.softplus(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.mul(o.sigmoid())}}})}}),nv=_({sqrt_:function(r){var t=k(r,"x","sqrt");return W.runKernelFunc(function(e,n){var o=e.sqrt(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.div(o.toFloat().sqrt().mul(2))}}})}}),rv=_({step_:function(r,t){t===void 0&&(t=0);var e=k(r,"x","step");return W.runKernelFunc(function(n){return n.step(e,t)},{$x:e},function(n){return{$x:function(){return Bt(n)}}})}}),ov=_({tan_:function(r){var t=k(r,"x","tan");return W.runKernelFunc(function(e,n){var o=e.tan(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return e.div(o.cos().square())}}})}}),iv=_({tanh_:function(r){var t=k(r,"x","tanh");return W.runKernelFunc(function(e,n){var o=e.tanh(t);return n([o]),o},{x:t},function(e,n){var o=n[0];return{x:function(){return Fe(1).sub(o.square()).mulStrict(e)}}},"Tanh",{},null,[!0])}});function rl(r,t,e,n,o,i){var a,s,u=k(r,"x","batchNorm"),c=k(t,"mean","batchNorm"),l=k(e,"variance","batchNorm");return o!=null&&(a=k(o,"scale","batchNorm")),n!=null&&(s=k(n,"offset","batchNorm")),B(u.rank===2,function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."}),B(c.rank===2||c.rank===1,function(){return"Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank "+c.rank+"."}),B(l.rank===2||l.rank===1,function(){return"Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank "+l.rank+"."}),a!=null&&B(a.rank===2||a.rank===1,function(){return"Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank "+a.rank+"."}),s!=null&&B(s.rank===2||s.rank===1,function(){return"Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank "+s.rank+"."}),qo(u,c,l,s,a,i)}function ol(r,t,e,n,o,i){var a,s,u=k(r,"x","batchNorm"),c=k(t,"mean","batchNorm"),l=k(e,"variance","batchNorm");return o!=null&&(a=k(o,"scale","batchNorm")),n!=null&&(s=k(n,"offset","batchNorm")),B(u.rank===3,function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."}),B(c.rank===3||c.rank===1,function(){return"Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank "+c.rank+"."}),B(l.rank===3||l.rank===1,function(){return"Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank "+l.rank+"."}),a!=null&&B(a.rank===3||a.rank===1,function(){return"Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank "+a.rank+"."}),s!=null&&B(s.rank===3||s.rank===1,function(){return"Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank "+s.rank+"."}),qo(u,c,l,s,a,i)}function il(r,t,e,n,o,i){var a,s,u=k(r,"x","batchNorm"),c=k(t,"mean","batchNorm"),l=k(e,"variance","batchNorm");return o!=null&&(a=k(o,"scale","batchNorm")),n!=null&&(s=k(n,"offset","batchNorm")),B(u.rank===4,function(){return"Error in batchNorm4D: x must be rank 4 but got rank "+u.rank+"."}),B(c.rank===4||c.rank===1,function(){return"Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank "+c.rank+"."}),B(l.rank===4||l.rank===1,function(){return"Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank "+l.rank+"."}),a!=null&&B(a.rank===4||a.rank===1,function(){return"Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank "+a.rank+"."}),s!=null&&B(s.rank===4||s.rank===1,function(){return"Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank "+s.rank+"."}),qo(u,c,l,s,a,i)}function qo(r,t,e,n,o,i){i==null&&(i=.001);var a,s,u,c=k(r,"x","batchNorm"),l=k(t,"mean","batchNorm"),f=k(e,"variance","batchNorm");o!=null&&(a=k(o,"scale","batchNorm")),n!=null&&(s=k(n,"offset","batchNorm")),B(l.rank===f.rank,function(){return"Batch normalization gradient requires mean and variance to have equal ranks."}),B(s==null||l.rank===s.rank,function(){return"Batch normalization gradient requires mean and offset to have equal ranks."}),B(a==null||l.rank===a.rank,function(){return"Batch normalization gradient requires mean and scale to have equal ranks."}),u=c.rank===0||c.rank===1?c.as4D(1,1,1,c.size):c.rank===2?c.as4D(1,1,c.shape[0],c.shape[1]):c.rank===3?c.as4D(1,c.shape[0],c.shape[1],c.shape[2]):c;var h=[c,l,f,a];return W.runKernelFunc(function(d,p){var v=d.batchNormalization(u,Li(l),Li(f),i,Li(a),Li(s));return p([c,l,f,a]),v},{x:c,mean:l,variance:f,scale:a,offset:s},function(d,p){var v=p,g=v[0],m=v[1],w=v[2],E=v[3],b=E==null?Fe(1):E,C=gn(m.shape,u.shape),S=[];if(m.rank===1){for(var N=0;N<u.shape.length-1;++N)S.push(u.shape[N]);S.push(1)}var O=g.sub(m),F=d.mul(b),P=tl(w.add(Fe(i))),U=P.mul(P).mul(P).mul(Fe(-.5));return{x:function(){return m.rank===1?d.mul(vo(P.as4D(1,1,1,m.shape[0]),S)).mul(b).reshape(g.shape):d.mul(P).mul(b).reshape(g.shape)},mean:function(){var Q=P.mul(Fe(-1)).mul(F);return m.rank===1&&(Q=Q.sum(C)),Q.reshape(m.shape)},variance:function(){var Q=U.mul(O).mul(F);return m.rank===1&&(Q=Q.sum(C)),Q.reshape(m.shape)},scale:function(){var Q=O.mul(P),V=d.mul(Q);return m.rank===1&&(V=V.sum(C)),V.reshape(m.shape)},offset:function(){var Q=d;return m.rank===1&&(Q=Q.sum(C)),Q.reshape(m.shape)}}},"BatchNormalization",{varianceEpsilon:i},h).reshape(c.shape)}function Li(r){return r==null?null:r.rank===0?r.as1D():r.rank===1?r:r.rank===2?r.as4D(1,1,r.shape[0],r.shape[1]):r.rank===3?r.as4D(1,r.shape[0],r.shape[1],r.shape[2]):r}function Wi(){Lu("tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon")}var av=_({batchNormalization2d_:function(r,t,e,n,o,i){return n===void 0&&(n=.001),Wi(),rl(r,t,e,i,o,n)}}),sv=_({batchNormalization3d_:function(r,t,e,n,o,i){return n===void 0&&(n=.001),Wi(),ol(r,t,e,i,o,n)}}),uv=_({batchNormalization4d_:function(r,t,e,n,o,i){return n===void 0&&(n=.001),Wi(),il(r,t,e,i,o,n)}}),cv=_({batchNormalization_:function(r,t,e,n,o,i){return n===void 0&&(n=.001),Wi(),qo(r,t,e,i,o,n)}}),al=_({batchNorm_:qo}),lv=_({batchNorm2d_:rl}),fv=_({batchNorm3d_:ol}),hv=_({batchNorm4d_:il}),_i=_({logicalAnd_:function(r,t){var e=k(r,"a","logicalAnd","bool"),n=k(t,"b","logicalAnd","bool");return gt(e.shape,n.shape),W.runKernelFunc(function(o){return o.logicalAnd(e,n)},{a:e,b:n},null,"LogicalAnd")}}),dv=_({logicalNot_:function(r){var t=k(r,"x","logicalNot","bool");return W.runKernelFunc(function(e){return e.logicalNot(t)},{$x:t})}}),sl=_({logicalOr_:function(r,t){var e=k(r,"a","logicalOr","bool"),n=k(t,"b","logicalOr","bool");return gt(e.shape,n.shape),W.runKernelFunc(function(o){return o.logicalOr(e,n)},{$a:e,$b:n})}}),pv=_({logicalXor_:function(r,t){var e=k(r,"a","logicalXor","bool"),n=k(t,"b","logicalXor","bool");return gt(e.shape,n.shape),sl(r,t).logicalAnd(_i(r,t).logicalNot())}}),no=_({where_:function(r,t,e){var n=k(t,"a","where"),o=k(e,"b","where"),i=k(r,"condition","where","bool");return Je(n.shape,o.shape,"Error in where: "),i.rank===1?B(i.shape[0]===n.shape[0],function(){return"The first dimension of `a` must match the size of `condition`."}):Je(i.shape,o.shape,"Error in where: "),W.runKernelFunc(function(a,s){var u=a.select(i,n,o);return s([i]),u},{$condition:i,$a:n,$b:o},function(a,s){var u=s[0];return{$condition:function(){return Bt(u).toFloat()},$a:function(){return a.mul(u.cast(a.dtype))},$b:function(){return a.mul(u.logicalNot().cast(a.dtype))}}})}}),ul=function(r){return be(this,void 0,void 0,function(){var t,e,n;return Se(this,function(o){switch(o.label){case 0:return[4,(t=k(r,"condition","whereAsync","bool")).data()];case 1:return e=o.sent(),n=Pa(t.shape,e),r!==t&&t.dispose(),[2,n]}})})},mt=_({add_:function(r,t){var e,n=k(r,"a","add"),o=k(t,"b","add");e=vt(n,o),n=e[0],o=e[1];var i=gt(n.shape,o.shape);return W.runKernelFunc(function(a){return a.add(n,o)},{a:n,b:o},function(a){return{a:function(){var s=a,u=gn(n.shape,i);return u.length>0&&(s=s.sum(u)),s.reshape(n.shape)},b:function(){var s=a,u=gn(o.shape,i);return u.length>0&&(s=s.sum(u)),s.reshape(o.shape)}}},"Add")}}),vv=_({addN_:function(r){B(Array.isArray(r),function(){return"The argument passed to tf.addN() must be a list of tensors"}),B(r.length>=1,function(){return"Must pass at least one tensor to tf.addN(), but got "+r.length});var t=r.map(function(o,i){return k(o,"tensors"+i,"addN")}),e=t[0];t.forEach(function(o){if(o.dtype!==e.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(function(o){if(!Ke(o.shape,e.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});var n=t;return W.runKernelFunc(function(o){return o.addN(t)},n,function(o){var i={};return t.forEach(function(a,s){i[s]=function(){return o.clone()}}),i},"AddN")}}),gv=_({addStrict_:function(r,t){var e=k(r,"a","addStrict"),n=k(t,"b","addStrict");return Je(e.shape,n.shape,"Error in addStrict: "),e.add(n)}}),mv=_({atan2_:function(r,t){var e,n=k(r,"a","atan2"),o=k(t,"b","atan2");e=vt(n,o),n=e[0],o=e[1];var i=gt(n.shape,o.shape);return W.runKernelFunc(function(a,s){var u=a.atan2(n,o);return s([n,o]),u},{$a:n,$b:o},function(a,s){var u=s[0],c=s[1];return{$a:function(){var l=mt(u.square(),c.square()),f=a.mul(c.div(l)),h=gn(u.shape,i);return h.length>0&&(f=f.sum(h)),f.reshape(u.shape)},$b:function(){var l=mt(u.square(),c.square()),f=Mi(a.mul(u.div(l))),h=gn(c.shape,i);return h.length>0&&(f=f.sum(h)),f.reshape(c.shape)}}})}}),ir=_({div_:function(r,t){var e,n=k(r,"a","div"),o=k(t,"b","div");if(e=vt(n,o),n=e[0],o=e[1],n.dtype==="int32"&&o.dtype==="int32")return cl(n,o);var i=gt(n.shape,o.shape);return W.runKernelFunc(function(a,s){var u=a.realDivide(n,o);return s([n,o]),u},{a:n,b:o},function(a,s){var u=s[0],c=s[1];return{a:function(){var l=a.div(c.toFloat()),f=gn(u.shape,i);return f.length>0?l.sum(f).reshape(u.shape):l},b:function(){var l=a.mul(u.toFloat()),f=gn(c.shape,i);f.length>0&&(l=l.sum(f).reshape(c.shape));var h=c.square();return l.div(h.toFloat()).neg()}}},"Div")}}),Av=_({divNoNan_:function(r,t){var e,n=k(r,"a","div"),o=k(t,"b","div");n=(e=vt(n,o))[0],o=e[1];var i=ir(n,o),a=Bt(i),s=o.equal(a);return no(s,a,i)}}),yv=_({divStrict_:function(r,t){var e=k(r,"a","div"),n=k(t,"b","div");return Je(e.shape,n.shape,"Error in divideStrict: "),e.div(n)}}),cl=_({floorDiv_:function(r,t){var e,n=k(r,"a","floorDiv"),o=k(t,"b","floorDiv");e=vt(n,o),n=e[0],o=e[1];var i=gt(n.shape,o.shape);return W.runKernelFunc(function(a,s){var u=a.floorDiv(n,o);return s([n,o]),u},{a:n,b:o},function(a,s){var u=s[0],c=s[1];return{a:function(){var l=a.div(c.toFloat()),f=gn(u.shape,i);return f.length>0?l.sum(f).reshape(u.shape):l},b:function(){var l=a.mul(u.toFloat()),f=gn(c.shape,i);f.length>0&&(l=l.sum(f).reshape(c.shape));var h=c.square();return l.div(h.toFloat()).neg()}}},"FloorDiv")}}),Va=_({maximum_:function(r,t){var e,n=k(r,"a","maximum"),o=k(t,"b","maximum");return e=vt(n,o),n=e[0],o=e[1],n.dtype==="bool"&&(n=n.toInt(),o=o.toInt()),gt(n.shape,o.shape),W.runKernelFunc(function(i,a){var s=i.maximum(n,o);return a([n,o]),s},{a:n,b:o},function(i,a){var s=a[0],u=a[1];return{a:function(){return i.mul(s.greaterEqual(u).toFloat())},b:function(){return i.mul(s.less(u).toFloat())}}},"Maximum")}}),xv=_({maximumStrict_:function(r,t){var e=k(r,"a","maximumStrict"),n=k(t,"b","maximumStrict");return Je(e.shape,n.shape,"Error in maximumStrict: "),e.maximum(n)}}),ll=_({minimum_:function(r,t){var e,n=k(r,"a","minimum"),o=k(t,"b","minimum");return e=vt(n,o),n=e[0],o=e[1],n.dtype==="bool"&&(n=n.toInt(),o=o.toInt()),gt(n.shape,o.shape),W.runKernelFunc(function(i,a){var s=i.minimum(n,o);return a([n,o]),s},{a:n,b:o},function(i,a){var s=a[0],u=a[1];return{a:function(){return i.mul(s.lessEqual(u).toFloat())},b:function(){return i.mul(s.greater(u).toFloat())}}},"Minimum")}}),bv=_({minimumStrict_:function(r,t){var e=k(r,"a","minimumStrict"),n=k(t,"b","minimumStrict");return Je(e.shape,n.shape,"Error in minimumStrict: "),e.minimum(n)}}),wv=_({mod_:function(r,t){var e,n=k(r,"a","mod"),o=k(t,"b","mod");e=vt(n,o),n=e[0],o=e[1];var i=gt(n.shape,o.shape);return W.runKernelFunc(function(a,s){var u=a.mod(n,o);return s([n,o]),u},{$a:n,$b:o},function(a,s){var u=s[0],c=s[1];return{$a:function(){var l=gn(u.shape,i);return l.length>0?a.sum(l).reshape(u.shape):a},$b:function(){var l=a.mul(u.div(c).floor().neg()),f=gn(c.shape,i);return f.length>0?l.sum(f).reshape(c.shape):l}}})}}),Ev=_({modStrict_:function(r,t){var e=k(r,"a","modStrict"),n=k(t,"b","modStrict");return Je(e.shape,n.shape,"Error in modStrict: "),e.mod(n)}}),Fn=_({mul_:function(r,t){var e,n=k(r,"a","mul"),o=k(t,"b","mul");e=vt(n,o),n=e[0],o=e[1];var i=gt(n.shape,o.shape);return W.runKernelFunc(function(a,s){var u=a.multiply(n,o);return s([n,o]),u},{a:n,b:o},function(a,s){var u=s[0],c=s[1];return{a:function(){var l=a.mul(c.toFloat()),f=gn(u.shape,i);return f.length>0?l.sum(f).reshape(u.shape):l},b:function(){var l=a.mul(u.toFloat()),f=gn(c.shape,i);return f.length>0?l.sum(f).reshape(c.shape):l}}},"Mul")}}),Cv=_({mulStrict_:function(r,t){var e=k(r,"a","mul"),n=k(t,"b","mul");return Je(e.shape,n.shape,"Error in multiplyStrict: "),e.mul(n)}}),Qi=_({pow_:function(r,t){var e,n=k(r,"base","pow"),o=k(t,"exp","pow");e=vt(n,o),n=e[0],o=e[1];var i=gt(n.shape,o.shape),a=[n,o];return W.runKernelFunc(function(s,u){var c=s.pow(n,o);return u([n,o,c]),c},{a:n,b:o},function(s,u){var c=u[0],l=u[1],f=u[2];return{a:function(){var h=l.toFloat(),d=s.mul(h.mul(c.pow(h.sub(Fe(1))))),p=gn(c.shape,i);return p.length>0&&(d=d.sum(p)),d.reshape(c.shape)},b:function(){var h=c.greater(0),d=c.log().where(h,Bt(c)),p=s.mul(f.mul(d)),v=gn(l.shape,i);return v.length>0&&(p=p.sum(v)),p.reshape(l.shape)}}},"Pow",{},a,[!0])}}),Iv=_({powStrict_:function(r,t){return Je(r.shape,t.shape,"Error in powStrict: "),r.pow(t)}}),Sv=_({squaredDifferenceStrict_:function(r,t){var e=k(r,"a","squaredDifferenceStrict"),n=k(t,"b","squaredDifferenceStrict");return Je(e.shape,n.shape,"Error in squaredDifferenceStrict: "),e.squaredDifference(n)}}),xn=_({sub_:function(r,t){var e,n=k(r,"a","sub"),o=k(t,"b","sub");e=vt(n,o),n=e[0],o=e[1];var i=gt(n.shape,o.shape);return W.runKernelFunc(function(a){return a.subtract(n,o)},{a:n,b:o},function(a){return{a:function(){var s=a,u=gn(n.shape,i);return u.length>0&&(s=s.sum(u)),s.reshape(n.shape)},b:function(){var s=a,u=gn(o.shape,i);return u.length>0&&(s=s.sum(u)),s.neg().reshape(o.shape)}}},"Sub")}}),Rv=_({subStrict_:function(r,t){var e=k(r,"a","subStrict"),n=k(t,"b","subStrict");return Je(e.shape,n.shape,"Error in subStrict: "),e.sub(n)}}),fl=_({equal_:function(r,t){var e,n=k(r,"a","equal"),o=k(t,"b","equal");return e=vt(n,o),n=e[0],o=e[1],gt(n.shape,o.shape),W.runKernelFunc(function(i){return i.equal(n,o)},{$a:n,$b:o})}}),Bv=_({equalStrict_:function(r,t){var e=k(r,"a","equalStrict"),n=k(t,"b","equalStrict");return Je(e.shape,n.shape,"Error in equalStrict: "),e.equal(n)}}),kv=_({greater_:function(r,t){var e,n=k(r,"a","greater"),o=k(t,"b","greater");return e=vt(n,o),n=e[0],o=e[1],gt(n.shape,o.shape),W.runKernelFunc(function(i){return i.greater(n,o)},{a:n,b:o},null,"Greater")}}),hl=_({greaterEqual_:function(r,t){var e,n=k(r,"a","greaterEqual"),o=k(t,"b","greaterEqual");return e=vt(n,o),n=e[0],o=e[1],gt(n.shape,o.shape),W.runKernelFunc(function(i,a){var s=i.greaterEqual(n,o);return a([n,o]),s},{a:n,b:o},function(i,a){var s=a[0],u=a[1];return{a:function(){return Bt(s)},b:function(){return Bt(u)}}},"GreaterEqual")}}),Tv=_({greaterEqualStrict_:function(r,t){var e=k(r,"a","greaterEqualStrict"),n=k(t,"b","greaterEqualStrict");return Je(e.shape,n.shape,"Error in greaterEqualStrict: "),e.greaterEqual(n)}}),Dv=_({greaterStrict_:function(r,t){var e=k(r,"a","greaterStrict"),n=k(t,"b","greaterStrict");return Je(e.shape,n.shape,"Error in greaterStrict: "),e.greater(n)}}),Fv=_({less_:function(r,t){var e,n=k(r,"a","less"),o=k(t,"b","less");return e=vt(n,o),n=e[0],o=e[1],gt(n.shape,o.shape),W.runKernelFunc(function(i){return i.less(n,o)},{a:n,b:o},null,"Less")}}),Pv=_({lessEqual_:function(r,t){var e,n=k(r,"a","lessEqual"),o=k(t,"b","lessEqual");return e=vt(n,o),n=e[0],o=e[1],gt(n.shape,o.shape),W.runKernelFunc(function(i,a){var s=i.lessEqual(n,o);return a([n,o]),s},{a:n,b:o},null,"LessEqual")}}),Nv=_({lessEqualStrict_:function(r,t){var e=k(r,"a","lessEqualStrict"),n=k(t,"b","lessEqualStrict");return Je(e.shape,n.shape,"Error in lessEqualStrict: "),e.lessEqual(n)}}),Ov=_({lessStrict_:function(r,t){var e=k(r,"a","lessStrict"),n=k(t,"b","lessStrict");return Je(e.shape,n.shape,"Error in lessStrict: "),e.less(n)}}),Mv=_({notEqual_:function(r,t){var e,n=k(r,"a","notEqual"),o=k(t,"b","notEqual");return e=vt(n,o),n=e[0],o=e[1],gt(n.shape,o.shape),W.runKernelFunc(function(i){return i.notEqual(n,o)},{a:n,b:o},null,"NotEqual")}}),Lv=_({notEqualStrict_:function(r,t){var e=k(r,"a","notEqualStrict"),n=k(t,"b","notEqualStrict");return Je(e.shape,n.shape,"Error in notEqualStrict: "),e.notEqual(n)}});function dl(r,t){for(var e=[],n=r;n<t;++n)e.push(n);return e}function pl(r){for(var t=[],e=0;e<r.length;++e)for(var n=0;n<r[e].length;++n)t.push(r[e][n]);return t}var Ga=_({gather_:function(r,t,e){e===void 0&&(e=0);var n=k(r,"x","gather"),o=k(t,"indices","gather","int32");e=Dt(e,n.shape)[0];var i=function(a,s,u){for(var c=a.shape[u],l=[],f=1,h=1,d=0;d<u;d++)l.push(a.shape[d]),f*=a.shape[d];for(d=0;d<s.rank;d++)l.push(s.shape[d]);for(d=u+1;d<a.rank;d++)l.push(a.shape[d]),h*=a.shape[d];return{batchSize:f,sliceSize:h,dimSize:c,outputShape:l}}(n,o,e);return W.runKernelFunc(function(a,s){var u=a.gather(n,o.flatten(),e);return s([o]),u},{x:n,indices:o},function(a,s){var u=s[0];return{x:function(){var c=n.shape,l=u.size,f=c.slice(0,e),h=f.length,d=c.slice(e,c.length).slice(1),p=d.length,v=dl(0,h),g=dl(h+1,h+1+p),m=pl([f,[l],d]),w=a.reshape(m),E=u.reshape([l]),b=pl([[h],v,g]),C=w.transpose(b),S=vl(C,E,n.shape[e]),N=yi(b);return S=S.transpose(N)},indices:function(){return u}}},"Gather",{axis:e}).reshape(i.outputShape)}}),vl=_({unsortedSegmentSum_:function(r,t,e){var n=k(r,"x","unsortedSegmentSum"),o=k(t,"segmentIds","unsortedSegmentSum","int32");return B(Ue(e),function(){return"numSegments must be of dtype int"}),W.runKernelFunc(function(i,a){var s=i.unsortedSegmentSum(n,o,e);return a([o]),s},{$x:n},function(i,a){var s=a[0];return{$x:function(){return function(u,c){for(var l=Va(c,Bt(c)),f=Ga(u,l),h=hl(c,Fe(0,"int32")),d=f.rank-h.rank,p=0;p<d;++p)h=qn(h,p+1);h=_i(h,po(f.shape,"bool"));var v=Bt(f);return no(h,f,v)}(i,s)}}})}}),Wv=function(r,t,e){return be(this,void 0,void 0,function(){var n,o,i,a,s,u,c,l,f,h,d,p,v;return Se(this,function(g){switch(g.label){case 0:for(n=k(r,"tensor","boolMask"),o=k(t,"mask","boolMask","bool"),i=e==null?0:e,a=o.rank,s=n.shape,B(a>0,function(){return"mask cannot be scalar"}),Je(s.slice(i,i+a),o.shape,"mask's shape must match the first K dimensions of tensor's shape,"),u=1,c=i;c<i+a;c++)u*=s[c];return l=s.slice(0,i).concat([u],s.slice(i+a)),f=n.reshape(l),h=o.reshape([-1]),[4,ul(h)];case 1:return d=g.sent(),p=d.squeeze([1]),v=Ga(f,p,i),r!==n&&n.dispose(),t!==o&&o.dispose(),p.dispose(),f.dispose(),h.dispose(),d.dispose(),[2,v]}})})};function gl(r,t,e,n,o,i,a){i===void 0&&(i="NHWC"),B(r.length===t.rank,function(){return"Length of inShape ("+r.length+") and rank of dy ("+t.rank+") must match"});var s=r,u=t,c=!1;t.rank===3&&(c=!0,u=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]),s=[1,r[0],r[1],r[2]]),B(s.length===4,function(){return"Error in conv2dDerInput: inShape must be length 4, but got length "+s.length+"."}),B(u.rank===4,function(){return"Error in conv2dDerInput: dy must be rank 4, but got rank "+u.rank}),B(e.rank===4,function(){return"Error in conv2dDerInput: filter must be rank 4, but got rank "+e.rank});var l=i==="NHWC"?s[3]:s[1],f=i==="NHWC"?u.shape[3]:u.shape[1];B(l===e.shape[2],function(){return"Error in conv2dDerInput: depth of input ("+l+") must match input depth for filter "+e.shape[2]+"."}),B(f===e.shape[3],function(){return"Error in conv2dDerInput: depth of output ("+f+") must match output depth for filter "+e.shape[3]+"."}),a!=null&&B(Ue(o),function(){return"Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+o+"."});var h=Ti(i),d=Lr(s,e.shape,n,1,o,a,!1,h),p=W.runKernelFunc(function(v,g){var m=v.conv2dDerInput(u,e,d);return g([e,u]),m},{dy4D:u,filter:e},function(v,g){var m=g[0],w=g[1];return{dy4D:function(){return Yn(v,m,n,o,i,1,a)},filter:function(){return Ja(v,w,m.shape,n,o,i,a)}}});return c?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}function Xa(r){var t=function(i){return typeof i=="number"?[i,i,i]:i.length===2?[i[0],i[1],1]:i}(r),e=t[0],n=t[1],o=t[2];return e===1&&n===1&&o===1}function ml(r,t,e,n,o){B(r.length===t.rank,function(){return"Length of inShape ("+r.length+") and rank of dy ("+t.rank+") must match"});var i=r,a=t,s=!1;t.rank===4&&(s=!0,a=t.as5D(1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]),i=[1,r[0],r[1],r[2],r[3]]);var u=i[4],c=a.shape[4];B(i.length===5,function(){return"Error in conv3dDerInput: inShape must be length 5, but got length "+i.length+"."}),B(a.rank===5,function(){return"Error in conv3dDerInput: dy must be rank 5, but got rank "+a.rank}),B(e.rank===5,function(){return"Error in conv3dDerInput: filter must be rank 5, but got rank "+e.rank}),B(u===e.shape[3],function(){return"Error in conv3dDerInput: depth of input ("+u+") must match input depth for filter "+e.shape[3]+"."}),B(c===e.shape[4],function(){return"Error in conv3dDerInput: depth of output ("+c+") must match output depth for filter "+e.shape[4]+"."});var l=Go(i,e.shape,n,1,o),f=W.runKernelFunc(function(h){return h.conv3dDerInput(a,e,l)},{dy5D:a});return s?f.as4D(f.shape[1],f.shape[2],f.shape[3],f.shape[4]):f}var _v=_({conv1d_:function(r,t,e,n,o,i,a){o===void 0&&(o="NWC"),i===void 0&&(i=1);var s=k(r,"x","conv1d"),u=k(t,"filter","conv1d"),c=s,l=!1;s.rank===2&&(l=!0,c=s.as3D(1,s.shape[0],s.shape[1])),B(c.rank===3,function(){return"Error in conv1d: input must be rank 3, but got rank "+c.rank+"."}),B(u.rank===3,function(){return"Error in conv1d: filter must be rank 3, but got rank "+u.rank+"."}),a!=null&&B(Ue(n),function(){return"Error in conv1d: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+n+"."}),B(c.shape[2]===u.shape[1],function(){return"Error in conv1d: depth of input ("+c.shape[2]+") must match input depth for filter "+u.shape[1]+"."}),B(Ln(e,i),function(){return"Error in conv1D: Either stride or dilation must be 1. Got stride "+e+" and dilation '"+i+"'"}),B(o==="NWC",function(){return"Error in conv1d: got dataFormat of "+o+" but only NWC is currently supported."});var f=u.as4D(1,u.shape[0],u.shape[1],u.shape[2]),h=c.as4D(c.shape[0],1,c.shape[1],c.shape[2]),d=Yn(h,f,[1,e],n,"NHWC",[1,i],a);return l?d.as2D(d.shape[2],d.shape[3]):d.as3D(d.shape[0],d.shape[2],d.shape[3])}}),Yn=_({conv2d_:function(r,t,e,n,o,i,a){o===void 0&&(o="NHWC"),i===void 0&&(i=[1,1]);var s=k(r,"x","conv2d"),u=k(t,"filter","conv2d"),c=s,l=!1;s.rank===3&&(l=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),B(c.rank===4,function(){return"Error in conv2d: input must be rank 4, but got rank "+c.rank+"."}),B(u.rank===4,function(){return"Error in conv2d: filter must be rank 4, but got rank "+u.rank+"."}),a!=null&&B(Ue(n),function(){return"Error in conv2d: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+n+"."});var f=o==="NHWC"?c.shape[3]:c.shape[1];B(f===u.shape[2],function(){return"Error in conv2d: depth of input ("+f+") must match input depth for filter "+u.shape[2]+"."}),B(Ln(e,i),function(){return"Error in conv2D: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+i+"'"});var h=Ti(o),d=Lr(c.shape,u.shape,e,i,n,a,!1,h),p=[u,c],v=W.runKernelFunc(function(g,m){var w=g.conv2d(c,u,d);return m([u,c]),w},{x:c,filter:u},function(g,m){var w=m,E=w[0],b=w[1];return B($r(i),function(){return"Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+i+"'"}),{x:function(){return Al(b.shape,g,E,e,n,o)},filter:function(){return Ja(b,g,E.shape,e,n,o)}}},"Conv2D",d,p);return l?v.as3D(v.shape[1],v.shape[2],v.shape[3]):v}}),Qv=_({conv3d_:function(r,t,e,n,o,i){o===void 0&&(o="NDHWC"),i===void 0&&(i=[1,1,1]);var a=k(r,"x","conv3d"),s=k(t,"filter","conv3d"),u=a,c=!1;a.rank===4&&(c=!0,u=a.as5D(1,a.shape[0],a.shape[1],a.shape[2],a.shape[3])),B(u.rank===5,function(){return"Error in conv3d: input must be rank 5, but got rank "+u.rank+"."}),B(s.rank===5,function(){return"Error in conv3d: filter must be rank 5, but got rank "+s.rank+"."}),B(u.shape[4]===s.shape[3],function(){return"Error in conv3d: depth of input ("+u.shape[4]+") must match input depth for filter "+s.shape[3]+"."}),B(function(h,d){return Xa(h)||Xa(d)}(e,i),function(){return"Error in conv3D: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+i+"'"}),B(o==="NDHWC",function(){return"Error in conv3d: got dataFormat of "+o+" but only NDHWC is currently supported."});var l=Go(u.shape,s.shape,e,i,n),f=W.runKernelFunc(function(h,d){var p=h.conv3d(u,s,l);return d([u,s]),p},{x:u,$filter:s},function(h,d){B(Xa(i),function(){return"Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+i+"'"});var p=d[0],v=d[1];return{x:function(){return ml(p.shape,h,v,e,n)},$filter:function(){return function(g,m,w,E,b){var C=g;g.rank===4&&(C=g.as5D(1,g.shape[0],g.shape[1],g.shape[2],g.shape[3]));var S=m;S.rank===4&&(S=m.as5D(1,m.shape[0],m.shape[1],m.shape[2],m.shape[3])),B(C.rank===5,function(){return"Error in conv3dDerFilter: input must be rank 5, but got shape "+C.shape+"."}),B(S.rank===5,function(){return"Error in conv3dDerFilter: dy must be rank 5, but got shape "+S.shape+"."}),B(w.length===5,function(){return"Error in conv3dDerFilter: filterShape must be length 5, but got "+w+"."}),B(C.shape[4]===w[3],function(){return"Error in conv3dDerFilter: depth of input "+C.shape[4]+") must match input depth in filter ("+w[3]+"."}),B(S.shape[4]===w[4],function(){return"Error in conv3dDerFilter: depth of dy ("+S.shape[4]+") must match output depth for filter ("+w[4]+")."});var N=Go(C.shape,w,E,1,b);return W.runKernelFunc(function(O){return O.conv3dDerFilter(C,S,N)},{x5D:C,dy5D:S})}(p,h,v.shape,e,n)}}});return c?f.as4D(f.shape[1],f.shape[2],f.shape[3],f.shape[4]):f}}),Ja=_({conv2dDerFilter_:function(r,t,e,n,o,i,a){i===void 0&&(i="NHWC");var s=r;r.rank===3&&(s=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var u=t;u.rank===3&&(u=t.as4D(1,t.shape[0],t.shape[1],t.shape[2])),B(s.rank===4,function(){return"Error in conv2dDerFilter: input must be rank 4, but got shape "+s.shape+"."}),B(u.rank===4,function(){return"Error in conv2dDerFilter: dy must be rank 4, but got shape "+u.shape+"."}),B(e.length===4,function(){return"Error in conv2dDerFilter: filterShape must be length 4, but got "+e+"."});var c=i==="NHWC"?s.shape[3]:s.shape[1],l=i==="NHWC"?u.shape[3]:u.shape[1];B(c===e[2],function(){return"Error in conv2dDerFilter: depth of input "+c+") must match input depth in filter ("+e[2]+"."}),B(l===e[3],function(){return"Error in conv2dDerFilter: depth of dy ("+l+") must match output depth for filter ("+e[3]+")."}),a!=null&&B(Ue(o),function(){return"Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+o+"."});var f=Ti(i),h=Lr(s.shape,e,n,1,o,a,!1,f);return W.runKernelFunc(function(d){return d.conv2dDerFilter(s,u,h)},{x4D:s,dy4D:u})}}),Al=_({conv2dDerInput_:gl}),zi=_({depthwiseConv2d_:function(r,t,e,n,o,i,a){o===void 0&&(o="NHWC"),i===void 0&&(i=[1,1]);var s=k(r,"x","depthwiseConv2d"),u=k(t,"filter","depthwiseConv2d"),c=s,l=!1;s.rank===3&&(l=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),B(c.rank===4,function(){return"Error in depthwiseConv2d: input must be rank 4, but got rank "+c.rank+"."}),B(u.rank===4,function(){return"Error in depthwiseConv2d: filter must be rank 4, but got rank "+u.rank+"."}),B(c.shape[3]===u.shape[2],function(){return"Error in depthwiseConv2d: number of input channels ("+c.shape[3]+") must match the inChannels dimension in filter "+u.shape[2]+"."}),i==null&&(i=[1,1]),B(Ln(e,i),function(){return"Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+i+"'"}),a!=null&&B(Ue(n),function(){return"Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+n+"."});var f=Lr(c.shape,u.shape,e,i,n,a,!0),h=[c,u],d=W.runKernelFunc(function(p,v){var g=p.depthwiseConv2D(c,u,f);return v([c,u]),g},{x:c,filter:u},function(p,v){B($r(i),function(){return"Error in gradient of depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+i+"'"});var g=v[0],m=v[1];return{x:function(){return yl(g.shape,p,m,f)},filter:function(){return xl(g,p,m.shape,f)}}},"DepthwiseConv2dNative",f,h);return l?d.as3D(d.shape[1],d.shape[2],d.shape[3]):d}}),yl=_({depthwiseConv2dDerInput_:function(r,t,e,n){var o=t,i=!1;t.rank===3&&(i=!0,o=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var a=W.runKernelFunc(function(s){return s.depthwiseConv2DDerInput(o,e,n)},{dy4D:o});return i?a.as3D(a.shape[1],a.shape[2],a.shape[3]):a}}),xl=_({depthwiseConv2dDerFilter_:function(r,t,e,n){var o=r;r.rank===3&&(o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var i=t;return i.rank===3&&(i=t.as4D(1,t.shape[0],t.shape[1],t.shape[2])),W.runKernelFunc(function(a){return a.depthwiseConv2DDerFilter(o,i,n)},{x4D:o,dy4D:i})}}),Ka=_({separableConv2d_:function(r,t,e,n,o,i,a){i===void 0&&(i=[1,1]),a===void 0&&(a="NHWC");var s=k(r,"x","separableConv2d"),u=k(t,"depthwiseFilter","separableConv2d"),c=k(e,"pointwiseFilter","separableConv2d"),l=s,f=!1;if(s.rank===3&&(f=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),a==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");B(l.rank===4,function(){return"Error in separableConv2d: input must be rank 4, but got rank "+l.rank+"."}),B(u.rank===4,function(){return"Error in separableConv2d: depthwise filter must be rank 4, but got rank "+u.rank+"."}),B(c.rank===4,function(){return"Error in separableConv2d: pointwise filter must be rank 4, but got rank "+u.rank+"."}),B(c.shape[0]===1,function(){return"Error in separableConv2d: the first dimension of pointwise filter must be 1, but got "+c.shape[0]+"."}),B(c.shape[1]===1,function(){return"Error in separableConv2d: the second dimension of pointwise filter must be 1, but got "+c.shape[1]+"."});var h=u.shape[2],d=u.shape[3];B(c.shape[2]===h*d,function(){return"Error in separableConv2d: the third dimension of pointwise filter must be "+h*d+", but got "+c.shape[2]+"."});var p=zi(l,u,n,o,a,i),v=Yn(p,c,1,"valid",a);return f?v.as3D(v.shape[1],v.shape[2],v.shape[3]):v}}),zv=_({conv2dTranspose_:function(r,t,e,n,o,i){return gl(e,k(r,"x","conv2dTranspose"),k(t,"filter","conv2dTranspose"),n,o,"NHWC",i)}}),Uv=_({conv3dTranspose_:function(r,t,e,n,o){return ml(e,k(r,"x","conv3dTranspose"),k(t,"filter","conv3dTranspose"),n,o)}}),Ui=_({matMul_:function(r,t,e,n){var o;e===void 0&&(e=!1),n===void 0&&(n=!1);var i=k(r,"a","matMul"),a=k(t,"b","matMul");o=vt(i,a),i=o[0],a=o[1];var s=e?i.shape[i.rank-2]:i.shape[i.rank-1],u=n?a.shape[a.rank-1]:a.shape[a.rank-2],c=e?i.shape[i.rank-1]:i.shape[i.rank-2],l=n?a.shape[a.rank-2]:a.shape[a.rank-1],f=i.shape.slice(0,-2),h=a.shape.slice(0,-2),d=Re(f),p=Re(h);B(i.rank>=2&&a.rank>=2&&i.rank===a.rank,function(){return"Error in matMul: inputs must have the same rank of at least 2, got ranks "+i.rank+" and "+a.rank+"."}),B(Ke(f,h),function(){return"Error in matMul: outer dimensions ("+f+") and ("+h+") of Tensors with shapes "+i.shape+" and "+a.shape+" must match."}),B(s===u,function(){return"Error in matMul: inner shapes ("+s+") and ("+u+") of Tensors with shapes "+i.shape+" and "+a.shape+" and transposeA="+e+" and transposeB="+n+" must match."});var v=i.shape.slice(0,-2).concat([c,l]),g=e?i.as3D(d,s,c):i.as3D(d,c,s),m=n?a.as3D(p,l,u):a.as3D(p,u,l),w={transposeA:e,transposeB:n};return W.runKernelFunc(function(E,b){var C=E.batchMatMul(g,m,e,n);return b([g,m]),C},{a:g,b:m},function(E,b){var C=b,S=C[0],N=C[1];return e||n?!e&&n?{a:function(){return E.matMul(N,!1,!1)},b:function(){return E.matMul(S,!0,!1)}}:e&&!n?{a:function(){return N.matMul(E,!1,!0)},b:function(){return S.matMul(E,!1,!1)}}:{a:function(){return N.matMul(E,!0,!0)},b:function(){return E.matMul(S,!0,!0)}}:{a:function(){return E.matMul(N,!1,!0)},b:function(){return S.matMul(E,!0,!1)}}},"BatchMatMul",w).reshape(v)}}),Hv=_({dot_:function(r,t){var e=k(r,"t1","dot"),n=k(t,"t2","dot");B(!(e.rank!==1&&e.rank!==2||n.rank!==1&&n.rank!==2),function(){return"Error in dot: inputs must all be rank 1 or 2, but got ranks "+e.rank+" and "+n.rank+"."});var o=e.rank===1?e.size:e.shape[1],i=n.rank===1?n.size:n.shape[0];return B(o===i,function(){return"Error in dot: inner dimensions of inputs must match, but got "+o+" and "+i+"."}),e.rank===1&&n.rank===1?e.as2D(1,-1).matMul(n.as2D(-1,1)).asScalar():e.rank===1&&n.rank===2?e.as2D(1,-1).matMul(n.as2D(n.shape[0],n.shape[1])).as1D():e.rank===2&&n.rank===1?e.matMul(n.as2D(-1,1)).as1D():e.matMul(n.as2D(n.shape[0],n.shape[1]))}}),jv=_({outerProduct_:function(r,t){var e=k(r,"v1","outerProduct"),n=k(t,"v2","outerProduct");return B(e.rank===1&&n.rank===1,function(){return"Error in outerProduct: inputs must be rank 1, but got ranks "+e.rank+" and "+n.rank+"."}),e.as2D(-1,1).matMul(n.as2D(1,-1))}}),Yo=_({reverse_:function(r,t){var e=k(r,"x","reverse");if(e.rank===0)return e.clone();var n=Dt(t,e.shape);return W.runKernelFunc(function(o){return o.reverse(e,n)},{$x:e},function(o){return{$x:function(){return o.reverse(n)}}}).reshapeAs(e)}}),Vv=_({reverse1d_:function(r){var t=k(r,"x","reverse");return B(t.rank===1,function(){return"Error in reverse1D: x must be rank 1 but got rank "+t.rank+"."}),Yo(t,0)}}),Gv=_({reverse2d_:function(r,t){var e=k(r,"x","reverse");return B(e.rank===2,function(){return"Error in reverse2D: x must be rank 2 but got rank "+e.rank+"."}),Yo(e,t)}}),Xv=_({reverse3d_:function(r,t){var e=k(r,"x","reverse");return B(e.rank===3,function(){return"Error in reverse3D: x must be rank 3 but got rank "+e.rank+"."}),Yo(e,t)}}),Jv=_({reverse4d_:function(r,t){var e=k(r,"x","reverse");return B(e.rank===4,function(){return"Error in reverse4D: x must be rank 4 but got rank "+e.rank+"."}),Yo(e,t)}});function bl(r,t,e,n,o,i){var a=k(r,"x","maxPool"),s=a,u=!1;a.rank===3&&(u=!0,s=a.as4D(1,a.shape[0],a.shape[1],a.shape[2])),n==null&&(n=[1,1]),B(s.rank===4,function(){return"Error in maxPool: input must be rank 4 but got rank "+s.rank+"."}),B(Ln(e,n),function(){return"Error in maxPool: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+n+"'"}),i!=null&&B(Ue(o),function(){return"Error in maxPool: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+o+"."});var c=go(s.shape,t,e,n,o,i);if(c.filterWidth===1&&c.filterHeight===1&&Ke(c.inShape,c.outShape))return a.clone();var l=[s],f=W.runKernelFunc(function(h,d){var p=h.maxPool(s,c);return d([s,p]),p},{x:s},function(h,d){var p=d[0],v=d[1];return{x:function(){return function(g,m,w,E,b,C,S,N){var O=k(g,"dy","maxPoolBackprop"),F=k(m,"input","maxPoolBackprop"),P=k(w,"output","maxPoolBackprop");B(F.rank===O.rank,function(){return"Rank of input ("+F.rank+") does not match rank of dy ("+O.rank+")"}),C==null&&(C=[1,1]),B(Ln(b,C),function(){return"Error in maxPoolBackProp: Either strides or dilations must be 1. Got strides "+b+" and dilations '"+C+"'"}),B(O.rank===4,function(){return"Error in maxPoolBackprop: dy must be rank 4 but got rank "+O.rank+"."}),B(F.rank===4,function(){return"Error in maxPoolBackprop: input must be rank 4 but got rank "+F.rank+"."}),N!=null&&B(Ue(S),function(){return"Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode "+N+" but got pad "+S+"."});var U=go(F.shape,E,b,C,S,N);return W.runKernelFunc(function(Q){return Q.maxPoolBackprop(O,F,P,U)},{$dy:O,$input:F})}(h,p,v,t,e,n,o)}}},"MaxPool",c,l);return u?f.as3D(f.shape[1],f.shape[2],f.shape[3]):f}function wl(r,t,e,n,o,i){var a=k(r,"x","avgPool","float32");n==null&&(n=[1,1]),B(Ln(e,n),function(){return"Error in avgPool: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+n+"'"});var s=a,u=!1;a.rank===3&&(u=!0,s=a.as4D(1,a.shape[0],a.shape[1],a.shape[2])),B(s.rank===4,function(){return"Error in avgPool: x must be rank 4 but got rank "+s.rank+"."}),i!=null&&B(Ue(o),function(){return"Error in avgPool: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+o+"."});var c=go(s.shape,t,e,n,o,i);if(c.filterWidth===1&&c.filterHeight===1&&Ke(c.inShape,c.outShape))return a.clone();var l=W.runKernelFunc(function(f){return f.avgPool(s,c)},{x:s},function(f){return{x:function(){return function(h,d,p,v,g,m){var w=k(h,"dy","avgPoolBackprop"),E=k(d,"input","avgPoolBackprop");B(E.rank===w.rank,function(){return"Rank of input ("+E.rank+") does not match rank of dy ("+w.rank+")"}),g==null&&(g=[1,1]),B(Ln(v,g),function(){return"Error in avgPoolBackprop: Either strides or dilations must be 1. Got strides "+v+" and dilations '"+g+"'"});var b=E,C=w,S=!1;E.rank===3&&(S=!0,b=E.as4D(1,E.shape[0],E.shape[1],E.shape[2]),C=w.as4D(1,w.shape[0],w.shape[1],w.shape[2])),B(C.rank===4,function(){return"Error in avgPoolBackprop: dy must be rank 4 but got rank "+C.rank+"."}),B(b.rank===4,function(){return"Error in avgPoolBackprop: input must be rank 4 but got rank "+b.rank+"."});var N=go(b.shape,p,v,g,m),O=W.runKernelFunc(function(F){return F.avgPoolBackprop(C,b,N)},{dy4D:C,input4D:b});return S?O.as3D(O.shape[1],O.shape[2],O.shape[3]):O}(f,s,t,e,n,o)}}},"AvgPool",c);return l=l.cast(a.dtype),u?l.as3D(l.shape[1],l.shape[2],l.shape[3]):l}var En=_({maxPool_:function(r,t,e,n,o){return bl(r,t,e,1,n,o)}}),$o=_({avgPool_:function(r,t,e,n,o){return wl(r,t,e,1,n,o)}}),Kv=_({pool_:function(r,t,e,n,o,i){o==null&&(o=[1,1]),i==null&&(i=1),n===0&&(n="valid");var a=k(r,"x","maxPool"),s=a,u=!1;a.rank===3&&(u=!0,s=a.as4D(1,a.shape[0],a.shape[1],a.shape[2])),B(Ln(i,o),function(){return"Error in pool: Either strides or dilations must be 1. Got strides "+i+" and dilations '"+o+"'"});var c,l=go(s.shape,t,i,o,n),f=[l.dilationHeight,l.dilationWidth];c=n==="same"?function(b,C){var S=b.map(function(F,P){return F+(F-1)*(C[P]-1)}).map(function(F){return F-1}),N=S.map(function(F){return Math.floor(F/2)}),O=S.map(function(F,P){return F-N[P]});return S.map(function(F,P){return[N[P],O[P]]})}([l.filterHeight,l.filterWidth],f):[[0,0],[0,0]];var h=f[0]===1&&f[1]===1,d=function(b,C,S){var N=S.map(function(X){return X[0]}),O=S.map(function(X){return X[1]}),F=b.concat(N,O),P=C.map(function(X,te){return(X-F[te]%X)%X}),U=O.map(function(X,te){return X+P[te]}),Q=C.map(function(X,te){return[N[te],U[te]]}),V=C.map(function(X,te){return[0,P[te]]});return[Q,V]}([l.inHeight,l.inWidth],f,c),p=d[0],v=d[1],g=h?n:"valid",m=h?s:Vu(s,f,p),w=(e==="avg"?function(){return wl(m,t,i,1,g)}:function(){return bl(m,t,i,1,g)})(),E=h?w:Uu(w,f,v);return u?E.as3D(E.shape[1],E.shape[2],E.shape[3]):E}}),Zv=_({maxPool3d_:function(r,t,e,n,o,i,a){i===void 0&&(i="NDHWC");var s=k(r,"x","maxPool3d"),u=s,c=!1;s.rank===4&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),a==null&&(a=[1,1,1]),B(u.rank===5,function(){return"Error in maxPool3d: x must be rank 5 but got rank "+u.rank+"."}),B(i==="NDHWC",function(){return"Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of "+i}),B(Ln(e,a),function(){return"Error in maxPool3d: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+a+"'"}),o!=null&&B(Ue(n),function(){return"Error in maxPool3d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+n+"."});var l=Vo(u.shape,t,e,a,n,o,i),f=W.runKernelFunc(function(h,d){var p=h.maxPool3d(u,l);return d([u,p]),p},{x:u},function(h,d){var p=d[0],v=d[1];return{x:function(){return function(g,m,w,E,b,C,S,N){var O=k(g,"dy","maxPool3dBackprop"),F=k(m,"input","maxPool3dBackprop"),P=k(w,"output","maxPool3dBackprop"),U=O,Q=F,V=P,X=!1;F.rank===4&&(X=!0,U=O.as5D(1,O.shape[0],O.shape[1],O.shape[2],O.shape[3]),Q=F.as5D(1,F.shape[0],F.shape[1],F.shape[2],F.shape[3]),V=P.as5D(1,P.shape[0],P.shape[1],P.shape[2],P.shape[3])),B(U.rank===5,function(){return"Error in maxPool3dBackprop: dy must be rank 5 but got rank "+U.rank+"."}),B(Q.rank===5,function(){return"Error in maxPool3dBackprop: input must be rank 5 but got rank "+Q.rank+"."}),B(V.rank===5,function(){return"Error in maxPool3dBackprop: output must be rank 5 but got rank "+V.rank+"."}),C==null&&(C=[1,1,1]),B(Ln(b,C),function(){return"Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides "+b+" and dilations '"+C+"'"}),N!=null&&B(Ue(S),function(){return"Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode "+N+" but got pad "+S+"."});var te=Vo(Q.shape,E,b,C,S,N),ue=W.runKernelFunc(function(se){return se.maxPool3dBackprop(U,Q,V,te)},{dy5D:U,input5D:Q});return X?ue.as4D(ue.shape[1],ue.shape[2],ue.shape[3],ue.shape[4]):ue}(h,p,v,t,e,a,n,o)}}});return c?f.as4D(f.shape[1],f.shape[2],f.shape[3],f.shape[4]):f}}),qv=_({avgPool3d_:function(r,t,e,n,o,i,a){i===void 0&&(i="NDHWC");var s=k(r,"x","avgPool3d","float32"),u=s,c=!1;s.rank===4&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),a==null&&(a=[1,1,1]),B(u.rank===5,function(){return"Error in avgPool3d: x must be rank 5 but got rank "+u.rank+"."}),B(i==="NDHWC",function(){return"Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of "+i}),B(Ln(e,a),function(){return"Error in avgPool3d: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+a+"'"}),o!=null&&B(Ue(n),function(){return"Error in avgPool3d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+n+"."});var l=Vo(u.shape,t,e,a,n,o,i),f=W.runKernelFunc(function(h){return h.avgPool3d(u,l)},{x:u},function(h){return{x:function(){return function(d,p,v,g,m,w,E){var b=k(d,"dy","avgPool3dBackprop"),C=k(p,"input","avgPool3dBackprop"),S=b,N=C,O=!1;C.rank===4&&(O=!0,S=b.as5D(1,b.shape[0],b.shape[1],b.shape[2],b.shape[3]),N=C.as5D(1,C.shape[0],C.shape[1],C.shape[2],C.shape[3])),B(S.rank===5,function(){return"Error in avgPool3dBackprop: dy must be rank 5 but got rank "+S.rank+"."}),B(N.rank===5,function(){return"Error in avgPool3dBackprop: input must be rank 5 but got rank "+N.rank+"."}),m==null&&(m=[1,1,1]),B(Ln(g,m),function(){return"Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides "+g+" and dilations '"+m+"'"}),E!=null&&B(Ue(w),function(){return"Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode "+E+" but got pad "+w+"."});var F=Vo(N.shape,v,g,m,w,E),P=W.runKernelFunc(function(U){return U.avgPool3dBackprop(S,N,F)},{dy5D:S,input5D:N});return O?P.as4D(P.shape[1],P.shape[2],P.shape[3],P.shape[4]):P}(h,u,t,e,a,n,o)}}});return f=f.cast(u.dtype),c?f.as4D(f.shape[1],f.shape[2],f.shape[3],f.shape[4]):f}}),dr=_({slice_:function(r,t,e){var n,o,i=k(r,"x","slice");if(i.rank===0)throw new Error("Slicing scalar is not possible");(n=typeof t=="number"?[t].concat(new Array(i.rank-1).fill(0)):t.length<i.rank?t.concat(new Array(i.rank-t.length).fill(0)):t.slice()).forEach(function(u){B(u!==-1,function(){return"slice() does not support negative begin indexing."})}),o=(o=e==null?new Array(i.rank).fill(-1):typeof e=="number"?[e].concat(new Array(i.rank-1).fill(-1)):e.length<i.rank?e.concat(new Array(i.rank-e.length).fill(-1)):e).map(function(u,c){return u>=0?u:(B(u===-1,function(){return"Negative size values should be exactly -1 but got "+u+" for the slice() size at index "+c+"."}),i.shape[c]-n[c])}),qu(i,n,o);var a=i.shape,s={begin:n,size:o};return W.runKernelFunc(function(u){return u.slice(i,n,o)},{x:i},function(u){for(var c=[],l=0;l<u.rank;l++)c.push([n[l],a[l]-n[l]-o[l]]);return{x:function(){return u.pad(c)}}},"Slice",s)}}),Yv=_({slice1d_:function(r,t,e){var n=k(r,"x","slice1d");return B(n.rank===1,function(){return"slice1d expects a rank-1 tensor, but got a rank-"+n.rank+" tensor"}),dr(n,[t],[e])}}),$v=_({slice2d_:function(r,t,e){var n=k(r,"x","slice2d");return B(n.rank===2,function(){return"slice2d expects a rank-2 tensor, but got a rank-"+n.rank+" tensor"}),dr(n,t,e)}}),El=_({slice3d_:function(r,t,e){var n=k(r,"x","slice3d");return B(n.rank===3,function(){return"slice3d expects a rank-3 tensor, but got a rank-"+n.rank+" tensor"}),dr(n,t,e)}}),eg=_({slice4d_:function(r,t,e){var n=k(r,"x","slice4d");return B(n.rank===4,function(){return"slice4d expects a rank-4 tensor, but got a rank-"+n.rank+" tensor"}),dr(n,t,e)}});function Cl(r,t,e,n,o){return t.rank<e.rank&&(t=t.reshape(Mn(t.shape,n))),r.rank<e.rank&&(r=r.reshape(Mn(r.shape,n))),{x:function(){var i=r.mul(e.equal(t).cast(r.dtype));return o==null?i:i.transpose(o)}}}var tg=_({all_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=k(r,"x","all","bool"),o=Dt(t,n.shape),i=o,a=tr(i,n.rank);a!=null&&(n=n.transpose(a),i=nr(i.length,n.rank));var s=W.runKernelFunc(function(c){return c.all(n,i)},{$x:n});if(e){var u=Mn(s.shape,o);return s.reshape(u)}return s}}),ng=_({any_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=k(r,"x","any","bool"),o=Dt(t,n.shape),i=o,a=tr(i,n.rank);a!=null&&(n=n.transpose(a),i=nr(i.length,n.rank));var s=W.runKernelFunc(function(c){return c.any(n,i)},{$x:n});if(e){var u=Mn(s.shape,o);return s.reshape(u)}return s}}),rg=_({argMax_:function(r,t){t===void 0&&(t=0);var e=k(r,"x","argMax");t==null&&(t=0);var n=Dt(t,e.shape),o=tr(n,e.rank);o!=null&&(e=e.transpose(o),n=nr(n.length,e.rank));var i={axis:n[0]},a=[e];return W.runKernelFunc(function(s,u){var c=s.argMax(e,n[0]);return u([e]),c},{x:e},function(s,u){var c=u[0];return{x:function(){return Bt(c)}}},"ArgMax",i,a)}}),og=_({argMin_:function(r,t){t===void 0&&(t=0);var e=k(r,"x","argMin");t==null&&(t=0);var n=Dt(t,e.shape),o=tr(n,e.rank);return o!=null&&(e=e.transpose(o),n=nr(n.length,e.rank)),W.runKernelFunc(function(i,a){var s=i.argMin(e,n[0]);return a([e]),s},{$x:e},function(i,a){var s=a[0];return{$x:function(){return Bt(s)}}})}}),ig=_({logSumExp_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=k(r,"x","logSumExp"),o=Dt(t,n.shape),i=n.max(o,!0),a=n.sub(i).exp().sum(o).log(),s=i.reshape(a.shape).add(a);if(e){var u=Mn(s.shape,o);return s.reshape(u)}return s}}),Hi=_({max_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=k(r,"x","max"),o=n,i=Dt(t,n.shape),a=i,s=tr(a,n.rank);s!=null&&(n=n.transpose(s),a=nr(a.length,n.rank));var u=[n],c=W.runKernelFunc(function(f,h){var d=f.max(n,a);return h([o,d]),d},{x:n},function(f,h){return Cl(f,h[1],h[0],i,s)},"Max",{axes:a},u,[!0]);if(e){var l=Mn(c.shape,i);c=c.reshape(l)}return c}}),ag=_({mean_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=k(r,"x","mean"),o=Dt(t,n.shape),i=Re(Bn(n.shape,o)[1]);return Ri(function(a){var s=Fe(i);return{value:(s.dtype===a.dtype?a:a.cast(s.dtype)).div(s).sum(t,e),gradFunc:function(u){var c=a.shape.slice();return o.forEach(function(l){c[l]=1}),u.reshape(c).mul(po(a.shape,"float32")).div(i)}}})(n)}}),sg=_({min_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=k(r,"x","min"),o=n,i=Dt(t,n.shape),a=i,s=tr(a,n.rank);s!=null&&(n=n.transpose(s),a=nr(a.length,n.rank));var u=[n],c=W.runKernelFunc(function(f,h){var d=f.min(n,a);return h([o,d]),d},{x:n},function(f,h){return Cl(f,h[1],h[0],i,s)},"Min",{axes:a},u,[!0]);if(e){var l=Mn(c.shape,i);c=c.reshape(l)}return c}}),ug=_({moments_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=Dt(t,(r=k(r,"x","moments")).shape),o=r.mean(n,e),i=o.shape;e||(i=Mn(o.shape,n));var a=r.toFloat().sub(o.reshape(i)).square();return{mean:o,variance:a.mean(n,e)}}}),Il=_({sum_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=k(r,"x","sum");n.dtype==="bool"&&(n=n.toInt());var o=Dt(t,n.shape);return Ri(function(i){var a=tr(o,i.rank),s=o,u=i;a!=null&&(u=i.transpose(a),s=nr(s.length,i.rank));var c=function(d){var p=i.shape.slice();return o.forEach(function(v){p[v]=1}),d.reshape(p).mul(po(i.shape,"float32"))},l={axes:s},f=W.runKernelFunc(function(d){return d.sum(u,s)},{x:u},function(d){return{x:function(){return c(d)}}},"Sum",l);if(e){var h=Mn(f.shape,o);f=f.reshape(h)}return{value:f,gradFunc:c}})(n)}}),cg=_({prod_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=k(r,"x","prod");n.dtype==="bool"&&(n=n.toInt());var o=Dt(t,n.shape),i=tr(o,n.rank),a=o,s=n;i!=null&&(s=n.transpose(i),a=nr(a.length,n.rank));var u=W.runKernelFunc(function(l){return l.prod(s,a)},{permutedX:s});if(e){var c=Mn(u.shape,o);u=u.reshape(c)}return u}}),Sl=_({elu_:function(r){var t=k(r,"x","elu");return W.runKernelFunc(function(e,n){var o=e.elu(t);return n([o]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){return W.runKernelFunc(function(i){return i.eluDer(e,o)},{dy:e,y:o})}}})}}),lg=_({leakyRelu_:function(r,t){t===void 0&&(t=.2);var e=k(r,"x","leakyRelu");return Va(Fe(t).mul(e),e)}}),Rl=_({prelu_:function(r,t){var e=k(r,"x","prelu"),n=k(t,"alpha","prelu");return W.runKernelFunc(function(o,i){var a=o.prelu(e,n);return i([e,n]),a},{x:e,alpha:n},function(o,i){var a=i[0],s=i[1],u=a.greater(0);return{x:function(){return no(u,o,o.mul(s))},alpha:function(){var c=no(u,Bt(o),o.mul(a)),l=gn(s.shape,o.shape);return l.length>0&&(c=c.sum(l)),c.reshape(s.shape)}}},"Prelu")}}),nn=_({relu_:function(r){var t=k(r,"x","relu");return t.dtype==="bool"?t.toInt():W.runKernelFunc(function(e,n){var o=e.relu(t);return n([t]),o},{x:t},function(e,n){var o=n[0];return{x:function(){return e.mulStrict(o.step().toFloat())}}},"Relu")}}),Bl=_({relu6_:function(r){var t=k(r,"x","relu6");return t.dtype==="bool"?t.toInt():W.runKernelFunc(function(e,n){var o=e.relu6(t);return n([t]),o},{x:t},function(e,n){var o=n[0],i=o.lessEqual(6).mul(o.step());return{x:function(){return e.mulStrict(i.toFloat())}}},"Relu6")}}),fg=_({selu_:function(r){var t=k(r,"x","selu");return W.runKernelFunc(function(e,n){var o=e.selu(t);return n([t]),o},{$x:t},function(e,n){var o=n[0];return{$x:function(){var i=o.greater(Fe(0)),a=Fe(za),s=Fe(Ua),u=e.mul(s),c=e.mul(a).mul(o.toFloat().exp());return no(i,u,c)}}})}}),Wr=_({transpose_:function(r,t){var e=k(r,"x","transpose");if(t==null&&(t=e.shape.map(function(o,i){return i}).reverse()),B(e.rank===t.length,function(){return"Error in transpose: rank of input "+e.rank+" must match length of perm "+t+"."}),t.forEach(function(o){B(o>=0&&o<e.rank,function(){return"All entries in 'perm' must be between 0 and "+(e.rank-1)+" but got "+t})}),e.rank<=1)return e.clone();var n={perm:t};return W.runKernelFunc(function(o){return o.transpose(e,t)},{x:e},function(o){var i=yi(t);return{x:function(){return o.transpose(i)}}},"Transpose",n)}}),hg=_({localResponseNormalization_:function(r,t,e,n,o){t===void 0&&(t=5),e===void 0&&(e=1),n===void 0&&(n=1),o===void 0&&(o=.5);var i=k(r,"x","localResponseNormalization");B(i.rank===4||i.rank===3,function(){return`Error in localResponseNormalization: x must be rank 3 or 4 but got
rank `+i.rank+"."}),B(Ue(t),function(){return"Error in localResponseNormalization: depthRadius must be an integer but got depthRadius "+t+"."});var a=i,s=!1;i.rank===3&&(s=!0,a=i.as4D(1,i.shape[0],i.shape[1],i.shape[2]));var u=W.runKernelFunc(function(c,l){var f=c.localResponseNormalization4D(a,t,e,n,o);return l([a,f]),f},{x4D:a},function(c,l){var f=l[0],h=l[1];return{x4D:function(){return W.runKernelFunc(function(d){return d.LRNGrad(c,f,h,t,e,n,o)},{})}}});return s?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),kl=_({norm_:function(r,t,e,n){t===void 0&&(t="euclidean"),e===void 0&&(e=null),n===void 0&&(n=!1);var o=function s(u,c,l){if(l===void 0&&(l=null),u.rank===0)return u.abs();if(u.rank!==1&&l===null)return s(u.reshape([-1]),c,l);if(u.rank===1||typeof l=="number"||Array.isArray(l)&&l.length===1){if(c===1)return u.abs().sum(l);if(c===1/0)return u.abs().max(l);if(c===-1/0)return u.abs().min(l);if(c==="euclidean"||c===2)return u.abs().pow(Fe(2,"int32")).sum(l).sqrt();throw new Error("Error in norm: invalid ord value: "+c)}if(Array.isArray(l)&&l.length===2){if(c===1)return u.abs().sum(l[0]).max(l[1]-1);if(c===1/0)return u.abs().sum(l[1]).max(l[0]);if(c===-1/0)return u.abs().sum(l[1]).min(l[0]);if(c==="fro"||c==="euclidean")return u.square().sum(l).sqrt();throw new Error("Error in norm: invalid ord value: "+c)}throw new Error("Error in norm: invalid axis: "+l)}(r=k(r,"x","norm"),t,e),i=o.shape;if(n){var a=Dt(e,r.shape);i=Mn(o.shape,a)}return o.reshape(i)}}),dg=_({basicLSTMCell_:function(r,t,e,n,o,i){var a=k(r,"forgetBias","basicLSTMCell"),s=k(t,"lstmKernel","basicLSTMCell"),u=k(e,"lstmBias","basicLSTMCell"),c=k(n,"data","basicLSTMCell"),l=k(o,"c","basicLSTMCell"),f=k(i,"h","basicLSTMCell"),h=c.concat(f,1).matMul(s).add(u),d=h.shape[0],p=h.shape[1]/4,v=[d,p],g=h.slice([0,0],v),m=h.slice([0,p],v),w=h.slice([0,2*p],v),E=h.slice([0,3*p],v),b=g.sigmoid().mulStrict(m.tanh()).addStrict(l.mulStrict(a.add(w).sigmoid())),C=b.tanh().mulStrict(E.sigmoid());return[b,C]}}),pg=_({multiRNNCell_:function(r,t,e,n){for(var o=k(t,"data","multiRNNCell"),i=Ho(e,"c","multiRNNCell"),a=Ho(n,"h","multiRNNCell"),s=o,u=[],c=0;c<r.length;c++){var l=r[c](s,i[c],a[c]);u.push(l[0]),u.push(l[1]),s=l[1]}var f=[],h=[];for(c=0;c<u.length;c+=2)f.push(u[c]),h.push(u[c+1]);return[f,h]}}),vg=_({movingAverage_:function(r,t,e,n,o){o===void 0&&(o=!0);var i=k(r,"v","movingAverage"),a=k(t,"x","movingAverage"),s=k(e,"decay","movingAverage");lo(i,a),B(Ke(i.shape,a.shape),function(){return"Shape mismatch in v and x"});var u=Fe(1),c=u.sub(s),l=a.sub(i).mul(c);if(o){B(n!=null,function(){return"When using zeroDebias: true, step is required."});var f=k(n,"step","movingAverage");l=l.div(u.sub(Qi(s,f)))}return i.add(l)}}),gg=_({stridedSlice_:function(r,t,e,n,o,i,a,s,u){if(o===void 0&&(o=0),i===void 0&&(i=0),a===void 0&&(a=0),s===void 0&&(s=0),u===void 0&&(u=0),n==null&&(n=new Array(t.length)),a!==0)throw new Error("ellipsis mask is not yet supported");var c=k(r,"x","stridedSlice"),l=Ea(s),f=c.shape.slice();l.forEach(function(g){t[g]=0,e[g]=1,f.splice(g,0,1)}),c=c.reshape(f);for(var h=0;h<c.rank;h++)t[h]=Yu(o,t,n,c.shape,h),e[h]=$u(i,e,n,c.shape,h),n[h]=n[h]||1;var d=Ea(u);d.forEach(function(g){e[g]=t[g]+1,n[g]=1});var p=Si(t,e,n),v=p.filter(function(g,m){return d.indexOf(m)===-1});return n.every(function(g){return g===1})?dr(c,t,p).reshape(v):W.runKernelFunc(function(g){return g.stridedSlice(c,t,e,n)},{$x:c}).reshape(v)}}),mg=_({topk_:function(r,t,e){t===void 0&&(t=1),e===void 0&&(e=!0);var n=k(r,"x","topk");if(n.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");var o=n.shape[n.shape.length-1];if(t>o)throw new Error("'k' passed to topk() must be <= the last dimension ("+o+") but got "+t);var i=W.runKernelFunc(function(a){return a.topk(n,t,e)},{$x:n});return{values:i[0],indices:i[1]}}}),Ag=_({scatterND_:function(r,t,e){var n=k(r,"indices","scatterND","int32"),o=k(t,"updates","scatterND");return Zu(o,n,e),W.runKernelFunc(function(i){return i.scatterND(n,o,e)},{indices:n,updates:o},null,"ScatterNd",{shape:e})}}),Za=_({fft_:function(r){B(r.dtype==="complex64",function(){return"The dtype for tf.spectral.fft() must be complex64 but got "+r.dtype+"."});var t=r.shape[r.shape.length-1],e=r.size/t,n=r.as2D(e,t);return W.runKernelFunc(function(o){return o.fft(n)},{input:r}).reshape(r.shape)}}),ji=_({ifft_:function(r){B(r.dtype==="complex64",function(){return"The dtype for tf.spectral.ifft() must be complex64 but got "+r.dtype+"."});var t=r.shape[r.shape.length-1],e=r.size/t,n=r.as2D(e,t);return W.runKernelFunc(function(o){return o.ifft(n)},{input:r}).reshape(r.shape)}}),qa=_({rfft_:function(r,t){B(r.dtype==="float32",function(){return"The dtype for rfft() must be real value but got "+r.dtype});var e,n=r.shape[r.shape.length-1],o=r.size/n;if(t!=null&&t<n){var i=r.shape.map(function(m){return 0}),a=r.shape.map(function(m){return m});a[r.shape.length-1]=t,e=r.slice(i,a),n=t}else if(t!=null&&t>n){var s=r.shape.map(function(m){return m});s[r.shape.length-1]=t-n,e=r.concat(en(s),r.shape.length-1),n=t}else e=r;var u=e.zerosLike(),c=kn(e,u).as2D(o,n),l=Za(c),f=Math.floor(n/2)+1,h=Zn(l),d=fr(l),p=h.split([f,n-f],h.shape.length-1),v=d.split([f,n-f],d.shape.length-1),g=e.shape.slice();return g[e.shape.length-1]=f,kn(p[0],v[0]).reshape(g)}}),Tl=_({irfft_:function(r){var t=r.shape[r.shape.length-1],e=r.size/t;if(t<=2){var n=r.as2D(e,t),o=ji(n);return Zn(o)}var i=[e,2*(t-1)],a=Zn(r).as2D(e,t),s=fr(r).as2D(e,t),u=a.slice([0,1],[e,t-2]).reverse(1),c=s.slice([0,1],[e,t-2]).reverse(1).mul(Fe(-1)),l=a.concat(u,1),f=s.concat(c,1);return n=kn(l,f).as2D(i[0],i[1]),o=ji(n),Zn(o)}}),yg=Object.freeze({fft:Za,ifft:ji,rfft:qa,irfft:Tl}),xg=_({sparseToDense_:function(r,t,e,n){n===void 0&&(n=0);var o=k(r,"sparseIndices","sparseToDense","int32"),i=k(t,"sparseValues","sparseToDense"),a=k(n,"defaultValue","sparseToDense",i.dtype);return function(s,u,c,l){if(s.dtype!=="int32")throw new Error("tf.sparseToDense() expects the indices to be int32 type, but the dtype was "+s.dtype+".");if(s.rank>2)throw new Error("sparseIndices should be a scalar, vector, or matrix, but got shape "+s.shape+".");var f=s.rank>0?s.shape[0]:1,h=s.rank>1?s.shape[1]:1;if(c.length!==h)throw new Error("outputShape has incorrect number of elements:, "+c.length+", should be: "+h+".");var d=u.size;if(u.rank!==0&&(u.rank!==1||d!==f))throw new Error("sparseValues has incorrect shape "+u.shape+", should be [] or ["+f+"]");if(u.dtype!==l.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(o,i,e,a),W.runKernelFunc(function(s){return s.sparseToDense(o,i,e,a)},{$sparseIndices:o,$sparseValues:i,$defaultValue:a})}}),bg=_({gatherND_:function(r,t){var e=k(t,"indices","gatherND","int32"),n=k(r,"x","gatherND");return W.runKernelFunc(function(o){return o.gatherND(n,e)},{x:n,indices:e},null,"GatherNd")}}),wg=_({diag_:function(r){var t=k(r,"x","diag").flatten(),e=r.shape.concat(r.shape);return W.runKernelFunc(function(n){return n.diag(t)},{$x:t}).reshape(e)}}),Eg=_({dropout_:function(r,t,e,n){var o=k(r,"x","dropout");if(B(o.dtype==="float32",function(){return"x has to be a floating point tensor since it's going to be scaled, but got a "+o.dtype+" tensor instead."}),B(t>=0&&t<1,function(){return"rate must be a float in the range [0, 1), but got "+t+"."}),t===0)return r instanceof at?o.clone():o;var i=function(u,c){if(c==null)return u.shape.slice();if(Ke(u.shape,c))return c;if(u.shape.length===c.length){for(var l=[],f=0;f<u.shape.length;f++)c[f]==null&&u.shape[f]!=null?l.push(u.shape[f]):l.push(c[f]);return l}return c}(o,e),a=1-t,s=ju(i,0,1,"float32",n).add(a).floor().div(a);return o.mul(s)}});function Dl(r,t,e){for(var n=1-r%2,o=new Float32Array(r),i=0;i<r;++i){var a=2*Math.PI*i/(r+n-1);o[i]=t-e*Math.cos(a)}return vn(o,"float32")}var Ya=_({hannWindow_:function(r){return Dl(r,.5,.5)}}),Fl=_({hammingWindow_:function(r){return Dl(r,.54,.46)}}),$a=_({frame_:function(r,t,e,n,o){n===void 0&&(n=!1),o===void 0&&(o=0);for(var i=0,a=[];i+t<=r.size;)a.push(dr(r,i,t)),i+=e;if(n)for(;i<r.size;){var s=i+t-r.size,u=An([dr(r,i,t-s),hr([s],o)]);a.push(u),i+=e}return a.length===0?Mr([],[0,t]):An(a).as2D(a.length,t)}}),Pl=_({stft_:function(r,t,e,n,o){var i;o===void 0&&(o=Ya),n==null&&(i=t,n=Math.floor(Math.pow(2,Math.ceil(Math.log(i)/Math.log(2)))));for(var a=$a(r,t,e),s=Fn(a,o(t)),u=[],c=0;c<a.shape[0];c++)u.push(qa(s.slice([c,0],[1,t]),n));return An(u)}}),Cg=Object.freeze({hannWindow:Ya,hammingWindow:Fl,frame:$a,stft:Pl}),Pn,Ig=function(r,t,e){return e===void 0&&(e=1),be(this,void 0,void 0,function(){var n,o,i,a,s,u,c,l,f,h,d,p,v,g;return Se(this,function(m){switch(m.label){case 0:return n=k(r,"predictions","inTopK"),o=k(t,"targets","inTopK"),B(n.rank>1,function(){return"inTopK() expects the predictions to be of rank 2 or higher, but got "+n.rank}),B(n.rank-1===o.rank,function(){return"predictions rank should be 1 larger than targets rank, but got predictions rank "+n.rank+" and targets rank "+o.rank}),Je(n.shape.slice(0,n.shape.length-1),o.shape,"predictions's shape should be align with the targets' shape, except the last dimension."),i=n.shape[n.shape.length-1],B(e>0&&e<=i,function(){return"'k' passed to inTopK() must be > 0 && <= the predictions last dimension ("+i+"), but got "+e}),[4,n.data()];case 1:return a=m.sent(),[4,o.data()];case 2:for(s=m.sent(),u=[a.length/i,i],l=u[1],f=T("bool",c=u[0]),h=0;h<c;h++){for(d=h*l,p=a.subarray(d,d+l),v=[],g=0;g<p.length;g++)v.push({value:p[g],index:g});for(v.sort(function(w,E){return E.value-w.value}),f[h]=0,g=0;g<e;g++)if(v[g].index===s[h]){f[h]=1;break}}return r!==n&&n.dispose(),t!==o&&o.dispose(),[2,Tn(f,o.shape,"bool")]}})})};(function(r){r[r.NONE=0]="NONE",r[r.MEAN=1]="MEAN",r[r.SUM=2]="SUM",r[r.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Pn||(Pn={}));var Sg=_({absoluteDifference_:function(r,t,e,n){n===void 0&&(n=Pn.SUM_BY_NONZERO_WEIGHTS);var o=k(r,"labels","absoluteDifference"),i=k(t,"predictions","absoluteDifference"),a=null;e!=null&&(a=k(e,"weights","absoluteDifference")),Je(o.shape,i.shape,"Error in absoluteDifference: ");var s=o.sub(i).abs();return Rr(s,a,n)}}),Rr=_({computeWeightedLoss_:function(r,t,e){e===void 0&&(e=Pn.SUM_BY_NONZERO_WEIGHTS);var n=k(r,"losses","computeWeightedLoss"),o=null;t!=null&&(o=k(t,"weights","computeWeightedLoss"));var i=o==null?n:n.mul(o);if(e===Pn.NONE)return i;if(e===Pn.SUM)return i.sum();if(e===Pn.MEAN){if(o==null)return i.mean();var a=n.size/o.size,s=i.sum().div(o.sum());return a>1?s.div(Fe(a)):s}if(e===Pn.SUM_BY_NONZERO_WEIGHTS){if(o==null)return i.sum().div(Fe(n.size));var u=o.mul(po(n.shape)).notEqual(Fe(0)).sum().toFloat();return i.sum().div(u)}throw Error("Unknown reduction: "+e)}}),Rg=_({cosineDistance_:function(r,t,e,n,o){o===void 0&&(o=Pn.SUM_BY_NONZERO_WEIGHTS);var i=k(r,"labels","cosineDistance"),a=k(t,"predictions","cosineDistance"),s=null;n!=null&&(s=k(n,"weights","cosineDistance")),Je(i.shape,a.shape,"Error in cosineDistance: ");var u=Fe(1).sub(i.mul(a).sum(e,!0));return Rr(u,s,o)}}),Bg=_({hingeLoss_:function(r,t,e,n){n===void 0&&(n=Pn.SUM_BY_NONZERO_WEIGHTS);var o=k(r,"labels","hingeLoss"),i=k(t,"predictions","hingeLoss"),a=null;e!=null&&(a=k(e,"weights","hingeLoss")),Je(o.shape,i.shape,"Error in hingeLoss: ");var s=Fe(1);o=Fe(2).mul(o).sub(s);var u=s.sub(o.mul(i)).relu();return Rr(u,a,n)}}),kg=_({huberLoss_:function(r,t,e,n,o){n===void 0&&(n=1),o===void 0&&(o=Pn.SUM_BY_NONZERO_WEIGHTS);var i=k(r,"labels","huberLoss"),a=k(t,"predictions","huberLoss"),s=null;e!=null&&(s=k(e,"weights","huberLoss")),Je(i.shape,a.shape,"Error in huberLoss: ");var u=Fe(n),c=a.sub(i).abs(),l=ll(c,u),f=c.sub(l),h=Fe(.5).mul(l.square()).add(u.mul(f));return Rr(h,s,o)}}),Tg=_({logLoss_:function(r,t,e,n,o){n===void 0&&(n=1e-7),o===void 0&&(o=Pn.SUM_BY_NONZERO_WEIGHTS);var i=k(r,"labels","logLoss"),a=k(t,"predictions","logLoss"),s=null;e!=null&&(s=k(e,"weights","logLoss")),Je(i.shape,a.shape,"Error in logLoss: ");var u=Fe(1),c=Fe(n),l=i.mul(a.add(c).log()).neg().sub(u.sub(i).mul(u.sub(a).add(c).log()));return Rr(l,s,o)}}),Dg=_({meanSquaredError_:function(r,t,e,n){n===void 0&&(n=Pn.SUM_BY_NONZERO_WEIGHTS);var o=k(r,"labels","meanSquaredError"),i=k(t,"predictions","meanSquaredError"),a=null;e!=null&&(a=k(e,"weights","meanSquaredError")),Je(o.shape,i.shape,"Error in meanSquaredError: ");var s=o.squaredDifference(i);return Rr(s,a,n)}}),Fg=_({sigmoidCrossEntropy_:function(r,t,e,n,o){n===void 0&&(n=0),o===void 0&&(o=Pn.SUM_BY_NONZERO_WEIGHTS);var i=k(r,"multiClassLabels","sigmoidCrossEntropy"),a=k(t,"logits","sigmoidCrossEntropy"),s=null;if(e!=null&&(s=k(e,"weights","sigmoidCrossEntropy")),Je(i.shape,a.shape,"Error in sigmoidCrossEntropy: "),n>0){var u=Fe(n),c=Fe(1),l=Fe(.5);i=i.mul(c.sub(u)).add(l.mul(u))}var f=function(h,d){var p=k(h,"labels","sigmoidCrossEntropyWithLogits"),v=k(d,"logits","sigmoidCrossEntropyWithLogits");Je(p.shape,v.shape,"Error in sigmoidCrossEntropyWithLogits: ");var g=v.relu(),m=v.mul(p),w=v.abs().neg().exp().log1p();return g.sub(m).add(w)}(i,a);return Rr(f,s,o)}}),Pg=_({softmaxCrossEntropy_:function(r,t,e,n,o){n===void 0&&(n=0),o===void 0&&(o=Pn.SUM_BY_NONZERO_WEIGHTS);var i=k(r,"onehotLabels","softmaxCrossEntropy"),a=k(t,"logits","softmaxCrossEntropy"),s=null;if(e!=null&&(s=k(e,"weights","softmaxCrossEntropy")),Je(i.shape,a.shape,"Error in softmaxCrossEntropy: "),n>0){var u=Fe(n),c=Fe(1),l=Fe(i.shape[1]);i=i.mul(c.sub(u)).add(u.div(l))}var f=function(h,d,p){if(p===void 0&&(p=-1),p===-1&&(p=d.rank-1),p!==d.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank "+d.rank+" and dim was "+p);return Ri(function(v,g,m){var w=g.logSumExp([p],!0),E=g.toFloat().sub(w);return m([v,E]),{value:E.mul(v).neg().sum([p]),gradFunc:function(b,C){var S=C[0],N=C[1],O=Mn(b.shape,[p]);return[b.reshape(O).mul(S.toFloat().sub(N.exp())),b.reshape(O).mul(N.exp().sub(S.toFloat()))]}}})(h,d)}(i,a);return Rr(f,s,o)}}),Ng=Object.freeze({get Reduction(){return Pn},absoluteDifference:Sg,computeWeightedLoss:Rr,cosineDistance:Rg,hingeLoss:Bg,huberLoss:kg,logLoss:Tg,meanSquaredError:Dg,sigmoidCrossEntropy:Fg,softmaxCrossEntropy:Pg});function Nl(r,t){return t===void 0&&(t=!1),W.tidy(function(){if(r.shape.length!==2)throw new Error("qr2d() requires a 2D Tensor, but got a "+r.shape.length+"D Tensor.");for(var e=r.shape[0],n=r.shape[1],o=Hu(e),i=r.clone(),a=Mr([[1]],[1,1]),s=a.clone(),u=e>=n?n:e,c=function(f){var h,d=i,p=s,v=o;h=W.tidy(function(){var g=i.slice([f,f],[e-f,1]),m=g.norm(),w=i.slice([f,f],[1,1]),E=Mr([[-1]]).where(w.greater(0),Mr([[1]])),b=w.sub(E.mul(m)),C=g.div(b);s=C.shape[0]===1?a.clone():a.concat(C.slice([1,0],[C.shape[0]-1,C.shape[1]]),0);var S=E.matMul(b).div(m).neg(),N=i.slice([f,0],[e-f,n]),O=S.mul(s);if(f===0)i=N.sub(O.matMul(s.transpose().matMul(N)));else{var F=N.sub(O.matMul(s.transpose().matMul(N)));i=i.slice([0,0],[f,n]).concat(F,0)}var P=o.slice([0,f],[e,o.shape[1]-f]);if(f===0)o=P.sub(P.matMul(s).matMul(O.transpose()));else{var U=P.sub(P.matMul(s).matMul(O.transpose()));o=o.slice([0,0],[e,f]).concat(U,1)}return[s,i,o]}),s=h[0],i=h[1],o=h[2],Wn([d,p,v])},l=0;l<u;++l)c(l);return!t&&e>n&&(o=o.slice([0,0],[e,n]),i=i.slice([0,0],[n,n])),[o,i]})}var Og=_({bandPart_:function(r,t,e){if(t%1!=0)throw new Error("bandPart(): numLower must be an integer, got "+t+".");if(e%1!=0)throw new Error("bandPart(): numUpper must be an integer, got "+e+".");var n=k(r,"a","bandPart");if(n.rank<2)throw new Error("bandPart(): Rank must be at least 2, got "+n.rank+".");var o=n.shape,i=n.shape.slice(-2),a=i[0],s=i[1];if(!(t<=a))throw new Error("bandPart(): numLower ("+t+") must not be greater than the number of rows ("+a+").");if(!(e<=s))throw new Error("bandPart(): numUpper ("+e+") must not be greater than the number of columns ("+s+").");t<0&&(t=a),e<0&&(e=s);var u=xi(0,a,1,"int32").reshape([-1,1]),c=xi(0,s,1,"int32"),l=xn(u,c),f=_i(l.lessEqual(Fe(+t,"int32")),l.greaterEqual(Fe(-e,"int32"))),h=en([a,s],n.dtype);return jn(yn(n.reshape([-1,a,s])).map(function(d){return no(f,d,h)})).reshape(o)}}),Mg=_({gramSchmidt_:function(r){var t;if(Array.isArray(r)){t=!1,B(r!=null&&r.length>0,function(){return"Gram-Schmidt process: input must not be null, undefined, or empty"});for(var e=r[0].shape[0],n=function(u){B(r[u].shape[0]===e,function(){return"Gram-Schmidt: Non-unique lengths found in the input vectors: ("+r[u].shape[0]+" vs. "+e+")"})},o=1;o<r.length;++o)n(o)}else t=!0,r=Aa(r,r.shape[0],0).map(function(u){return Gu(u,[0])});B(r.length<=r[0].shape[0],function(){return"Gram-Schmidt: Number of vectors ("+r.length+") exceeds number of dimensions ("+r[0].shape[0]+")."});var i=[],a=r,s=function(u){i.push(W.tidy(function(){var c=a[u];if(u>0)for(var l=0;l<u;++l){var f=Il(i[l].mulStrict(c)).mul(i[l]);c=c.sub(f)}return c.div(kl(c,"euclidean"))}))};for(o=0;o<r.length;++o)s(o);return t?jn(i,0):i}}),Lg=_({qr_:function(r,t){if(t===void 0&&(t=!1),r.rank<2)throw new Error("qr() requires input tensor to have a rank >= 2, but got rank "+r.rank);if(r.rank===2)return Nl(r,t);var e=r.shape.slice(0,r.shape.length-2).reduce(function(a,s){return a*s}),n=yn(r.reshape([e,r.shape[r.shape.length-2],r.shape[r.shape.length-1]]),0),o=[],i=[];return n.forEach(function(a){var s=Nl(a,t),u=s[0],c=s[1];o.push(u),i.push(c)}),[jn(o,0).reshape(r.shape),jn(i,0).reshape(r.shape)]}}),Wg=Object.freeze({bandPart:Og,gramSchmidt:Mg,qr:Lg});function Vi(r,t,e,n,o,i){n==null&&(n=.5),o==null&&(o=Number.NEGATIVE_INFINITY),i==null&&(i=0);var a=r.shape[0];return e=Math.min(e,a),B(0<=n&&n<=1,function(){return"iouThreshold must be in [0, 1], but was '"+n+"'"}),B(r.rank===2,function(){return"boxes must be a 2D tensor, but was of rank '"+r.rank+"'"}),B(r.shape[1]===4,function(){return"boxes must have 4 columns, but 2nd dimension was "+r.shape[1]}),B(t.rank===1,function(){return"scores must be a 1D tensor"}),B(t.shape[0]===a,function(){return"scores has incompatible shape with boxes. Expected "+a+", but was "+t.shape[0]}),B(0<=i&&i<=1,function(){return"softNmsSigma must be in [0, 1], but was '"+i+"'"}),{maxOutputSize:e,iouThreshold:n,scoreThreshold:o,softNmsSigma:i}}var _g=_({resizeBilinear_:function(r,t,e){e===void 0&&(e=!1);var n=k(r,"images","resizeBilinear");B(n.rank===3||n.rank===4,function(){return"Error in resizeBilinear: x must be rank 3 or 4, but got rank "+n.rank+"."}),B(t.length===2,function(){return"Error in resizeBilinear: new shape must 2D, but got shape "+t+"."});var o=n,i=!1;n.rank===3&&(i=!0,o=n.as4D(1,n.shape[0],n.shape[1],n.shape[2]));var a=t[0],s=t[1],u=W.runKernelFunc(function(c,l){return l([o]),c.resizeBilinear(o,a,s,e)},{x:o},function(c,l){return{x:function(){return W.runKernelFunc(function(f){return f.resizeBilinearBackprop(c,l[0],e)},{})}}},"ResizeBilinear",{alignCorners:e,newHeight:a,newWidth:s});return i?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Qg=_({resizeNearestNeighbor_:function(r,t,e){e===void 0&&(e=!1);var n=k(r,"images","resizeNearestNeighbor");B(n.rank===3||n.rank===4,function(){return"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank "+n.rank+"."}),B(t.length===2,function(){return"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+t+"."}),B(n.dtype==="float32"||n.dtype==="int32",function(){return"`images` must have `int32` or `float32` as dtype"});var o=n,i=!1;n.rank===3&&(i=!0,o=n.as4D(1,n.shape[0],n.shape[1],n.shape[2]));var a=t[0],s=t[1],u=W.runKernelFunc(function(c,l){return l([o]),c.resizeNearestNeighbor(o,a,s,e)},{batchImages:o},function(c,l){return{batchImages:function(){return W.runKernelFunc(function(f){return f.resizeNearestNeighborBackprop(c,l[0],e)},{})}}});return i?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),zg=_({nonMaxSuppression_:function(r,t,e,n,o){n===void 0&&(n=.5),o===void 0&&(o=Number.NEGATIVE_INFINITY);var i=k(r,"boxes","nonMaxSuppression"),a=k(t,"scores","nonMaxSuppression"),s=Vi(i,a,e,n,o);e=s.maxOutputSize,n=s.iouThreshold,o=s.scoreThreshold;var u={maxOutputSize:e,iouThreshold:n,scoreThreshold:o};return W.runKernelFunc(function(c){return c.nonMaxSuppression(i,a,e,n,o)},{boxes:i,scores:a},null,"NonMaxSuppressionV3",u)}}),Ug=function(r,t,e,n,o){return n===void 0&&(n=.5),o===void 0&&(o=Number.NEGATIVE_INFINITY),be(this,void 0,void 0,function(){var i,a,s,u,c,l,f;return Se(this,function(h){switch(h.label){case 0:return i=k(r,"boxes","nonMaxSuppressionAsync"),a=k(t,"scores","nonMaxSuppressionAsync"),s=Vi(i,a,e,n,o),e=s.maxOutputSize,n=s.iouThreshold,o=s.scoreThreshold,[4,Promise.all([i.data(),a.data()])];case 1:return u=h.sent(),c=u[0],l=u[1],f=Da(c,l,e,n,o),i!==r&&i.dispose(),a!==t&&a.dispose(),[2,f]}})})},Hg=_({nonMaxSuppressionWithScore_:function(r,t,e,n,o,i){n===void 0&&(n=.5),o===void 0&&(o=Number.NEGATIVE_INFINITY),i===void 0&&(i=0);var a=k(r,"boxes","nonMaxSuppression"),s=k(t,"scores","nonMaxSuppression"),u=Vi(a,s,e,n,o,i),c={maxOutputSize:e=u.maxOutputSize,iouThreshold:n=u.iouThreshold,scoreThreshold:o=u.scoreThreshold,softNmsSigma:i=u.softNmsSigma},l=W.runKernel("NonMaxSuppressionV5",{boxes:a,scores:s},c);return{selectedIndices:l[0],selectedScores:l[1]}}}),jg=function(r,t,e,n,o,i){return n===void 0&&(n=.5),o===void 0&&(o=Number.NEGATIVE_INFINITY),i===void 0&&(i=0),be(this,void 0,void 0,function(){var a,s,u,c,l,f,h;return Se(this,function(d){switch(d.label){case 0:return a=k(r,"boxes","nonMaxSuppressionAsync"),s=k(t,"scores","nonMaxSuppressionAsync"),u=Vi(a,s,e,n,o,i),e=u.maxOutputSize,n=u.iouThreshold,o=u.scoreThreshold,i=u.softNmsSigma,[4,Promise.all([a.data(),s.data()])];case 1:return c=d.sent(),l=c[0],f=c[1],h=Fa(l,f,e,n,o,i),a!==r&&a.dispose(),s!==t&&s.dispose(),[2,h]}})})},Vg=_({cropAndResize_:function(r,t,e,n,o,i){var a=k(r,"image","cropAndResize"),s=k(t,"boxes","cropAndResize","float32"),u=k(e,"boxInd","cropAndResize","int32");o=o||"bilinear",i=i||0;var c=s.shape[0];return B(a.rank===4,function(){return"Error in cropAndResize: image must be rank 4,but got rank "+a.rank+"."}),B(s.rank===2&&s.shape[1]===4,function(){return"Error in cropAndResize: boxes must be have size ["+c+",4] but had shape "+s.shape+"."}),B(u.rank===1&&u.shape[0]===c,function(){return"Error in cropAndResize: boxInd must be have size ["+c+"] but had shape "+s.shape+"."}),B(n.length===2,function(){return"Error in cropAndResize: cropSize must be of length 2, but got length "+n.length+"."}),B(n[0]>=1&&n[1]>=1,function(){return"cropSize must be atleast [1,1], but was "+n}),B(o==="bilinear"||o==="nearest",function(){return"method must be bilinear or nearest, but was "+o}),W.runKernelFunc(function(l,f){return l.cropAndResize(a,s,u,n,o,i)},{images:a,boxes:s,boxInd:u},null,"CropAndResize",{method:o,extrapolationValue:i,cropSize:n})}}),es=Object.freeze({resizeBilinear:_g,resizeNearestNeighbor:Qg,nonMaxSuppression:zg,nonMaxSuppressionAsync:Ug,nonMaxSuppressionWithScore:Hg,nonMaxSuppressionWithScoreAsync:jg,cropAndResize:Vg}),ts=function(r,t){return!(r>0)||t==="linear"},ns=function(r,t,e){if(e==null||e==="linear")return r;if(e==="relu")return r.mul(t.step());throw new Error("Gradient for activation "+e+" has not been implemented yet.")},rs=function(r,t){var e=t,n=gn(r.shape,t.shape);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},os=function(r,t,e){if(t==="linear")return r;if(t==="relu")return nn(r);if(t==="elu")return Sl(r);if(t==="relu6")return Bl(r);if(t==="prelu")return Rl(r,e);throw new Error("Unknown fused activation "+t+".")},Gg=_({fusedMatMul_:function(r){var t,e=r.a,n=r.b,o=r.transposeA,i=o!==void 0&&o,a=r.transposeB,s=a!==void 0&&a,u=r.bias,c=r.activation,l=c===void 0?"linear":c,f=r.preluActivationWeights;if(ts(W.state.gradientDepth,l)===!1){var h=Ui(e,n,i,s);return u!=null&&(h=mt(h,u)),os(h,l,f)}var d=k(e,"a","fused matMul"),p=k(n,"b","fused matMul");t=vt(d,p),d=t[0],p=t[1];var v=i?d.shape[d.rank-2]:d.shape[d.rank-1],g=s?p.shape[p.rank-1]:p.shape[p.rank-2],m=i?d.shape[d.rank-1]:d.shape[d.rank-2],w=s?p.shape[p.rank-2]:p.shape[p.rank-1],E=d.shape.slice(0,-2),b=p.shape.slice(0,-2),C=Re(E),S=Re(b);B(d.rank>=2&&p.rank>=2&&d.rank===p.rank,function(){return"Error in fused matMul: inputs must have the same rank of at least 2, got ranks "+d.rank+" and "+p.rank+"."}),B(Ke(E,b),function(){return"Error in fused matMul: outer dimensions ("+E+") and ("+b+") of Tensors with shapes "+d.shape+" and "+p.shape+" must match."}),B(v===g,function(){return"Error in fused matMul: inner shapes ("+v+") and ("+g+") of Tensors with shapes "+d.shape+" and "+p.shape+" and transposeA="+i+" and transposeB="+s+" must match."});var N,O,F=d.shape.slice(0,-2).concat([m,w]),P=i?d.as3D(C,v,m):d.as3D(C,m,v),U=s?p.as3D(S,w,g):p.as3D(S,g,w);u!=null&&gt(F,(N=vt(N=k(u,"bias","fused matMul"),d)[0]).shape),f!=null&&(O=k(f,"prelu weights","fused matMul"));var Q={a:P,b:U};u!=null&&(Q.bias=N),f!=null&&(Q.preluActivationWeights=O);var V=[P,U];return W.runKernelFunc(function(X,te){var ue=X.fusedBatchMatMul({a:P,b:U,transposeA:i,transposeB:s,bias:N,activation:l,preluActivationWeights:O});return te([P,U,ue]),ue},Q,function(X,te){var ue=te[0],se=te[1],oe=te[2],he=ns(X,oe,l),pe={};return u!=null&&(pe={bias:function(){return rs(N,he)}}),Object.assign(i||s?!i&&s?{a:function(){return he.matMul(se,!1,!1)},b:function(){return he.matMul(ue,!0,!1)}}:i&&!s?{a:function(){return se.matMul(he,!1,!0)},b:function(){return ue.matMul(he,!1,!1)}}:{a:function(){return se.matMul(he,!0,!0)},b:function(){return he.matMul(ue,!0,!0)}}:{a:function(){return he.matMul(se,!1,!0)},b:function(){return ue.matMul(he,!0,!1)}},pe)},"_FusedMatMul",{transposeA:i,transposeB:s,activation:l},V,[!0]).reshape(F)}}),Xg=_({fusedConv2d_:function(r){var t=r.x,e=r.filter,n=r.strides,o=r.pad,i=r.dataFormat,a=i===void 0?"NHWC":i,s=r.dilations,u=s===void 0?[1,1]:s,c=r.dimRoundingMode,l=r.bias,f=r.activation,h=f===void 0?"linear":f,d=r.preluActivationWeights;if(h=h||"linear",ts(W.state.gradientDepth,h)===!1){var p=Yn(t,e,n,o,a,u,c);return l!=null&&(p=mt(p,l)),os(p,h,d)}var v=k(t,"x","conv2d"),g=k(e,"filter","conv2d"),m=v,w=!1;v.rank===3&&(w=!0,m=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),B(m.rank===4,function(){return"Error in fused conv2d: input must be rank 4, but got rank "+m.rank+"."}),B(g.rank===4,function(){return"Error in fused conv2d: filter must be rank 4, but got rank "+g.rank+"."}),c!=null&&B(Ue(o),function(){return"Error in fused conv2d: pad must be an integer when using, dimRoundingMode "+c+" but got pad "+o+"."}),B(m.shape[3]===g.shape[2],function(){return"Error in conv2d: depth of input ("+m.shape[3]+") must match input depth for filter "+g.shape[2]+"."}),B(Ln(n,u),function(){return"Error in conv2D: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+u+"'"}),B(a==="NHWC",function(){return"Error in conv2d: got dataFormat of "+a+" but only NHWC is currently supported."});var E,b,C=Lr(m.shape,g.shape,n,u,o,c);l!=null&&(E=vt(E=k(l,"bias","fused conv2d"),v)[0],gt(C.outShape,E.shape)),d!=null&&(b=k(d,"prelu weights","fused conv2d"));var S={x:m,filter:g};l!=null&&(S.bias=E),d!=null&&(S.preluActivationWeights=b);var N=[g,m],O=W.runKernelFunc(function(F,P){var U=F.fusedConv2d({input:m,filter:g,convInfo:C,bias:E,activation:h,preluActivationWeights:b});return P([g,m,U]),U},S,function(F,P){var U=P,Q=U[0],V=U[1],X=U[2],te=ns(F,X,h);B($r(u),function(){return"Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+u+"'"});var ue={};return l!=null&&(ue={bias:function(){return rs(E,te)}}),Object.assign({x:function(){return Al(V.shape,te,Q,n,o)},filter:function(){return Ja(V,te,Q.shape,n,o)}},ue)},"FusedConv2D",{convInfo:C,activation:h},N,[!0]);return w?O.as3D(O.shape[1],O.shape[2],O.shape[3]):O}}),Jg=_({fusedDepthwiseConv2d_:function(r){var t=r.x,e=r.filter,n=r.strides,o=r.pad,i=r.dataFormat,a=i===void 0?"NHWC":i,s=r.dilations,u=s===void 0?[1,1]:s,c=r.dimRoundingMode,l=r.bias,f=r.activation,h=f===void 0?"linear":f,d=r.preluActivationWeights;if(ts(W.state.gradientDepth,h)===!1){var p=zi(t,e,n,o,a,u,c);return l!=null&&(p=mt(p,l)),os(p,h,d)}var v=k(t,"x","depthwiseConv2d"),g=k(e,"filter","depthwiseConv2d"),m=v,w=!1;v.rank===3&&(w=!0,m=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),B(m.rank===4,function(){return"Error in fused depthwiseConv2d: input must be rank 4, but got rank "+m.rank+"."}),B(g.rank===4,function(){return"Error in fused depthwiseConv2d: filter must be rank 4, but got rank "+g.rank+"."}),B(m.shape[3]===g.shape[2],function(){return"Error in fused depthwiseConv2d: number of input channels ("+m.shape[3]+") must match the inChannels dimension in filter "+g.shape[2]+"."}),u==null&&(u=[1,1]),B(Ln(n,u),function(){return"Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+u+"'"}),c!=null&&B(Ue(o),function(){return"Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode "+c+" but got pad "+o+"."});var E,b,C=Lr(m.shape,g.shape,n,u,o,c,!0);l!=null&&(E=vt(E=k(l,"bias","fused conv2d"),v)[0],gt(C.outShape,E.shape)),d!=null&&(b=k(d,"prelu weights","fused depthwiseConv2d"));var S={x:m,filter:g};l!=null&&(S.bias=E),d!=null&&(S.preluActivationWeights=b);var N=[g,m],O=W.runKernelFunc(function(F,P){var U=F.fusedDepthwiseConv2D({input:m,filter:g,convInfo:C,bias:E,activation:h,preluActivationWeights:b});return P([g,m,U]),U},S,function(F,P){B($r(u),function(){return"Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+u+"'"});var U=P[0],Q=P[1],V=P[2],X=ns(F,V,h),te={};return l!=null&&(te={bias:function(){return rs(E,X)}}),Object.assign({x:function(){return yl(Q.shape,X,U,C)},filter:function(){return xl(Q,X,U.shape,C)}},te)},"FusedDepthwiseConv2D",{convInfo:C,activation:h},N,[!0]);return w?O.as3D(O.shape[1],O.shape[2],O.shape[3]):O}}),Kg=Object.freeze({matMul:Gg,conv2d:Xg,depthwiseConv2d:Jg}),Zg=Object.freeze({image:es,linalg:Wg,losses:Ng,spectral:yg,fused:Kg,signal:Cg,square:Tp,squaredDifference:el,conv1d:_v,conv2d:Yn,conv3d:Qv,depthwiseConv2d:zi,separableConv2d:Ka,conv2dTranspose:zv,conv3dTranspose:Uv,op:_,batchNormalization2d:av,batchNormalization3d:sv,batchNormalization4d:uv,batchNormalization:cv,batchNorm:al,batchNorm2d:lv,batchNorm3d:fv,batchNorm4d:hv,booleanMaskAsync:Wv,complex:kn,real:Zn,imag:fr,concat:An,concat1d:mh,concat2d:Ah,concat3d:yh,concat4d:xh,split:Aa,matMul:Ui,dot:Hv,outerProduct:jv,reverse:Yo,reverse1d:Vv,reverse2d:Gv,reverse3d:Xv,reverse4d:Jv,maxPool:En,avgPool:$o,pool:Kv,maxPool3d:Zv,avgPool3d:qv,slice:dr,slice1d:Yv,slice2d:$v,slice3d:El,slice4d:eg,abs:Dp,acos:Fp,acosh:Pp,asin:Np,asinh:Op,atan:Mp,atanh:Lp,ceil:Wp,clipByValue:Ha,cos:_p,cosh:Qp,erf:zp,exp:ja,expm1:Up,floor:Hp,log:jp,log1p:Vp,logSigmoid:Gp,neg:Mi,reciprocal:Xp,round:Jp,rsqrt:tl,sigmoid:nl,sign:Kp,isNaN:Zp,isInf:qp,isFinite:Yp,sin:$p,sinh:ev,softplus:tv,sqrt:nv,step:rv,tan:ov,tanh:iv,all:tg,any:ng,argMax:rg,argMin:og,logSumExp:ig,max:Hi,mean:ag,min:sg,moments:ug,sum:Il,prod:cg,equal:fl,equalStrict:Bv,greater:kv,greaterEqual:hl,greaterEqualStrict:Tv,greaterStrict:Dv,less:Fv,lessEqual:Pv,lessEqualStrict:Nv,lessStrict:Ov,notEqual:Mv,notEqualStrict:Lv,add:mt,addN:vv,addStrict:gv,atan2:mv,div:ir,divNoNan:Av,divStrict:yv,floorDiv:cl,maximum:Va,maximumStrict:xv,minimum:ll,minimumStrict:bv,mod:wv,modStrict:Ev,mul:Fn,mulStrict:Cv,pow:Qi,powStrict:Iv,squaredDifferenceStrict:Sv,sub:xn,subStrict:Rv,elu:Sl,leakyRelu:lg,prelu:Rl,relu:nn,relu6:Bl,selu:fg,logicalAnd:_i,logicalNot:dv,logicalOr:sl,logicalXor:pv,where:no,whereAsync:ul,buffer:ot,print:kh,batchToSpaceND:Uu,broadcastTo:Th,cast:Dh,clone:Fh,cumsum:Ph,depthToSpace:Nh,expandDims:qn,eye:Hu,multinomial:Oh,oneHot:xa,pad:Yr,pad1d:Mh,pad2d:Lh,pad3d:Wh,pad4d:_h,rand:Qh,randomNormal:zh,randomGamma:Uh,randomUniform:ju,reshape:rr,spaceToBatchND:Vu,squeeze:Gu,stack:jn,tile:vo,truncatedNormal:Hh,unstack:yn,setdiff1dAsync:jh,fill:hr,linspace:gh,ones:po,range:xi,scalar:Fe,tensor:Tn,tensor1d:vn,tensor2d:Mr,tensor3d:ma,tensor4d:Qn,tensor5d:dh,tensor6d:ph,variable:vh,zeros:en,onesLike:zu,zerosLike:Bt,transpose:Wr,softmax:Cr,logSoftmax:Gh,localResponseNormalization:hg,norm:kl,gather:Ga,unsortedSegmentSum:vl,basicLSTMCell:dg,multiRNNCell:pg,movingAverage:vg,stridedSlice:gg,topk:mg,scatterND:Ag,fft:Za,ifft:ji,rfft:qa,irfft:Tl,sparseToDense:xg,gatherND:bg,diag:wg,dropout:Eg,hannWindow:Ya,hammingWindow:Fl,frame:$a,stft:Pl,inTopKAsync:Ig});function fe(r,t){Array.isArray(r)||(r=[r]),r.forEach(function(e){e!=null&&B(e.dtype!=="complex64",function(){return t+" does not support complex64 tensors."})})}function is(r,t,e,n){if(e==="linear")return r.linear(t);if(e==="relu")return r.relu(t);if(e==="elu")return r.elu(t);if(e==="relu6")return r.relu6(t);if(e==="prelu")return r.prelu(t,n);throw new Error("Activation "+e+" has not been implemented for the CPU backend.")}var qg=function(r){function t(){var e=r.call(this)||this;return e.blockSize=48,e.firstUse=!0,e.data=new ec(e,W),e}return Pe(t,r),t.prototype.write=function(e,n,o){this.firstUse&&(this.firstUse=!1,J().get("IS_NODE")&&Ai(`
============================
Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.
============================`));var i={};return this.data.set(i,{values:e,dtype:o}),i},t.prototype.move=function(e,n,o,i){this.data.set(e,{values:n,dtype:i})},t.prototype.numDataIds=function(){return this.data.numDataIds()},t.prototype.read=function(e){return be(this,void 0,void 0,function(){return Se(this,function(n){return[2,this.readSync(e)]})})},t.prototype.readSync=function(e){var n=this.data.get(e),o=n.dtype,i=n.complexTensors;return o==="complex64"?Ta(this.readSync(i.real.dataId),this.readSync(i.imag.dataId)):this.data.get(e).values},t.prototype.bufferSync=function(e){var n=this.readSync(e.dataId),o=n;if(e.dtype==="string")try{o=n.map(function(i){return Oe(i)})}catch(i){throw new Error("Failed to decode encoded string bytes into utf-8")}return ot(e.shape,e.dtype,o)},t.prototype.makeOutput=function(e,n,o){var i=this.write(e,n,o);return W.makeTensorFromDataId(i,n,o,this)},t.prototype.disposeData=function(e){if(this.data.has(e)){var n=this.data.get(e).complexTensors;n!=null&&(n.real.dispose(),n.imag.dispose()),this.data.delete(e)}},t.prototype.time=function(e){return be(this,void 0,void 0,function(){var n;return Se(this,function(o){return n=ee(),e(),[2,{kernelMs:ee()-n}]})})},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.complex=function(e,n){var o=this.makeOutput(null,e.shape,"complex64");return this.data.get(o.dataId).complexTensors={real:W.keep(e.clone()),imag:W.keep(n.clone())},o},t.prototype.real=function(e){return this.data.get(e.dataId).complexTensors.real.clone()},t.prototype.imag=function(e){return this.data.get(e.dataId).complexTensors.imag.clone()},t.prototype.slice=function(e,n,o){if(fe(e,"slice"),Ca(e.shape,n,o)){var i=Ia(n,e.strides),a=Re(o);return Tn(this.readSync(e.dataId).subarray(i,i+a),o,e.dtype)}for(var s=ot(o,e.dtype),u=this.bufferSync(e),c=0;c<s.size;++c){var l=s.indexToLoc(c).map(function(f,h){return f+n[h]});s.values[c]=u.get.apply(u,l)}return s.toTensor()},t.prototype.stridedSlice=function(e,n,o,i){fe(e,"stridedSlice");var a=Si(n,o,i);if(a.some(function(d){return d===0}))return Tn([],a);for(var s=ot(a,e.dtype),u=this.bufferSync(e),c=0;c<s.size;c++){for(var l=s.indexToLoc(c),f=new Array(l.length),h=0;h<f.length;h++)f[h]=l[h]*i[h]+n[h];s.set.apply(s,[u.get.apply(u,f)].concat(l))}return s.toTensor()},t.prototype.diag=function(e){for(var n=this.readSync(e.dataId),o=ot([e.size,e.size],e.dtype),i=o.values,a=0;a<n.length;a++)i[a*e.size+a]=n[a];return o.toTensor()},t.prototype.unstack=function(e,n){for(var o=e.shape[n],i=new Array(e.rank-1),a=0,s=0;s<e.rank;s++)s!==n&&(i[a++]=e.shape[s]);var u=new Array(e.rank).fill(0),c=e.shape.slice();c[n]=1;var l=new Array(o);for(s=0;s<l.length;s++)u[n]=s,l[s]=this.slice(e,u,c).reshape(i);return l},t.prototype.reverse=function(e,n){fe(e,"reverse");for(var o=ot(e.shape,e.dtype),i=this.bufferSync(e),a=function(u){var c=o.indexToLoc(u),l=c.slice();n.forEach(function(f){return l[f]=e.shape[f]-1-l[f]}),o.set.apply(o,[i.get.apply(i,l)].concat(c))},s=0;s<o.size;s++)a(s);return o.toTensor()},t.prototype.concat=function(e,n){var o=this;if(e[0].dtype==="complex64"){var i=e.map(function(d){return Zn(d)}),a=e.map(function(d){return fr(d)});return kn(this.concat(i,n),this.concat(a,n))}var s=e.map(function(d){var p=Re(d.shape.slice(n));return d.as2D(-1,p)}),u=Kr(s.map(function(d){return d.shape}),1),c=ot(u,e[0].dtype).values;if(s[0].shape[0]===1){var l=0;s.forEach(function(d){c.set(o.readSync(d.dataId),l),l+=d.size})}else{var f=0;s.forEach(function(d){for(var p=o.readSync(d.dataId),v=0,g=0;g<d.shape[0];++g)for(var m=g*u[1]+f,w=0;w<d.shape[1];++w)c[m+w]=p[v++];f+=d.shape[1]})}var h=Kr(e.map(function(d){return d.shape}),n);return Tn(c,h,e[0].dtype)},t.prototype.neg=function(e){return fe(e,"neg"),this.multiply(Fe(-1),e)},t.prototype.add=function(e,n){return e.dtype==="complex64"||n.dtype==="complex64"?this.broadcastedBinaryComplexOp(e.cast("complex64"),n.cast("complex64"),function(o,i,a,s){return{real:o+a,imag:i+s}}):this.broadcastedBinaryOp(e,n,Lt(e.dtype,n.dtype),function(o,i){return o+i})},t.prototype.addN=function(e){var n=this;fe(e,"addN");for(var o=e.map(function(l){return n.readSync(l.dataId)}),i=ot(e[0].shape,e[0].dtype),a=i.values,s=0;s<e.length;s++)for(var u=o[s],c=0;c<a.length;c++)a[c]+=u[c];return i.toTensor()},t.prototype.softmax=function(e,n){var o=Dt([n],e.shape),i=this.max(e,o),a=Mn(i.shape,o),s=this.subtract(e,i.reshape(a)),u=this.exp(s),c=this.sum(u,o).reshape(a);return this.realDivide(u,c)},t.prototype.subtract=function(e,n){return e.dtype==="complex64"||n.dtype==="complex64"?this.broadcastedBinaryComplexOp(e.cast("complex64"),n.cast("complex64"),function(o,i,a,s){return{real:o-a,imag:i-s}}):this.broadcastedBinaryOp(e,n,Lt(e.dtype,n.dtype),function(o,i){return o-i})},t.prototype.pow=function(e,n){return fe([e,n],"pow"),this.broadcastedBinaryOp(e,n,e.dtype,function(o,i){return Math.pow(o,i)})},t.prototype.batchMatMul=function(e,n,o,i){fe([e,n],"matMul");for(var a=o?e.shape[1]:e.shape[2],s=o?e.shape[2]:e.shape[1],u=i?n.shape[1]:n.shape[2],c=e.shape[0],l=this.readSync(e.dataId),f=this.readSync(n.dataId),h=o?[e.strides[0],1,e.strides[1]]:[e.strides[0],e.strides[1],1],d=h[0],p=h[1],v=h[2],g=i?[1,n.strides[1],n.strides[0]]:[n.strides[1],1,n.strides[0]],m=g[0],w=g[1],E=g[2],b=s*u,C=ot([c,s,u],e.dtype),S=C.values,N=this.blockSize,O=0;O<c;O++)for(var F=0;F<s;F+=N)for(var P=0;P<u;P+=N)for(var U=0;U<a;U+=N)for(var Q=Math.min(F+N,s),V=Math.min(P+N,u),X=Math.min(U+N,a),te=F;te<Q;te++)for(var ue=P;ue<V;ue++){for(var se=0,oe=U;oe<X;oe++)se+=l[O*d+te*p+oe*v]*f[oe*m+ue*w+O*E];S[O*b+(te*u+ue)]+=se}return C.toTensor()},t.prototype.fusedBatchMatMul=function(e){var n=e.a,o=e.b,i=e.transposeA,a=e.transposeB,s=e.bias,u=e.activation,c=e.preluActivationWeights,l=this.batchMatMul(n,o,i,a);return s&&(l=this.add(l,s)),u&&(l=is(this,l,u,c)),l},t.prototype.multiply=function(e,n){return e.dtype==="complex64"||n.dtype==="complex64"?this.broadcastedBinaryComplexOp(e.cast("complex64"),n.cast("complex64"),function(o,i,a,s){return{real:o*a-i*s,imag:o*s+i*a}}):this.broadcastedBinaryOp(e,n,Lt(e.dtype,n.dtype),function(o,i){return o*i})},t.prototype.realDivide=function(e,n){return fe([e,n],"realDivide"),this.broadcastedBinaryOp(e,n,"float32",function(o,i){return o/i})},t.prototype.floorDiv=function(e,n){return fe([e,n],"floorDiv"),this.broadcastedBinaryOp(e,n,"int32",function(o,i){return Math.floor(o/i)})},t.prototype.sum=function(e,n){fe(e,"sum"),_n("sum",n,e.rank);for(var o=Bn(e.shape,n),i=o[0],a=o[1],s=en(i,Lt(e.dtype,"int32")),u=Re(a),c=this.readSync(s.dataId),l=this.readSync(e.dataId),f=0;f<c.length;++f){for(var h=f*u,d=0,p=0;p<u;++p)d+=l[h+p];c[f]=d}return s},t.prototype.prod=function(e,n){fe(e,"sum");for(var o=Bn(e.shape,n),i=o[0],a=o[1],s=en(i,Lt(e.dtype,"int32")),u=Re(a),c=this.readSync(s.dataId),l=this.readSync(e.dataId),f=0;f<c.length;++f){for(var h=f*u,d=1,p=0;p<u;++p)d*=l[h+p];c[f]=d}return s},t.prototype.unsortedSegmentSum=function(e,n,o){fe(e,"unsortedSegmentSum");for(var i=[],a=e.rank-n.rank,s=0;s<a;++s)n=n.expandDims(s+1);for(s=0;s<o;++s){var u=Fe(s,"int32"),c=fl(u,n).asType("float32").mul(e).sum(0);i.push(c)}return jn(i)},t.prototype.argMin=function(e,n){fe(e,"argMin");var o=[n];_n("argMin",o,e.rank);for(var i=Bn(e.shape,o),a=i[0],s=i[1],u=en(a,"int32"),c=Re(s),l=this.readSync(u.dataId),f=this.readSync(e.dataId),h=0;h<l.length;++h){for(var d=h*c,p=f[d],v=0,g=0;g<c;++g){var m=f[d+g];m<p&&(p=m,v=g)}l[h]=v}return u},t.prototype.argMax=function(e,n){fe(e,"argMax");var o=[n];_n("argMax",o,e.rank);for(var i=Bn(e.shape,o),a=i[0],s=i[1],u=en(a,"int32"),c=Re(s),l=this.readSync(u.dataId),f=this.readSync(e.dataId),h=0;h<l.length;++h){for(var d=h*c,p=f[d],v=0,g=0;g<c;++g){var m=f[d+g];m>p&&(p=m,v=g)}l[h]=v}return u},t.prototype.cumsum=function(e,n,o,i){if(fe(e,"cumsum"),n!==e.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(e.rank-1)+" but got axis="+n);for(var a=Lt(e.dtype,"int32"),s=en(e.shape,a),u=this.readSync(s.dataId),c=this.readSync(e.dataId),l=e.shape[e.rank-1],f=i?function(g,m){return g+l-m-1}:function(g,m){return g+m},h=0;h<c.length;h+=l)for(var d=0;d<l;d++){var p=f(h,d);if(d===0)u[p]=o?0:c[p];else{var v=f(h,d-1);u[p]=o?c[v]+u[v]:c[p]+u[v]}}return s},t.prototype.equal=function(e,n){return fe([e,n],"equal"),this.broadcastedBinaryOp(e,n,"bool",function(o,i){return o===i?1:0})},t.prototype.notEqual=function(e,n){return fe([e,n],"notEqual"),this.broadcastedBinaryOp(e,n,"bool",function(o,i){return o!==i?1:0})},t.prototype.less=function(e,n){return fe([e,n],"less"),this.broadcastedBinaryOp(e,n,"bool",function(o,i){return o<i?1:0})},t.prototype.lessEqual=function(e,n){return fe([e,n],"lessEqual"),this.broadcastedBinaryOp(e,n,"bool",function(o,i){return o<=i?1:0})},t.prototype.greater=function(e,n){return fe([e,n],"greater"),this.broadcastedBinaryOp(e,n,"bool",function(o,i){return o>i?1:0})},t.prototype.greaterEqual=function(e,n){return fe([e,n],"greaterEqual"),this.broadcastedBinaryOp(e,n,"bool",function(o,i){return o>=i?1:0})},t.prototype.logicalNot=function(e){fe(e,"logicalNot");for(var n=this.readSync(e.dataId),o=new Uint8Array(n.length),i=0;i<n.length;++i)o[i]=n[i]?0:1;return this.makeOutput(o,e.shape,"bool")},t.prototype.logicalAnd=function(e,n){return fe([e,n],"logicalAnd"),this.broadcastedBinaryOp(e,n,"bool",function(o,i){return o&&i})},t.prototype.logicalOr=function(e,n){return fe([e,n],"logicalOr"),this.broadcastedBinaryOp(e,n,"bool",function(o,i){return o||i})},t.prototype.select=function(e,n,o){fe([e,n,o],"select");for(var i=this.readSync(e.dataId),a=this.readSync(n.dataId),s=this.readSync(o.dataId),u=en(n.shape,Lt(n.dtype,o.dtype)),c=this.readSync(u.dataId),l=0,f=e.rank===0||e.rank>1||n.rank===1?1:Re(n.shape.slice(1)),h=0;h<i.length;h++)for(var d=0;d<f;d++)i[h]===1?c[l++]=a[h]:c[l++]=s[h];return u},t.prototype.where=function(e){fe([e],"where");var n=this.readSync(e.dataId);return Pa(e.shape,n)},t.prototype.topk=function(e,n,o){return fe(e,"topk"),sc(this.readSync(e.dataId),e.shape,e.dtype,n)},t.prototype.min=function(e,n){fe(e,"min"),_n("min",n,e.rank);for(var o=Bn(e.shape,n),i=o[0],a=o[1],s=en(i,e.dtype),u=Re(a),c=this.readSync(s.dataId),l=this.readSync(e.dataId),f=0;f<c.length;++f){for(var h=f*u,d=l[h],p=0;p<u;++p){var v=l[h+p];v<d&&(d=v)}c[f]=d}return s},t.prototype.minimum=function(e,n){return fe([e,n],"minimum"),this.broadcastedBinaryOp(e,n,e.dtype,function(o,i){return Math.min(o,i)})},t.prototype.mod=function(e,n){return fe([e,n],"mod"),this.broadcastedBinaryOp(e,n,e.dtype,function(o,i){var a=o%i;return o<0&&i<0||o>=0&&i>=0?a:(a+i)%i})},t.prototype.max=function(e,n){fe(e,"max"),_n("max",n,e.rank);for(var o=Bn(e.shape,n),i=o[0],a=o[1],s=en(i,e.dtype),u=Re(a),c=this.readSync(s.dataId),l=this.readSync(e.dataId),f=0;f<c.length;++f){for(var h=f*u,d=l[h],p=0;p<u;++p){var v=l[h+p];v>d&&(d=v)}c[f]=d}return s},t.prototype.maximum=function(e,n){return fe([e,n],"maximum"),this.broadcastedBinaryOp(e,n,e.dtype,function(o,i){return Math.max(o,i)})},t.prototype.all=function(e,n){fe(e,"all"),_n("all",n,e.rank);for(var o=Bn(e.shape,n),i=o[0],a=o[1],s=en(i,e.dtype),u=Re(a),c=this.readSync(s.dataId),l=this.readSync(e.dataId),f=0;f<c.length;++f){for(var h=f*u,d=l[h],p=0;p<u;++p){var v=l[h+p];d=d&&v}c[f]=d}return s},t.prototype.any=function(e,n){fe(e,"any"),_n("any",n,e.rank);for(var o=Bn(e.shape,n),i=o[0],a=o[1],s=en(i,e.dtype),u=Re(a),c=this.readSync(s.dataId),l=this.readSync(e.dataId),f=0;f<c.length;++f){for(var h=f*u,d=l[h],p=0;p<u;++p){var v=l[h+p];d=d||v}c[f]=d}return s},t.prototype.squaredDifference=function(e,n){return fe([e,n],"squaredDifference"),this.broadcastedBinaryOp(e,n,e.dtype,function(o,i){var a=o-i;return a*a})},t.prototype.ceil=function(e){fe(e,"ceil");for(var n=this.readSync(e.dataId),o=new Float32Array(n.length),i=0;i<n.length;++i)o[i]=Math.ceil(n[i]);return this.makeOutput(o,e.shape,"float32")},t.prototype.floor=function(e){fe(e,"floor");for(var n=this.readSync(e.dataId),o=new Float32Array(n.length),i=0;i<n.length;++i)o[i]=Math.floor(n[i]);return this.makeOutput(o,e.shape,"float32")},t.prototype.sign=function(e){fe(e,"x");for(var n=this.readSync(e.dataId),o=new Float32Array(n.length),i=0;i<n.length;++i)n[i]<0?o[i]=-1:n[i]>0?o[i]=1:o[i]=0;return this.makeOutput(o,e.shape,"float32")},t.prototype.isNaN=function(e){fe(e,"x");for(var n=this.readSync(e.dataId),o=new Uint8Array(n.length),i=0;i<n.length;++i)Number.isNaN(n[i])&&(o[i]=1);return this.makeOutput(o,e.shape,"bool")},t.prototype.isInf=function(e){fe(e,"x");for(var n=this.readSync(e.dataId),o=new Uint8Array(n.length),i=0;i<n.length;++i)Math.abs(n[i])===1/0&&(o[i]=1);return this.makeOutput(o,e.shape,"bool")},t.prototype.isFinite=function(e){fe(e,"x");for(var n=this.readSync(e.dataId),o=new Uint8Array(n.length),i=0;i<n.length;++i)Number.isFinite(n[i])&&(o[i]=1);return this.makeOutput(o,e.shape,"bool")},t.prototype.round=function(e){fe(e,"round");for(var n=this.readSync(e.dataId),o=new Float32Array(n.length),i=0;i<n.length;++i){var a=Math.floor(n[i]);n[i]-a<.5?o[i]=Math.floor(n[i]):n[i]-a>.5?o[i]=Math.ceil(n[i]):o[i]=a%2==0?a:a+1}return this.makeOutput(o,e.shape,"float32")},t.prototype.exp=function(e){fe(e,"exp");for(var n=this.readSync(e.dataId),o=new Float32Array(n.length),i=0;i<n.length;++i)o[i]=Math.exp(n[i]);return this.makeOutput(o,e.shape,"float32")},t.prototype.expm1=function(e){fe(e,"expm1");for(var n=this.readSync(e.dataId),o=new Float32Array(n.length),i=0;i<n.length;++i)o[i]=Math.expm1(n[i]);return this.makeOutput(o,e.shape,"float32")},t.prototype.log=function(e){fe(e,"log");for(var n=this.readSync(e.dataId),o=new Float32Array(n.length),i=0;i<n.length;++i){var a=n[i];o[i]=Math.log(a)}return this.makeOutput(o,e.shape,"float32")},t.prototype.log1p=function(e){fe(e,"log1p");for(var n=this.readSync(e.dataId),o=new Float32Array(n.length),i=0;i<n.length;++i){var a=n[i];o[i]=Math.log1p(a)}return this.makeOutput(o,e.shape,"float32")},t.prototype.sqrt=function(e){fe(e,"sqrt");for(var n=this.readSync(e.dataId),o=new Float32Array(n.length),i=0;i<n.length;++i){var a=n[i];o[i]=Math.sqrt(a)}return this.makeOutput(o,e.shape,"float32")},t.prototype.rsqrt=function(e){fe(e,"rsqrt");for(var n=this.readSync(e.dataId),o=new Float32Array(n.length),i=0;i<n.length;++i){var a=n[i];o[i]=1/Math.sqrt(a)}return this.makeOutput(o,e.shape,"float32")},t.prototype.reciprocal=function(e){fe(e,"reciprocal");for(var n=this.readSync(e.dataId),o=new Float32Array(n.length),i=0;i<n.length;++i)o[i]=1/n[i];return this.makeOutput(o,e.shape,"float32")},t.prototype.linear=function(e){return e},t.prototype.relu=function(e){fe(e,"relu");for(var n=en(e.shape,e.dtype),o=this.readSync(n.dataId),i=this.readSync(e.dataId),a=0;a<i.length;++a)o[a]=Math.max(0,i[a]);return n},t.prototype.relu6=function(e){fe(e,"relu");for(var n=en(e.shape,e.dtype),o=this.readSync(n.dataId),i=this.readSync(e.dataId),a=0;a<i.length;++a)o[a]=Math.min(Math.max(0,i[a]),6);return n},t.prototype.prelu=function(e,n){return fe([e,n],"prelu"),this.broadcastedBinaryOp(e,n,e.dtype,function(o,i){return o<0?i*o:o})},t.prototype.elu=function(e){fe(e,"elu");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i){var a=o[i];n[i]=a>=0?a:Math.exp(a)-1}return this.makeOutput(n,e.shape,"float32")},t.prototype.eluDer=function(e,n){fe([e,n],"eluDer");for(var o=new Float32Array(n.size),i=this.readSync(n.dataId),a=this.readSync(e.dataId),s=0;s<i.length;++s){var u=i[s];o[s]=u>=1?a[s]:a[s]*(u+1)}return this.makeOutput(o,n.shape,"float32")},t.prototype.selu=function(e){fe(e,"selu");for(var n=za,o=Ua,i=new Float32Array(e.size),a=this.readSync(e.dataId),s=0;s<a.length;++s){var u=a[s];i[s]=u>=0?o*u:n*(Math.exp(u)-1)}return this.makeOutput(i,e.shape,"float32")},t.prototype.clip=function(e,n,o){fe(e,"clip");for(var i=new Float32Array(e.size),a=this.readSync(e.dataId),s=0;s<a.length;++s){var u=a[s];i[s]=u>o?o:u<n?n:u}return this.makeOutput(i,e.shape,"float32")},t.prototype.abs=function(e){for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Math.abs(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.complexAbs=function(e){for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<e.size;++i){var a=o[2*i],s=o[2*i+1];n[i]=Math.hypot(a,s)}return this.makeOutput(n,e.shape,"float32")},t.prototype.int=function(e){fe(e,"int");for(var n=new Int32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=o[i];return this.makeOutput(n,e.shape,"int32")},t.prototype.sigmoid=function(e){fe(e,"sigmoid");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=1/(1+Math.exp(-o[i]));return this.makeOutput(n,e.shape,"float32")},t.prototype.softplus=function(e){fe(e,"softplus");for(var n=Math.log(11920928955078125e-23)+2,o=new Float32Array(e.size),i=this.readSync(e.dataId),a=0;a<i.length;++a){var s=i[a]>-n,u=i[a]<n,c=Math.exp(i[a]),l=void 0;l=u?c:s?i[a]:Math.log(1+c),o[a]=l}return this.makeOutput(o,e.shape,"float32")},t.prototype.sin=function(e){fe(e,"sin");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Math.sin(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.cos=function(e){fe(e,"cos");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Math.cos(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.tan=function(e){fe(e,"tan");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Math.tan(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.asin=function(e){fe(e,"asin");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Math.asin(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.acos=function(e){fe(e,"acos");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Math.acos(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.atan=function(e){fe(e,"atan");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Math.atan(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.atan2=function(e,n){return fe([e,n],"atan2"),this.broadcastedBinaryOp(e,n,e.dtype,function(o,i){return Math.atan2(o,i)})},t.prototype.sinh=function(e){fe(e,"sinh");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Math.sinh(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.cosh=function(e){fe(e,"cosh");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Math.cosh(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.tanh=function(e){fe(e,"tanh");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Pt(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.asinh=function(e){fe(e,"asinh");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Math.asinh(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.acosh=function(e){fe(e,"acosh");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Math.acosh(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.atanh=function(e){fe(e,"atanh");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i)n[i]=Math.atanh(o[i]);return this.makeOutput(n,e.shape,"float32")},t.prototype.erf=function(e){fe(e,"erf");for(var n=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i){var a=Math.sign(o[i]),s=Math.abs(o[i]),u=1/(1+.3275911*s);n[i]=a*(1-((((1.061405429*u-1.453152027)*u+1.421413741)*u-.284496736)*u+.254829592)*u*Math.exp(-s*s))}return this.makeOutput(n,e.shape,"float32")},t.prototype.step=function(e,n){n===void 0&&(n=0),fe(e,"step");for(var o=new Float32Array(e.size),i=this.readSync(e.dataId),a=0;a<i.length;++a){var s=i[a];isNaN(s)?o[a]=NaN:o[a]=s>0?1:n}return this.makeOutput(o,e.shape,"float32")},t.prototype.fusedConv2d=function(e){var n=e.input,o=e.filter,i=e.convInfo,a=e.bias,s=e.activation,u=e.preluActivationWeights,c=this.conv2d(n,o,i);return a&&(c=this.add(c,a)),s&&(c=is(this,c,s,u)),c},t.prototype.conv2d=function(e,n,o){fe([e,n],"conv2d");for(var i=o.filterHeight,a=o.filterWidth,s=o.dilationHeight,u=o.dilationWidth,c=o.padInfo.left,l=o.padInfo.top,f=o.dataFormat==="channelsLast",h=ot(o.outShape,e.dtype),d=e.strides[0],p=f?e.strides[1]:e.strides[2],v=f?e.strides[2]:1,g=f?1:e.strides[1],m=h.strides[0],w=f?h.strides[1]:h.strides[2],E=f?h.strides[2]:1,b=f?1:h.strides[1],C=this.readSync(e.dataId),S=this.readSync(n.dataId),N=h.values,O=0;O<o.batchSize;++O)for(var F=O*d,P=O*m,U=0;U<o.outHeight;++U)for(var Q=P+U*w,V=U*o.strideHeight-l,X=0;X<i;X++){var te=V+X*s;if(!(te<0||te>=o.inHeight))for(var ue=X*n.strides[0],se=F+te*p,oe=0;oe<o.outWidth;++oe)for(var he=Q+oe*E,pe=oe*o.strideWidth-c,xe=0;xe<a;xe++){var ke=pe+xe*u;if(!(ke<0||ke>=o.inWidth))for(var Ne=se+ke*v,et=ue+xe*n.strides[1],Ye=0;Ye<o.inChannels;++Ye){for(var st=C[Ne+Ye*g],xt=0;xt<o.outChannels;++xt)N[he+xt*b]+=st*S[et+xt];et+=o.outChannels}}}return h.toTensor()},t.prototype.conv3d=function(e,n,o){for(var i=o.filterDepth,a=o.filterHeight,s=o.filterWidth,u=o.dilationDepth,c=o.dilationHeight,l=o.dilationWidth,f=o.padInfo.front,h=o.padInfo.left,d=o.padInfo.top,p=ot(o.outShape,e.dtype),v=this.readSync(e.dataId),g=this.readSync(n.dataId),m=p.values,w=0;w<o.batchSize;++w)for(var E=w*e.strides[0],b=w*p.strides[0],C=0;C<o.outDepth;++C)for(var S=b+C*p.strides[1],N=C*o.strideDepth-f,O=0;O<i;O++){var F=N+O*u;if(!(F<0||F>=o.inDepth))for(var P=O*n.strides[0],U=E+F*e.strides[1],Q=0;Q<o.outHeight;++Q)for(var V=S+Q*p.strides[2],X=Q*o.strideHeight-d,te=0;te<a;te++){var ue=X+te*c;if(!(ue<0||ue>=o.inHeight))for(var se=P+te*n.strides[1],oe=U+ue*e.strides[2],he=0;he<o.outWidth;++he)for(var pe=V+he*o.outChannels,xe=he*o.strideWidth-h,ke=0;ke<s;ke++){var Ne=xe+ke*l;if(!(Ne<0||Ne>=o.inWidth))for(var et=se+ke*n.strides[2],Ye=oe+Ne*o.inChannels,st=et,xt=0;xt<o.inChannels;++xt){for(var Ct=v[Ye+xt],kt=0;kt<o.outChannels;++kt)m[pe+kt]+=Ct*g[st+kt];st+=o.outChannels}}}}return p.toTensor()},t.prototype.conv2dDerInput=function(e,n,o){fe([e,n],"conv2dDerInput");for(var i=ot(o.inShape,"float32"),a=i.values,s=this.readSync(e.dataId),u=this.readSync(n.dataId),c=n.strides,l=c[0],f=c[1],h=c[2],d=o.batchSize,p=o.filterHeight,v=o.filterWidth,g=o.inChannels,m=o.inHeight,w=o.inWidth,E=o.outChannels,b=o.outHeight,C=o.outWidth,S=o.strideHeight,N=o.strideWidth,O=o.dataFormat,F=p-1-o.padInfo.top,P=v-1-o.padInfo.left,U=O==="channelsLast",Q=i.strides[0],V=U?i.strides[1]:i.strides[2],X=U?i.strides[2]:1,te=U?1:i.strides[1],ue=e.strides[0],se=U?e.strides[1]:e.strides[2],oe=U?e.strides[2]:1,he=U?1:e.strides[1],pe=0;pe<d;++pe)for(var xe=0;xe<g;++xe)for(var ke=0;ke<m;++ke)for(var Ne=ke-F,et=Math.max(0,Math.ceil(Ne/S)),Ye=Math.min(b,(p+Ne)/S),st=0;st<w;++st){for(var xt=st-P,Ct=Math.max(0,Math.ceil(xt/N)),kt=Math.min(C,(v+xt)/N),fn=0,It=et;It<Ye;++It)for(var Jt=It*S-Ne,_t=Ct;_t<kt;++_t)for(var un=ue*pe+se*It+oe*_t,rn=l*(p-1-Jt)+f*(v-1-(_t*N-xt))+h*xe,on=0;on<E;++on)fn+=s[un+he*on]*u[rn+on];a[Q*pe+V*ke+X*st+te*xe]=fn}return i.toTensor()},t.prototype.conv3dDerInput=function(e,n,o){for(var i=ot(o.inShape,"float32"),a=i.values,s=i.strides,u=s[0],c=s[1],l=s[2],f=s[3],h=this.readSync(e.dataId),d=e.strides,p=d[0],v=d[1],g=d[2],m=d[3],w=this.readSync(n.dataId),E=n.strides,b=E[0],C=E[1],S=E[2],N=E[3],O=o.batchSize,F=o.filterDepth,P=o.filterHeight,U=o.filterWidth,Q=o.inChannels,V=o.inDepth,X=o.inHeight,te=o.inWidth,ue=o.outChannels,se=o.outDepth,oe=o.outHeight,he=o.outWidth,pe=o.strideDepth,xe=o.strideHeight,ke=o.strideWidth,Ne=F-1-o.padInfo.front,et=P-1-o.padInfo.top,Ye=U-1-o.padInfo.left,st=0;st<O;++st)for(var xt=0;xt<Q;++xt)for(var Ct=0;Ct<V;++Ct)for(var kt=Ct-Ne,fn=Math.max(0,Math.ceil(kt/pe)),It=Math.min(se,(F+kt)/pe),Jt=0;Jt<X;++Jt)for(var _t=Jt-et,un=Math.max(0,Math.ceil(_t/xe)),rn=Math.min(oe,(P+_t)/xe),on=0;on<te;++on){for(var yr=on-Ye,xr=Math.max(0,Math.ceil(yr/ke)),Jn=Math.min(he,(U+yr)/ke),Fo=0,Fr=fn;Fr<It;++Fr)for(var Xr=Fr*pe-kt,Pr=un;Pr<rn;++Pr)for(var Po=Pr*xe-_t,Nr=xr;Nr<Jn;++Nr)for(var su=p*st+v*Fr+g*Pr+m*Nr,No=b*(F-1-Xr)+C*(P-1-Po)+S*(U-1-(Nr*ke-yr))+N*xt,br=0;br<ue;++br)Fo+=h[su+br]*w[No+br];a[u*st+c*Ct+l*Jt+f*on+xt]=Fo}return i.toTensor()},t.prototype.conv2dDerFilter=function(e,n,o){fe([e,n],"conv2dDerFilter");for(var i=o.strideHeight,a=o.strideWidth,s=o.filterHeight,u=o.filterWidth,c=o.dataFormat==="channelsLast",l=ot(o.filterShape,"float32"),f=o.padInfo.left,h=o.padInfo.top,d=this.bufferSync(e),p=this.bufferSync(n),v=0;v<s;++v)for(var g=Math.max(0,Math.ceil((h-v)/i)),m=Math.min(o.outHeight,(o.inHeight+h-v)/i),w=0;w<u;++w)for(var E=Math.max(0,Math.ceil((f-w)/a)),b=Math.min(o.outWidth,(o.inWidth+f-w)/a),C=0;C<o.inChannels;++C)for(var S=0;S<o.outChannels;++S){for(var N=0,O=0;O<o.batchSize;++O)for(var F=g;F<m;++F)for(var P=v+F*i-h,U=E;U<b;++U){var Q=w+U*a-f;N+=c?d.get(O,P,Q,C)*p.get(O,F,U,S):d.get(O,C,P,Q)*p.get(O,S,F,U)}l.set(N,v,w,C,S)}return l.toTensor()},t.prototype.conv3dDerFilter=function(e,n,o){for(var i=o.strideDepth,a=o.strideHeight,s=o.strideWidth,u=o.filterDepth,c=o.filterHeight,l=o.filterWidth,f=ot(o.filterShape,"float32"),h=f.values,d=f.strides,p=d[0],v=d[1],g=d[2],m=d[3],w=this.readSync(n.dataId),E=n.strides,b=E[0],C=E[1],S=E[2],N=E[3],O=this.readSync(e.dataId),F=e.strides,P=F[0],U=F[1],Q=F[2],V=F[3],X=o.padInfo.front,te=o.padInfo.left,ue=o.padInfo.top,se=0;se<u;++se)for(var oe=Math.max(0,Math.ceil((X-se)/i)),he=Math.min(o.outDepth,(o.inDepth+X-se)/i),pe=se*p,xe=0;xe<c;++xe)for(var ke=Math.max(0,Math.ceil((ue-xe)/a)),Ne=Math.min(o.outHeight,(o.inHeight+ue-xe)/a),et=xe*v+pe,Ye=0;Ye<l;++Ye)for(var st=Math.max(0,Math.ceil((te-Ye)/s)),xt=Math.min(o.outWidth,(o.inWidth+te-Ye)/s),Ct=Ye*g+et,kt=0;kt<o.inChannels;++kt)for(var fn=kt*m+Ct,It=0;It<o.outChannels;++It){for(var Jt=0,_t=0;_t<o.batchSize;++_t)for(var un=_t*P,rn=_t*b,on=oe;on<he;++on)for(var yr=(se+on*i-X)*U+un,xr=on*C+rn,Jn=ke;Jn<Ne;++Jn)for(var Fo=(xe+Jn*a-ue)*Q+yr,Fr=Jn*S+xr,Xr=st;Xr<xt;++Xr){var Pr=Xr*N+Fr;Jt+=O[(Ye+Xr*s-te)*V+Fo+kt]*w[Pr+It]}h[fn+It]=Jt}return f.toTensor()},t.prototype.fusedDepthwiseConv2D=function(e){var n=e.input,o=e.filter,i=e.convInfo,a=e.bias,s=e.activation,u=e.preluActivationWeights,c=this.depthwiseConv2D(n,o,i);return a&&(c=this.add(c,a)),s&&(c=is(this,c,s,u)),c},t.prototype.depthwiseConv2D=function(e,n,o){fe([e,n],"depthwiseConv2D");for(var i=o.filterHeight,a=o.filterWidth,s=o.dilationHeight,u=o.dilationWidth,c=o.padInfo.left,l=o.padInfo.top,f=o.outChannels/o.inChannels,h=ot(o.outShape,e.dtype),d=this.readSync(e.dataId),p=this.readSync(n.dataId),v=h.values,g=0;g<o.batchSize;++g)for(var m=g*e.strides[0],w=g*h.strides[0],E=0;E<o.outHeight;++E)for(var b=w+E*h.strides[1],C=E*o.strideHeight-c,S=0;S<i;++S){var N=C+S*s;if(!(N<0||N>=o.inHeight))for(var O=S*n.strides[0],F=m+N*e.strides[1],P=0;P<o.outWidth;++P)for(var U=b+P*h.strides[2],Q=P*o.strideWidth-l,V=0;V<a;++V){var X=Q+V*u;if(!(X<0||X>=o.inWidth))for(var te=O+V*n.strides[1],ue=F+X*o.inChannels,se=U,oe=te,he=0;he<o.inChannels;++he){for(var pe=d[ue+he],xe=0;xe<f;++xe)v[se+xe]+=pe*p[oe+xe];se+=f,oe+=f}}}return h.toTensor()},t.prototype.depthwiseConv2DDerInput=function(e,n,o){fe([e,n],"depthwiseConv2DDerInput");for(var i=ot(o.inShape,"float32"),a=i.values,s=i.strides,u=s[0],c=s[1],l=s[2],f=this.readSync(e.dataId),h=e.strides,d=h[0],p=h[1],v=h[2],g=this.readSync(n.dataId),m=n.strides,w=m[0],E=m[1],b=m[2],C=o.batchSize,S=o.filterHeight,N=o.filterWidth,O=o.inChannels,F=o.inHeight,P=o.inWidth,U=o.outChannels,Q=o.outHeight,V=o.outWidth,X=o.strideHeight,te=o.strideWidth,ue=S-1-o.padInfo.top,se=N-1-o.padInfo.left,oe=U/O,he=0;he<C;++he)for(var pe=0;pe<O;++pe)for(var xe=0;xe<F;++xe)for(var ke=xe-ue,Ne=Math.max(0,Math.ceil(ke/X)),et=Math.min(Q,(S+ke)/X),Ye=0;Ye<P;++Ye){for(var st=Ye-se,xt=Math.max(0,Math.ceil(st/te)),Ct=Math.min(V,(N+st)/te),kt=0,fn=Ne;fn<et;++fn)for(var It=fn*X-ke,Jt=xt;Jt<Ct;++Jt)for(var _t=d*he+p*fn+v*Jt,un=w*(S-1-It)+E*(N-1-(Jt*te-st))+b*pe,rn=0;rn<oe;++rn)kt+=f[_t+(pe*oe+rn)]*g[un+rn];a[u*he+c*xe+l*Ye+pe]=kt}return i.toTensor()},t.prototype.depthwiseConv2DDerFilter=function(e,n,o){fe([e,n],"depthwiseConv2DDerFilter");for(var i=o.strideHeight,a=o.strideWidth,s=o.filterHeight,u=o.filterWidth,c=ot(o.filterShape,"float32"),l=o.padInfo.left,f=o.padInfo.top,h=o.outChannels/o.inChannels,d=this.bufferSync(e),p=this.bufferSync(n),v=0;v<s;++v)for(var g=Math.max(0,Math.ceil((f-v)/i)),m=Math.min(o.outHeight,(o.inHeight+f-v)/i),w=0;w<u;++w)for(var E=Math.max(0,Math.ceil((l-w)/a)),b=Math.min(o.outWidth,(o.inWidth+l-w)/a),C=0;C<o.outChannels;++C){for(var S=Math.trunc(C/h),N=C%h,O=0,F=0;F<o.batchSize;++F)for(var P=g;P<m;++P)for(var U=v+P*i-f,Q=E;Q<b;++Q){var V=w+Q*a-l;O+=d.get(F,U,V,S)*p.get(F,P,Q,C)}c.set(O,v,w,S,N)}return c.toTensor()},t.prototype.tile=function(e,n){return fe(e,"tile"),ac(this.bufferSync(e),n)},t.prototype.pad=function(e,n,o){fe(e,"pad");var i=n.map(function(h,d){return h[0]+e.shape[d]+h[1]}),a=n.map(function(h){return h[0]}),s=this.bufferSync(e),u=ot(i,e.dtype);o!==0&&u.values.fill(o);for(var c=0;c<e.size;c++){var l=s.indexToLoc(c),f=l.map(function(h,d){return h+a[d]});u.set.apply(u,[s.get.apply(s,l)].concat(f))}return u.toTensor()},t.prototype.transpose=function(e,n){fe(e,"transpose");for(var o=new Array(e.rank),i=0;i<o.length;i++)o[i]=e.shape[n[i]];var a=this.readSync(e.dataId),s=ot(o,e.dtype),u=this.bufferSync(e);for(i=0;i<e.size;++i){for(var c=u.indexToLoc(i),l=new Array(c.length),f=0;f<l.length;f++)l[f]=c[n[f]];var h=s.locToIndex(l);s.values[h]=a[i]}return s.toTensor()},t.prototype.gather=function(e,n,o){fe([e,n],"gather");var i=e.shape.slice(),a=this.readSync(n.dataId);i[o]=a.length;for(var s=ot(i,e.dtype),u=this.bufferSync(e),c=0;c<s.size;++c){var l=s.indexToLoc(c),f=l.slice();f[o]=a[l[o]];var h=u.locToIndex(f);s.values[c]=u.values[h]}return s.toTensor()},t.prototype.batchToSpaceND=function(e,n,o){fe([e],"batchToSpaceND");var i=n.reduce(function(f,h){return f*h}),a=wi(e.shape,n,i),s=Ei(a.length,n.length),u=Ci(e.shape,n,i),c=Xu(o,n.length),l=Ju(u,o,n.length);return e.reshape(a).transpose(s).reshape(u).slice(c,l)},t.prototype.spaceToBatchND=function(e,n,o){fe([e],"spaceToBatchND");var i=n.reduce(function(h,d){return h*d}),a=[[0,0]];a.push.apply(a,o);for(var s=1+n.length;s<e.shape.length;++s)a.push([0,0]);var u=e.pad(a),c=wi(u.shape,n,i,!1),l=Ei(c.length,n.length,!1),f=Ci(u.shape,n,i,!1);return u.reshape(c).transpose(l).reshape(f)},t.prototype.pool=function(e,n,o){fe(e,"pool");for(var i=n.strideHeight,a=n.strideWidth,s=n.dilationHeight,u=n.dilationWidth,c=n.effectiveFilterHeight,l=n.effectiveFilterWidth,f=n.padInfo.top,h=n.padInfo.left,d=o==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,p=this.readSync(e.dataId),v=ot(n.outShape,e.dtype),g=v.values,m=n.outShape[1]*n.outShape[2]*n.outShape[3],w=n.outShape[2]*n.outShape[3],E=n.outShape[3],b=0;b<n.batchSize;++b)for(var C=b*m,S=b*e.strides[0],N=0;N<n.inChannels;++N)for(var O=0;O<n.outHeight;++O)for(var F=O*i-f,P=Math.max(0,F),U=Math.min(n.inHeight,c+F),Q=C+O*w,V=0;V<n.outWidth;++V){for(var X=V*a-h,te=Math.max(0,X),ue=Math.min(n.inWidth,l+X),se=d,oe=0,he=0,pe=P;pe<U;pe+=s){for(var xe=S+pe*e.strides[1],ke=te;ke<ue;ke+=u){var Ne=p[xe+ke*e.strides[2]+N];o==="max"&&Ne>se?se=Ne:o==="avg"&&(oe+=Ne,he++)}if(isNaN(se))break}g[Q+V*E+N]=o==="avg"?oe/he:se}return v.toTensor()},t.prototype.maxPool=function(e,n){return this.pool(e,n,"max")},t.prototype.maxPoolPositions=function(e,n){for(var o=ot(n.outShape,"int32"),i=n.strideHeight,a=n.strideWidth,s=n.dilationHeight,u=n.dilationWidth,c=n.effectiveFilterHeight,l=n.effectiveFilterWidth,f=n.padInfo.top,h=n.padInfo.left,d=this.bufferSync(e),p=0;p<n.batchSize;++p)for(var v=0;v<n.inChannels;++v)for(var g=0;g<n.outHeight;++g){for(var m=g*i-f,w=m;w<0;)w+=s;for(var E=Math.min(n.inHeight,c+m),b=0;b<n.outWidth;++b){for(var C=b*a-h,S=C;S<0;)S+=u;for(var N=Math.min(n.inWidth,l+C),O=Number.NEGATIVE_INFINITY,F=-1,P=w;P<E;P+=s)for(var U=P-m,Q=S;Q<N;Q+=u){var V=Q-C,X=d.get(p,P,Q,v);X>O&&(O=X,F=U*l+V)}o.set(F,p,g,b,v)}}return o.toTensor()},t.prototype.maxPoolBackprop=function(e,n,o,i){fe([n,o],"maxPoolBackprop");for(var a=this.maxPoolPositions(n,i),s=i.strideHeight,u=i.strideWidth,c=i.dilationHeight,l=i.dilationWidth,f=i.effectiveFilterHeight,h=i.effectiveFilterWidth,d=h-1-i.padInfo.left,p=f-1-i.padInfo.top,v=ot(n.shape,"float32"),g=this.bufferSync(a),m=this.bufferSync(e),w=0;w<i.batchSize;++w)for(var E=0;E<i.inChannels;++E)for(var b=0;b<i.inHeight;++b)for(var C=0;C<i.inWidth;++C){for(var S=b-p,N=C-d,O=0,F=0;F<f;F+=c){var P=(S+F)/s;if(!(P<0||P>=i.outHeight||Math.floor(P)!==P))for(var U=0;U<h;U+=l){var Q=(N+U)/u;if(!(Q<0||Q>=i.outWidth||Math.floor(Q)!==Q)){var V=f*h-1-g.get(w,P,Q,E)===F*h+U?1:0;V!==0&&(O+=m.get(w,P,Q,E)*V)}}}v.set(O,w,b,C,E)}return v.toTensor()},t.prototype.avgPoolBackprop=function(e,n,o){fe([e,n],"avgPoolBackprop");for(var i=o.strideHeight,a=o.strideWidth,s=o.filterHeight,u=o.filterWidth,c=o.dilationHeight,l=o.dilationWidth,f=o.effectiveFilterHeight,h=o.effectiveFilterWidth,d=h-1-o.padInfo.left,p=f-1-o.padInfo.top,v=ot(n.shape,"float32"),g=1/(s*u),m=this.bufferSync(e),w=0;w<o.batchSize;++w)for(var E=0;E<o.inChannels;++E)for(var b=0;b<o.inHeight;++b)for(var C=0;C<o.inWidth;++C){for(var S=b-p,N=C-d,O=0,F=0;F<f;F+=c){var P=(S+F)/i;if(!(P<0||P>=o.outHeight||Math.floor(P)!==P))for(var U=0;U<h;U+=l){var Q=(N+U)/a;Q<0||Q>=o.outWidth||Math.floor(Q)!==Q||(O+=m.get(w,P,Q,E))}}v.set(O*g,w,b,C,E)}return v.toTensor()},t.prototype.pool3d=function(e,n,o){fe(e,"pool3d");for(var i=n.strideDepth,a=n.strideHeight,s=n.strideWidth,u=n.dilationDepth,c=n.dilationHeight,l=n.dilationWidth,f=n.effectiveFilterDepth,h=n.effectiveFilterHeight,d=n.effectiveFilterWidth,p=n.padInfo.front,v=n.padInfo.top,g=n.padInfo.left,m=o==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,w=this.readSync(e.dataId),E=ot(n.outShape,e.dtype),b=E.values,C=n.outShape[1]*n.outShape[2]*n.outShape[3]*n.outShape[4],S=n.outShape[2]*n.outShape[3]*n.outShape[4],N=n.outShape[3]*n.outShape[4],O=n.outShape[4],F=0;F<n.batchSize;++F)for(var P=F*C,U=F*e.strides[0],Q=0;Q<n.inChannels;++Q)for(var V=0;V<n.outDepth;++V){for(var X=V*i-p,te=X;te<0;)te+=u;for(var ue=Math.min(n.inDepth,f+X),se=P+V*S,oe=0;oe<n.outHeight;++oe){for(var he=oe*a-v,pe=he;pe<0;)pe+=c;for(var xe=Math.min(n.inHeight,h+he),ke=se+oe*N,Ne=0;Ne<n.outWidth;++Ne){for(var et=Ne*s-g,Ye=et;Ye<0;)Ye+=l;for(var st=Math.min(n.inWidth,d+et),xt=ke+Ne*O,Ct=m,kt=0,fn=0,It=te;It<ue;It+=u){for(var Jt=U+It*e.strides[1],_t=pe;_t<xe;_t+=c){for(var un=Jt+_t*e.strides[2],rn=Ye;rn<st;rn+=l){var on=w[un+rn*e.strides[3]+Q];if(o==="max"&&on>Ct?Ct=on:o==="avg"&&(kt+=on,fn++),isNaN(Ct))break}if(isNaN(Ct))break}if(isNaN(Ct))break}b[xt+Q]=o==="avg"?kt/fn:Ct}}}return E.toTensor()},t.prototype.avgPool3d=function(e,n){return fe(e,"avgPool3d"),this.pool3d(e,n,"avg").toFloat()},t.prototype.avgPool3dBackprop=function(e,n,o){fe([e,n],"avgPool3dBackprop");for(var i=o.strideDepth,a=o.strideHeight,s=o.strideWidth,u=o.filterDepth,c=o.filterHeight,l=o.filterWidth,f=o.dilationDepth,h=o.dilationHeight,d=o.dilationWidth,p=o.effectiveFilterDepth,v=o.effectiveFilterHeight,g=o.effectiveFilterWidth,m=p-1-o.padInfo.front,w=g-1-o.padInfo.left,E=v-1-o.padInfo.top,b=ot(n.shape,"float32"),C=1/(u*c*l),S=this.bufferSync(e),N=0;N<o.batchSize;++N)for(var O=0;O<o.inChannels;++O)for(var F=0;F<o.inDepth;++F)for(var P=0;P<o.inHeight;++P)for(var U=0;U<o.inWidth;++U){for(var Q=F-m,V=P-E,X=U-w,te=0,ue=0;ue<p;ue+=f){var se=(Q+ue)/i;if(!(se<0||se>=o.outDepth||Math.floor(se)!==se))for(var oe=0;oe<v;oe+=h){var he=(V+oe)/a;if(!(he<0||he>=o.outHeight||Math.floor(he)!==he))for(var pe=0;pe<g;pe+=d){var xe=(X+pe)/s;xe<0||xe>=o.outWidth||Math.floor(xe)!==xe||(te+=S.get(N,se,he,xe,O))}}}b.set(te*C,N,F,P,U,O)}return b.toTensor()},t.prototype.maxPool3d=function(e,n){return fe(e,"maxPool3d"),this.pool3d(e,n,"max").toFloat()},t.prototype.maxPool3dPositions=function(e,n){for(var o=ot(n.outShape,"int32"),i=n.strideDepth,a=n.strideHeight,s=n.strideWidth,u=n.dilationDepth,c=n.dilationHeight,l=n.dilationWidth,f=n.effectiveFilterDepth,h=n.effectiveFilterHeight,d=n.effectiveFilterWidth,p=n.padInfo.front,v=n.padInfo.top,g=n.padInfo.left,m=this.bufferSync(e),w=0;w<n.batchSize;++w)for(var E=0;E<n.inChannels;++E)for(var b=0;b<n.outDepth;++b){for(var C=b*i-p,S=C;S<0;)S+=u;for(var N=Math.min(n.inDepth,f+C),O=0;O<n.outHeight;++O){for(var F=O*a-v,P=F;P<0;)P+=c;for(var U=Math.min(n.inHeight,h+F),Q=0;Q<n.outWidth;++Q){for(var V=Q*s-g,X=V;X<0;)X+=l;for(var te=Math.min(n.inWidth,d+V),ue=Number.NEGATIVE_INFINITY,se=-1,oe=S;oe<N;oe+=u)for(var he=oe-C,pe=P;pe<U;pe+=c)for(var xe=pe-F,ke=X;ke<te;ke+=l){var Ne=ke-V,et=m.get(w,oe,pe,ke,E);et>=ue&&(ue=et,se=he*h*d+xe*h+Ne)}o.set(se,w,b,O,Q,E)}}}return o.toTensor()},t.prototype.maxPool3dBackprop=function(e,n,o,i){fe([n,o],"maxPool3dBackprop");for(var a=this.maxPool3dPositions(n,i),s=i.strideDepth,u=i.strideHeight,c=i.strideWidth,l=i.dilationDepth,f=i.dilationHeight,h=i.dilationWidth,d=i.effectiveFilterDepth,p=i.effectiveFilterHeight,v=i.effectiveFilterWidth,g=d-1-i.padInfo.front,m=v-1-i.padInfo.left,w=p-1-i.padInfo.top,E=ot(n.shape,"float32"),b=this.bufferSync(a),C=this.bufferSync(e),S=0;S<i.batchSize;++S)for(var N=0;N<i.inChannels;++N)for(var O=0;O<i.inDepth;++O)for(var F=0;F<i.inHeight;++F)for(var P=0;P<i.inWidth;++P){for(var U=O-g,Q=F-w,V=P-m,X=0,te=0;te<d;te+=l){var ue=(U+te)/s;if(!(ue<0||ue>=i.outDepth||Math.floor(ue)!==ue))for(var se=0;se<p;se+=f){var oe=(Q+se)/u;if(!(oe<0||oe>=i.outHeight||Math.floor(oe)!==oe))for(var he=0;he<v;he+=h){var pe=(V+he)/c;if(!(pe<0||pe>=i.outWidth||Math.floor(pe)!==pe)){var xe=d*p*v-1-b.get(S,ue,oe,pe,N)===te*p*v+se*v+he?1:0;xe!==0&&(X+=C.get(S,ue,oe,pe,N)*xe)}}}}E.set(X,S,O,F,P,N)}return E.toTensor()},t.prototype.cast=function(e,n){return Ba(e,n,this)},t.prototype.reshape=function(e,n){return Di(e,n)},t.prototype.avgPool=function(e,n){return fe(e,"avgPool"),this.pool(e,n,"avg").toFloat()},t.prototype.resizeBilinear=function(e,n,o,i){fe(e,"resizeBilinear");for(var a=e.shape,s=a[0],u=a[1],c=a[2],l=a[3],f=this.readSync(e.dataId),h=new Float32Array(Re([s,n,o,l])),d=[i&&n>1?u-1:u,i&&o>1?c-1:c],p=[i&&n>1?n-1:n,i&&o>1?o-1:o],v=0,g=d[0]/p[0],m=d[1]/p[1],w=0;w<s;w++)for(var E=0;E<n;E++)for(var b=g*E,C=Math.floor(b),S=b-C,N=Math.min(u-1,Math.ceil(b)),O=w*e.strides[0]+C*e.strides[1],F=w*e.strides[0]+N*e.strides[1],P=0;P<o;P++)for(var U=m*P,Q=Math.floor(U),V=U-Q,X=Math.min(c-1,Math.ceil(U)),te=O+Q*e.strides[2],ue=F+Q*e.strides[2],se=O+X*e.strides[2],oe=F+X*e.strides[2],he=0;he<l;he++){var pe=f[te+he],xe=f[ue+he],ke=pe+(f[se+he]-pe)*V,Ne=ke+(xe+(f[oe+he]-xe)*V-ke)*S;h[v++]=Ne}return Tn(h,[s,n,o,l])},t.prototype.resizeBilinearBackprop=function(e,n,o){fe([e,n],"resizeBilinearBackprop");for(var i=n.shape,a=i[0],s=i[1],u=i[2],c=i[3],l=e.shape,f=l[1],h=l[2],d=new Float32Array(a*s*u*c),p=[o&&f>1?s-1:s,o&&h>1?u-1:u],v=[o&&f>1?f-1:f,o&&h>1?h-1:h],g=p[0]/v[0],m=p[1]/v[1],w=this.readSync(e.dataId),E=0,b=0;b<a;b++)for(var C=b*n.strides[0],S=0;S<f;S++)for(var N=S*g,O=Math.floor(N),F=Math.min(Math.ceil(N),s-1),P=C+O*n.strides[1],U=C+F*n.strides[1],Q=N-O,V=1-Q,X=0;X<h;X++)for(var te=X*m,ue=Math.floor(te),se=Math.min(Math.ceil(te),u-1),oe=te-ue,he=1-oe,pe=P+ue*n.strides[2],xe=P+se*n.strides[2],ke=U+ue*n.strides[2],Ne=U+se*n.strides[2],et=V*he,Ye=V*oe,st=Q*he,xt=Q*oe,Ct=0;Ct<c;Ct++){var kt=w[E++];d[pe+Ct]+=kt*et,d[xe+Ct]+=kt*Ye,d[ke+Ct]+=kt*st,d[Ne+Ct]+=kt*xt}return Qn(d,[a,u,s,c],n.dtype)},t.prototype.resizeNearestNeighbor=function(e,n,o,i){fe(e,"resizeNearestNeighbor");for(var a=e.shape,s=a[0],u=a[1],c=a[2],l=a[3],f=this.readSync(e.dataId),h=new Float32Array(s*n*o*l),d=[i&&n>1?u-1:u,i&&o>1?c-1:c],p=[i&&n>1?n-1:n,i&&o>1?o-1:o],v=d[0]/p[0],g=d[1]/p[1],m=0,w=0;w<s;w++)for(var E=w*e.strides[0],b=0;b<n;b++)for(var C=v*b,S=E+Math.min(u-1,i?Math.round(C):Math.floor(C))*e.strides[1],N=0;N<o;N++)for(var O=g*N,F=S+Math.min(c-1,i?Math.round(O):Math.floor(O))*e.strides[2],P=0;P<l;P++){var U=f[F+P];h[m++]=U}return Tn(h,[s,n,o,l],e.dtype)},t.prototype.resizeNearestNeighborBackprop=function(e,n,o){fe([e,n],"resizeNearestNeighborBackprop");for(var i=n.shape,a=i[0],s=i[1],u=i[2],c=i[3],l=e.shape,f=l[1],h=l[2],d=new Float32Array(a*s*u*c),p=this.readSync(e.dataId),v=[o&&f>1?s-1:s,o&&h>1?u-1:u],g=[o&&f>1?f-1:f,o&&h>1?h-1:h],m=v[0]/g[0],w=v[1]/g[1],E=1/m,b=1/w,C=2*Math.ceil(E)+2,S=2*Math.ceil(b)+2,N=0;N<a;N++)for(var O=N*n.strides[0],F=0;F<s;F++)for(var P=O+F*n.strides[1],U=Math.floor(F*E),Q=Math.floor(U-C/2),V=0;V<u;V++)for(var X=P+V*n.strides[2],te=Math.floor(V*b),ue=Math.floor(te-S/2),se=0;se<c;se++){for(var oe=0,he=0;he<C;he++){var pe=he+Q;if(!(pe<0||pe>=f)){var xe=O+pe*e.strides[1],ke=pe*m;if(F===Math.min(s-1,o?Math.round(ke):Math.floor(ke)))for(var Ne=0;Ne<S;Ne++){var et=Ne+ue;if(!(et<0||et>=h)){var Ye=xe+et*e.strides[2],st=et*w;V===Math.min(u-1,o?Math.round(st):Math.floor(st))&&(oe+=p[Ye+se])}}}}d[X+se]=oe}return Qn(d,n.shape,n.dtype)},t.prototype.batchNormalization=function(e,n,o,i,a,s){fe([e,n,o,a,s],"batchNorm");for(var u=this.readSync(e.dataId),c=this.readSync(n.dataId),l=this.readSync(o.dataId),f=a?this.readSync(a.dataId):new Float32Array([1]),h=s?this.readSync(s.dataId):new Float32Array([0]),d=new Float32Array(u.length),p=h.length,v=f.length,g=l.length,m=c.length,w=0,E=0,b=0,C=0,S=0;S<u.length;++S)d[S]=h[w++]+(u[S]-c[E++])*f[b++]/Math.sqrt(l[C++]+i),w>=p&&(w=0),E>=m&&(E=0),b>=v&&(b=0),C>=g&&(C=0);return Qn(d,e.shape)},t.prototype.localResponseNormalization4D=function(e,n,o,i,a){fe(e,"localResponseNormalization4D");var s=e.shape[3],u=s-1,c=this.readSync(e.dataId),l=e.size,f=new Float32Array(l);function h(g){for(var m=g%s,w=g-m+Math.max(0,m-n),E=g-m+Math.min(m+n,u),b=0;w<=E;w++){var C=c[w];b+=C*C}return b}for(var d=0;d<l;d++){var p=h(d),v=c[d]*Math.pow(o+i*p,-a);f[d]=v}return Qn(f,e.shape)},t.prototype.LRNGrad=function(e,n,o,i,a,s,u){fe(e,"LRNGrad");for(var c=e.shape[3],l=this.readSync(e.dataId),f=this.readSync(n.dataId),h=this.readSync(o.dataId),d=new Float32Array(e.size),p=e.size,v=0;v<p;v++){for(var g=v%c,m=v-g+Math.max(0,g-i),w=v-g+Math.min(c,g+i+1),E=0,b=m;b<w;b++)E+=Math.pow(f[b],2);for(E=s*E+a,b=m;b<w;b++){var C=-2*s*u*f[b]*h[v]/E;v===b&&(C+=Math.pow(E,-u)),C*=l[v],d[b]+=C}}return Qn(d,e.shape)},t.prototype.multinomial=function(e,n,o,i){fe(e,"multinomial");for(var a=n?e:Cr(e),s=a.shape[0],u=a.shape[1],c=en([s,o],"int32"),l=this.readSync(c.dataId),f=this.readSync(a.dataId),h=0;h<s;++h){var d=h*u,p=new Float32Array(u-1);p[0]=f[d];for(var v=1;v<p.length;++v)p[v]=p[v-1]+f[d+v];for(var g=bi(i.toString()),m=h*o,w=0;w<o;++w){var E=g();l[m+w]=p.length;for(var b=0;b<p.length;b++)if(E<p[b]){l[m+w]=b;break}}}return c},t.prototype.oneHot=function(e,n,o,i){fe(e,"oneHot");var a=new Float32Array(e.size*n);a.fill(i);for(var s=this.readSync(e.dataId),u=0;u<e.size;++u)s[u]>=0&&s[u]<n&&(a[u*n+s[u]]=o);return Mr(a,[e.size,n],"int32")},t.prototype.nonMaxSuppression=function(e,n,o,i,a){return fe(e,"nonMaxSuppression"),Da(this.readSync(e.dataId),this.readSync(n.dataId),o,i,a)},t.prototype.fft=function(e){return this.fftBatch(e,!1)},t.prototype.ifft=function(e){return this.fftBatch(e,!0)},t.prototype.fftBatch=function(e,n){for(var o=e.shape[0],i=e.shape[1],a=ot(e.shape,"float32"),s=ot(e.shape,"float32"),u=Zn(e).as2D(o,i),c=fr(e).as2D(o,i),l=0;l<o;l++)for(var f=u.slice([l,0],[1,i]),h=c.slice([l,0],[1,i]),d=kn(f,h),p=this.readSync(this.fftImpl(d,n).dataId),v=0;v<i;v++){var g=nc(p,v);a.values[l*i+v]=g.real,s.values[l*i+v]=g.imag}return kn(a.toTensor(),s.toTensor()).as2D(o,i)},t.prototype.fftImpl=function(e,n){var o=e.as1D(),i=o.size;if(this.isExponentOf2(i)){var a=this.fftRadix2(o,i,n).as2D(e.shape[0],e.shape[1]);return n&&(a=kn(Zn(a).div(Fe(i)),fr(a).div(Fe(i)))),a}var s=this.readSync(e.dataId),u=function(c){for(var l=new Float32Array(c.length/2),f=new Float32Array(c.length/2),h=0;h<c.length;h+=2)l[h/2]=c[h],f[h/2]=c[h+1];return{real:l,imag:f}}(this.fourierTransformByMatmul(s,i,n));return kn(u.real,u.imag).as2D(e.shape[0],e.shape[1])},t.prototype.isExponentOf2=function(e){return(e&e-1)==0},t.prototype.fftRadix2=function(e,n,o){if(n===1)return e;var i=this.readSync(e.dataId),a=n/2,s=function(m){for(var w=Math.ceil(m.length/4),E=new Float32Array(w),b=new Float32Array(w),C=0;C<m.length;C+=4)E[Math.floor(C/4)]=m[C],b[Math.floor(C/4)]=m[C+1];return{real:E,imag:b}}(i),u=kn(s.real,s.imag).as1D(),c=function(m){for(var w=Math.floor(m.length/4),E=new Float32Array(w),b=new Float32Array(w),C=2;C<m.length;C+=4)E[Math.floor(C/4)]=m[C],b[Math.floor(C/4)]=m[C+1];return{real:E,imag:b}}(i),l=kn(c.real,c.imag).as1D();u=this.fftRadix2(u,a,o),l=this.fftRadix2(l,a,o);var f=function(m,w){for(var E=new Float32Array(m/2),b=new Float32Array(m/2),C=0;C<Math.ceil(m/2);C++){var S=(w?2:-2)*Math.PI*(C/m);E[C]=Math.cos(S),b[C]=Math.sin(S)}return{real:E,imag:b}}(n,o),h=kn(f.real,f.imag).mul(l),d=u.add(h),p=u.sub(h),v=Zn(d).concat(Zn(p)),g=fr(d).concat(fr(p));return kn(v,g).as1D()},t.prototype.fourierTransformByMatmul=function(e,n,o){for(var i=new Float32Array(2*n),a=0;a<n;a++){for(var s=0,u=0,c=0;c<n;c++){var l=Jh(a*c,n,o),f=nc(e,c);s+=f.real*l.real-f.imag*l.imag,u+=f.real*l.imag+f.imag*l.real}o&&(s/=n,u/=n),Xh(i,s,u,a)}return i},t.prototype.depthToSpace=function(e,n,o){B(o==="NHWC",function(){return"Only NHWC dataFormat supported on CPU for depthToSpace. Got "+o}),B(n>1,function(){return"blockSize should be > 1 for depthToSpace, but was: "+n});for(var i=e.shape[0],a=e.shape[1],s=e.shape[2],u=e.shape[3],c=a*n,l=s*n,f=u/(n*n),h=this.readSync(e.dataId),d=new Float32Array(i*c*l*f),p=0,v=0;v<i;++v)for(var g=0;g<c;++g)for(var m=Math.floor(g/n),w=g%n,E=0;E<l;++E)for(var b=Math.floor(E/n),C=(w*n+E%n)*f,S=0;S<f;++S){var N=S+C+u*(b+s*(m+a*v));d[p++]=h[N]}return Qn(d,[i,c,l,f])},t.prototype.broadcastedBinaryOp=function(e,n,o,i){var a=gt(e.shape,n.shape),s=ot(a,o),u=this.readSync(e.dataId),c=this.readSync(n.dataId),l=Ir(e.shape,a),f=Ir(n.shape,a),h=s.values;if(l.length+f.length===0)for(var d=0;d<h.length;++d)h[d]=i(u[d%u.length],c[d%c.length]);else{var p=this.bufferSync(e),v=this.bufferSync(n),g=function(m){var w=s.indexToLoc(m),E=w.slice(-e.rank);l.forEach(function(N){return E[N]=0});var b=p.locToIndex(E),C=w.slice(-n.rank);f.forEach(function(N){return C[N]=0});var S=v.locToIndex(C);h[m]=i(u[b],c[S])};for(d=0;d<h.length;++d)g(d)}return s.toTensor()},t.prototype.broadcastedBinaryComplexOp=function(e,n,o){var i=gt(e.shape,n.shape),a=ot(i,"float32"),s=ot(i,"float32"),u=this.readSync(e.dataId),c=this.readSync(n.dataId),l=Ir(e.shape,i),f=Ir(n.shape,i),h=a.values,d=s.values;if(l.length+f.length===0)for(var p=0;p<h.length;p++){var v=p%u.length,g=p%c.length,m=o(u[2*v],u[2*v+1],c[2*g],c[2*g+1]);h[p]=m.real,d[p]=m.imag}else{var w=this.bufferSync(this.data.get(e.dataId).complexTensors.real),E=this.bufferSync(this.data.get(n.dataId).complexTensors.real),b=function(C){var S=a.indexToLoc(C),N=S.slice(-e.rank);l.forEach(function(Q){return N[Q]=0});var O=w.locToIndex(N),F=S.slice(-n.rank);f.forEach(function(Q){return F[Q]=0});var P=E.locToIndex(F),U=o(u[2*O],u[2*O+1],c[2*P],c[2*P+1]);h[C]=U.real,d[C]=U.imag};for(p=0;p<h.length;p++)b(p)}return this.complex(a.toTensor(),s.toTensor())},t.prototype.split=function(e,n,o){return ic(e,n,o)},t.prototype.dispose=function(){},t.prototype.floatPrecision=function(){return 32},t.prototype.epsilon=function(){return 1e-7},t.prototype.cropAndResize=function(e,n,o,i,a,s){for(var u=e.shape,c=u[0],l=u[1],f=u[2],h=u[3],d=n.shape[0],p=i[0],v=i[1],g=ot([d,p,v,h],"float32"),m=this.readSync(n.dataId),w=this.readSync(o.dataId),E=this.readSync(e.dataId),b=e.strides,C=g.strides,S=0;S<d;S++){var N=4*S,O=m[N],F=m[N+1],P=m[N+2],U=m[N+3],Q=w[S];if(!(Q>=c))for(var V=p>1?(P-O)*(l-1)/(p-1):0,X=v>1?(U-F)*(f-1)/(v-1):0,te=0;te<p;te++){var ue=p>1?O*(l-1)+te*V:.5*(O+P)*(l-1);if(ue<0||ue>l-1)for(var se=0;se<v;se++)for(var oe=0;oe<h;oe++){var he=oe+se*C[2]+te*C[1]+S*C[0];g.values[he]=s}else if(a==="bilinear"){var pe=Math.floor(ue),xe=Math.ceil(ue),ke=ue-pe;for(se=0;se<v;se++)if((It=v>1?F*(f-1)+se*X:.5*(F+U)*(f-1))<0||It>f-1)for(oe=0;oe<h;oe++)he=oe+se*C[2]+te*C[1]+S*C[0],g.values[he]=s;else{var Ne=Math.floor(It),et=Math.ceil(It),Ye=It-Ne;for(oe=0;oe<h;oe++){var st=E[he=oe+Ne*b[2]+pe*b[1]+Q*b[0]],xt=E[he=oe+et*b[2]+pe*b[1]+Q*b[0]],Ct=E[he=oe+Ne*b[2]+xe*b[1]+Q*b[0]],kt=st+(xt-st)*Ye,fn=Ct+(E[he=oe+et*b[2]+xe*b[1]+Q*b[0]]-Ct)*Ye;he=oe+se*C[2]+te*C[1]+S*C[0],g.values[he]=kt+(fn-kt)*ke}}}else for(se=0;se<v;++se){var It;if((It=v>1?F*(f-1)+se*X:.5*(F+U)*(f-1))<0||It>f-1)for(oe=0;oe<h;oe++)he=oe+se*C[2]+te*C[1]+S*C[0],g.values[he]=s;else{var Jt=Math.round(It),_t=Math.round(ue);for(oe=0;oe<h;oe++){var un=oe+Jt*b[2]+_t*b[1]+Q*b[0],rn=oe+se*C[2]+te*C[1]+S*C[0];g.values[rn]=E[un]}}}}}return g.toTensor()},t.prototype.sparseToDense=function(e,n,o,i){var a=jo(0,e,o),s=a.sliceRank,u=a.numUpdates,c=a.sliceSize,l=a.strides,f=a.outputSize;return this.scatter(e,n,o,f,c,u,s,l,i,!1)},t.prototype.gatherND=function(e,n){var o=n.shape,i=o[o.length-1],a=ba(e,n),s=a[0],u=a[1],c=a[2],l=a[3];if(u===0)return Tn([],s,e.dtype);for(var f=new wt([u,c],e.dtype),h=this.readSync(n.dataId),d=this.readSync(e.dataId),p=0;p<u;p++){for(var v=[],g=0,m=0;m<i;m++){var w=h[p*i+m];g+=w*l[m],v.push(w)}if(g<0||g>=e.size/c)throw new Error("Invalid indices: "+v+" does not index into "+e.shape);for(var E=0;E<c;E++)f.values[p*c+E]=d[g*c+E]}return f.toTensor().reshape(s)},t.prototype.scatterND=function(e,n,o){var i=jo(0,e,o),a=i.sliceRank,s=i.numUpdates,u=i.sliceSize,c=i.strides,l=i.outputSize,f=Fe(0);return this.scatter(e,n,o,l,u,s,a,c,f,!0)},t.prototype.fill=function(e,n,o){var i=y(o=o||ze(n),Re(e));return i.fill(n),W.makeTensor(i,e,o,this)},t.prototype.onesLike=function(e){if(e.dtype==="string")throw new Error("onesLike is not supported for string tensors");return this.fill(e.shape,1,e.dtype)},t.prototype.zerosLike=function(e){var n=y(e.dtype,Re(e.shape));return this.makeOutput(n,e.shape,e.dtype)},t.prototype.linspace=function(e,n,o){return ka(e,n,o)},t.prototype.scatter=function(e,n,o,i,a,s,u,c,l,f){var h=[i/a,a],d=this.readSync(e.dataId),p=this.readSync(n.dataId);if(i===0)return Tn([],o,n.dtype);var v=new wt(h,n.dtype);v.values.fill(this.readSync(l.dataId)[0]);for(var g=0;g<s;g++){for(var m=[],w=0,E=0;E<u;E++){var b=d[g*u+E];m.push(b),w+=b*c[E]}if(w<0||w>=i/a)throw new Error("Invalid indices: "+m+" does not index into "+o);for(var C=0;C<a;C++)f?v.values[w*a+C]+=p[g*a+C]:v.values[w*a+C]=n.rank===0?p[0]:p[g*a+C]}return v.toTensor().reshape(o)},t}(tc);W.registerBackend("cpu",function(){return new qg},1);for(var as=0,Ol=[{kernelName:"NonMaxSuppressionV5",backendName:"cpu",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=r.attrs,o=t,i=o.boxes,a=o.scores,s=n,u=s.maxOutputSize,c=s.iouThreshold,l=s.scoreThreshold,f=s.softNmsSigma,h=e;fe(i,"NonMaxSuppressionWithScore");var d=Fa(h.data.get(i.dataId).values,h.data.get(a.dataId).values,u,c,l,f);return[d.selectedIndices,d.selectedScores]}},{kernelName:"Square",backendName:"cpu",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=t.x,o=e;fe(n,"square");for(var i=o.data.get(n.dataId).values,a=new Float32Array(i.length),s=0;s<i.length;++s){var u=i[s];a[s]=u*u}return{dataId:o.write(a,n.shape,n.dtype),shape:n.shape,dtype:n.dtype}}},{kernelName:Zo,backendName:"cpu",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=t,o=n.a,i=n.b,a=e;fe([o,i],Zo);var s=a.data.get(o.dataId).values,u=a.data.get(i.dataId).values,c=function(h,d,p,v,g,m){var w=gt(h,d),E=w.length,b=dt(w),C=T(g,Re(w)),S=h.length,N=d.length,O=dt(h),F=dt(d),P=Ir(h,w),U=Ir(d,w);if(P.length+U.length===0)for(var Q=0;Q<C.length;++Q)C[Q]=m(p[Q%p.length],v[Q%v.length]);else{var V=function(X){var te=Ve(X,E,b),ue=te.slice(-S);P.forEach(function(pe){return ue[pe]=0});var se=Xe(ue,S,O),oe=te.slice(-N);U.forEach(function(pe){return oe[pe]=0});var he=Xe(oe,N,F);C[X]=m(p[se],v[he])};for(Q=0;Q<C.length;++Q)V(Q)}return[C,w]}(o.shape,i.shape,s,u,o.dtype,function(h,d){var p=h-d;return p*p}),l=c[0],f=c[1];return{dataId:a.write(l,f,o.dtype),shape:f,dtype:o.dtype}}}];as<Ol.length;as++)qt(Ol[as]);for(var wo,Yg=function(r){this.variableNames=["A"];var t=Dn(),e=r[0],n=r[1];this.outputShape=r,this.userCode=`
void main() {
ivec3 coords = getOutputCoords();
int texR = coords[0];
int texC = coords[1];
int depth = coords[2];
vec2 uv = (vec2(texC, texR) + halfCR) / vec2(`+n+".0, "+e+`.0);
vec4 values = `+t.texture2D+`(A, uv);
float value;
if (depth == 0) {
value = values.r;
} else if (depth == 1) {
value = values.g;
} else if (depth == 2) {
value = values.b;
} else if (depth == 3) {
value = values.a;
}
setOutput(floor(value * 255.0 + 0.5));
}
`},$g=function(r){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;var t=Dn(),e=r[0],n=r[1];this.outputShape=r,this.userCode=`
void main() {
ivec3 coords = getOutputCoords();
int texR = coords[0];
int texC = coords[1];
int depth = coords[2];
vec4 result = vec4(0.);
for(int row=0; row<=1; row++) {
for(int col=0; col<=1; col++) {
texC = coords[1] + row;
depth = coords[2] + col;
vec2 uv = (vec2(texC, texR) + halfCR) /
vec2(`+n+".0, "+e+`.0);
vec4 values = `+t.texture2D+`(A, uv);
float value;
if (depth == 0) {
value = values.r;
} else if (depth == 1) {
value = values.g;
} else if (depth == 2) {
value = values.b;
} else if (depth == 3) {
value = values.a;
}
result[row * 2 + col] = floor(value * 255.0 + 0.5);
}
}
`+t.output+` = result;
}
`},ss=0,Ml=[{kernelName:"FromPixels",backendName:"webgl",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=r.attrs,o=t.pixels,i=n.numChannels,a=typeof HTMLVideoElement!="undefined"&&o instanceof HTMLVideoElement,s=typeof HTMLImageElement!="undefined"&&o instanceof HTMLImageElement,u=a?[o.videoWidth,o.videoHeight]:[o.width,o.height],c=u[0],l=u[1],f=[l,c],h=[l,c,i];(s||a)&&(wo==null&&(wo=document.createElement("canvas").getContext("2d")),wo.canvas.width=c,wo.canvas.height=l,wo.drawImage(o,0,0,c,l),o=wo.canvas);var d=e.makeTensorInfo(f,"int32");e.texData.get(d.dataId).usage=wn.PIXELS,e.gpgpu.uploadPixelDataToTexture(e.getTexture(d.dataId),o);var p=J().getBool("WEBGL_PACK")?new $g(h):new Yg(h),v=e.runWebGLProgram(p,[d],"int32");return e.disposeData(d.dataId),v}},{kernelName:"NonMaxSuppressionV5",backendName:"webgl",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=r.attrs;Ai("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");var o=t,i=o.boxes,a=o.scores,s=n,u=s.maxOutputSize,c=s.iouThreshold,l=s.scoreThreshold,f=s.softNmsSigma,h=e,d=Fa(h.readSync(i.dataId),h.readSync(a.dataId),u,c,l,f);return[d.selectedIndices,d.selectedScores]}},{kernelName:"Square",backendName:"webgl",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=t.x,o=e,i=new ht(n.shape,"return x * x;");return o.runWebGLProgram(i,[n],n.dtype)}},{kernelName:Zo,backendName:"webgl",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=t,o=n.a,i=n.b,a=e,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Sr("return (a - b) * (a - b);",o.shape,i.shape):new sn("return (a - b) * (a - b);",o.shape,i.shape);return a.compileAndRun(s,[o,i])}}];ss<Ml.length;ss++)qt(Ml[ss]);for(var us=0,Ll=[{kernelName:"Square",gradFunc:function(r,t){var e=t[0];return{x:function(){return r.mul(e.toFloat().mul(2))}}}},{kernelName:Zo,gradFunc:function(r,t){var e=t[0],n=t[1],o=Fe(2);return{a:function(){return Fn(r,Fn(o,xn(e,n)))},b:function(){return Fn(r,Fn(o,xn(n,e)))}}}}];us<Ll.length;us++)Ht(Ll[us]);var em=function(){function r(){}return r.prototype.fetch=function(t,e){return fetch(t,e)},r.prototype.now=function(){return performance.now()},r.prototype.encode=function(t,e){if(e!=="utf-8"&&e!=="utf8")throw new Error("Browser's encoder only supports utf-8, but got "+e);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(t)},r.prototype.decode=function(t,e){return new TextDecoder(e).decode(t)},r}();J().get("IS_BROWSER")&&J().setPlatform("browser",new em);var cs,tm=function(){return H(22591)},nm=function(){function r(){this.util=H(24726),this.textEncoder=new this.util.TextEncoder}return r.prototype.fetch=function(t,e){return J().global.fetch!=null?J().global.fetch(t,e):(cs==null&&(cs=tm()),cs(t,e))},r.prototype.now=function(){var t=ge.hrtime();return 1e3*t[0]+t[1]/1e6},r.prototype.encode=function(t,e){if(e!=="utf-8"&&e!=="utf8")throw new Error("Node built-in encoder only supports utf-8, but got "+e);return this.textEncoder.encode(t)},r.prototype.decode=function(t,e){return t.length===0?"":new this.util.TextDecoder(e).decode(t)},r}();J().get("IS_NODE")&&J().setPlatform("node",new nm);var ls={float32:4,int32:4,uint16:2,uint8:1,bool:1},Gi=4;function Wl(r,t){for(var e={},n=0,o=function(s){var u=s.name,c=s.dtype,l=s.shape,f=Re(l),h=void 0;if("quantization"in s){var d=s.quantization;if(d.dtype!=="uint8"&&d.dtype!=="uint16")throw new Error("Weight "+s.name+" has unknown quantization dtype "+d.dtype+". Supported quantization dtypes are: 'uint8' and 'uint16'.");var p=ls[d.dtype],v=r.slice(n,n+f*p),g=d.dtype==="uint8"?new Uint8Array(v):new Uint16Array(v);if(c==="float32")h=Float32Array.from(g,function(S){return S*d.scale+d.min});else{if(c!=="int32")throw new Error("Unsupported dtype in weight '"+u+"': "+c);h=Int32Array.from(g,function(S){return Math.round(S*d.scale+d.min)})}n+=f*p}else if(c==="string"){var m=Re(s.shape);h=[];for(var w=0;w<m;w++){var E=new Uint32Array(r.slice(n,n+Gi))[0];n+=Gi;var b=new Uint8Array(r.slice(n,n+E));h.push(b),n+=E}}else{var C=ls[c];if(v=r.slice(n,n+f*C),c==="float32")h=new Float32Array(v);else if(c==="int32")h=new Int32Array(v);else{if(c!=="bool")throw new Error("Unsupported dtype in weight '"+u+"': "+c);h=new Uint8Array(v)}n+=f*C}e[u]=Tn(h,l,c)},i=0,a=t;i<a.length;i++)o(a[i]);return e}function rm(r){if(r===null)throw new Error("Invalid input value: "+JSON.stringify(r));var t=0,e=[];r.forEach(function(i){if(t+=i.byteLength,e.push(i.byteLength===i.buffer.byteLength?i:new i.constructor(i)),!(i instanceof Float32Array||i instanceof Int32Array||i instanceof Uint8Array))throw new Error("Unsupported TypedArray subtype: "+i.constructor.name)});var n=new Uint8Array(t),o=0;return e.forEach(function(i){n.set(new Uint8Array(i.buffer),o),o+=i.byteLength}),n.buffer}var fs=typeof _e!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function _l(r){return fs?_e.byteLength(r):new Blob([r]).size}function hs(r){var t=0;r.forEach(function(o){t+=o.byteLength});var e=new Uint8Array(t),n=0;return r.forEach(function(o){e.set(new Uint8Array(o),n),n+=o.byteLength}),e.buffer}function Ql(r){for(r=r.trim();r.endsWith("/");)r=r.slice(0,r.length-1);var t=r.split("/");return t[t.length-1]}function ei(r){if(r.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:r.modelTopology==null?0:_l(JSON.stringify(r.modelTopology)),weightSpecsBytes:r.weightSpecs==null?0:_l(JSON.stringify(r.weightSpecs)),weightDataBytes:r.weightData==null?0:r.weightData.byteLength}}var Vn=function(){function r(){this.saveRouters=[],this.loadRouters=[]}return r.getInstance=function(){return r.instance==null&&(r.instance=new r),r.instance},r.registerSaveRouter=function(t){r.getInstance().saveRouters.push(t)},r.registerLoadRouter=function(t){r.getInstance().loadRouters.push(t)},r.getSaveHandlers=function(t){return r.getHandlers(t,"save")},r.getLoadHandlers=function(t,e){return r.getHandlers(t,"load",e)},r.getHandlers=function(t,e,n){var o=[];return(e==="load"?r.getInstance().loadRouters:r.getInstance().saveRouters).forEach(function(i){var a=i(t,n);a!==null&&o.push(a)}),o},r}(),Eo="://",_r=function(){function r(){this.managers={}}return r.getInstance=function(){return r.instance==null&&(r.instance=new r),r.instance},r.registerManager=function(t,e){B(t!=null,function(){return"scheme must not be undefined or null."}),t.endsWith(Eo)&&(t=t.slice(0,t.indexOf(Eo))),B(t.length>0,function(){return"scheme must not be an empty string."});var n=r.getInstance();B(n.managers[t]==null,function(){return"A model store manager is already registered for scheme '"+t+"'."}),n.managers[t]=e},r.getManager=function(t){var e=this.getInstance().managers[t];if(e==null)throw new Error("Cannot find model manager for scheme '"+t+"'");return e},r.getSchemes=function(){return Object.keys(this.getInstance().managers)},r}();function Xi(r){if(r.indexOf(Eo)===-1)throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+_r.getSchemes().join(","));return{scheme:r.split(Eo)[0],path:r.split(Eo)[1]}}function zl(r,t,e){return e===void 0&&(e=!1),be(this,void 0,void 0,function(){var n,o,i,a,s,u,c,l,f;return Se(this,function(h){switch(h.label){case 0:return B(r!==t,function(){return"Old path and new path are the same: '"+r+"'"}),B((n=Vn.getLoadHandlers(r)).length>0,function(){return"Copying failed because no load handler is found for source URL "+r+"."}),B(n.length<2,function(){return"Copying failed because more than one ("+n.length+") load handlers for source URL "+r+"."}),o=n[0],B((i=Vn.getSaveHandlers(t)).length>0,function(){return"Copying failed because no save handler is found for destination URL "+t+"."}),B(i.length<2,function(){return"Copying failed because more than one ("+n.length+") save handlers for destination URL "+t+"."}),a=i[0],s=Xi(r).scheme,u=Xi(r).path,c=s===Xi(r).scheme,[4,o.load()];case 1:return l=h.sent(),e&&c?[4,_r.getManager(s).removeModel(u)]:[3,3];case 2:h.sent(),h.label=3;case 3:return[4,a.save(l)];case 4:return f=h.sent(),!e||c?[3,6]:[4,_r.getManager(s).removeModel(u)];case 5:h.sent(),h.label=6;case 6:return[2,f.modelArtifactsInfo]}})})}var ro="models_store",Qr="model_info_store";function Ul(){if(!J().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var r=window||self,t=r.indexedDB||r.mozIndexedDB||r.webkitIndexedDB||r.msIndexedDB||r.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function ds(r){var t=r.result;t.createObjectStore(ro,{keyPath:"modelPath"}),t.createObjectStore(Qr,{keyPath:"modelPath"})}var Co=function(){function r(t){if(this.indexedDB=Ul(),t==null||!t)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=t}return r.prototype.save=function(t){return be(this,void 0,void 0,function(){return Se(this,function(e){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,t)]})})},r.prototype.load=function(){return be(this,void 0,void 0,function(){return Se(this,function(t){return[2,this.databaseAction(this.modelPath)]})})},r.prototype.databaseAction=function(t,e){var n=this;return new Promise(function(o,i){var a=n.indexedDB.open("tensorflowjs",1);a.onupgradeneeded=function(){return ds(a)},a.onsuccess=function(){var s=a.result;if(e==null){var u=s.transaction(ro,"readonly"),c=u.objectStore(ro).get(n.modelPath);c.onsuccess=function(){if(c.result==null)return s.close(),i(new Error("Cannot find model with path '"+n.modelPath+"' in IndexedDB."));o(c.result.modelArtifacts)},c.onerror=function(v){return s.close(),i(c.error)},u.oncomplete=function(){return s.close()}}else{var l,f=ei(e),h=s.transaction(Qr,"readwrite"),d=h.objectStore(Qr),p=d.put({modelPath:n.modelPath,modelArtifactsInfo:f});p.onsuccess=function(){var v=(l=s.transaction(ro,"readwrite")).objectStore(ro).put({modelPath:n.modelPath,modelArtifacts:e,modelArtifactsInfo:f});v.onsuccess=function(){return o({modelArtifactsInfo:f})},v.onerror=function(g){var m=(d=h.objectStore(Qr)).delete(n.modelPath);m.onsuccess=function(){return s.close(),i(v.error)},m.onerror=function(w){return s.close(),i(v.error)}}},p.onerror=function(v){return s.close(),i(p.error)},h.oncomplete=function(){l==null?s.close():l.oncomplete=function(){return s.close()}}}},a.onerror=function(s){return i(a.error)}})},r.URL_SCHEME="indexeddb://",r}(),Hl=function(r){return J().getBool("IS_BROWSER")&&!Array.isArray(r)&&r.startsWith(Co.URL_SCHEME)?(t=r.slice(Co.URL_SCHEME.length),new Co(t)):null;var t};Vn.registerSaveRouter(Hl),Vn.registerLoadRouter(Hl);var om=function(){function r(){this.indexedDB=Ul()}return r.prototype.listModels=function(){return be(this,void 0,void 0,function(){var t=this;return Se(this,function(e){return[2,new Promise(function(n,o){var i=t.indexedDB.open("tensorflowjs",1);i.onupgradeneeded=function(){return ds(i)},i.onsuccess=function(){var a=i.result,s=a.transaction(Qr,"readonly"),u=s.objectStore(Qr).getAll();u.onsuccess=function(){for(var c={},l=0,f=u.result;l<f.length;l++){var h=f[l];c[h.modelPath]=h.modelArtifactsInfo}n(c)},u.onerror=function(c){return a.close(),o(u.error)},s.oncomplete=function(){return a.close()}},i.onerror=function(a){return o(i.error)}})]})})},r.prototype.removeModel=function(t){return be(this,void 0,void 0,function(){var e=this;return Se(this,function(n){var o;return t=(o=t).startsWith(Co.URL_SCHEME)?o.slice(Co.URL_SCHEME.length):o,[2,new Promise(function(i,a){var s=e.indexedDB.open("tensorflowjs",1);s.onupgradeneeded=function(){return ds(s)},s.onsuccess=function(){var u,c=s.result,l=c.transaction(Qr,"readwrite"),f=l.objectStore(Qr),h=f.get(t);h.onsuccess=function(){if(h.result==null)return c.close(),a(new Error("Cannot find model with path '"+t+"' in IndexedDB."));var d=f.delete(t),p=function(){var v=(u=c.transaction(ro,"readwrite")).objectStore(ro).delete(t);v.onsuccess=function(){return i(h.result.modelArtifactsInfo)},v.onerror=function(g){return a(h.error)}};d.onsuccess=p,d.onerror=function(v){return p(),c.close(),a(h.error)}},h.onerror=function(d){return c.close(),a(h.error)},l.oncomplete=function(){u==null?c.close():u.oncomplete=function(){return c.close()}}},s.onerror=function(u){return a(s.error)}})]})})},r}();if(J().getBool("IS_BROWSER"))try{_r.registerManager(Co.URL_SCHEME,new om)}catch(r){}var Br="/",Io="tensorflowjs_models",jl="info",im="model_topology",am="weight_specs",sm="weight_data",um="model_metadata";function Vl(r){return{info:[Io,r,jl].join(Br),topology:[Io,r,im].join(Br),weightSpecs:[Io,r,am].join(Br),weightData:[Io,r,sm].join(Br),modelMetadata:[Io,r,um].join(Br)}}function cm(r){var t=r.split(Br);if(t.length<3)throw new Error("Invalid key format: "+r);return t.slice(1,t.length-1).join(Br)}var So=function(){function r(t){if(!J().getBool("IS_BROWSER")||typeof window=="undefined"||window.localStorage===void 0)throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,t==null||!t)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=t,this.keys=Vl(this.modelPath)}return r.prototype.save=function(t){return be(this,void 0,void 0,function(){var e,n,o;return Se(this,function(i){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");e=JSON.stringify(t.modelTopology),n=JSON.stringify(t.weightSpecs),o=ei(t);try{return this.LS.setItem(this.keys.info,JSON.stringify(o)),this.LS.setItem(this.keys.topology,e),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,function(a){if(fs)return _e.from(a).toString("base64");for(var s=new Uint8Array(a),u="",c=0,l=s.length;c<l;c++)u+=String.fromCharCode(s[c]);return btoa(u)}(t.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata})),[2,{modelArtifactsInfo:o}]}catch(a){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error("Failed to save model '"+this.modelPath+"' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes="+o.modelTopologyBytes+", weightSpecsBytes="+o.weightSpecsBytes+", weightDataBytes="+o.weightDataBytes+".")}return[2]})})},r.prototype.load=function(){return be(this,void 0,void 0,function(){var t,e,n,o,i,a,s;return Se(this,function(u){if((t=JSON.parse(this.LS.getItem(this.keys.info)))==null)throw new Error("In local storage, there is no model with name '"+this.modelPath+"'");if(t.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");if(e={},(n=JSON.parse(this.LS.getItem(this.keys.topology)))==null)throw new Error("In local storage, the topology of model '"+this.modelPath+"' is missing.");if(e.modelTopology=n,(o=JSON.parse(this.LS.getItem(this.keys.weightSpecs)))==null)throw new Error("In local storage, the weight specs of model '"+this.modelPath+"' are missing.");if(e.weightSpecs=o,(i=this.LS.getItem(this.keys.modelMetadata))!=null&&(a=JSON.parse(i),e.format=a.format,e.generatedBy=a.generatedBy,e.convertedBy=a.convertedBy,e.userDefinedMetadata=a.userDefinedMetadata),(s=this.LS.getItem(this.keys.weightData))==null)throw new Error("In local storage, the binary weight values of model '"+this.modelPath+"' are missing.");return e.weightData=function(c){if(fs){var l=_e.from(c,"base64");return l.buffer.slice(l.byteOffset,l.byteOffset+l.byteLength)}for(var f=atob(c),h=new Uint8Array(f.length),d=0;d<f.length;++d)h.set([f.charCodeAt(d)],d);return h.buffer}(s),[2,e]})})},r.URL_SCHEME="localstorage://",r}(),Gl=function(r){return J().getBool("IS_BROWSER")&&!Array.isArray(r)&&r.startsWith(So.URL_SCHEME)?(t=r.slice(So.URL_SCHEME.length),new So(t)):null;var t};Vn.registerSaveRouter(Gl),Vn.registerLoadRouter(Gl);var lm=function(){function r(){B(J().getBool("IS_BROWSER"),function(){return"Current environment is not a web browser"}),B(typeof window=="undefined"||window.localStorage!==void 0,function(){return"Current browser does not appear to support localStorage"}),this.LS=window.localStorage}return r.prototype.listModels=function(){return be(this,void 0,void 0,function(){var t,e,n,o,i,a;return Se(this,function(s){for(t={},e=Io+Br,n=Br+jl,o=0;o<this.LS.length;++o)(i=this.LS.key(o)).startsWith(e)&&i.endsWith(n)&&(a=cm(i),t[a]=JSON.parse(this.LS.getItem(i)));return[2,t]})})},r.prototype.removeModel=function(t){return be(this,void 0,void 0,function(){var e,n;return Se(this,function(o){var i;if(t=(i=t).startsWith(So.URL_SCHEME)?i.slice(So.URL_SCHEME.length):i,e=Vl(t),this.LS.getItem(e.info)==null)throw new Error("Cannot find model at path '"+t+"'");return n=JSON.parse(this.LS.getItem(e.info)),this.LS.removeItem(e.info),this.LS.removeItem(e.topology),this.LS.removeItem(e.weightSpecs),this.LS.removeItem(e.weightData),[2,n]})})},r}();if(J().getBool("IS_BROWSER"))try{_r.registerManager(So.URL_SCHEME,new lm)}catch(r){}var fm="model",hm=".json",dm=".weights.bin";function Xl(r){return new Promise(function(t){return setTimeout(t)}).then(r)}var ps=function(){function r(t){if(!J().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");t.startsWith(r.URL_SCHEME)&&(t=t.slice(r.URL_SCHEME.length)),t!=null&&t.length!==0||(t=fm),this.modelTopologyFileName=t+hm,this.weightDataFileName=t+dm}return r.prototype.save=function(t){return be(this,void 0,void 0,function(){var e,n,o,i,a,s;return Se(this,function(u){switch(u.label){case 0:if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");if(e=window.URL.createObjectURL(new Blob([t.weightData],{type:"application/octet-stream"})),!(t.modelTopology instanceof ArrayBuffer))return[3,1];throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");case 1:return n=[{paths:["./"+this.weightDataFileName],weights:t.weightSpecs}],o={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,weightsManifest:n},i=window.URL.createObjectURL(new Blob([JSON.stringify(o)],{type:"application/json"})),(a=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor).download=this.modelTopologyFileName,a.href=i,[4,Xl(function(){return a.dispatchEvent(new MouseEvent("click"))})];case 2:return u.sent(),t.weightData==null?[3,4]:((s=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor).download=this.weightDataFileName,s.href=e,[4,Xl(function(){return s.dispatchEvent(new MouseEvent("click"))})]);case 3:u.sent(),u.label=4;case 4:return[2,{modelArtifactsInfo:ei(t)}]}})})},r.URL_SCHEME="downloads://",r}(),pm=function(){function r(t){if(t==null||t.length<1)throw new Error("When calling browserFiles, at least 1 file is required, but received "+t);this.files=t}return r.prototype.load=function(){return be(this,void 0,void 0,function(){var t,e,n=this;return Se(this,function(o){return t=this.files[0],e=this.files.slice(1),[2,new Promise(function(i,a){var s=new FileReader;s.onload=function(u){var c=JSON.parse(u.target.result),l=c.modelTopology;if(l!=null){e.length===0&&i({modelTopology:l});var f=c.weightsManifest;if(f!=null){var h;try{h=n.checkManifestAndWeightFiles(f,e)}catch(g){return void a(g)}var d=[],p=[],v=[];f.forEach(function(g){g.paths.forEach(function(m){p.push(m),v.push(null)}),d.push.apply(d,g.weights)}),f.forEach(function(g){g.paths.forEach(function(m){var w=new FileReader;w.onload=function(E){var b=E.target.result,C=p.indexOf(m);v[C]=b,v.indexOf(null)===-1&&i({modelTopology:l,weightSpecs:d,weightData:hs(v),format:c.format,generatedBy:c.generatedBy,convertedBy:c.convertedBy,userDefinedMetadata:c.userDefinedMetadata})},w.onerror=function(E){return a("Failed to weights data from file of path '"+m+"'.")},w.readAsArrayBuffer(h[m])})})}else a(new Error("weightManifest field is missing from file "+t.name))}else a(new Error("modelTopology field is missing from file "+t.name))},s.onerror=function(u){return a("Failed to read model topology and weights manifest JSON from file '"+t.name+"'. BrowserFiles supports loading Keras-style tf.Model artifacts only.")},s.readAsText(t)})]})})},r.prototype.checkManifestAndWeightFiles=function(t,e){for(var n=[],o=e.map(function(u){return Ql(u.name)}),i={},a=0,s=t;a<s.length;a++)s[a].paths.forEach(function(u){var c=Ql(u);if(n.indexOf(c)!==-1)throw new Error("Duplicate file basename found in weights manifest: '"+c+"'");if(n.push(c),o.indexOf(c)===-1)throw new Error("Weight file with basename '"+c+"' is not provided.");i[u]=e[o.indexOf(c)]});if(n.length!==e.length)throw new Error("Mismatch in the number of files in weights manifest ("+n.length+") and the number of weight files provided ("+e.length+").");return i},r}();function Jl(r,t,e,n){(function(i){B(i!=null&&Array.isArray(i)&&i.length>0,function(){return"promises must be a none empty array"})})(r),function(i,a){B(i>=0&&i<=1,function(){return"Progress fraction must be in range [0, 1], but got startFraction "+i}),B(a>=0&&a<=1,function(){return"Progress fraction must be in range [0, 1], but got endFraction "+a}),B(a>=i,function(){return"startFraction must be no more than endFraction, but got startFraction "+i+" and endFraction "+a})}(e=e==null?0:e,n=n==null?1:n);var o=0;return Promise.all(r.map(function(i){return i.then(function(a){var s=e+ ++o/r.length*(n-e);return t(s),a}),i}))}function Kl(r,t){return be(this,void 0,void 0,function(){var e,n,o,i,a,s,u,c,l;return Se(this,function(f){switch(f.label){case 0:return t==null&&(t={}),e=t.fetchFunc==null?J().platform.fetch:t.fetchFunc,n=r.map(function(h){return e(h,t.requestInit,{isBinary:!0})}),o=0,i=.5,t.onProgress!=null?[3,2]:[4,Promise.all(n)];case 1:return a=f.sent(),[3,4];case 2:return[4,Jl(n,t.onProgress,o,i)];case 3:a=f.sent(),f.label=4;case 4:return s=a.map(function(h){return h.arrayBuffer()}),u=.5,c=1,t.onProgress!=null?[3,6]:[4,Promise.all(s)];case 5:return l=f.sent(),[3,8];case 6:return[4,Jl(s,t.onProgress,u,c)];case 7:l=f.sent(),f.label=8;case 8:return[2,l]}})})}function Zl(r){var t=this;return function(e,n,o){return n===void 0&&(n=""),be(t,void 0,void 0,function(){var i,a,s,u,c,l,f,h,d,p;return Se(this,function(v){switch(v.label){case 0:if(i=e.map(function(){return!1}),a={},s=o!=null?o.map(function(){return!1}):[],u=[],e.forEach(function(g,m){var w=0;g.weights.forEach(function(E){var b="quantization"in E?E.quantization.dtype:E.dtype,C=ls[b]*Re(E.shape),S=function(){i[m]=!0,a[m]==null&&(a[m]=[]),a[m].push({manifestEntry:E,groupOffset:w,sizeBytes:C})};o!=null?o.forEach(function(N,O){N===E.name&&(S(),s[O]=!0)}):S(),u.push(E.name),w+=C})}),!s.every(function(g){return g}))throw c=o.filter(function(g,m){return!s[m]}),new Error("Could not find weights in manifest with names: "+c.join(", ")+`.
Manifest JSON has weights with names: `+u.join(", ")+".");return l=i.reduce(function(g,m,w){return m&&g.push(w),g},[]),f=[],l.forEach(function(g){e[g].paths.forEach(function(m){var w=n+(n.endsWith("/")?"":"/")+m;f.push(w)})}),[4,r(f)];case 1:return h=v.sent(),d={},p=0,l.forEach(function(g){for(var m=e[g].paths.length,w=0,E=0;E<m;E++)w+=h[p+E].byteLength;for(var b=new ArrayBuffer(w),C=new Uint8Array(b),S=0,N=0;N<m;N++){var O=new Uint8Array(h[p+N]);C.set(O,S),S+=O.byteLength}a[g].forEach(function(F){var P=Wl(b.slice(F.groupOffset,F.groupOffset+F.sizeBytes),[F.manifestEntry]);for(var U in P)d[U]=P[U]}),p+=m}),[2,d]}})})}}Vn.registerSaveRouter(function(r){return J().getBool("IS_BROWSER")&&!Array.isArray(r)&&r.startsWith(ps.URL_SCHEME)?function(t){return t===void 0&&(t="model"),new ps(t)}(r.slice(ps.URL_SCHEME.length)):null});var ql=function(){function r(t,e){if(this.DEFAULT_METHOD="POST",e==null&&(e={}),this.weightPathPrefix=e.weightPathPrefix,this.onProgress=e.onProgress,e.fetchFunc!=null?(B(typeof e.fetchFunc=="function",function(){return"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"}),this.fetch=e.fetchFunc):this.fetch=J().platform.fetch,B(t!=null&&t.length>0,function(){return"URL path for http must not be null, undefined or empty."}),Array.isArray(t)&&B(t.length===2,function(){return"URL paths for http must have a length of 2, (actual length is "+t.length+")."}),this.path=t,e.requestInit!=null&&e.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=e.requestInit||{}}return r.prototype.save=function(t){return be(this,void 0,void 0,function(){var e,n,o,i;return Se(this,function(a){switch(a.label){case 0:if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return(e=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:t.weightSpecs}],o={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata,weightsManifest:n},e.body.append("model.json",new Blob([JSON.stringify(o)],{type:"application/json"}),"model.json"),t.weightData!=null&&e.body.append("model.weights.bin",new Blob([t.weightData],{type:"application/octet-stream"}),"model.weights.bin"),[4,this.fetch(this.path,e)];case 1:if((i=a.sent()).ok)return[2,{modelArtifactsInfo:ei(t),responses:[i]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+i.status+".")}})})},r.prototype.load=function(){return be(this,void 0,void 0,function(){var t,e,n,o,i,a,s,u,c,l,f,h;return Se(this,function(d){switch(d.label){case 0:return[4,this.fetch(this.path,this.requestInit)];case 1:if(!(t=d.sent()).ok)throw new Error("Request to "+this.path+" failed with status code "+t.status+". Please verify this URL points to the model JSON of the model to load.");d.label=2;case 2:return d.trys.push([2,4,,5]),[4,t.json()];case 3:return e=d.sent(),[3,5];case 4:throw d.sent(),n="Failed to parse model JSON of response from "+this.path+".",this.path.endsWith(".pb")?n+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":n+=" Please make sure the server is serving valid JSON for this request.",new Error(n);case 5:if(o=e.modelTopology,i=e.weightsManifest,a=e.generatedBy,s=e.convertedBy,u=e.format,c=e.userDefinedMetadata,o==null&&i==null)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return i==null?[3,7]:[4,this.loadWeights(i)];case 6:h=d.sent(),l=h[0],f=h[1],d.label=7;case 7:return[2,{modelTopology:o,weightSpecs:l,weightData:f,userDefinedMetadata:c,generatedBy:a,convertedBy:s,format:u}]}})})},r.prototype.loadWeights=function(t){return be(this,void 0,void 0,function(){var e,n,o,i,a,s,u,c,l,f,h;return Se(this,function(d){switch(d.label){case 0:for(e=Array.isArray(this.path)?this.path[1]:this.path,n=function(p){var v=p.lastIndexOf("/"),g=p.lastIndexOf("?"),m=p.substring(0,v),w=g>v?p.substring(g):"";return[m+"/",w]}(e),o=n[0],i=n[1],a=this.weightPathPrefix||o,s=[],u=0,c=t;u<c.length;u++)l=c[u],s.push.apply(s,l.weights);return f=[],t.forEach(function(p){p.paths.forEach(function(v){f.push(a+v+i)})}),[4,Kl(f,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress})];case 1:return h=d.sent(),[2,[s,hs(h)]]}})})},r.URL_SCHEME_REGEX=/^https?:\/\//,r}();function vs(r){return r.match(ql.URL_SCHEME_REGEX)!=null}var Yl=function(r,t){return typeof fetch=="undefined"?null:(Array.isArray(r)?r.every(function(e){return vs(e)}):vs(r))?gs(r,{onProgress:t}):null};function gs(r,t){return new ql(r,t)}Vn.registerSaveRouter(Yl),Vn.registerLoadRouter(Yl);var ms=function(){function r(t){this.modelArtifacts=t}return r.prototype.load=function(){return be(this,void 0,void 0,function(){return Se(this,function(t){return[2,this.modelArtifacts]})})},r}(),vm=function(){function r(t){this.saveHandler=t}return r.prototype.save=function(t){return be(this,void 0,void 0,function(){return Se(this,function(e){return[2,this.saveHandler(t)]})})},r}(),$l=Object.freeze({browserFiles:function(r){return new pm(r)},browserHTTPRequest:function(r,t){return gs(r,t)},concatenateArrayBuffers:hs,decodeWeights:Wl,encodeWeights:function(r,t){return be(this,void 0,void 0,function(){var e,n,o,i,a,s=this;return Se(this,function(u){switch(u.label){case 0:for(e=[],n=[],o=Array.isArray(r)?r.map(function(c){return c.name}):Object.keys(r),i=function(c){var l=o[c],f=Array.isArray(r)?r[c].tensor:r[l];if(f.dtype!=="float32"&&f.dtype!=="int32"&&f.dtype!=="bool"&&f.dtype!=="string")throw new Error("Unsupported dtype in weight '"+l+"': "+f.dtype);var h={name:l,shape:f.shape,dtype:f.dtype};if(f.dtype==="string"){var d=new Promise(function(p){return be(s,void 0,void 0,function(){var v,g,m,w,E,b,C;return Se(this,function(S){switch(S.label){case 0:return[4,f.bytes()];case 1:for(v=S.sent(),g=v.reduce(function(N,O){return N+O.length},0)+Gi*v.length,m=new Uint8Array(g),w=0,E=0;E<v.length;E++)b=v[E],C=new Uint8Array(new Uint32Array([b.length]).buffer),m.set(C,w),w+=Gi,m.set(b,w),w+=b.length;return p(m),[2]}})})});n.push(d)}else n.push(f.data());t!=null&&(h.group=t),e.push(h)},a=0;a<o.length;++a)i(a);return[4,Promise.all(n)];case 1:return[2,{data:rm(u.sent()),specs:e}]}})})},fromMemory:function(r,t,e,n){return arguments.length===1?r.modelTopology!=null||r.weightSpecs!=null?new ms(r):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new ms({modelTopology:r})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new ms({modelTopology:r,weightSpecs:t,weightData:e,trainingConfig:n}))},getLoadHandlers:function(r,t){return Vn.getLoadHandlers(r,t)},getModelArtifactsInfoForJSON:ei,getSaveHandlers:function(r){return Vn.getSaveHandlers(r)},http:gs,isHTTPScheme:vs,loadWeights:function(r,t,e,n){return t===void 0&&(t=""),be(this,void 0,void 0,function(){return Se(this,function(o){return[2,Zl(function(i){return Kl(i,{requestInit:n})})(r,t,e)]})})},registerLoadRouter:function(r){return Vn.registerLoadRouter(r)},registerSaveRouter:function(r){return Vn.registerSaveRouter(r)},weightsLoaderFactory:Zl,withSaveHandler:function(r){return new vm(r)},copyModel:function(r,t){return be(this,void 0,void 0,function(){return Se(this,function(e){return[2,zl(r,t,!1)]})})},listModels:function(){return be(this,void 0,void 0,function(){var r,t,e,n,o,i,a;return Se(this,function(s){switch(s.label){case 0:r=_r.getSchemes(),t={},e=0,n=r,s.label=1;case 1:return e<n.length?(o=n[e],[4,_r.getManager(o).listModels()]):[3,4];case 2:for(a in i=s.sent())t[o+Eo+a]=i[a];s.label=3;case 3:return e++,[3,1];case 4:return[2,t]}})})},moveModel:function(r,t){return be(this,void 0,void 0,function(){return Se(this,function(e){return[2,zl(r,t,!0)]})})},removeModel:function(r){return be(this,void 0,void 0,function(){var t;return Se(this,function(e){return t=Xi(r),[2,_r.getManager(t.scheme).removeModel(t.path)]})})}}),Ro,gm=_({confusionMatrix_:function(r,t,e){var n=k(r,"labels","confusionMatrix"),o=k(t,"predictions","confusionMatrix");B(e==null||e>0&&Number.isInteger(e),function(){return"If provided, numClasses must be a positive integer, but got "+e}),B(n.rank===1,function(){return"Expected the rank of labels to be 1, but got "+n.rank}),B(o.rank===1,function(){return"Expected the rank of predictions to be 1, but got "+o.rank}),B(n.shape[0]===o.shape[0],function(){return"Mismatch in the number of examples: "+n.shape[0]+" vs. "+o.shape[0]+". Labels and predictions should have the same number of elements."}),B(e>0&&Number.isInteger(e),function(){return"numClasses is required to be a positive integer, but got "+e});var i=xa(n.asType("int32"),e),a=xa(o.asType("int32"),e);return i.transpose().matMul(a).asType("int32")}}),i1=Object.freeze({confusionMatrix:gm}),mm=_({fromPixels_:function(r,t){if(t===void 0&&(t=3),t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(r==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");var e=!1,n=!1,o=!1,i=!1,a=!1;if(r.data instanceof Uint8Array)e=!0;else if(typeof ImageData!="undefined"&&r instanceof ImageData)n=!0;else if(typeof HTMLVideoElement!="undefined"&&r instanceof HTMLVideoElement)o=!0;else if(typeof HTMLImageElement!="undefined"&&r instanceof HTMLImageElement)i=!0;else{if(r.getContext==null)throw new Error("pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was "+r.constructor.name);a=!0}if(o&&o&&r.readyState<2)throw new Error("The video element has not loaded data yet. Please wait for `loadeddata` event on the <video> element.");if(Vt("FromPixels",W.backendName)!=null)return W.runKernel("FromPixels",{pixels:r},{numChannels:t});var s,u,c=o?[r.videoWidth,r.videoHeight]:[r.width,r.height],l=c[0],f=c[1];if(a?s=r.getContext("2d").getImageData(0,0,l,f).data:n||e?s=r.data:(i||o)&&(Ro==null&&(Ro=document.createElement("canvas").getContext("2d")),Ro.canvas.width=l,Ro.canvas.height=f,Ro.drawImage(r,0,0,l,f),s=Ro.getImageData(0,0,l,f).data),t===4)u=new Int32Array(s);else{var h=l*f;u=new Int32Array(h*t);for(var d=0;d<h;d++)for(var p=0;p<t;++p)u[d*t+p]=s[4*d+p]}return ma(u,[f,l,t],"int32")}}),As=Object.freeze({toPixels:function(r,t){return be(this,void 0,void 0,function(){var e,n,o,i,a,s,u,c,l,f,h,d,p,v,g,m,w,E,b,C,S,N,O;return Se(this,function(F){switch(F.label){case 0:if(e=k(r,"img","toPixels"),r instanceof at||(e=e.toInt()),e.rank!==2&&e.rank!==3)throw new Error("toPixels only supports rank 2 or 3 tensors, got rank "+e.rank+".");if(n=e.shape.slice(0,2),o=n[0],i=n[1],(a=e.rank===2?1:e.shape[2])>4||a===2)throw new Error("toPixels only supports depth of size 1, 3 or 4 but got "+a);return[4,e.data()];case 1:return s=F.sent(),u=e.min(),c=e.max(),[4,Promise.all([u.data(),c.data()])];case 2:if(l=F.sent(),f=l[0],h=l[1],d=f[0],p=h[0],u.dispose(),c.dispose(),e.dtype==="float32"){if(d<0||p>1)throw new Error("Tensor values for a float32 Tensor must be in the range [0 - 1] but got range ["+d+" - "+p+"].")}else{if(e.dtype!=="int32")throw new Error("Unsupported type for toPixels: "+e.dtype+". Please use float32 or int32 tensors.");if(d<0||p>255)throw new Error("Tensor values for a int32 Tensor must be in the range [0 - 255] but got range ["+d+" - "+p+"].")}for(v=e.dtype==="float32"?255:1,g=new Uint8ClampedArray(i*o*4),m=0;m<o*i;++m)w=void 0,E=void 0,b=void 0,C=void 0,a===1?(w=s[m]*v,E=s[m]*v,b=s[m]*v,C=255):a===3?(w=s[3*m]*v,E=s[3*m+1]*v,b=s[3*m+2]*v,C=255):a===4&&(w=s[4*m]*v,E=s[4*m+1]*v,b=s[4*m+2]*v,C=s[4*m+3]*v),g[(S=4*m)+0]=Math.round(w),g[S+1]=Math.round(E),g[S+2]=Math.round(b),g[S+3]=Math.round(C);return t!=null&&(t.width=i,t.height=o,N=t.getContext("2d"),O=new ImageData(g,i,o),N.putImageData(O,0,0)),e!==r&&e.dispose(),[2,g]}})})},fromPixels:mm}),ef=function(){function r(){}return r.prototype.getClassName=function(){return this.constructor.className},r.fromConfig=function(t,e){return new t(e)},r}(),tf=function(){function r(){this.classNameMap={}}return r.getMap=function(){return r.instance==null&&(r.instance=new r),r.instance},r.register=function(t){r.getMap().classNameMap[t.className]=[t,t.fromConfig]},r}();function zr(r){B(r.className!=null,function(){return"Class being registered does not have the static className property defined."}),B(typeof r.className=="string",function(){return"className is required to be a string, but got type "+typeof r.className}),B(r.className.length>0,function(){return"Class being registered has an empty-string as its className, which is disallowed."}),tf.register(r)}var a1=Object.freeze({Serializable:ef,SerializationMap:tf,registerClass:zr}),Am=.001,nf=.1;function ys(){return W.backend.floatPrecision()===32?Am:nf}function xs(r,t,e){var n=!0;if((I(r)||I(t))&&(n=!1),I(r)&&I(t)&&(n=!0),n){var o=r.constructor.name,i=t.constructor.name;if(o!==i)throw new Error("Arrays are of different type. Actual: "+o+". Expected: "+i)}if(Array.isArray(r)&&Array.isArray(t)){var a=lr(r),s=lr(t);if(!Ke(a,s))throw new Error("Arrays have different shapes. Actual: ["+a+"]. Expected: ["+s+"]")}var u=I(r)?r:Rt(r),c=I(t)?t:Rt(t);if(u.length!==c.length)throw new Error("Arrays have different lengths actual: "+u.length+" vs expected: "+c.length+`.
Actual: `+u+`.
Expected: `+c+".");for(var l=0;l<c.length;++l){var f=u[l],h=c[l];if(!e(f,h))throw new Error("Arrays differ: actual["+l+"] = "+f+", expected["+l+"] = "+h+`.
Actual: `+u+`.
Expected: `+c+".")}}function bs(r,t,e){return!isFinite(r)&&!isFinite(t)||!(isNaN(r)||isNaN(t)||Math.abs(r-t)>e)}var s1=Object.freeze({TEST_EPSILON_FLOAT16:nf,expectArraysClose:function(r,t,e){return e==null&&(e=ys()),xs(r,t,function(n,o){return bs(n,o,e)})},testEpsilon:ys,expectPromiseToFail:function(r,t){r().then(function(){return t.fail()},function(){return t()})},expectArraysEqual:function(r,t){var e=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return ie(r)||ie(r[0])||ie(t)||ie(t[0])?xs(r,e,function(n,o){return n==o}):xs(r,t,function(n,o){return bs(n,o,0)})},expectNumbersClose:function(r,t,e){if(e==null&&(e=ys()),!bs(r,t,e))throw new Error("Numbers differ: actual === "+r+", expected === "+t)},expectValuesInRange:function(r,t,e){for(var n=0;n<r.length;n++)if(r[n]<t||r[n]>e)throw new Error("Value out of range:"+r[n]+" low: "+t+", high: "+e)},expectArrayBuffersEqual:function(r,t){expect(new Float32Array(r)).toEqual(new Float32Array(t))}}),u1="1.7.0",c1=Object.freeze({gpgpu_util:zd,webgl_util:fh,forceHalfFloat:function(){J().set("WEBGL_FORCE_F16_TEXTURES",!0)},MathBackendWebGL:$c,setWebGLContext:li,GPGPUContext:Mc}),oo=function(r){function t(){return r!==null&&r.apply(this,arguments)||this}return Pe(t,r),t.prototype.minimize=function(e,n,o){n===void 0&&(n=!1);var i=this.computeGradients(e,o),a=i.value,s=i.grads;if(o!=null){var u=o.map(function(c){return{name:c.name,tensor:s[c.name]}});this.applyGradients(u)}else this.applyGradients(s);return Wn(s),n?a:(a.dispose(),null)},Object.defineProperty(t.prototype,"iterations",{get:function(){return this.iterations_==null&&(this.iterations_=0),this.iterations_},enumerable:!0,configurable:!0}),t.prototype.incrementIterations=function(){this.iterations_=this.iterations+1},t.prototype.computeGradients=function(e,n){return Vh(e,n)},t.prototype.dispose=function(){this.iterations_!=null&&Wn(this.iterations_)},t.prototype.saveIterations=function(){return be(this,void 0,void 0,function(){return Se(this,function(e){return this.iterations_==null&&(this.iterations_=0),[2,{name:"iter",tensor:Fe(this.iterations_,"int32")}]})})},t.prototype.getWeights=function(){return be(this,void 0,void 0,function(){return Se(this,function(e){throw new Error("getWeights() is not implemented for this optimizer yet.")})})},t.prototype.setWeights=function(e){return be(this,void 0,void 0,function(){return Se(this,function(n){throw new Error("setWeights() is not implemented for this optimizer class "+this.getClassName())})})},t.prototype.extractIterations=function(e){return be(this,void 0,void 0,function(){var n;return Se(this,function(o){switch(o.label){case 0:return n=this,[4,e[0].tensor.data()];case 1:return n.iterations_=o.sent()[0],[2,e.slice(1)]}})})},t}(ef);Object.defineProperty(oo,Symbol.hasInstance,{value:function(r){return r.minimize!=null&&r.computeGradients!=null&&r.applyGradients!=null}});var rf=function(r){function t(e,n,o){o===void 0&&(o=null);var i=r.call(this)||this;return i.learningRate=e,i.rho=n,i.epsilon=o,i.accumulatedGrads=[],i.accumulatedUpdates=[],o==null&&(i.epsilon=W.backend.epsilon()),i}return Pe(t,r),t.prototype.applyGradients=function(e){var n=this;(Array.isArray(e)?e.map(function(o){return o.name}):Object.keys(e)).forEach(function(o,i){var a=W.registeredVariables[o];n.accumulatedGrads[i]==null&&(n.accumulatedGrads[i]={originalName:o+"/accum_grad",variable:Le(function(){return Bt(a).variable(!1)})}),n.accumulatedUpdates[i]==null&&(n.accumulatedUpdates[i]={originalName:o+"/accum_var",variable:Le(function(){return Bt(a).variable(!1)})});var s=Array.isArray(e)?e[i].tensor:e[o];if(s!=null){var u=n.accumulatedGrads[i].variable,c=n.accumulatedUpdates[i].variable;Le(function(){var l=u.mul(n.rho).add(s.square().mul(1-n.rho)),f=c.add(n.epsilon).sqrt().div(u.add(n.epsilon).sqrt()).mul(s),h=c.mul(n.rho).add(f.square().mul(1-n.rho));u.assign(l),c.assign(h);var d=f.mul(-n.learningRate).add(a);a.assign(d)})}}),this.incrementIterations()},t.prototype.dispose=function(){this.accumulatedUpdates!=null&&(Wn(this.accumulatedGrads.map(function(e){return e.variable})),Wn(this.accumulatedUpdates.map(function(e){return e.variable})))},t.prototype.getWeights=function(){return be(this,void 0,void 0,function(){var e;return Se(this,function(n){switch(n.label){case 0:return e=this.accumulatedGrads.concat(this.accumulatedUpdates),[4,this.saveIterations()];case 1:return[2,[n.sent()].concat(e.map(function(o){return{name:o.originalName,tensor:o.variable}}))]}})})},t.prototype.setWeights=function(e){return be(this,void 0,void 0,function(){var n;return Se(this,function(o){switch(o.label){case 0:return[4,this.extractIterations(e)];case 1:return e=o.sent(),n=e.length/2,this.accumulatedGrads=e.slice(0,n).map(function(i){return{originalName:i.name,variable:i.tensor.variable(!1)}}),this.accumulatedUpdates=e.slice(n,2*n).map(function(i){return{originalName:i.name,variable:i.tensor.variable(!1)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},t.fromConfig=function(e,n){return new e(n.learningRate,n.rho,n.epsilon)},t.className="Adadelta",t}(oo);zr(rf);var of=function(r){function t(e,n){n===void 0&&(n=.1);var o=r.call(this)||this;return o.learningRate=e,o.initialAccumulatorValue=n,o.accumulatedGrads=[],o}return Pe(t,r),t.prototype.applyGradients=function(e){var n=this;(Array.isArray(e)?e.map(function(o){return o.name}):Object.keys(e)).forEach(function(o,i){var a=W.registeredVariables[o];n.accumulatedGrads[i]==null&&(n.accumulatedGrads[i]={originalName:o+"/accumulator",variable:Le(function(){return hr(a.shape,n.initialAccumulatorValue).variable(!1)})});var s=Array.isArray(e)?e[i].tensor:e[o];if(s!=null){var u=n.accumulatedGrads[i].variable;Le(function(){var c=u.add(s.square());u.assign(c);var l=s.div(c.add(W.backend.epsilon()).sqrt()).mul(-n.learningRate).add(a);a.assign(l)})}}),this.incrementIterations()},t.prototype.dispose=function(){this.accumulatedGrads!=null&&Wn(this.accumulatedGrads.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return be(this,void 0,void 0,function(){return Se(this,function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(this.accumulatedGrads.map(function(n){return{name:n.originalName,tensor:n.variable}}))]}})})},t.prototype.setWeights=function(e){return be(this,void 0,void 0,function(){return Se(this,function(n){switch(n.label){case 0:return[4,this.extractIterations(e)];case 1:return e=n.sent(),this.accumulatedGrads=e.map(function(o){return{originalName:o.name,variable:o.tensor.variable(!1)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},t.fromConfig=function(e,n){return new e(n.learningRate,n.initialAccumulatorValue)},t.className="Adagrad",t}(oo);zr(of);var af=function(r){function t(e,n,o,i){i===void 0&&(i=null);var a=r.call(this)||this;return a.learningRate=e,a.beta1=n,a.beta2=o,a.epsilon=i,a.accumulatedFirstMoment=[],a.accumulatedSecondMoment=[],Le(function(){a.accBeta1=Fe(n).variable(),a.accBeta2=Fe(o).variable()}),i==null&&(a.epsilon=W.backend.epsilon()),a}return Pe(t,r),t.prototype.applyGradients=function(e){var n=this,o=Array.isArray(e)?e.map(function(i){return i.name}):Object.keys(e);Le(function(){var i=xn(1,n.accBeta1),a=xn(1,n.accBeta2);o.forEach(function(s,u){var c=W.registeredVariables[s];n.accumulatedFirstMoment[u]==null&&(n.accumulatedFirstMoment[u]={originalName:s+"/m",variable:Le(function(){return Bt(c).variable(!1)})}),n.accumulatedSecondMoment[u]==null&&(n.accumulatedSecondMoment[u]={originalName:s+"/v",variable:Le(function(){return Bt(c).variable(!1)})});var l=Array.isArray(e)?e[u].tensor:e[s];if(l!=null){var f=n.accumulatedFirstMoment[u].variable,h=n.accumulatedSecondMoment[u].variable,d=f.mul(n.beta1).add(l.mul(1-n.beta1)),p=h.mul(n.beta2).add(l.square().mul(1-n.beta2)),v=d.div(i),g=p.div(a);f.assign(d),h.assign(p);var m=v.div(g.sqrt().add(n.epsilon)).mul(-n.learningRate).add(c);c.assign(m)}}),n.accBeta1.assign(n.accBeta1.mul(n.beta1)),n.accBeta2.assign(n.accBeta2.mul(n.beta2))}),this.incrementIterations()},t.prototype.dispose=function(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Wn(this.accumulatedFirstMoment.map(function(e){return e.variable})),this.accumulatedSecondMoment!=null&&Wn(this.accumulatedSecondMoment.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return be(this,void 0,void 0,function(){var e;return Se(this,function(n){switch(n.label){case 0:return e=this.accumulatedFirstMoment.concat(this.accumulatedSecondMoment),[4,this.saveIterations()];case 1:return[2,[n.sent()].concat(e.map(function(o){return{name:o.originalName,tensor:o.variable}}))]}})})},t.prototype.setWeights=function(e){return be(this,void 0,void 0,function(){var n,o=this;return Se(this,function(i){switch(i.label){case 0:return[4,this.extractIterations(e)];case 1:return e=i.sent(),Le(function(){o.accBeta1.assign(Qi(o.beta1,o.iterations_+1)),o.accBeta2.assign(Qi(o.beta2,o.iterations_+1))}),n=e.length/2,this.accumulatedFirstMoment=e.slice(0,n).map(function(a){return{originalName:a.name,variable:a.tensor.variable(!1)}}),this.accumulatedSecondMoment=e.slice(n,2*n).map(function(a){return{originalName:a.name,variable:a.tensor.variable(!1)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},t.fromConfig=function(e,n){return new e(n.learningRate,n.beta1,n.beta2,n.epsilon)},t.className="Adam",t}(oo);zr(af);var sf=function(r){function t(e,n,o,i,a){i===void 0&&(i=null),a===void 0&&(a=0);var s=r.call(this)||this;return s.learningRate=e,s.beta1=n,s.beta2=o,s.epsilon=i,s.decay=a,s.accumulatedFirstMoment=[],s.accumulatedWeightedInfNorm=[],Le(function(){s.iteration=Fe(0).variable(),s.accBeta1=Fe(n).variable()}),i==null&&(s.epsilon=W.backend.epsilon()),s}return Pe(t,r),t.prototype.applyGradients=function(e){var n=this,o=Array.isArray(e)?e.map(function(i){return i.name}):Object.keys(e);Le(function(){var i=xn(1,n.accBeta1),a=ir(-n.learningRate,n.iteration.mul(n.decay).add(1));o.forEach(function(s,u){var c=W.registeredVariables[s];n.accumulatedFirstMoment[u]==null&&(n.accumulatedFirstMoment[u]={originalName:s+"/m",variable:Bt(c).variable(!1)}),n.accumulatedWeightedInfNorm[u]==null&&(n.accumulatedWeightedInfNorm[u]={originalName:s+"/v",variable:Bt(c).variable(!1)});var l=Array.isArray(e)?e[u].tensor:e[s];if(l!=null){var f=n.accumulatedFirstMoment[u].variable,h=n.accumulatedWeightedInfNorm[u].variable,d=f.mul(n.beta1).add(l.mul(1-n.beta1)),p=h.mul(n.beta2),v=l.abs(),g=p.maximum(v);f.assign(d),h.assign(g);var m=a.div(i).mul(d.div(g.add(n.epsilon))).add(c);c.assign(m)}}),n.iteration.assign(n.iteration.add(1)),n.accBeta1.assign(n.accBeta1.mul(n.beta1))}),this.incrementIterations()},t.prototype.dispose=function(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Wn(this.accumulatedFirstMoment.map(function(e){return e.variable})),this.accumulatedWeightedInfNorm!=null&&Wn(this.accumulatedWeightedInfNorm.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return be(this,void 0,void 0,function(){return Se(this,function(e){throw new Error("getWeights() is not implemented for Adamax yet.")})})},t.prototype.setWeights=function(e){return be(this,void 0,void 0,function(){return Se(this,function(n){throw new Error("setWeights() is not implemented for Adamax yet.")})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},t.fromConfig=function(e,n){return new e(n.learningRate,n.beta1,n.beta2,n.epsilon,n.decay)},t.className="Adamax",t}(oo);zr(sf);var ws=function(r){function t(e){var n=r.call(this)||this;return n.learningRate=e,n.setLearningRate(e),n}return Pe(t,r),t.prototype.applyGradients=function(e){var n=this;(Array.isArray(e)?e.map(function(o){return o.name}):Object.keys(e)).forEach(function(o,i){var a=Array.isArray(e)?e[i].tensor:e[o];if(a!=null){var s=W.registeredVariables[o];Le(function(){var u=n.c.mul(a).add(s);s.assign(u)})}}),this.incrementIterations()},t.prototype.setLearningRate=function(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=hh(Fe(-e))},t.prototype.dispose=function(){this.c.dispose()},t.prototype.getWeights=function(){return be(this,void 0,void 0,function(){return Se(this,function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()]]}})})},t.prototype.setWeights=function(e){return be(this,void 0,void 0,function(){return Se(this,function(n){switch(n.label){case 0:return[4,this.extractIterations(e)];case 1:if((e=n.sent()).length!==0)throw new Error("SGD optimizer does not have settable weights.");return[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate}},t.fromConfig=function(e,n){return new e(n.learningRate)},t.className="SGD",t}(oo);zr(ws);var uf=function(r){function t(e,n,o){o===void 0&&(o=!1);var i=r.call(this,e)||this;return i.learningRate=e,i.momentum=n,i.useNesterov=o,i.accumulations=[],i.m=Fe(i.momentum),i}return Pe(t,r),t.prototype.applyGradients=function(e){var n=this;(Array.isArray(e)?e.map(function(o){return o.name}):Object.keys(e)).forEach(function(o,i){var a=W.registeredVariables[o];n.accumulations[i]==null&&(n.accumulations[i]={originalName:o+"/momentum",variable:Le(function(){return Bt(a).variable(!1)})});var s=n.accumulations[i].variable,u=Array.isArray(e)?e[i].tensor:e[o];u!=null&&Le(function(){var c,l=n.m.mul(s).add(u);c=n.useNesterov?n.c.mul(u.add(l.mul(n.m))).add(a):n.c.mul(l).add(a),s.assign(l),a.assign(c)})}),this.incrementIterations()},t.prototype.dispose=function(){this.m.dispose(),this.accumulations!=null&&Wn(this.accumulations.map(function(e){return e.variable}))},t.prototype.setMomentum=function(e){this.momentum=e},t.prototype.getWeights=function(){return be(this,void 0,void 0,function(){return Se(this,function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(this.accumulations.map(function(n){return{name:n.originalName,tensor:n.variable}}))]}})})},t.prototype.setWeights=function(e){return be(this,void 0,void 0,function(){return Se(this,function(n){switch(n.label){case 0:return[4,this.extractIterations(e)];case 1:return e=n.sent(),this.accumulations=e.map(function(o){return{originalName:o.name,variable:o.tensor.variable(!1)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},t.fromConfig=function(e,n){return new e(n.learningRate,n.momentum,n.useNesterov)},t.className="Momentum",t}(ws);zr(uf);var cf=function(r){function t(e,n,o,i,a){n===void 0&&(n=.9),o===void 0&&(o=0),i===void 0&&(i=null),a===void 0&&(a=!1);var s=r.call(this)||this;if(s.learningRate=e,s.decay=n,s.momentum=o,s.epsilon=i,s.accumulatedMeanSquares=[],s.accumulatedMoments=[],s.accumulatedMeanGrads=[],s.centered=a,i==null&&(s.epsilon=W.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.");return s}return Pe(t,r),t.prototype.applyGradients=function(e){var n=this;(Array.isArray(e)?e.map(function(o){return o.name}):Object.keys(e)).forEach(function(o,i){var a=W.registeredVariables[o];n.accumulatedMeanSquares[i]==null&&(n.accumulatedMeanSquares[i]={originalName:o+"/rms",variable:Le(function(){return Bt(a).variable(!1)})}),n.accumulatedMoments[i]==null&&(n.accumulatedMoments[i]={originalName:o+"/momentum",variable:Le(function(){return Bt(a).variable(!1)})}),n.accumulatedMeanGrads[i]==null&&n.centered&&(n.accumulatedMeanGrads[i]={originalName:o+"/mg",variable:Le(function(){return Bt(a).variable(!1)})});var s=Array.isArray(e)?e[i].tensor:e[o];if(s!=null){var u=n.accumulatedMeanSquares[i].variable,c=n.accumulatedMoments[i].variable;Le(function(){var l=u.mul(n.decay).add(s.square().mul(1-n.decay));if(n.centered){var f=n.accumulatedMeanGrads[i].variable,h=f.mul(n.decay).add(s.mul(1-n.decay)),d=c.mul(n.momentum).add(s.mul(n.learningRate).div(l.sub(h.square().add(n.epsilon)).sqrt()));u.assign(l),f.assign(h),c.assign(d);var p=a.sub(d);a.assign(p)}else{var v=u.mul(n.decay).add(s.square().mul(1-n.decay));d=c.mul(n.momentum).add(s.mul(n.learningRate).div(v.add(n.epsilon).sqrt())),u.assign(v),c.assign(d),p=a.sub(d),a.assign(p)}})}}),this.incrementIterations()},t.prototype.dispose=function(){this.accumulatedMeanSquares!=null&&Wn(this.accumulatedMeanSquares.map(function(e){return e.variable})),this.accumulatedMeanGrads!=null&&this.centered&&Wn(this.accumulatedMeanGrads.map(function(e){return e.variable})),this.accumulatedMoments!=null&&Wn(this.accumulatedMoments.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return be(this,void 0,void 0,function(){var e;return Se(this,function(n){switch(n.label){case 0:return e=this.accumulatedMeanSquares.concat(this.accumulatedMoments),this.centered&&e.push.apply(e,this.accumulatedMeanGrads),[4,this.saveIterations()];case 1:return[2,[n.sent()].concat(e.map(function(o){return{name:o.originalName,tensor:o.variable}}))]}})})},t.prototype.setWeights=function(e){return be(this,void 0,void 0,function(){var n;return Se(this,function(o){switch(o.label){case 0:return[4,this.extractIterations(e)];case 1:return e=o.sent(),n=this.centered?e.length/3:e.length/2,this.accumulatedMeanSquares=e.slice(0,n).map(function(i){return{originalName:i.name,variable:i.tensor.variable(!1)}}),this.accumulatedMoments=e.slice(n,2*n).map(function(i){return{originalName:i.name,variable:i.tensor.variable(!1)}}),this.centered&&(this.accumulatedMeanGrads=e.slice(2*n,3*n).map(function(i){return{originalName:i.name,variable:i.tensor.variable(!1)}})),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},t.fromConfig=function(e,n){return new e(n.learningRate,n.decay,n.momentum,n.epsilon,n.centered)},t.className="RMSProp",t}(oo);zr(cf);var io=function(){function r(){}return r.sgd=function(t){return new ws(t)},r.momentum=function(t,e,n){return n===void 0&&(n=!1),new uf(t,e,n)},r.rmsprop=function(t,e,n,o,i){return e===void 0&&(e=.9),n===void 0&&(n=0),o===void 0&&(o=null),i===void 0&&(i=!1),new cf(t,e,n,o,i)},r.adam=function(t,e,n,o){return t===void 0&&(t=.001),e===void 0&&(e=.9),n===void 0&&(n=.999),o===void 0&&(o=null),new af(t,e,n,o)},r.adadelta=function(t,e,n){return t===void 0&&(t=.001),e===void 0&&(e=.95),n===void 0&&(n=null),new rf(t,e,n)},r.adamax=function(t,e,n,o,i){return t===void 0&&(t=.002),e===void 0&&(e=.9),n===void 0&&(n=.999),o===void 0&&(o=null),i===void 0&&(i=0),new sf(t,e,n,o,i)},r.adagrad=function(t,e){return e===void 0&&(e=.1),new of(t,e)},r}(),l1={sgd:io.sgd,momentum:io.momentum,adadelta:io.adadelta,adagrad:io.adagrad,rmsprop:io.rmsprop,adamax:io.adamax,adam:io.adam},ym=typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:function(r){return r()};function f1(){return new Promise(function(r){return ym(function(){return r()})})}at.prototype.squaredDifference=function(r){return el(this,r)},j=Zg;function ao(r,t,e){if(e===void 0&&(e=!1),r.beginPath(),t.slice(1).forEach(function(i,a){var s=i.x,u=i.y,c=t[a];r.moveTo(c.x,c.y),r.lineTo(s,u)}),e){var n=t[t.length-1],o=t[0];if(!n||!o)return;r.moveTo(n.x,n.y),r.lineTo(o.x,o.y)}r.stroke()}var Es=function(r,t){return Es=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)n.hasOwnProperty(o)&&(e[o]=n[o])},Es(r,t)};function nt(r,t){Es(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}var Nn=function(){return Nn=Object.assign||function(t){for(var e,n=1,o=arguments.length;n<o;n++){e=arguments[n];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])}return t},Nn.apply(this,arguments)};function h1(r,t){var e={};for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&t.indexOf(n)<0&&(e[n]=r[n]);if(r!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,n=Object.getOwnPropertySymbols(r);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(r,n[o])&&(e[n[o]]=r[n[o]]);return e}function d1(r,t,e,n){var o=arguments.length,i=o<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,e):n,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,t,e,n);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(i=(o<3?a(i):o>3?a(t,e,i):a(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i}function p1(r,t){return function(e,n){t(e,n,r)}}function v1(r,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,t)}function He(r,t,e,n){function o(i){return i instanceof e?i:new e(function(a){a(i)})}return new(e||(e=Promise))(function(i,a){function s(l){try{c(n.next(l))}catch(f){a(f)}}function u(l){try{c(n.throw(l))}catch(f){a(f)}}function c(l){l.done?i(l.value):o(l.value).then(s,u)}c((n=n.apply(r,t||[])).next())})}function je(r,t){var e={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},n,o,i,a;return a={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function s(c){return function(l){return u([c,l])}}function u(c){if(n)throw new TypeError("Generator is already executing.");for(;e;)try{if(n=1,o&&(i=c[0]&2?o.return:c[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,c[1])).done)return i;switch(o=0,i&&(c=[c[0]&2,i.value]),c[0]){case 0:case 1:i=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++,o=c[1],c=[0];continue;case 7:c=e.ops.pop(),e.trys.pop();continue;default:if(i=e.trys,!(i=i.length>0&&i[i.length-1])&&(c[0]===6||c[0]===2)){e=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]<i[3])){e.label=c[1];break}if(c[0]===6&&e.label<i[1]){e.label=i[1],i=c;break}if(i&&e.label<i[2]){e.label=i[2],e.ops.push(c);break}i[2]&&e.ops.pop(),e.trys.pop();continue}c=t.call(r,e)}catch(l){c=[6,l],o=0}finally{n=i=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}function g1(r,t,e,n){n===void 0&&(n=e),r[n]=t[e]}function m1(r,t){for(var e in r)e!=="default"&&!t.hasOwnProperty(e)&&(t[e]=r[e])}function lf(r){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function xm(r,t){var e=typeof Symbol=="function"&&r[Symbol.iterator];if(!e)return r;var n=e.call(r),o,i=[],a;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(s){a={error:s}}finally{try{o&&!o.done&&(e=n.return)&&e.call(n)}finally{if(a)throw a.error}}return i}function A1(){for(var r=[],t=0;t<arguments.length;t++)r=r.concat(xm(arguments[t]));return r}function ti(){for(var r=0,t=0,e=arguments.length;t<e;t++)r+=arguments[t].length;for(var n=Array(r),o=0,t=0;t<e;t++)for(var i=arguments[t],a=0,s=i.length;a<s;a++,o++)n[o]=i[a];return n}function Ji(r){return this instanceof Ji?(this.v=r,this):new Ji(r)}function y1(r,t,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=e.apply(r,t||[]),o,i=[];return o={},a("next"),a("throw"),a("return"),o[Symbol.asyncIterator]=function(){return this},o;function a(h){n[h]&&(o[h]=function(d){return new Promise(function(p,v){i.push([h,d,p,v])>1||s(h,d)})})}function s(h,d){try{u(n[h](d))}catch(p){f(i[0][3],p)}}function u(h){h.value instanceof Ji?Promise.resolve(h.value.v).then(c,l):f(i[0][2],h)}function c(h){s("next",h)}function l(h){s("throw",h)}function f(h,d){h(d),i.shift(),i.length&&s(i[0][0],i[0][1])}}function x1(r){var t,e;return t={},n("next"),n("throw",function(o){throw o}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(o,i){t[o]=r[o]?function(a){return(e=!e)?{value:Ji(r[o](a)),done:o==="return"}:i?i(a):a}:i}}function b1(r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=r[Symbol.asyncIterator],e;return t?t.call(r):(r=typeof lf=="function"?lf(r):r[Symbol.iterator](),e={},n("next"),n("throw"),n("return"),e[Symbol.asyncIterator]=function(){return this},e);function n(i){e[i]=r[i]&&function(a){return new Promise(function(s,u){a=r[i](a),o(s,u,a.done,a.value)})}}function o(i,a,s,u){Promise.resolve(u).then(function(c){i({value:c,done:s})},a)}}function w1(r,t){return Object.defineProperty?Object.defineProperty(r,"raw",{value:t}):r.raw=t,r}function E1(r){if(r&&r.__esModule)return r;var t={};if(r!=null)for(var e in r)Object.hasOwnProperty.call(r,e)&&(t[e]=r[e]);return t.default=r,t}function C1(r){return r&&r.__esModule?r:{default:r}}function I1(r,t){if(!t.has(r))throw new TypeError("attempted to get private field on non-instance");return t.get(r)}function S1(r,t,e){if(!t.has(r))throw new TypeError("attempted to set private field on non-instance");return t.set(r,e),e}var so=function(){function r(t,e){if(!uo(t)||!uo(e))throw new Error("Dimensions.constructor - expected width and height to be valid numbers, instead have "+JSON.stringify({width:t,height:e}));this._width=t,this._height=e}return Object.defineProperty(r.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),r.prototype.reverse=function(){return new r(1/this.width,1/this.height)},r}();function ni(r,t){return r instanceof at&&r.shape.length===t}function R1(r){return ni(r,1)}function bm(r){return ni(r,2)}function Ki(r){return ni(r,3)}function Ur(r){return ni(r,4)}function wm(r){return r%1!==0}function ff(r){return r%2===0}function Cs(r,t){t===void 0&&(t=2);var e=Math.pow(10,t);return Math.floor(r*e)/e}function hf(r){return r&&r.width&&r.height}function Em(r,t){var e=r.width,n=r.height,o=t/Math.max(n,e);return new so(Math.round(e*o),Math.round(n*o))}function Is(r){return r.reduce(function(t,e){return t.add(e)},new Ot(0,0)).div(new Ot(r.length,r.length))}function ri(r,t,e){return Array(r).fill(0).map(function(n,o){return t+o*e})}function uo(r){return!!r&&r!==1/0&&r!==-1/0&&!isNaN(r)||r===0}function df(r){return uo(r)&&0<=r&&r<=1}var Ot=function(){function r(t,e){this._x=t,this._y=e}return Object.defineProperty(r.prototype,"x",{get:function(){return this._x},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"y",{get:function(){return this._y},enumerable:!0,configurable:!0}),r.prototype.add=function(t){return new r(this.x+t.x,this.y+t.y)},r.prototype.sub=function(t){return new r(this.x-t.x,this.y-t.y)},r.prototype.mul=function(t){return new r(this.x*t.x,this.y*t.y)},r.prototype.div=function(t){return new r(this.x/t.x,this.y/t.y)},r.prototype.abs=function(){return new r(Math.abs(this.x),Math.abs(this.y))},r.prototype.magnitude=function(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))},r.prototype.floor=function(){return new r(Math.floor(this.x),Math.floor(this.y))},r}(),pr=function(){function r(t,e){e===void 0&&(e=!0);var n=t||{},o=[n.left,n.top,n.right,n.bottom].every(uo),i=[n.x,n.y,n.width,n.height].every(uo);if(!i&&!o)throw new Error("Box.constructor - expected box to be IBoundingBox | IRect, instead have "+JSON.stringify(n));var a=i?[n.x,n.y,n.width,n.height]:[n.left,n.top,n.right-n.left,n.bottom-n.top],s=a[0],u=a[1],c=a[2],l=a[3];r.assertIsValidBox({x:s,y:u,width:c,height:l},"Box.constructor",e),this._x=s,this._y=u,this._width=c,this._height=l}return r.isRect=function(t){return!!t&&[t.x,t.y,t.width,t.height].every(uo)},r.assertIsValidBox=function(t,e,n){if(n===void 0&&(n=!1),!r.isRect(t))throw new Error(e+" - invalid box: "+JSON.stringify(t)+", expected object with properties x, y, width, height");if(!n&&(t.width<0||t.height<0))throw new Error(e+" - width ("+t.width+") and height ("+t.height+") must be positive numbers")},Object.defineProperty(r.prototype,"x",{get:function(){return this._x},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"y",{get:function(){return this._y},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"left",{get:function(){return this.x},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"top",{get:function(){return this.y},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"right",{get:function(){return this.x+this.width},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"bottom",{get:function(){return this.y+this.height},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"area",{get:function(){return this.width*this.height},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"topLeft",{get:function(){return new Ot(this.left,this.top)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"topRight",{get:function(){return new Ot(this.right,this.top)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"bottomLeft",{get:function(){return new Ot(this.left,this.bottom)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"bottomRight",{get:function(){return new Ot(this.right,this.bottom)},enumerable:!0,configurable:!0}),r.prototype.round=function(){var t=[this.x,this.y,this.width,this.height].map(function(a){return Math.round(a)}),e=t[0],n=t[1],o=t[2],i=t[3];return new r({x:e,y:n,width:o,height:i})},r.prototype.floor=function(){var t=[this.x,this.y,this.width,this.height].map(function(a){return Math.floor(a)}),e=t[0],n=t[1],o=t[2],i=t[3];return new r({x:e,y:n,width:o,height:i})},r.prototype.toSquare=function(){var t=this,e=t.x,n=t.y,o=t.width,i=t.height,a=Math.abs(o-i);return o<i&&(e-=a/2,o+=a),i<o&&(n-=a/2,i+=a),new r({x:e,y:n,width:o,height:i})},r.prototype.rescale=function(t){var e=hf(t)?t.width:t,n=hf(t)?t.height:t;return new r({x:this.x*e,y:this.y*n,width:this.width*e,height:this.height*n})},r.prototype.pad=function(t,e){var n=[this.x-t/2,this.y-e/2,this.width+t,this.height+e],o=n[0],i=n[1],a=n[2],s=n[3];return new r({x:o,y:i,width:a,height:s})},r.prototype.clipAtImageBorders=function(t,e){var n=this,o=n.x,i=n.y,a=n.right,s=n.bottom,u=Math.max(o,0),c=Math.max(i,0),l=a-u,f=s-c,h=Math.min(l,t-u),d=Math.min(f,e-c);return new r({x:u,y:c,width:h,height:d}).floor()},r.prototype.shift=function(t,e){var n=this,o=n.width,i=n.height,a=this.x+t,s=this.y+e;return new r({x:a,y:s,width:o,height:i})},r.prototype.padAtBorders=function(t,e){var n=this.width+1,o=this.height+1,i=1,a=1,s=n,u=o,c=this.left,l=this.top,f=this.right,h=this.bottom;return f>e&&(s=-f+e+n,f=e),h>t&&(u=-h+t+o,h=t),c<1&&(u=2-c,c=1),l<1&&(u=2-l,l=1),{dy:a,edy:u,dx:i,edx:s,y:l,ey:h,x:c,ex:f,w:n,h:o}},r.prototype.calibrate=function(t){return new r({left:this.left+t.left*this.width,top:this.top+t.top*this.height,right:this.right+t.right*this.width,bottom:this.bottom+t.bottom*this.height}).toSquare().round()},r}(),Zi=function(r){nt(t,r);function t(e,n,o,i,a){return a===void 0&&(a=!1),r.call(this,{left:e,top:n,right:o,bottom:i},a)||this}return t}(pr),pf=function(){function r(t,e,n,o,i){this._imageDims=new so(i.width,i.height),this._score=t,this._classScore=e,this._className=n,this._box=new pr(o).rescale(this._imageDims)}return Object.defineProperty(r.prototype,"score",{get:function(){return this._score},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"classScore",{get:function(){return this._classScore},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"className",{get:function(){return this._className},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"box",{get:function(){return this._box},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"imageDims",{get:function(){return this._imageDims},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"imageWidth",{get:function(){return this.imageDims.width},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"imageHeight",{get:function(){return this.imageDims.height},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"relativeBox",{get:function(){return new pr(this._box).rescale(this.imageDims.reverse())},enumerable:!0,configurable:!0}),r.prototype.forSize=function(t,e){return new r(this.score,this.classScore,this.className,this.relativeBox,{width:t,height:e})},r}(),Gn=function(r){nt(t,r);function t(e,n,o){return r.call(this,e,e,"",n,o)||this}return t.prototype.forSize=function(e,n){var o=r.prototype.forSize.call(this,e,n),i=o.score,a=o.relativeBox,s=o.imageDims;return new t(i,a,s)},t}(pf);function Cm(r){var t=r.map(function(s){return s.x}),e=r.map(function(s){return s.y}),n=t.reduce(function(s,u){return u<s?u:s},1/0),o=e.reduce(function(s,u){return u<s?u:s},1/0),i=t.reduce(function(s,u){return s<u?u:s},0),a=e.reduce(function(s,u){return s<u?u:s},0);return new Zi(n,o,i,a)}function Im(r,t,e){e===void 0&&(e=!0);var n=Math.max(0,Math.min(r.right,t.right)-Math.max(r.left,t.left)),o=Math.max(0,Math.min(r.bottom,t.bottom)-Math.max(r.top,t.top)),i=n*o;return e?i/(r.area+t.area-i):i/Math.min(r.area,t.area)}function oi(r,t,e,n){n===void 0&&(n=!0);for(var o=t.map(function(s,u){return{score:s,boxIndex:u}}).sort(function(s,u){return s.score-u.score}).map(function(s){return s.boxIndex}),i=[],a=function(){var s=o.pop();i.push(s);for(var u=o,c=[],l=0;l<u.length;l++){var f=u[l],h=r[s],d=r[f];c.push(Im(h,d,n))}o=o.filter(function(p,v){return c[v]<=e})};o.length>0;)a();return i}function ii(r,t){return Le(function(){var e=t[0],n=t[1],o=t[2],i=hr(ti(r.shape.slice(0,3),[1]),e),a=hr(ti(r.shape.slice(0,3),[1]),n),s=hr(ti(r.shape.slice(0,3),[1]),o),u=An([i,a,s],3);return xn(r,u)})}function Sm(r,t){return t===void 0&&(t=!1),Le(function(){var e=r.shape.slice(1),n=e[0],o=e[1];if(n===o)return r;var i=Math.abs(n-o),a=Math.round(i*(t?.5:1)),s=n>o?2:1,u=function(d){var p=r.shape.slice();return p[s]=d,hr(p,0)},c=u(a),l=i-c.shape[s],f=t&&l?u(l):null,h=[f,r,c].filter(function(d){return!!d}).map(function(d){return d.toFloat()});return An(h,s)})}function Ss(r){return 1/(1+Math.exp(-r))}function B1(r){return Math.log(r/(1-r))}var Rs=function(r){nt(t,r);function t(e,n,o,i,a){return a===void 0&&(a=!1),r.call(this,{x:e,y:n,width:o,height:i},a)||this}return t}(pr),Rm=.5,Bm=.43,km=.45,Bo=function(){function r(t,e,n){n===void 0&&(n=new Ot(0,0));var o=e.width,i=e.height;this._imgDims=new so(o,i),this._shift=n,this._positions=t.map(function(a){return a.mul(new Ot(o,i)).add(n)})}return Object.defineProperty(r.prototype,"shift",{get:function(){return new Ot(this._shift.x,this._shift.y)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"imageWidth",{get:function(){return this._imgDims.width},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"imageHeight",{get:function(){return this._imgDims.height},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"positions",{get:function(){return this._positions},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"relativePositions",{get:function(){var t=this;return this._positions.map(function(e){return e.sub(t._shift).div(new Ot(t.imageWidth,t.imageHeight))})},enumerable:!0,configurable:!0}),r.prototype.forSize=function(t,e){return new this.constructor(this.relativePositions,{width:t,height:e})},r.prototype.shiftBy=function(t,e){return new this.constructor(this.relativePositions,this._imgDims,new Ot(t,e))},r.prototype.shiftByPoint=function(t){return this.shiftBy(t.x,t.y)},r.prototype.align=function(t,e){if(e===void 0&&(e={}),t){var n=t instanceof Gn?t.box.floor():new pr(t);return this.shiftBy(n.x,n.y).align(null,e)}var o=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},e),i=o.useDlibAlignment,a=o.minBoxPadding;return i?this.alignDlib():this.alignMinBbox(a)},r.prototype.alignDlib=function(){var t=this.getRefPointsForAlignment(),e=t[0],n=t[1],o=t[2],i=function(f){return o.sub(f).magnitude()},a=(i(e)+i(n))/2,s=Math.floor(a/km),u=Is(t),c=Math.floor(Math.max(0,u.x-Rm*s)),l=Math.floor(Math.max(0,u.y-Bm*s));return new Rs(c,l,Math.min(s,this.imageWidth+c),Math.min(s,this.imageHeight+l))},r.prototype.alignMinBbox=function(t){var e=Cm(this.positions);return e.pad(e.width*t,e.height*t)},r.prototype.getRefPointsForAlignment=function(){throw new Error("getRefPointsForAlignment not implemented by base class")},r}(),Tm=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.getRefPointsForAlignment=function(){var e=this.positions;return[e[0],e[1],Is([e[3],e[4]])]},t}(Bo),vf=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.getJawOutline=function(){return this.positions.slice(0,17)},t.prototype.getLeftEyeBrow=function(){return this.positions.slice(17,22)},t.prototype.getRightEyeBrow=function(){return this.positions.slice(22,27)},t.prototype.getNose=function(){return this.positions.slice(27,36)},t.prototype.getLeftEye=function(){return this.positions.slice(36,42)},t.prototype.getRightEye=function(){return this.positions.slice(42,48)},t.prototype.getMouth=function(){return this.positions.slice(48,68)},t.prototype.getRefPointsForAlignment=function(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(Is)},t}(Bo),gf=function(){function r(t,e){this._label=t,this._distance=e}return Object.defineProperty(r.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"distance",{get:function(){return this._distance},enumerable:!0,configurable:!0}),r.prototype.toString=function(t){return t===void 0&&(t=!0),""+this.label+(t?" ("+Cs(this.distance)+")":"")},r}(),mf=function(r){nt(t,r);function t(e,n){var o=r.call(this,e)||this;return o._label=n,o}return t.assertIsValidLabeledBox=function(e,n){if(pr.assertIsValidBox(e,n),!uo(e.label))throw new Error(n+" - expected property label ("+e.label+") to be a number")},Object.defineProperty(t.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),t}(pr),qi=function(){function r(t,e){if(typeof t!="string")throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(e)||e.some(function(n){return!(n instanceof Float32Array)}))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=t,this._descriptors=e}return Object.defineProperty(r.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"descriptors",{get:function(){return this._descriptors},enumerable:!0,configurable:!0}),r.prototype.toJSON=function(){return{label:this.label,descriptors:this.descriptors.map(function(t){return Array.from(t)})}},r.fromJSON=function(t){var e=t.descriptors.map(function(n){return new Float32Array(n)});return new r(t.label,e)},r}(),k1=function(r){nt(t,r);function t(e,n,o,i){var a=r.call(this,e,n)||this;return a._score=o,a._classScore=i,a}return t.assertIsValidPredictedBox=function(e,n){if(mf.assertIsValidLabeledBox(e,n),!df(e.score)||!df(e.classScore))throw new Error(n+" - expected properties score ("+e.score+") and ("+e.classScore+") to be a number between [0, 1]")},Object.defineProperty(t.prototype,"score",{get:function(){return this._score},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"classScore",{get:function(){return this._classScore},enumerable:!0,configurable:!0}),t}(mf);function ai(r){return r.detection instanceof Gn}function si(r,t){var e={detection:t};return Object.assign({},r,e)}function Af(){var r=window.fetch||function(){throw new Error("fetch - missing fetch implementation for browser environment")},t=function(){throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:function(){return document.createElement("canvas")},createImageElement:function(){return document.createElement("img")},fetch:r,readFile:t}}function yf(r){var t="";if(!r)try{r=H(90872)}catch(n){t=n.toString()}var e=r?function(n){return new Promise(function(o,i){r.readFile(n,function(a,s){return a?i(a):o(s)})})}:function(){throw new Error("readFile - failed to require fs in nodejs environment with error: "+t)};return{readFile:e}}function xf(){var r=H.g.Canvas||H.g.HTMLCanvasElement,t=H.g.Image||H.g.HTMLImageElement,e=function(){if(r)return new r;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},n=function(){if(t)return new t;throw new Error("createImageElement - missing Image implementation for nodejs environment")},o=H.g.fetch||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},i=yf();return Nn({Canvas:r||function(){function a(){}return a}(),CanvasRenderingContext2D:H.g.CanvasRenderingContext2D||function(){function a(){}return a}(),Image:t||function(){function a(){}return a}(),ImageData:H.g.ImageData||function(){function a(){}return a}(),Video:H.g.HTMLVideoElement||function(){function a(){}return a}(),createCanvasElement:e,createImageElement:n,fetch:o},i)}function bf(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var wf=H(97671);function Ef(){return typeof H.g=="object"&&!0&&!0&&typeof wf!="undefined"&&!!wf.version}var bn;function Dm(){if(!bn)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return bn}function Bs(r){bn=r}function ks(){bf()&&Bs(Af()),Ef()&&Bs(xf())}function Fm(r){if(bn||ks(),!bn)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");var t=r.Canvas,e=t===void 0?bn.Canvas:t,n=r.Image,o=n===void 0?bn.Image:n;bn.Canvas=e,bn.Image=o,bn.createCanvasElement=r.createCanvasElement||function(){return new e},bn.createImageElement=r.createImageElement||function(){return new o},bn.ImageData=r.ImageData||bn.ImageData,bn.Video=r.Video||bn.Video,bn.fetch=r.fetch||bn.fetch,bn.readFile=r.readFile||bn.readFile}var On={getEnv:Dm,setEnv:Bs,initialize:ks,createBrowserEnv:Af,createFileSystem:yf,createNodejsEnv:xf,monkeyPatch:Fm,isBrowser:bf,isNodejs:Ef};ks();function Ts(r){return!On.isNodejs()&&typeof r=="string"?document.getElementById(r):r}function vr(r){var t=On.getEnv(),e=t.Canvas,n=t.CanvasRenderingContext2D;if(r instanceof n)return r;var o=Ts(r);if(!(o instanceof e))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");var i=o.getContext("2d");if(!i)throw new Error("resolveContext2d - canvas 2d context is null");return i}var Hr;(function(r){r.TOP_LEFT="TOP_LEFT",r.TOP_RIGHT="TOP_RIGHT",r.BOTTOM_LEFT="BOTTOM_LEFT",r.BOTTOM_RIGHT="BOTTOM_RIGHT"})(Hr||(Hr={}));var Cf=function(){function r(t){t===void 0&&(t={});var e=t.anchorPosition,n=t.backgroundColor,o=t.fontColor,i=t.fontSize,a=t.fontStyle,s=t.padding;this.anchorPosition=e||Hr.TOP_LEFT,this.backgroundColor=n||"rgba(0, 0, 0, 0.5)",this.fontColor=o||"rgba(255, 255, 255, 1)",this.fontSize=i||14,this.fontStyle=a||"Georgia",this.padding=s||4}return r}(),If=function(){function r(t,e,n){n===void 0&&(n={}),this.text=typeof t=="string"?[t]:t instanceof r?t.text:t,this.anchor=e,this.options=new Cf(n)}return r.prototype.measureWidth=function(t){var e=this.options.padding;return this.text.map(function(n){return t.measureText(n).width}).reduce(function(n,o){return n<o?o:n},0)+2*e},r.prototype.measureHeight=function(){var t=this.options,e=t.fontSize,n=t.padding;return this.text.length*e+2*n},r.prototype.getUpperLeft=function(t,e){var n=this.options.anchorPosition,o=n===Hr.BOTTOM_RIGHT||n===Hr.TOP_RIGHT,i=n===Hr.BOTTOM_LEFT||n===Hr.BOTTOM_RIGHT,a=this.measureWidth(t),s=this.measureHeight(),u=o?this.anchor.x-a:this.anchor.x,c=i?this.anchor.y-s:this.anchor.y;if(e){var l=e.width,f=e.height,h=Math.max(Math.min(u,l-a),0),d=Math.max(Math.min(c,f-s),0);return{x:h,y:d}}return{x:u,y:c}},r.prototype.draw=function(t){var e=Ts(t),n=vr(e),o=this.options,i=o.backgroundColor,a=o.fontColor,s=o.fontSize,u=o.fontStyle,c=o.padding;n.font=s+"px "+u;var l=this.measureWidth(n),f=this.measureHeight();n.fillStyle=i;var h=this.getUpperLeft(n,e);n.fillRect(h.x,h.y,l,f),n.fillStyle=a,this.text.forEach(function(d,p){var v=c+h.x,g=c+h.y+(p+1)*s;n.fillText(d,v,g)})},r}(),Pm=function(){function r(t){t===void 0&&(t={});var e=t.boxColor,n=t.lineWidth,o=t.label,i=t.drawLabelOptions;this.boxColor=e||"rgba(0, 0, 255, 1)",this.lineWidth=n||2,this.label=o;var a={anchorPosition:Hr.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new Cf(Object.assign({},a,i))}return r}(),Nm=function(){function r(t,e){e===void 0&&(e={}),this.box=new pr(t),this.options=new Pm(e)}return r.prototype.draw=function(t){var e=vr(t),n=this.options,o=n.boxColor,i=n.lineWidth,a=this.box,s=a.x,u=a.y,c=a.width,l=a.height;e.strokeStyle=o,e.lineWidth=i,e.strokeRect(s,u,c,l);var f=this.options.label;f&&new If([f],{x:s-i/2,y:u},this.options.drawLabelOptions).draw(t)},r}();function Om(r,t){var e=Array.isArray(t)?t:[t];e.forEach(function(n){var o=n instanceof Gn?n.score:ai(n)?n.detection.score:void 0,i=n instanceof Gn?n.box:ai(n)?n.detection.box:new pr(n),a=o?""+Cs(o):void 0;new Nm(i,{label:a}).draw(r)})}function Sf(r){var t=On.getEnv(),e=t.Image,n=t.Video;return r instanceof e&&r.complete||r instanceof n&&r.readyState>=3}function Mm(r){return new Promise(function(t,e){if(r instanceof On.getEnv().Canvas||Sf(r))return t();function n(i){i.currentTarget&&(i.currentTarget.removeEventListener("load",n),i.currentTarget.removeEventListener("error",o),t(i))}function o(i){i.currentTarget&&(i.currentTarget.removeEventListener("load",n),i.currentTarget.removeEventListener("error",o),e(i))}r.addEventListener("load",n),r.addEventListener("error",o)})}function T1(r){return new Promise(function(t,e){if(!(r instanceof Blob))return e("bufferToImage - expected buf to be of type: Blob");var n=new FileReader;n.onload=function(){if(typeof n.result!="string")return e("bufferToImage - expected reader.result to be a string, in onload");var o=env.getEnv().createImageElement();o.onload=function(){return t(o)},o.onerror=e,o.src=n.result},n.onerror=e,n.readAsDataURL(r)})}function Ds(r){var t=On.getEnv(),e=t.Image,n=t.Video;return r instanceof e?new so(r.naturalWidth,r.naturalHeight):r instanceof n?new so(r.videoWidth,r.videoHeight):new so(r.width,r.height)}function Yi(r){var t=r.width,e=r.height,n=On.getEnv().createCanvasElement,o=n();return o.width=t,o.height=e,o}function Fs(r,t){var e=On.getEnv().ImageData;if(!(r instanceof e)&&!Sf(r))throw new Error("createCanvasFromMedia - media has not finished loading yet");var n=t||Ds(r),o=n.width,i=n.height,a=Yi({width:o,height:i});return r instanceof e?vr(a).putImageData(r,0,0):vr(a).drawImage(r,0,0,o,i),a}function Lm(r,t){return He(this,void 0,void 0,function(){var e,n,o,i,a,s;return je(this,function(u){switch(u.label){case 0:return e=t||On.getEnv().createCanvasElement(),n=r.shape.slice(Ur(r)?1:0),o=n[0],i=n[1],a=n[2],s=Le(function(){return r.as3D(o,i,a).toInt()}),[4,As.toPixels(s,e)];case 1:return u.sent(),s.dispose(),[2,e]}})})}function Rf(r){var t=On.getEnv(),e=t.Image,n=t.Canvas,o=t.Video;return r instanceof e||r instanceof n||r instanceof o}function Wm(r,t,e){e===void 0&&(e=!1);var n=On.getEnv(),o=n.Image,i=n.Canvas;if(!(r instanceof o||r instanceof i))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");var a=Ds(r),s=t/Math.max(a.height,a.width),u=s*a.width,c=s*a.height,l=Yi({width:t,height:t}),f=r instanceof i?r:Fs(r),h=Math.abs(u-c)/2,d=e&&u<c?h:0,p=e&&c<u?h:0;return vr(l).drawImage(f,d,p,u,c),l}var $i=function(){function r(t,e){var n=this;if(e===void 0&&(e=!1),this._imageTensors=[],this._canvases=[],this._treatAsBatchInput=!1,this._inputDimensions=[],!Array.isArray(t))throw new Error("NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have "+t);this._treatAsBatchInput=e,this._batchSize=t.length,t.forEach(function(o,i){if(Ki(o)){n._imageTensors[i]=o,n._inputDimensions[i]=o.shape;return}if(Ur(o)){var a=o.shape[0];if(a!==1)throw new Error("NetInput - tf.Tensor4D with batchSize "+a+" passed, but not supported in input array");n._imageTensors[i]=o,n._inputDimensions[i]=o.shape.slice(1);return}var s=o instanceof On.getEnv().Canvas?o:Fs(o);n._canvases[i]=s,n._inputDimensions[i]=[s.height,s.width,3]})}return Object.defineProperty(r.prototype,"imageTensors",{get:function(){return this._imageTensors},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"canvases",{get:function(){return this._canvases},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"isBatchInput",{get:function(){return this.batchSize>1||this._treatAsBatchInput},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"batchSize",{get:function(){return this._batchSize},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"inputDimensions",{get:function(){return this._inputDimensions},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"inputSize",{get:function(){return this._inputSize},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"reshapedInputDimensions",{get:function(){var t=this;return ri(this.batchSize,0,1).map(function(e,n){return t.getReshapedInputDimensions(n)})},enumerable:!0,configurable:!0}),r.prototype.getInput=function(t){return this.canvases[t]||this.imageTensors[t]},r.prototype.getInputDimensions=function(t){return this._inputDimensions[t]},r.prototype.getInputHeight=function(t){return this._inputDimensions[t][0]},r.prototype.getInputWidth=function(t){return this._inputDimensions[t][1]},r.prototype.getReshapedInputDimensions=function(t){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");var e=this.getInputWidth(t),n=this.getInputHeight(t);return Em({width:e,height:n},this.inputSize)},r.prototype.toBatchTensor=function(t,e){var n=this;return e===void 0&&(e=!0),this._inputSize=t,Le(function(){var o=ri(n.batchSize,0,1).map(function(a){var s=n.getInput(a);if(s instanceof at){var u=Ur(s)?s:s.expandDims();return u=Sm(u,e),(u.shape[1]!==t||u.shape[2]!==t)&&(u=es.resizeBilinear(u,[t,t])),u.as3D(t,t,3)}if(s instanceof On.getEnv().Canvas)return As.fromPixels(Wm(s,t,e));throw new Error("toBatchTensor - at batchIdx "+a+", expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have "+s)}),i=jn(o.map(function(a){return a.toFloat()})).as4D(n.batchSize,t,t,3);return i})},r}();function Cn(r){return He(this,void 0,void 0,function(){var t,e,n;return je(this,function(o){switch(o.label){case 0:if(r instanceof $i)return[2,r];if(t=Array.isArray(r)?r:[r],!t.length)throw new Error("toNetInput - empty array passed as input");return e=function(i){return Array.isArray(r)?" at input index "+i+":":""},n=t.map(Ts),n.forEach(function(i,a){if(!Rf(i)&&!Ki(i)&&!Ur(i))throw typeof t[a]=="string"?new Error("toNetInput -"+e(a)+" string passed, but could not resolve HTMLElement for element id "+t[a]):new Error("toNetInput -"+e(a)+" expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id");if(Ur(i)){var s=i.shape[0];if(s!==1)throw new Error("toNetInput -"+e(a)+" tf.Tensor4D with batchSize "+s+" passed, but not supported in input array")}}),[4,Promise.all(n.map(function(i){return Rf(i)&&Mm(i)}))];case 1:return o.sent(),[2,new $i(n,Array.isArray(r))]}})})}function Ps(r,t){return He(this,void 0,void 0,function(){var e,n,o,i,a,s,u;return je(this,function(c){switch(c.label){case 0:return e=On.getEnv().Canvas,n=r,r instanceof e?[3,5]:[4,Cn(r)];case 1:if(o=c.sent(),o.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");return i=o.getInput(0),i instanceof e?(a=i,[3,4]):[3,2];case 2:return[4,Lm(i)];case 3:a=c.sent(),c.label=4;case 4:n=a,c.label=5;case 5:return s=vr(n),u=t.map(function(l){return l instanceof Gn?l.forSize(n.width,n.height).box.floor():l}).map(function(l){return l.clipAtImageBorders(n.width,n.height)}),[2,u.map(function(l){var f=l.x,h=l.y,d=l.width,p=l.height,v=Yi({width:d,height:p});return vr(v).putImageData(s.getImageData(f,h,d,p),0,0),v})]}})})}function Ns(r,t){return He(this,void 0,void 0,function(){return je(this,function(e){if(!Ki(r)&&!Ur(r))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(Ur(r)&&r.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return[2,Le(function(){var n=r.shape.slice(Ur(r)?1:0),o=n[0],i=n[1],a=n[2],s=t.map(function(c){return c instanceof Gn?c.forSize(i,o).box:c}).map(function(c){return c.clipAtImageBorders(i,o)}),u=s.map(function(c){var l=c.x,f=c.y,h=c.width,d=c.height;return El(r.as3D(o,i,a),[f,l,0],[d,h,a])});return u})]})})}function _m(r,t){return He(this,void 0,void 0,function(){var e,n;return je(this,function(o){switch(o.label){case 0:return e=On.getEnv().fetch,[4,e(r,t)];case 1:if(n=o.sent(),!(n.status<400))throw new Error("failed to fetch: ("+n.status+") "+n.statusText+", from url: "+n.url);return[2,n]}})})}function D1(r){return __awaiter(this,void 0,void 0,function(){var t,e;return __generator(this,function(n){switch(n.label){case 0:return[4,fetchOrThrow(r)];case 1:return t=n.sent(),[4,t.blob()];case 2:if(e=n.sent(),!e.type.startsWith("image/"))throw new Error("fetchImage - expected blob type to be of type image/*, instead have: "+e.type+", for url: "+t.url);return[2,bufferToImage(e)]}})})}function Qm(r){return He(this,void 0,void 0,function(){return je(this,function(t){switch(t.label){case 0:return[4,_m(r)];case 1:return[2,t.sent().json()]}})})}function F1(r){return __awaiter(this,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return t=Float32Array.bind,[4,fetchOrThrow(r)];case 1:return[4,e.sent().arrayBuffer()];case 2:return[2,new(t.apply(Float32Array,[void 0,e.sent()]))]}})})}function Bf(r,t){var e=t+"-weights_manifest.json";if(!r)return{modelBaseUri:"",manifestUri:e};if(r==="/")return{modelBaseUri:"/",manifestUri:"/"+e};var n=r.startsWith("http://")?"http://":r.startsWith("https://")?"https://":"";r=r.replace(n,"");var o=r.split("/").filter(function(s){return s}),i=r.endsWith(".json")?o[o.length-1]:e,a=n+(r.endsWith(".json")?o.slice(0,o.length-1):o).join("/");return a=r.startsWith("/")?"/"+a:a,{modelBaseUri:a,manifestUri:a==="/"?"/"+i:a+"/"+i}}function zm(r,t){return He(this,void 0,void 0,function(){var e,n,o,i;return je(this,function(a){switch(a.label){case 0:return e=Bf(r,t),n=e.manifestUri,o=e.modelBaseUri,[4,Qm(n)];case 1:return i=a.sent(),[2,$l.loadWeights(i,o)]}})})}function P1(r,t,e){e===void 0&&(e=!1);var n=e?getMediaDimensions(t):t,o=n.width,i=n.height;return r.width=o,r.height=i,{width:o,height:i}}var kr=function(){function r(t){this._name=t,this._params=void 0,this._paramMappings=[]}return Object.defineProperty(r.prototype,"params",{get:function(){return this._params},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"paramMappings",{get:function(){return this._paramMappings},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"isLoaded",{get:function(){return!!this.params},enumerable:!0,configurable:!0}),r.prototype.getParamFromPath=function(t){var e=this.traversePropertyPath(t),n=e.obj,o=e.objProp;return n[o]},r.prototype.reassignParamFromPath=function(t,e){var n=this.traversePropertyPath(t),o=n.obj,i=n.objProp;o[i].dispose(),o[i]=e},r.prototype.getParamList=function(){var t=this;return this._paramMappings.map(function(e){var n=e.paramPath;return{path:n,tensor:t.getParamFromPath(n)}})},r.prototype.getTrainableParams=function(){return this.getParamList().filter(function(t){return t.tensor instanceof ln})},r.prototype.getFrozenParams=function(){return this.getParamList().filter(function(t){return!(t.tensor instanceof ln)})},r.prototype.variable=function(){var t=this;this.getFrozenParams().forEach(function(e){var n=e.path,o=e.tensor;t.reassignParamFromPath(n,o.variable())})},r.prototype.freeze=function(){var t=this;this.getTrainableParams().forEach(function(e){var n=e.path,o=e.tensor,i=Tn(o.dataSync());o.dispose(),t.reassignParamFromPath(n,i)})},r.prototype.dispose=function(t){t===void 0&&(t=!0),this.getParamList().forEach(function(e){if(t&&e.tensor.isDisposed)throw new Error("param tensor has already been disposed for path "+e.path);e.tensor.dispose()}),this._params=void 0},r.prototype.serializeParams=function(){return new Float32Array(this.getParamList().map(function(t){var e=t.tensor;return Array.from(e.dataSync())}).reduce(function(t,e){return t.concat(e)}))},r.prototype.load=function(t){return He(this,void 0,void 0,function(){return je(this,function(e){switch(e.label){case 0:return t instanceof Float32Array?(this.extractWeights(t),[2]):[4,this.loadFromUri(t)];case 1:return e.sent(),[2]}})})},r.prototype.loadFromUri=function(t){return He(this,void 0,void 0,function(){var e;return je(this,function(n){switch(n.label){case 0:if(t&&typeof t!="string")throw new Error(this._name+".loadFromUri - expected model uri");return[4,zm(t,this.getDefaultModelName())];case 1:return e=n.sent(),this.loadFromWeightMap(e),[2]}})})},r.prototype.loadFromDisk=function(t){return He(this,void 0,void 0,function(){var e,n,o,i,a,s,u,c,l,f;return je(this,function(h){switch(h.label){case 0:if(t&&typeof t!="string")throw new Error(this._name+".loadFromDisk - expected model file path");return e=On.getEnv().readFile,n=Bf(t,this.getDefaultModelName()),o=n.manifestUri,i=n.modelBaseUri,a=function(d){return Promise.all(d.map(function(p){return e(p).then(function(v){return v.buffer})}))},s=$l.weightsLoaderFactory(a),l=(c=JSON).parse,[4,e(o)];case 1:return u=l.apply(c,[h.sent().toString()]),[4,s(u,i)];case 2:return f=h.sent(),this.loadFromWeightMap(f),[2]}})})},r.prototype.loadFromWeightMap=function(t){var e=this.extractParamsFromWeigthMap(t),n=e.paramMappings,o=e.params;this._paramMappings=n,this._params=o},r.prototype.extractWeights=function(t){var e=this.extractParams(t),n=e.paramMappings,o=e.params;this._paramMappings=n,this._params=o},r.prototype.traversePropertyPath=function(t){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");var e=t.split("/").reduce(function(i,a){if(!i.nextObj.hasOwnProperty(a))throw new Error("traversePropertyPath - object does not have property "+a+", for path "+t);return{obj:i.nextObj,objProp:a,nextObj:i.nextObj[a]}},{nextObj:this.params}),n=e.obj,o=e.objProp;if(!n||!o||!(n[o]instanceof at))throw new Error("traversePropertyPath - parameter is not a tensor, for path "+t);return{obj:n,objProp:o}},r}();function Xn(r,t,e){return Le(function(){var n=Ka(r,t.depthwise_filter,t.pointwise_filter,e,"same");return n=mt(n,t.bias),n})}function Os(r,t,e){return e===void 0&&(e=!1),Le(function(){var n=nn(e?mt(Yn(r,t.conv0.filters,[2,2],"same"),t.conv0.bias):Xn(r,t.conv0,[2,2])),o=Xn(n,t.conv1,[1,1]),i=nn(mt(n,o)),a=Xn(i,t.conv2,[1,1]);return nn(mt(n,mt(o,a)))})}function ea(r,t,e,n){return e===void 0&&(e=!1),n===void 0&&(n=!0),Le(function(){var o=nn(e?mt(Yn(r,t.conv0.filters,n?[2,2]:[1,1],"same"),t.conv0.bias):Xn(r,t.conv0,n?[2,2]:[1,1])),i=Xn(o,t.conv1,[1,1]),a=nn(mt(o,i)),s=Xn(a,t.conv2,[1,1]),u=nn(mt(o,mt(i,s))),c=Xn(u,t.conv3,[1,1]);return nn(mt(o,mt(i,mt(s,c))))})}function ar(r,t,e,n){return e===void 0&&(e="same"),n===void 0&&(n=!1),Le(function(){var o=mt(Yn(r,t.filters,[1,1],e),t.bias);return n?nn(o):o})}function Tr(r,t){Object.keys(r).forEach(function(e){t.some(function(n){return n.originalPath===e})||r[e].dispose()})}function ta(r,t){return function(e,n,o,i){var a=Qn(r(e*n*o*o),[o,o,e,n]),s=vn(r(n));return t.push({paramPath:i+"/filters"},{paramPath:i+"/bias"}),{filters:a,bias:s}}}function Ms(r,t){return function(e,n,o){var i=Mr(r(e*n),[e,n]),a=vn(r(n));return t.push({paramPath:o+"/weights"},{paramPath:o+"/bias"}),{weights:i,bias:a}}}var kf=function(){function r(t,e,n){this.depthwise_filter=t,this.pointwise_filter=e,this.bias=n}return r}();function Ls(r,t){return function(e,n,o){var i=Qn(r(9*e),[3,3,e,1]),a=Qn(r(e*n),[1,1,e,n]),s=vn(r(n));return t.push({paramPath:o+"/depthwise_filter"},{paramPath:o+"/pointwise_filter"},{paramPath:o+"/bias"}),new kf(i,a,s)}}function Ws(r){return function(t){var e=r(t+"/depthwise_filter",4),n=r(t+"/pointwise_filter",4),o=r(t+"/bias",1);return new kf(e,n,o)}}function jr(r,t){return function(e,n,o){var i=r[e];if(!ni(i,n))throw new Error("expected weightMap["+e+"] to be a Tensor"+n+"D, instead have "+i);return t.push({originalPath:e,paramPath:o||e}),i}}function Dr(r){var t=r;function e(o){var i=t.slice(0,o);return t=t.slice(o),i}function n(){return t}return{extractWeights:e,getRemainingWeights:n}}function Tf(r,t){var e=ta(r,t),n=Ls(r,t);function o(a,s,u,c){c===void 0&&(c=!1);var l=c?e(a,s,3,u+"/conv0"):n(a,s,u+"/conv0"),f=n(s,s,u+"/conv1"),h=n(s,s,u+"/conv2");return{conv0:l,conv1:f,conv2:h}}function i(a,s,u,c){c===void 0&&(c=!1);var l=o(a,s,u,c),f=l.conv0,h=l.conv1,d=l.conv2,p=n(s,s,u+"/conv3");return{conv0:f,conv1:h,conv2:d,conv3:p}}return{extractDenseBlock3Params:o,extractDenseBlock4Params:i}}function Um(r){var t=[],e=Dr(r),n=e.extractWeights,o=e.getRemainingWeights,i=Tf(n,t).extractDenseBlock4Params,a=i(3,32,"dense0",!0),s=i(32,64,"dense1"),u=i(64,128,"dense2"),c=i(128,256,"dense3");if(o().length!==0)throw new Error("weights remaing after extract: "+o().length);return{paramMappings:t,params:{dense0:a,dense1:s,dense2:u,dense3:c}}}function Df(r){return function(t){var e=r(t+"/filters",4),n=r(t+"/bias",1);return{filters:e,bias:n}}}function Ff(r,t){var e=jr(r,t),n=Df(e),o=Ws(e);function i(s,u){u===void 0&&(u=!1);var c=u?n(s+"/conv0"):o(s+"/conv0"),l=o(s+"/conv1"),f=o(s+"/conv2");return{conv0:c,conv1:l,conv2:f}}function a(s,u){u===void 0&&(u=!1);var c=u?n(s+"/conv0"):o(s+"/conv0"),l=o(s+"/conv1"),f=o(s+"/conv2"),h=o(s+"/conv3");return{conv0:c,conv1:l,conv2:f,conv3:h}}return{extractDenseBlock3Params:i,extractDenseBlock4Params:a}}function Hm(r){var t=[],e=Ff(r,t).extractDenseBlock4Params,n={dense0:e("dense0",!0),dense1:e("dense1"),dense2:e("dense2"),dense3:e("dense3")};return Tr(r,t),{params:n,paramMappings:t}}var Pf=function(r){nt(t,r);function t(){return r.call(this,"FaceFeatureExtractor")||this}return t.prototype.forwardInput=function(e){var n=this.params;if(!n)throw new Error("FaceFeatureExtractor - load model before inference");return Le(function(){var o=e.toBatchTensor(112,!0),i=[122.782,117.001,104.298],a=ii(o,i).div(Fe(255)),s=ea(a,n.dense0,!0);return s=ea(s,n.dense1),s=ea(s,n.dense2),s=ea(s,n.dense3),s=$o(s,[7,7],[2,2],"valid"),s})},t.prototype.forward=function(e){return He(this,void 0,void 0,function(){var n;return je(this,function(o){switch(o.label){case 0:return n=this.forwardInput,[4,Cn(e)];case 1:return[2,n.apply(this,[o.sent()])]}})})},t.prototype.getDefaultModelName=function(){return"face_feature_extractor_model"},t.prototype.extractParamsFromWeigthMap=function(e){return Hm(e)},t.prototype.extractParams=function(e){return Um(e)},t}(kr);function gr(r,t){return Le(function(){return mt(Ui(r,t.weights),t.bias)})}function jm(r,t,e){var n=[],o=Dr(r),i=o.extractWeights,a=o.getRemainingWeights,s=Ms(i,n),u=s(t,e,"fc");if(a().length!==0)throw new Error("weights remaing after extract: "+a().length);return{paramMappings:n,params:{fc:u}}}function Vm(r){var t=[],e=jr(r,t);function n(i){var a=e(i+"/weights",2),s=e(i+"/bias",1);return{weights:a,bias:s}}var o={fc:n("fc")};return Tr(r,t),{params:o,paramMappings:t}}function Nf(r){var t={},e={};return Object.keys(r).forEach(function(n){var o=n.startsWith("fc")?e:t;o[n]=r[n]}),{featureExtractorMap:t,classifierMap:e}}var Of=function(r){nt(t,r);function t(e,n){var o=r.call(this,e)||this;return o._faceFeatureExtractor=n,o}return Object.defineProperty(t.prototype,"faceFeatureExtractor",{get:function(){return this._faceFeatureExtractor},enumerable:!0,configurable:!0}),t.prototype.runNet=function(e){var n=this,o=this.params;if(!o)throw new Error(this._name+" - load model before inference");return Le(function(){var i=e instanceof $i?n.faceFeatureExtractor.forwardInput(e):e;return gr(i.as2D(i.shape[0],-1),o.fc)})},t.prototype.dispose=function(e){e===void 0&&(e=!0),this.faceFeatureExtractor.dispose(e),r.prototype.dispose.call(this,e)},t.prototype.loadClassifierParams=function(e){var n=this.extractClassifierParams(e),o=n.params,i=n.paramMappings;this._params=o,this._paramMappings=i},t.prototype.extractClassifierParams=function(e){return jm(e,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())},t.prototype.extractParamsFromWeigthMap=function(e){var n=Nf(e),o=n.featureExtractorMap,i=n.classifierMap;return this.faceFeatureExtractor.loadFromWeightMap(o),Vm(i)},t.prototype.extractParams=function(e){var n=this.getClassifierChannelsIn(),o=this.getClassifierChannelsOut(),i=o*n+o,a=e.slice(0,e.length-i),s=e.slice(e.length-i);return this.faceFeatureExtractor.extractWeights(a),this.extractClassifierParams(s)},t}(kr),Mf=["neutral","happy","sad","angry","fearful","disgusted","surprised"],_s=function(){function r(t){var e=this;if(t.length!==7)throw new Error("FaceExpressions.constructor - expected probabilities.length to be 7, have: "+t.length);Mf.forEach(function(n,o){e[n]=t[o]})}return r.prototype.asSortedArray=function(){var t=this;return Mf.map(function(e){return{expression:e,probability:t[e]}}).sort(function(e,n){return n.probability-e.probability})},r}(),Gm=function(r){nt(t,r);function t(e){return e===void 0&&(e=new Pf),r.call(this,"FaceExpressionNet",e)||this}return t.prototype.forwardInput=function(e){var n=this;return Le(function(){return Cr(n.runNet(e))})},t.prototype.forward=function(e){return He(this,void 0,void 0,function(){var n;return je(this,function(o){switch(o.label){case 0:return n=this.forwardInput,[4,Cn(e)];case 1:return[2,n.apply(this,[o.sent()])]}})})},t.prototype.predictExpressions=function(e){return He(this,void 0,void 0,function(){var n,o,i,a,s=this;return je(this,function(u){switch(u.label){case 0:return[4,Cn(e)];case 1:return n=u.sent(),[4,this.forwardInput(n)];case 2:return o=u.sent(),[4,Promise.all(yn(o).map(function(c){return He(s,void 0,void 0,function(){var l;return je(this,function(f){switch(f.label){case 0:return[4,c.data()];case 1:return l=f.sent(),c.dispose(),[2,l]}})})}))];case 3:return i=u.sent(),o.dispose(),a=i.map(function(c){return new _s(c)}),[2,n.isBatchInput?a:a[0]]}})})},t.prototype.getDefaultModelName=function(){return"face_expression_model"},t.prototype.getClassifierChannelsIn=function(){return 256},t.prototype.getClassifierChannelsOut=function(){return 7},t}(Of);function Xm(r){return r.expressions instanceof _s}function Lf(r,t){var e={expressions:t};return Object.assign({},r,e)}function N1(r,t,e,n){e===void 0&&(e=.1);var o=Array.isArray(t)?t:[t];o.forEach(function(i){var a=i instanceof _s?i:Xm(i)?i.expressions:void 0;if(!a)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");var s=a.asSortedArray(),u=s.filter(function(f){return f.probability>e}),c=ai(i)?i.detection.box.bottomLeft:n||new Ot(0,0),l=new If(u.map(function(f){return f.expression+" ("+Cs(f.probability)+")"}),c);l.draw(r)})}function Qs(r){return ai(r)&&r.landmarks instanceof Bo&&r.unshiftedLandmarks instanceof Bo&&r.alignedRect instanceof Gn}function na(r,t){var e=r.detection.box,n=t.shiftBy(e.x,e.y),o=n.align(),i=r.detection.imageDims,a=new Gn(r.detection.score,o.rescale(i.reverse()),i),s={landmarks:n,unshiftedLandmarks:t,alignedRect:a};return Object.assign({},r,s)}var Jm=function(){function r(t){t===void 0&&(t={});var e=t.drawLines,n=e===void 0?!0:e,o=t.drawPoints,i=o===void 0?!0:o,a=t.lineWidth,s=t.lineColor,u=t.pointSize,c=t.pointColor;this.drawLines=n,this.drawPoints=i,this.lineWidth=a||1,this.pointSize=u||2,this.lineColor=s||"rgba(0, 255, 255, 1)",this.pointColor=c||"rgba(255, 0, 255, 1)"}return r}(),Km=function(){function r(t,e){e===void 0&&(e={}),this.faceLandmarks=t,this.options=new Jm(e)}return r.prototype.draw=function(t){var e=vr(t),n=this.options,o=n.drawLines,i=n.drawPoints,a=n.lineWidth,s=n.lineColor,u=n.pointSize,c=n.pointColor;if(o&&this.faceLandmarks instanceof vf&&(e.strokeStyle=s,e.lineWidth=a,ao(e,this.faceLandmarks.getJawOutline()),ao(e,this.faceLandmarks.getLeftEyeBrow()),ao(e,this.faceLandmarks.getRightEyeBrow()),ao(e,this.faceLandmarks.getNose()),ao(e,this.faceLandmarks.getLeftEye(),!0),ao(e,this.faceLandmarks.getRightEye(),!0),ao(e,this.faceLandmarks.getMouth(),!0)),i){e.strokeStyle=c,e.fillStyle=c;var l=function(f){e.beginPath(),e.arc(f.x,f.y,u,0,2*Math.PI),e.fill()};this.faceLandmarks.positions.forEach(l)}},r}();function O1(r,t){var e=Array.isArray(t)?t:[t];e.forEach(function(n){var o=n instanceof Bo?n:Qs(n)?n.landmarks:void 0;if(!o)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks<WithFaceDetection<{}>> or array thereof");new Km(o).draw(r)})}function Zm(r,t){var e=ta(r,t),n=Ls(r,t);function o(a,s,u){var c=n(a,s,u+"/separable_conv0"),l=n(s,s,u+"/separable_conv1"),f=e(a,s,1,u+"/expansion_conv");return{separable_conv0:c,separable_conv1:l,expansion_conv:f}}function i(a,s){var u=n(a,a,s+"/separable_conv0"),c=n(a,a,s+"/separable_conv1"),l=n(a,a,s+"/separable_conv2");return{separable_conv0:u,separable_conv1:c,separable_conv2:l}}return{extractConvParams:e,extractSeparableConvParams:n,extractReductionBlockParams:o,extractMainBlockParams:i}}function qm(r,t){var e=[],n=Dr(r),o=n.extractWeights,i=n.getRemainingWeights,a=Zm(o,e),s=a.extractConvParams,u=a.extractSeparableConvParams,c=a.extractReductionBlockParams,l=a.extractMainBlockParams,f=s(3,32,3,"entry_flow/conv_in"),h=c(32,64,"entry_flow/reduction_block_0"),d=c(64,128,"entry_flow/reduction_block_1"),p={conv_in:f,reduction_block_0:h,reduction_block_1:d},v={};ri(t,0,1).forEach(function(E){v["main_block_"+E]=l(128,"middle_flow/main_block_"+E)});var g=c(128,256,"exit_flow/reduction_block"),m=u(256,512,"exit_flow/separable_conv"),w={reduction_block:g,separable_conv:m};if(i().length!==0)throw new Error("weights remaing after extract: "+i().length);return{paramMappings:e,params:{entry_flow:p,middle_flow:v,exit_flow:w}}}function Ym(r,t){var e=jr(r,t),n=Df(e),o=Ws(e);function i(s){var u=o(s+"/separable_conv0"),c=o(s+"/separable_conv1"),l=n(s+"/expansion_conv");return{separable_conv0:u,separable_conv1:c,expansion_conv:l}}function a(s){var u=o(s+"/separable_conv0"),c=o(s+"/separable_conv1"),l=o(s+"/separable_conv2");return{separable_conv0:u,separable_conv1:c,separable_conv2:l}}return{extractConvParams:n,extractSeparableConvParams:o,extractReductionBlockParams:i,extractMainBlockParams:a}}function $m(r,t){var e=[],n=Ym(r,e),o=n.extractConvParams,i=n.extractSeparableConvParams,a=n.extractReductionBlockParams,s=n.extractMainBlockParams,u=o("entry_flow/conv_in"),c=a("entry_flow/reduction_block_0"),l=a("entry_flow/reduction_block_1"),f={conv_in:u,reduction_block_0:c,reduction_block_1:l},h={};ri(t,0,1).forEach(function(g){h["main_block_"+g]=s("middle_flow/main_block_"+g)});var d=a("exit_flow/reduction_block"),p=i("exit_flow/separable_conv"),v={reduction_block:d,separable_conv:p};return Tr(r,e),{params:{entry_flow:f,middle_flow:h,exit_flow:v},paramMappings:e}}function Wf(r,t,e){return mt(Yn(r,t.filters,e,"same"),t.bias)}function zs(r,t,e){e===void 0&&(e=!0);var n=e?nn(r):r;return n=Xn(n,t.separable_conv0,[1,1]),n=Xn(nn(n),t.separable_conv1,[1,1]),n=En(n,[3,3],[2,2],"same"),n=mt(n,Wf(r,t.expansion_conv,[2,2])),n}function e0(r,t){var e=Xn(nn(r),t.separable_conv0,[1,1]);return e=Xn(nn(e),t.separable_conv1,[1,1]),e=Xn(nn(e),t.separable_conv2,[1,1]),e=mt(e,r),e}var t0=function(r){nt(t,r);function t(e){var n=r.call(this,"TinyXception")||this;return n._numMainBlocks=e,n}return t.prototype.forwardInput=function(e){var n=this,o=this.params;if(!o)throw new Error("TinyXception - load model before inference");return Le(function(){var i=e.toBatchTensor(112,!0),a=[122.782,117.001,104.298],s=ii(i,a).div(Fe(256)),u=nn(Wf(s,o.entry_flow.conv_in,[2,2]));return u=zs(u,o.entry_flow.reduction_block_0,!1),u=zs(u,o.entry_flow.reduction_block_1),ri(n._numMainBlocks,0,1).forEach(function(c){u=e0(u,o.middle_flow["main_block_"+c])}),u=zs(u,o.exit_flow.reduction_block),u=nn(Xn(u,o.exit_flow.separable_conv,[1,1])),u})},t.prototype.forward=function(e){return He(this,void 0,void 0,function(){var n;return je(this,function(o){switch(o.label){case 0:return n=this.forwardInput,[4,Cn(e)];case 1:return[2,n.apply(this,[o.sent()])]}})})},t.prototype.getDefaultModelName=function(){return"tiny_xception_model"},t.prototype.extractParamsFromWeigthMap=function(e){return $m(e,this._numMainBlocks)},t.prototype.extractParams=function(e){return qm(e,this._numMainBlocks)},t}(kr);function n0(r){var t=[],e=Dr(r),n=e.extractWeights,o=e.getRemainingWeights,i=Ms(n,t),a=i(512,1,"fc/age"),s=i(512,2,"fc/gender");if(o().length!==0)throw new Error("weights remaing after extract: "+o().length);return{paramMappings:t,params:{fc:{age:a,gender:s}}}}function r0(r){var t=[],e=jr(r,t);function n(i){var a=e(i+"/weights",2),s=e(i+"/bias",1);return{weights:a,bias:s}}var o={fc:{age:n("fc/age"),gender:n("fc/gender")}};return Tr(r,t),{params:o,paramMappings:t}}var ra;(function(r){r.FEMALE="female",r.MALE="male"})(ra||(ra={}));var o0=function(r){nt(t,r);function t(e){e===void 0&&(e=new t0(2));var n=r.call(this,"AgeGenderNet")||this;return n._faceFeatureExtractor=e,n}return Object.defineProperty(t.prototype,"faceFeatureExtractor",{get:function(){return this._faceFeatureExtractor},enumerable:!0,configurable:!0}),t.prototype.runNet=function(e){var n=this,o=this.params;if(!o)throw new Error(this._name+" - load model before inference");return Le(function(){var i=e instanceof $i?n.faceFeatureExtractor.forwardInput(e):e,a=$o(i,[7,7],[2,2],"valid").as2D(i.shape[0],-1),s=gr(a,o.fc.age).as1D(),u=gr(a,o.fc.gender);return{age:s,gender:u}})},t.prototype.forwardInput=function(e){var n=this;return Le(function(){var o=n.runNet(e),i=o.age,a=o.gender;return{age:i,gender:Cr(a)}})},t.prototype.forward=function(e){return He(this,void 0,void 0,function(){var n;return je(this,function(o){switch(o.label){case 0:return n=this.forwardInput,[4,Cn(e)];case 1:return[2,n.apply(this,[o.sent()])]}})})},t.prototype.predictAgeAndGender=function(e){return He(this,void 0,void 0,function(){var n,o,i,a,s,u,c=this;return je(this,function(l){switch(l.label){case 0:return[4,Cn(e)];case 1:return n=l.sent(),[4,this.forwardInput(n)];case 2:return o=l.sent(),i=yn(o.age),a=yn(o.gender),s=i.map(function(f,h){return{ageTensor:f,genderTensor:a[h]}}),[4,Promise.all(s.map(function(f){var h=f.ageTensor,d=f.genderTensor;return He(c,void 0,void 0,function(){var p,v,g,m,w;return je(this,function(E){switch(E.label){case 0:return[4,h.data()];case 1:return p=E.sent()[0],[4,d.data()];case 2:return v=E.sent()[0],g=v>.5,m=g?ra.MALE:ra.FEMALE,w=g?v:1-v,h.dispose(),d.dispose(),[2,{age:p,gender:m,genderProbability:w}]}})})}))];case 3:return u=l.sent(),o.age.dispose(),o.gender.dispose(),[2,n.isBatchInput?u:u[0]]}})})},t.prototype.getDefaultModelName=function(){return"age_gender_model"},t.prototype.dispose=function(e){e===void 0&&(e=!0),this.faceFeatureExtractor.dispose(e),r.prototype.dispose.call(this,e)},t.prototype.loadClassifierParams=function(e){var n=this.extractClassifierParams(e),o=n.params,i=n.paramMappings;this._params=o,this._paramMappings=i},t.prototype.extractClassifierParams=function(e){return n0(e)},t.prototype.extractParamsFromWeigthMap=function(e){var n=Nf(e),o=n.featureExtractorMap,i=n.classifierMap;return this.faceFeatureExtractor.loadFromWeightMap(o),r0(i)},t.prototype.extractParams=function(e){var n=1539,o=e.slice(0,e.length-n),i=e.slice(e.length-n);return this.faceFeatureExtractor.extractWeights(o),this.extractClassifierParams(i)},t}(kr),_f=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.postProcess=function(e,n,o){var i=o.map(function(s){var u=s.width,c=s.height,l=n/Math.max(c,u);return{width:u*l,height:c*l}}),a=i.length;return Le(function(){var s=function(h,d){return jn([hr([68],h),hr([68],d)],1).as2D(1,136).as1D()},u=function(h,d){var p=i[h],v=p.width,g=p.height;return d(v,g)?Math.abs(v-g)/2:0},c=function(h){return u(h,function(d,p){return d<p})},l=function(h){return u(h,function(d,p){return p<d})},f=e.mul(hr([a,136],n)).sub(jn(Array.from(Array(a),function(h,d){return s(c(d),l(d))}))).div(jn(Array.from(Array(a),function(h,d){return s(i[d].width,i[d].height)})));return f})},t.prototype.forwardInput=function(e){var n=this;return Le(function(){var o=n.runNet(e);return n.postProcess(o,e.inputSize,e.inputDimensions.map(function(i){var a=i[0],s=i[1];return{height:a,width:s}}))})},t.prototype.forward=function(e){return He(this,void 0,void 0,function(){var n;return je(this,function(o){switch(o.label){case 0:return n=this.forwardInput,[4,Cn(e)];case 1:return[2,n.apply(this,[o.sent()])]}})})},t.prototype.detectLandmarks=function(e){return He(this,void 0,void 0,function(){var n,o,i,a=this;return je(this,function(s){switch(s.label){case 0:return[4,Cn(e)];case 1:return n=s.sent(),o=Le(function(){return yn(a.forwardInput(n))}),[4,Promise.all(o.map(function(u,c){return He(a,void 0,void 0,function(){var l,f,h,d,p;return je(this,function(v){switch(v.label){case 0:return h=(f=Array).from,[4,u.data()];case 1:return l=h.apply(f,[v.sent()]),d=l.filter(function(g,m){return ff(m)}),p=l.filter(function(g,m){return!ff(m)}),[2,new vf(Array(68).fill(0).map(function(g,m){return new Ot(d[m],p[m])}),{height:n.getInputHeight(c),width:n.getInputWidth(c)})]}})})}))];case 2:return i=s.sent(),o.forEach(function(u){return u.dispose()}),[2,n.isBatchInput?i:i[0]]}})})},t.prototype.getClassifierChannelsOut=function(){return 136},t}(Of),Qf=function(r){nt(t,r);function t(e){return e===void 0&&(e=new Pf),r.call(this,"FaceLandmark68Net",e)||this}return t.prototype.getDefaultModelName=function(){return"face_landmark_68_model"},t.prototype.getClassifierChannelsIn=function(){return 256},t}(_f);function i0(r){var t=[],e=Ff(r,t).extractDenseBlock3Params,n={dense0:e("dense0",!0),dense1:e("dense1"),dense2:e("dense2")};return Tr(r,t),{params:n,paramMappings:t}}function a0(r){var t=[],e=Dr(r),n=e.extractWeights,o=e.getRemainingWeights,i=Tf(n,t).extractDenseBlock3Params,a=i(3,32,"dense0",!0),s=i(32,64,"dense1"),u=i(64,128,"dense2");if(o().length!==0)throw new Error("weights remaing after extract: "+o().length);return{paramMappings:t,params:{dense0:a,dense1:s,dense2:u}}}var s0=function(r){nt(t,r);function t(){return r.call(this,"TinyFaceFeatureExtractor")||this}return t.prototype.forwardInput=function(e){var n=this.params;if(!n)throw new Error("TinyFaceFeatureExtractor - load model before inference");return Le(function(){var o=e.toBatchTensor(112,!0),i=[122.782,117.001,104.298],a=ii(o,i).div(Fe(255)),s=Os(a,n.dense0,!0);return s=Os(s,n.dense1),s=Os(s,n.dense2),s=$o(s,[14,14],[2,2],"valid"),s})},t.prototype.forward=function(e){return He(this,void 0,void 0,function(){var n;return je(this,function(o){switch(o.label){case 0:return n=this.forwardInput,[4,Cn(e)];case 1:return[2,n.apply(this,[o.sent()])]}})})},t.prototype.getDefaultModelName=function(){return"face_feature_extractor_tiny_model"},t.prototype.extractParamsFromWeigthMap=function(e){return i0(e)},t.prototype.extractParams=function(e){return a0(e)},t}(kr),u0=function(r){nt(t,r);function t(e){return e===void 0&&(e=new s0),r.call(this,"FaceLandmark68TinyNet",e)||this}return t.prototype.getDefaultModelName=function(){return"face_landmark_68_tiny_model"},t.prototype.getClassifierChannelsIn=function(){return 128},t}(_f),M1=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t}(Qf);function c0(r,t){return mt(Fn(r,t.weights),t.biases)}function Us(r,t,e,n,o){o===void 0&&(o="same");var i=t.conv,a=i.filters,s=i.bias,u=Yn(r,a,e,o);return u=mt(u,s),u=c0(u,t.scale),n?nn(u):u}function l0(r,t){return Us(r,t,[1,1],!0)}function zf(r,t){return Us(r,t,[1,1],!1)}function Uf(r,t){return Us(r,t,[2,2],!0,"valid")}function f0(r,t){function e(s,u,c){var l=r(s),f=l.length/(u*c*c);if(wm(f))throw new Error("depth has to be an integer: "+f+", weights.length: "+l.length+", numFilters: "+u+", filterSize: "+c);return Le(function(){return Wr(Qn(l,[u,f,c,c]),[2,3,1,0])})}function n(s,u,c,l){var f=e(s,u,c),h=vn(r(u));return t.push({paramPath:l+"/filters"},{paramPath:l+"/bias"}),{filters:f,bias:h}}function o(s,u){var c=vn(r(s)),l=vn(r(s));return t.push({paramPath:u+"/weights"},{paramPath:u+"/biases"}),{weights:c,biases:l}}function i(s,u,c,l){var f=n(s,u,c,l+"/conv"),h=o(u,l+"/scale");return{conv:f,scale:h}}function a(s,u,c,l,f){f===void 0&&(f=!1);var h=i((f?.5:1)*s,u,c,l+"/conv1"),d=i(s,u,c,l+"/conv2");return{conv1:h,conv2:d}}return{extractConvLayerParams:i,extractResidualLayerParams:a}}function h0(r){var t=Dr(r),e=t.extractWeights,n=t.getRemainingWeights,o=[],i=f0(e,o),a=i.extractConvLayerParams,s=i.extractResidualLayerParams,u=a(4704,32,7,"conv32_down"),c=s(9216,32,3,"conv32_1"),l=s(9216,32,3,"conv32_2"),f=s(9216,32,3,"conv32_3"),h=s(36864,64,3,"conv64_down",!0),d=s(36864,64,3,"conv64_1"),p=s(36864,64,3,"conv64_2"),v=s(36864,64,3,"conv64_3"),g=s(147456,128,3,"conv128_down",!0),m=s(147456,128,3,"conv128_1"),w=s(147456,128,3,"conv128_2"),E=s(589824,256,3,"conv256_down",!0),b=s(589824,256,3,"conv256_1"),C=s(589824,256,3,"conv256_2"),S=s(589824,256,3,"conv256_down_out"),N=Le(function(){return Wr(Mr(e(256*128),[128,256]),[1,0])});if(o.push({paramPath:"fc"}),n().length!==0)throw new Error("weights remaing after extract: "+n().length);var O={conv32_down:u,conv32_1:c,conv32_2:l,conv32_3:f,conv64_down:h,conv64_1:d,conv64_2:p,conv64_3:v,conv128_down:g,conv128_1:m,conv128_2:w,conv256_down:E,conv256_1:b,conv256_2:C,conv256_down_out:S,fc:N};return{params:O,paramMappings:o}}function d0(r,t){var e=jr(r,t);function n(a){var s=e(a+"/scale/weights",1),u=e(a+"/scale/biases",1);return{weights:s,biases:u}}function o(a){var s=e(a+"/conv/filters",4),u=e(a+"/conv/bias",1),c=n(a);return{conv:{filters:s,bias:u},scale:c}}function i(a){return{conv1:o(a+"/conv1"),conv2:o(a+"/conv2")}}return{extractConvLayerParams:o,extractResidualLayerParams:i}}function p0(r){var t=[],e=d0(r,t),n=e.extractConvLayerParams,o=e.extractResidualLayerParams,i=n("conv32_down"),a=o("conv32_1"),s=o("conv32_2"),u=o("conv32_3"),c=o("conv64_down"),l=o("conv64_1"),f=o("conv64_2"),h=o("conv64_3"),d=o("conv128_down"),p=o("conv128_1"),v=o("conv128_2"),g=o("conv256_down"),m=o("conv256_1"),w=o("conv256_2"),E=o("conv256_down_out"),b=r.fc;if(t.push({originalPath:"fc",paramPath:"fc"}),!bm(b))throw new Error("expected weightMap[fc] to be a Tensor2D, instead have "+b);var C={conv32_down:i,conv32_1:a,conv32_2:s,conv32_3:u,conv64_down:c,conv64_1:l,conv64_2:f,conv64_3:h,conv128_down:d,conv128_1:p,conv128_2:v,conv256_down:g,conv256_1:m,conv256_2:w,conv256_down_out:E,fc:b};return Tr(r,t),{params:C,paramMappings:t}}function mr(r,t){var e=l0(r,t.conv1);return e=zf(e,t.conv2),e=mt(e,r),e=nn(e),e}function oa(r,t){var e=Uf(r,t.conv1);e=zf(e,t.conv2);var n=$o(r,2,2,"valid"),o=en(n.shape),i=n.shape[3]!==e.shape[3],a=n.shape[1]!==e.shape[1]||n.shape[2]!==e.shape[2];if(a){var s=ti(e.shape);s[1]=1;var u=en(s);e=An([e,u],1);var c=ti(e.shape);c[2]=1;var l=en(c);e=An([e,l],2)}return n=i?An([n,o],3):n,e=mt(n,e),e=nn(e),e}var v0=function(r){nt(t,r);function t(){return r.call(this,"FaceRecognitionNet")||this}return t.prototype.forwardInput=function(e){var n=this.params;if(!n)throw new Error("FaceRecognitionNet - load model before inference");return Le(function(){var o=e.toBatchTensor(150,!0).toFloat(),i=[122.782,117.001,104.298],a=ii(o,i).div(Fe(256)),s=Uf(a,n.conv32_down);s=En(s,3,2,"valid"),s=mr(s,n.conv32_1),s=mr(s,n.conv32_2),s=mr(s,n.conv32_3),s=oa(s,n.conv64_down),s=mr(s,n.conv64_1),s=mr(s,n.conv64_2),s=mr(s,n.conv64_3),s=oa(s,n.conv128_down),s=mr(s,n.conv128_1),s=mr(s,n.conv128_2),s=oa(s,n.conv256_down),s=mr(s,n.conv256_1),s=mr(s,n.conv256_2),s=oa(s,n.conv256_down_out);var u=s.mean([1,2]),c=Ui(u,n.fc);return c})},t.prototype.forward=function(e){return He(this,void 0,void 0,function(){var n;return je(this,function(o){switch(o.label){case 0:return n=this.forwardInput,[4,Cn(e)];case 1:return[2,n.apply(this,[o.sent()])]}})})},t.prototype.computeFaceDescriptor=function(e){return He(this,void 0,void 0,function(){var n,o,i,a=this;return je(this,function(s){switch(s.label){case 0:return[4,Cn(e)];case 1:return n=s.sent(),o=Le(function(){return yn(a.forwardInput(n))}),[4,Promise.all(o.map(function(u){return u.data()}))];case 2:return i=s.sent(),o.forEach(function(u){return u.dispose()}),[2,n.isBatchInput?i:i[0]]}})})},t.prototype.getDefaultModelName=function(){return"face_recognition_model"},t.prototype.extractParamsFromWeigthMap=function(e){return p0(e)},t.prototype.extractParams=function(e){return h0(e)},t}(kr);function L1(r){var t=new FaceRecognitionNet;return t.extractWeights(r),t}function W1(r){return(r.gender===Gender.MALE||r.gender===Gender.FEMALE)&&isValidProbablitiy(r.genderProbability)}function Hf(r,t,e){var n={gender:t,genderProbability:e};return Object.assign({},r,n)}var jf=function(){function r(t){var e=t===void 0?{}:t,n=e.minFaceSize,o=e.scaleFactor,i=e.maxNumScales,a=e.scoreThresholds,s=e.scaleSteps;if(this._name="MtcnnOptions",this._minFaceSize=n||20,this._scaleFactor=o||.709,this._maxNumScales=i||10,this._scoreThresholds=a||[.6,.7,.7],this._scaleSteps=s,typeof this._minFaceSize!="number"||this._minFaceSize<0)throw new Error(this._name+" - expected minFaceSize to be a number > 0");if(typeof this._scaleFactor!="number"||this._scaleFactor<=0||this._scaleFactor>=1)throw new Error(this._name+" - expected scaleFactor to be a number between 0 and 1");if(typeof this._maxNumScales!="number"||this._maxNumScales<0)throw new Error(this._name+" - expected maxNumScales to be a number > 0");if(!Array.isArray(this._scoreThresholds)||this._scoreThresholds.length!==3||this._scoreThresholds.some(function(u){return typeof u!="number"}))throw new Error(this._name+" - expected scoreThresholds to be an array of numbers of length 3");if(this._scaleSteps&&(!Array.isArray(this._scaleSteps)||this._scaleSteps.some(function(u){return typeof u!="number"})))throw new Error(this._name+" - expected scaleSteps to be an array of numbers")}return Object.defineProperty(r.prototype,"minFaceSize",{get:function(){return this._minFaceSize},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"scaleFactor",{get:function(){return this._scaleFactor},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"maxNumScales",{get:function(){return this._maxNumScales},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"scoreThresholds",{get:function(){return this._scoreThresholds},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"scaleSteps",{get:function(){return this._scaleSteps},enumerable:!0,configurable:!0}),r}();function g0(r,t){function e(u,c){var l=Qn(r(9*u),[3,3,u,1]),f=vn(r(u)),h=vn(r(u)),d=vn(r(u)),p=vn(r(u));return t.push({paramPath:c+"/filters"},{paramPath:c+"/batch_norm_scale"},{paramPath:c+"/batch_norm_offset"},{paramPath:c+"/batch_norm_mean"},{paramPath:c+"/batch_norm_variance"}),{filters:l,batch_norm_scale:f,batch_norm_offset:h,batch_norm_mean:d,batch_norm_variance:p}}function n(u,c,l,f,h){var d=Qn(r(u*c*l*l),[l,l,u,c]),p=vn(r(c));return t.push({paramPath:f+"/filters"},{paramPath:f+"/"+(h?"batch_norm_offset":"bias")}),{filters:d,bias:p}}function o(u,c,l,f){var h=n(u,c,l,f,!0),d=h.filters,p=h.bias;return{filters:d,batch_norm_offset:p}}function i(u,c,l){var f=e(u,l+"/depthwise_conv"),h=o(u,c,1,l+"/pointwise_conv");return{depthwise_conv:f,pointwise_conv:h}}function a(){var u=o(3,32,3,"mobilenetv1/conv_0"),c=i(32,64,"mobilenetv1/conv_1"),l=i(64,128,"mobilenetv1/conv_2"),f=i(128,128,"mobilenetv1/conv_3"),h=i(128,256,"mobilenetv1/conv_4"),d=i(256,256,"mobilenetv1/conv_5"),p=i(256,512,"mobilenetv1/conv_6"),v=i(512,512,"mobilenetv1/conv_7"),g=i(512,512,"mobilenetv1/conv_8"),m=i(512,512,"mobilenetv1/conv_9"),w=i(512,512,"mobilenetv1/conv_10"),E=i(512,512,"mobilenetv1/conv_11"),b=i(512,1024,"mobilenetv1/conv_12"),C=i(1024,1024,"mobilenetv1/conv_13");return{conv_0:u,conv_1:c,conv_2:l,conv_3:f,conv_4:h,conv_5:d,conv_6:p,conv_7:v,conv_8:g,conv_9:m,conv_10:w,conv_11:E,conv_12:b,conv_13:C}}function s(){var u=o(1024,256,1,"prediction_layer/conv_0"),c=o(256,512,3,"prediction_layer/conv_1"),l=o(512,128,1,"prediction_layer/conv_2"),f=o(128,256,3,"prediction_layer/conv_3"),h=o(256,128,1,"prediction_layer/conv_4"),d=o(128,256,3,"prediction_layer/conv_5"),p=o(256,64,1,"prediction_layer/conv_6"),v=o(64,128,3,"prediction_layer/conv_7"),g=n(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),m=n(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),w=n(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),E=n(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),b=n(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),C=n(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),S=n(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),N=n(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),O=n(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),F=n(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),P=n(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),U=n(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),Q={box_encoding_predictor:g,class_predictor:m},V={box_encoding_predictor:w,class_predictor:E},X={box_encoding_predictor:b,class_predictor:C},te={box_encoding_predictor:S,class_predictor:N},ue={box_encoding_predictor:O,class_predictor:F},se={box_encoding_predictor:P,class_predictor:U};return{conv_0:u,conv_1:c,conv_2:l,conv_3:f,conv_4:h,conv_5:d,conv_6:p,conv_7:v,box_predictor_0:Q,box_predictor_1:V,box_predictor_2:X,box_predictor_3:te,box_predictor_4:ue,box_predictor_5:se}}return{extractMobilenetV1Params:a,extractPredictionLayerParams:s}}function m0(r){var t=[],e=Dr(r),n=e.extractWeights,o=e.getRemainingWeights,i=g0(n,t),a=i.extractMobilenetV1Params,s=i.extractPredictionLayerParams,u=a(),c=s(),l=ma(n(5118*4),[1,5118,4]),f={extra_dim:l};if(t.push({paramPath:"output_layer/extra_dim"}),o().length!==0)throw new Error("weights remaing after extract: "+o().length);return{params:{mobilenetv1:u,prediction_layer:c,output_layer:f},paramMappings:t}}function A0(r,t){var e=jr(r,t);function n(c,l,f){var h=e(c+"/Conv2d_"+l+"_pointwise/weights",4,f+"/filters"),d=e(c+"/Conv2d_"+l+"_pointwise/convolution_bn_offset",1,f+"/batch_norm_offset");return{filters:h,batch_norm_offset:d}}function o(c){var l="mobilenetv1/conv_"+c,f="MobilenetV1/Conv2d_"+c+"_depthwise",h=l+"/depthwise_conv",d=l+"/pointwise_conv",p=e(f+"/depthwise_weights",4,h+"/filters"),v=e(f+"/BatchNorm/gamma",1,h+"/batch_norm_scale"),g=e(f+"/BatchNorm/beta",1,h+"/batch_norm_offset"),m=e(f+"/BatchNorm/moving_mean",1,h+"/batch_norm_mean"),w=e(f+"/BatchNorm/moving_variance",1,h+"/batch_norm_variance");return{depthwise_conv:{filters:p,batch_norm_scale:v,batch_norm_offset:g,batch_norm_mean:m,batch_norm_variance:w},pointwise_conv:n("MobilenetV1",c,d)}}function i(){return{conv_0:n("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:o(1),conv_2:o(2),conv_3:o(3),conv_4:o(4),conv_5:o(5),conv_6:o(6),conv_7:o(7),conv_8:o(8),conv_9:o(9),conv_10:o(10),conv_11:o(11),conv_12:o(12),conv_13:o(13)}}function a(c,l){var f=e(c+"/weights",4,l+"/filters"),h=e(c+"/biases",1,l+"/bias");return{filters:f,bias:h}}function s(c){var l=a("Prediction/BoxPredictor_"+c+"/BoxEncodingPredictor","prediction_layer/box_predictor_"+c+"/box_encoding_predictor"),f=a("Prediction/BoxPredictor_"+c+"/ClassPredictor","prediction_layer/box_predictor_"+c+"/class_predictor");return{box_encoding_predictor:l,class_predictor:f}}function u(){return{conv_0:n("Prediction",0,"prediction_layer/conv_0"),conv_1:n("Prediction",1,"prediction_layer/conv_1"),conv_2:n("Prediction",2,"prediction_layer/conv_2"),conv_3:n("Prediction",3,"prediction_layer/conv_3"),conv_4:n("Prediction",4,"prediction_layer/conv_4"),conv_5:n("Prediction",5,"prediction_layer/conv_5"),conv_6:n("Prediction",6,"prediction_layer/conv_6"),conv_7:n("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:s(0),box_predictor_1:s(1),box_predictor_2:s(2),box_predictor_3:s(3),box_predictor_4:s(4),box_predictor_5:s(5)}}return{extractMobilenetV1Params:i,extractPredictionLayerParams:u}}function y0(r){var t=[],e=A0(r,t),n=e.extractMobilenetV1Params,o=e.extractPredictionLayerParams,i=r["Output/extra_dim"];if(t.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!Ki(i))throw new Error("expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have "+i);var a={mobilenetv1:n(),prediction_layer:o(),output_layer:{extra_dim:i}};return Tr(r,t),{params:a,paramMappings:t}}function Ar(r,t,e){return Le(function(){var n=Yn(r,t.filters,e,"same");return n=mt(n,t.batch_norm_offset),Ha(n,0,6)})}var x0=.0010000000474974513;function b0(r,t,e){return Le(function(){var n=zi(r,t.filters,e,"same");return n=al(n,t.batch_norm_mean,t.batch_norm_variance,t.batch_norm_offset,t.batch_norm_scale,x0),Ha(n,0,6)})}function w0(r){return[2,4,6,12].some(function(t){return t===r})?[2,2]:[1,1]}function E0(r,t){return Le(function(){var e=null,n=Ar(r,t.conv_0,[2,2]),o=[t.conv_1,t.conv_2,t.conv_3,t.conv_4,t.conv_5,t.conv_6,t.conv_7,t.conv_8,t.conv_9,t.conv_10,t.conv_11,t.conv_12,t.conv_13];if(o.forEach(function(i,a){var s=a+1,u=w0(s);n=b0(n,i.depthwise_conv,u),n=Ar(n,i.pointwise_conv,[1,1]),s===11&&(e=n)}),e===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out:n,conv11:e}})}function C0(r,t,e,n,o){var i=r.shape[0],a=Math.min(e,i),s=t.map(function(l,f){return{score:l,boxIndex:f}}).filter(function(l){return l.score>o}).sort(function(l,f){return f.score-l.score}),u=function(l){return l<=n?1:0},c=[];return s.forEach(function(l){if(!(c.length>=a)){for(var f=l.score,h=c.length-1;h>=0;--h){var d=I0(r,l.boxIndex,c[h]);if(d!==0&&(l.score*=u(d),l.score<=o))break}f===l.score&&c.push(l.boxIndex)}}),c}function I0(r,t,e){var n=r.arraySync(),o=Math.min(n[t][0],n[t][2]),i=Math.min(n[t][1],n[t][3]),a=Math.max(n[t][0],n[t][2]),s=Math.max(n[t][1],n[t][3]),u=Math.min(n[e][0],n[e][2]),c=Math.min(n[e][1],n[e][3]),l=Math.max(n[e][0],n[e][2]),f=Math.max(n[e][1],n[e][3]),h=(a-o)*(s-i),d=(l-u)*(f-c);if(h<=0||d<=0)return 0;var p=Math.max(o,u),v=Math.max(i,c),g=Math.min(a,l),m=Math.min(s,f),w=Math.max(g-p,0)*Math.max(m-v,0);return w/(h+d-w)}function S0(r){var t=yn(Wr(r,[1,0])),e=[xn(t[2],t[0]),xn(t[3],t[1])],n=[mt(t[0],ir(e[0],Fe(2))),mt(t[1],ir(e[1],Fe(2)))];return{sizes:e,centers:n}}function R0(r,t){var e=S0(r),n=e.sizes,o=e.centers,i=yn(Wr(t,[1,0])),a=ir(Fn(ja(ir(i[2],Fe(5))),n[0]),Fe(2)),s=mt(Fn(ir(i[0],Fe(10)),n[0]),o[0]),u=ir(Fn(ja(ir(i[3],Fe(5))),n[1]),Fe(2)),c=mt(Fn(ir(i[1],Fe(10)),n[1]),o[1]);return Wr(jn([xn(s,a),xn(c,u),mt(s,a),mt(c,u)]),[1,0])}function B0(r,t,e){return Le(function(){var n=r.shape[0],o=R0(rr(vo(e.extra_dim,[n,1,1]),[-1,4]),rr(r,[-1,4]));o=rr(o,[n,o.shape[0]/n,4]);var i=nl(dr(t,[0,0,1],[-1,-1,-1])),a=dr(i,[0,0,0],[-1,-1,1]);a=rr(a,[n,a.shape[1]]);var s=yn(o),u=yn(a);return{boxes:s,scores:u}})}function ko(r,t){return Le(function(){var e=r.shape[0],n=rr(ar(r,t.box_encoding_predictor),[e,-1,1,4]),o=rr(ar(r,t.class_predictor),[e,-1,3]);return{boxPredictionEncoding:n,classPrediction:o}})}function k0(r,t,e){return Le(function(){var n=Ar(r,e.conv_0,[1,1]),o=Ar(n,e.conv_1,[2,2]),i=Ar(o,e.conv_2,[1,1]),a=Ar(i,e.conv_3,[2,2]),s=Ar(a,e.conv_4,[1,1]),u=Ar(s,e.conv_5,[2,2]),c=Ar(u,e.conv_6,[1,1]),l=Ar(c,e.conv_7,[2,2]),f=ko(t,e.box_predictor_0),h=ko(r,e.box_predictor_1),d=ko(o,e.box_predictor_2),p=ko(a,e.box_predictor_3),v=ko(u,e.box_predictor_4),g=ko(l,e.box_predictor_5),m=An([f.boxPredictionEncoding,h.boxPredictionEncoding,d.boxPredictionEncoding,p.boxPredictionEncoding,v.boxPredictionEncoding,g.boxPredictionEncoding],1),w=An([f.classPrediction,h.classPrediction,d.classPrediction,p.classPrediction,v.classPrediction,g.classPrediction],1);return{boxPredictions:m,classPredictions:w}})}var ia=function(){function r(t){var e=t===void 0?{}:t,n=e.minConfidence,o=e.maxResults;if(this._name="SsdMobilenetv1Options",this._minConfidence=n||.5,this._maxResults=o||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(this._name+" - expected minConfidence to be a number between 0 and 1");if(typeof this._maxResults!="number")throw new Error(this._name+" - expected maxResults to be a number")}return Object.defineProperty(r.prototype,"minConfidence",{get:function(){return this._minConfidence},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"maxResults",{get:function(){return this._maxResults},enumerable:!0,configurable:!0}),r}(),Vf=function(r){nt(t,r);function t(){return r.call(this,"SsdMobilenetv1")||this}return t.prototype.forwardInput=function(e){var n=this.params;if(!n)throw new Error("SsdMobilenetv1 - load model before inference");return Le(function(){var o=e.toBatchTensor(512,!1).toFloat(),i=xn(Fn(o,Fe(.007843137718737125)),Fe(1)),a=E0(i,n.mobilenetv1),s=k0(a.out,a.conv11,n.prediction_layer),u=s.boxPredictions,c=s.classPredictions;return B0(u,c,n.output_layer)})},t.prototype.forward=function(e){return He(this,void 0,void 0,function(){var n;return je(this,function(o){switch(o.label){case 0:return n=this.forwardInput,[4,Cn(e)];case 1:return[2,n.apply(this,[o.sent()])]}})})},t.prototype.locateFaces=function(e,n){return n===void 0&&(n={}),He(this,void 0,void 0,function(){var o,i,a,s,u,c,l,f,h,d,p,v,g,m,w,E,b,C,S,N,O;return je(this,function(F){switch(F.label){case 0:return o=new ia(n),i=o.maxResults,a=o.minConfidence,[4,Cn(e)];case 1:for(s=F.sent(),u=this.forwardInput(s),c=u.boxes,l=u.scores,f=c[0],h=l[0],d=1;d<c.length;d++)c[d].dispose(),l[d].dispose();return g=(v=Array).from,[4,h.data()];case 2:return p=g.apply(v,[F.sent()]),m=.5,w=C0(f,p,i,m,a),E=s.getReshapedInputDimensions(0),b=s.inputSize,C=b/E.width,S=b/E.height,N=f.arraySync(),O=w.map(function(P){var U=[Math.max(0,N[P][0]),Math.min(1,N[P][2])].map(function(se){return se*S}),Q=U[0],V=U[1],X=[Math.max(0,N[P][1]),Math.min(1,N[P][3])].map(function(se){return se*C}),te=X[0],ue=X[1];return new Gn(p[P],new Rs(te,Q,ue-te,V-Q),{height:s.getInputHeight(0),width:s.getInputWidth(0)})}),f.dispose(),h.dispose(),[2,O]}})})},t.prototype.getDefaultModelName=function(){return"ssd_mobilenetv1_model"},t.prototype.extractParamsFromWeigthMap=function(e){return y0(e)},t.prototype.extractParams=function(e){return m0(e)},t}(kr);function T0(r){var t=new SsdMobilenetv1;return t.extractWeights(r),t}function _1(r){return T0(r)}var Q1=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t}(Vf),D0=.4,F0=[new Ot(.738768,.874946),new Ot(2.42204,2.65704),new Ot(4.30971,7.04493),new Ot(10.246,4.59428),new Ot(12.6868,11.8741)],P0=[new Ot(1.603231,2.094468),new Ot(6.041143,7.080126),new Ot(2.882459,3.518061),new Ot(4.266906,5.178857),new Ot(9.041765,10.66308)],N0=[117.001,114.697,97.404],O0="tiny_yolov2_model",M0="tiny_yolov2_separable_conv_model",aa=function(r){return typeof r=="number"};function L0(r){if(!r)throw new Error("invalid config: "+r);if(typeof r.withSeparableConvs!="boolean")throw new Error("config.withSeparableConvs has to be a boolean, have: "+r.withSeparableConvs);if(!aa(r.iouThreshold)||r.iouThreshold<0||r.iouThreshold>1)throw new Error("config.iouThreshold has to be a number between [0, 1], have: "+r.iouThreshold);if(!Array.isArray(r.classes)||!r.classes.length||!r.classes.every(function(t){return typeof t=="string"}))throw new Error("config.classes has to be an array class names: string[], have: "+JSON.stringify(r.classes));if(!Array.isArray(r.anchors)||!r.anchors.length||!r.anchors.map(function(t){return t||{}}).every(function(t){return aa(t.x)&&aa(t.y)}))throw new Error("config.anchors has to be an array of { x: number, y: number }, have: "+JSON.stringify(r.anchors));if(r.meanRgb&&(!Array.isArray(r.meanRgb)||r.meanRgb.length!==3||!r.meanRgb.every(aa)))throw new Error("config.meanRgb has to be an array of shape [number, number, number], have: "+JSON.stringify(r.meanRgb))}function Hs(r){return Le(function(){var t=Fn(r,Fe(.10000000149011612));return mt(nn(xn(r,t)),t)})}function Vr(r,t){return Le(function(){var e=Yr(r,[[0,0],[1,1],[1,1],[0,0]]);return e=Yn(e,t.conv.filters,[1,1],"valid"),e=xn(e,t.bn.sub),e=Fn(e,t.bn.truediv),e=mt(e,t.conv.bias),Hs(e)})}function Gr(r,t){return Le(function(){var e=Yr(r,[[0,0],[1,1],[1,1],[0,0]]);return e=Ka(e,t.depthwise_filter,t.pointwise_filter,[1,1],"valid"),e=mt(e,t.bias),Hs(e)})}function W0(r,t){var e=ta(r,t);function n(a,s){var u=vn(r(a)),c=vn(r(a));return t.push({paramPath:s+"/sub"},{paramPath:s+"/truediv"}),{sub:u,truediv:c}}function o(a,s,u){var c=e(a,s,3,u+"/conv"),l=n(s,u+"/bn");return{conv:c,bn:l}}var i=Ls(r,t);return{extractConvParams:e,extractConvWithBatchNormParams:o,extractSeparableConvParams:i}}function _0(r,t,e,n){var o=Dr(r),i=o.extractWeights,a=o.getRemainingWeights,s=[],u=W0(i,s),c=u.extractConvParams,l=u.extractConvWithBatchNormParams,f=u.extractSeparableConvParams,h;if(t.withSeparableConvs){var d=n[0],p=n[1],v=n[2],g=n[3],m=n[4],w=n[5],E=n[6],b=n[7],C=n[8],S=t.isFirstLayerConv2d?c(d,p,3,"conv0"):f(d,p,"conv0"),N=f(p,v,"conv1"),O=f(v,g,"conv2"),F=f(g,m,"conv3"),P=f(m,w,"conv4"),U=f(w,E,"conv5"),Q=b?f(E,b,"conv6"):void 0,V=C?f(b,C,"conv7"):void 0,X=c(C||b||E,5*e,1,"conv8");h={conv0:S,conv1:N,conv2:O,conv3:F,conv4:P,conv5:U,conv6:Q,conv7:V,conv8:X}}else{var d=n[0],p=n[1],v=n[2],g=n[3],m=n[4],w=n[5],E=n[6],b=n[7],C=n[8],S=l(d,p,"conv0"),N=l(p,v,"conv1"),O=l(v,g,"conv2"),F=l(g,m,"conv3"),P=l(m,w,"conv4"),U=l(w,E,"conv5"),Q=l(E,b,"conv6"),V=l(b,C,"conv7"),X=c(C,5*e,1,"conv8");h={conv0:S,conv1:N,conv2:O,conv3:F,conv4:P,conv5:U,conv6:Q,conv7:V,conv8:X}}if(a().length!==0)throw new Error("weights remaing after extract: "+a().length);return{params:h,paramMappings:s}}function Q0(r,t){var e=jr(r,t);function n(s){var u=e(s+"/sub",1),c=e(s+"/truediv",1);return{sub:u,truediv:c}}function o(s){var u=e(s+"/filters",4),c=e(s+"/bias",1);return{filters:u,bias:c}}function i(s){var u=o(s+"/conv"),c=n(s+"/bn");return{conv:u,bn:c}}var a=Ws(e);return{extractConvParams:o,extractConvWithBatchNormParams:i,extractSeparableConvParams:a}}function z0(r,t){var e=[],n=Q0(r,e),o=n.extractConvParams,i=n.extractConvWithBatchNormParams,a=n.extractSeparableConvParams,s;if(t.withSeparableConvs){var u=t.filterSizes&&t.filterSizes.length||9;s={conv0:t.isFirstLayerConv2d?o("conv0"):a("conv0"),conv1:a("conv1"),conv2:a("conv2"),conv3:a("conv3"),conv4:a("conv4"),conv5:a("conv5"),conv6:u>7?a("conv6"):void 0,conv7:u>8?a("conv7"):void 0,conv8:o("conv8")}}else s={conv0:i("conv0"),conv1:i("conv1"),conv2:i("conv2"),conv3:i("conv3"),conv4:i("conv4"),conv5:i("conv5"),conv6:i("conv6"),conv7:i("conv7"),conv8:o("conv8")};return Tr(r,e),{params:s,paramMappings:e}}var Gf;(function(r){r[r.XS=224]="XS",r[r.SM=320]="SM",r[r.MD=416]="MD",r[r.LG=608]="LG"})(Gf||(Gf={}));var js=function(){function r(t){var e=t===void 0?{}:t,n=e.inputSize,o=e.scoreThreshold;if(this._name="TinyYolov2Options",this._inputSize=n||416,this._scoreThreshold=o||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(this._name+" - expected inputSize to be a number divisible by 32");if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(this._name+" - expected scoreThreshold to be a number between 0 and 1")}return Object.defineProperty(r.prototype,"inputSize",{get:function(){return this._inputSize},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"scoreThreshold",{get:function(){return this._scoreThreshold},enumerable:!0,configurable:!0}),r}(),Xf=function(r){nt(t,r);function t(e){var n=r.call(this,"TinyYolov2")||this;return L0(e),n._config=e,n}return Object.defineProperty(t.prototype,"config",{get:function(){return this._config},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"withClassScores",{get:function(){return this.config.withClassScores||this.config.classes.length>1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"boxEncodingSize",{get:function(){return 5+(this.withClassScores?this.config.classes.length:0)},enumerable:!0,configurable:!0}),t.prototype.runTinyYolov2=function(e,n){var o=Vr(e,n.conv0);return o=En(o,[2,2],[2,2],"same"),o=Vr(o,n.conv1),o=En(o,[2,2],[2,2],"same"),o=Vr(o,n.conv2),o=En(o,[2,2],[2,2],"same"),o=Vr(o,n.conv3),o=En(o,[2,2],[2,2],"same"),o=Vr(o,n.conv4),o=En(o,[2,2],[2,2],"same"),o=Vr(o,n.conv5),o=En(o,[2,2],[1,1],"same"),o=Vr(o,n.conv6),o=Vr(o,n.conv7),ar(o,n.conv8,"valid",!1)},t.prototype.runMobilenet=function(e,n){var o=this.config.isFirstLayerConv2d?Hs(ar(e,n.conv0,"valid",!1)):Gr(e,n.conv0);return o=En(o,[2,2],[2,2],"same"),o=Gr(o,n.conv1),o=En(o,[2,2],[2,2],"same"),o=Gr(o,n.conv2),o=En(o,[2,2],[2,2],"same"),o=Gr(o,n.conv3),o=En(o,[2,2],[2,2],"same"),o=Gr(o,n.conv4),o=En(o,[2,2],[2,2],"same"),o=Gr(o,n.conv5),o=En(o,[2,2],[1,1],"same"),o=n.conv6?Gr(o,n.conv6):o,o=n.conv7?Gr(o,n.conv7):o,ar(o,n.conv8,"valid",!1)},t.prototype.forwardInput=function(e,n){var o=this,i=this.params;if(!i)throw new Error("TinyYolov2 - load model before inference");return Le(function(){var a=e.toBatchTensor(n,!1).toFloat();return a=o.config.meanRgb?ii(a,o.config.meanRgb):a,a=a.div(Fe(256)),o.config.withSeparableConvs?o.runMobilenet(a,i):o.runTinyYolov2(a,i)})},t.prototype.forward=function(e,n){return He(this,void 0,void 0,function(){var o;return je(this,function(i){switch(i.label){case 0:return o=this.forwardInput,[4,Cn(e)];case 1:return[4,o.apply(this,[i.sent(),n])];case 2:return[2,i.sent()]}})})},t.prototype.detect=function(e,n){return n===void 0&&(n={}),He(this,void 0,void 0,function(){var o,i,a,s,u,c,l,f,h,d,p,v,g,m,w=this;return je(this,function(E){switch(E.label){case 0:return o=new js(n),i=o.inputSize,a=o.scoreThreshold,[4,Cn(e)];case 1:return s=E.sent(),[4,this.forwardInput(s,i)];case 2:return u=E.sent(),c=Le(function(){return yn(u)[0].expandDims()}),l={width:s.getInputWidth(0),height:s.getInputHeight(0)},[4,this.extractBoxes(c,s.getReshapedInputDimensions(0),a)];case 3:return f=E.sent(),u.dispose(),c.dispose(),h=f.map(function(b){return b.box}),d=f.map(function(b){return b.score}),p=f.map(function(b){return b.classScore}),v=f.map(function(b){return w.config.classes[b.label]}),g=oi(h.map(function(b){return b.rescale(i)}),d,this.config.iouThreshold,!0),m=g.map(function(b){return new pf(d[b],p[b],v[b],h[b],l)}),[2,m]}})})},t.prototype.getDefaultModelName=function(){return""},t.prototype.extractParamsFromWeigthMap=function(e){return z0(e,this.config)},t.prototype.extractParams=function(e){var n=this.config.filterSizes||t.DEFAULT_FILTER_SIZES,o=n?n.length:void 0;if(o!==7&&o!==8&&o!==9)throw new Error("TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found "+o+" filterSizes in config");return _0(e,this.config,this.boxEncodingSize,n)},t.prototype.extractBoxes=function(e,n,o){return He(this,void 0,void 0,function(){var i,a,s,u,c,l,f,h,d,p,v,g,m,w,E,b,C,S,N,O,F,P,U,Q,V,X,te,ue,se,oe=this;return je(this,function(he){switch(he.label){case 0:return i=n.width,a=n.height,s=Math.max(i,a),u=s/i,c=s/a,l=e.shape[1],f=this.config.anchors.length,h=Le(function(){var pe=e.reshape([l,l,f,oe.boxEncodingSize]),xe=pe.slice([0,0,0,0],[l,l,f,4]),ke=pe.slice([0,0,0,4],[l,l,f,1]),Ne=oe.withClassScores?Cr(pe.slice([0,0,0,5],[l,l,f,oe.config.classes.length]),3):Fe(0);return[xe,ke,Ne]}),d=h[0],p=h[1],v=h[2],g=[],[4,p.array()];case 1:return m=he.sent(),[4,d.array()];case 2:w=he.sent(),E=0,he.label=3;case 3:if(!(E<l))return[3,12];b=0,he.label=4;case 4:if(!(b<l))return[3,11];C=0,he.label=5;case 5:return C<f?(S=Ss(m[E][b][C][0]),!o||S>o?(N=(b+Ss(w[E][b][C][0]))/l*u,O=(E+Ss(w[E][b][C][1]))/l*c,F=Math.exp(w[E][b][C][2])*this.config.anchors[C].x/l*u,P=Math.exp(w[E][b][C][3])*this.config.anchors[C].y/l*c,U=N-F/2,Q=O-P/2,V={row:E,col:b,anchor:C},this.withClassScores?[4,this.extractPredictedClass(v,V)]:[3,7]):[3,9]):[3,10];case 6:return se=he.sent(),[3,8];case 7:se={classScore:1,label:0},he.label=8;case 8:X=se,te=X.classScore,ue=X.label,g.push(Nn({box:new Zi(U,Q,U+F,Q+P),score:S,classScore:S*te,label:ue},V)),he.label=9;case 9:return C++,[3,5];case 10:return b++,[3,4];case 11:return E++,[3,3];case 12:return d.dispose(),p.dispose(),v.dispose(),[2,g]}})})},t.prototype.extractPredictedClass=function(e,n){return He(this,void 0,void 0,function(){var o,i,a,s;return je(this,function(u){switch(u.label){case 0:return o=n.row,i=n.col,a=n.anchor,[4,e.array()];case 1:return s=u.sent(),[2,Array(this.config.classes.length).fill(0).map(function(c,l){return s[o][i][a][l]}).map(function(c,l){return{classScore:c,label:l}}).reduce(function(c,l){return c.classScore>l.classScore?c:l})]}})})},t.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024],t}(kr),U0=function(r){nt(t,r);function t(e){e===void 0&&(e=!0);var n=this,o=Object.assign({},{withSeparableConvs:e,iouThreshold:D0,classes:["face"]},e?{anchors:P0,meanRgb:N0}:{anchors:F0,withClassScores:!0});return n=r.call(this,o)||this,n}return Object.defineProperty(t.prototype,"withSeparableConvs",{get:function(){return this.config.withSeparableConvs},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"anchors",{get:function(){return this.config.anchors},enumerable:!0,configurable:!0}),t.prototype.locateFaces=function(e,n){return He(this,void 0,void 0,function(){var o;return je(this,function(i){switch(i.label){case 0:return[4,this.detect(e,n)];case 1:return o=i.sent(),[2,o.map(function(a){return new Gn(a.score,a.relativeBox,{width:a.imageWidth,height:a.imageHeight})})]}})})},t.prototype.getDefaultModelName=function(){return this.withSeparableConvs?M0:O0},t.prototype.extractParamsFromWeigthMap=function(e){return r.prototype.extractParamsFromWeigthMap.call(this,e)},t}(Xf);function z1(r,t){t===void 0&&(t=!0);var e=new TinyYolov2(t);return e.extractWeights(r),e}var Jf=function(r){nt(t,r);function t(){var e=r!==null&&r.apply(this,arguments)||this;return e._name="TinyFaceDetectorOptions",e}return t}(js),ui=function(){function r(){}return r.prototype.then=function(t){return He(this,void 0,void 0,function(){var e;return je(this,function(n){switch(n.label){case 0:return e=t,[4,this.run()];case 1:return[2,e.apply(void 0,[n.sent()])]}})})},r.prototype.run=function(){return He(this,void 0,void 0,function(){return je(this,function(t){throw new Error("ComposableTask - run is not implemented")})})},r}();function Kf(r,t){var e={descriptor:t};return Object.assign({},r,e)}function sa(r,t,e,n,o){return o===void 0&&(o=function(i){var a=i.alignedRect;return a}),He(this,void 0,void 0,function(){var i,a,s,u,c;return je(this,function(l){switch(l.label){case 0:return i=r.map(function(f){return Qs(f)?o(f):f.detection}),s=n,s?[3,5]:t instanceof at?[4,Ns(t,i)]:[3,2];case 1:return u=l.sent(),[3,4];case 2:return[4,Ps(t,i)];case 3:u=l.sent(),l.label=4;case 4:s=u,l.label=5;case 5:return a=s,[4,e(a)];case 6:return c=l.sent(),a.forEach(function(f){return f instanceof at&&f.dispose()}),[2,c]}})})}function Vs(r,t,e,n,o){return He(this,void 0,void 0,function(){var i=this;return je(this,function(a){return[2,sa([r],t,function(s){return He(i,void 0,void 0,function(){return je(this,function(u){return[2,e(s[0])]})})},n,o)]})})}function H0(r){return Le(function(){return jn(yn(r,3).reverse(),3)})}var ua=2,ca=12;function j0(r,t){var e=ta(r,t),n=Ms(r,t);function o(c,l){var f=vn(r(c));return t.push({paramPath:l}),f}function i(c,l,f){f===void 0&&(f=!1);var h=e(c[0],c[1],3,l+"/conv1"),d=o(c[1],l+"/prelu1_alpha"),p=e(c[1],c[2],3,l+"/conv2"),v=o(c[2],l+"/prelu2_alpha"),g=e(c[2],c[3],f?2:3,l+"/conv3"),m=o(c[3],l+"/prelu3_alpha");return{conv1:h,prelu1_alpha:d,conv2:p,prelu2_alpha:v,conv3:g,prelu3_alpha:m}}function a(){var c=i([3,10,16,32],"pnet"),l=e(32,2,1,"pnet/conv4_1"),f=e(32,4,1,"pnet/conv4_2");return Nn(Nn({},c),{conv4_1:l,conv4_2:f})}function s(){var c=i([3,28,48,64],"rnet",!0),l=n(576,128,"rnet/fc1"),f=o(128,"rnet/prelu4_alpha"),h=n(128,2,"rnet/fc2_1"),d=n(128,4,"rnet/fc2_2");return Nn(Nn({},c),{fc1:l,prelu4_alpha:f,fc2_1:h,fc2_2:d})}function u(){var c=i([3,32,64,64],"onet"),l=e(64,128,2,"onet/conv4"),f=o(128,"onet/prelu4_alpha"),h=n(1152,256,"onet/fc1"),d=o(256,"onet/prelu5_alpha"),p=n(256,2,"onet/fc2_1"),v=n(256,4,"onet/fc2_2"),g=n(256,10,"onet/fc2_3");return Nn(Nn({},c),{conv4:l,prelu4_alpha:f,fc1:h,prelu5_alpha:d,fc2_1:p,fc2_2:v,fc2_3:g})}return{extractPNetParams:a,extractRNetParams:s,extractONetParams:u}}function V0(r){var t=Dr(r),e=t.extractWeights,n=t.getRemainingWeights,o=[],i=j0(e,o),a=i.extractPNetParams,s=i.extractRNetParams,u=i.extractONetParams,c=a(),l=s(),f=u();if(n().length!==0)throw new Error("weights remaing after extract: "+n().length);return{params:{pnet:c,rnet:l,onet:f},paramMappings:o}}function G0(r,t){var e=jr(r,t);function n(l){var f=e(l+"/weights",4,l+"/filters"),h=e(l+"/bias",1);return{filters:f,bias:h}}function o(l){var f=e(l+"/weights",2),h=e(l+"/bias",1);return{weights:f,bias:h}}function i(l){return e(l,1)}function a(l){var f=n(l+"/conv1"),h=i(l+"/prelu1_alpha"),d=n(l+"/conv2"),p=i(l+"/prelu2_alpha"),v=n(l+"/conv3"),g=i(l+"/prelu3_alpha");return{conv1:f,prelu1_alpha:h,conv2:d,prelu2_alpha:p,conv3:v,prelu3_alpha:g}}function s(){var l=a("pnet"),f=n("pnet/conv4_1"),h=n("pnet/conv4_2");return Nn(Nn({},l),{conv4_1:f,conv4_2:h})}function u(){var l=a("rnet"),f=o("rnet/fc1"),h=i("rnet/prelu4_alpha"),d=o("rnet/fc2_1"),p=o("rnet/fc2_2");return Nn(Nn({},l),{fc1:f,prelu4_alpha:h,fc2_1:d,fc2_2:p})}function c(){var l=a("onet"),f=n("onet/conv4"),h=i("onet/prelu4_alpha"),d=o("onet/fc1"),p=i("onet/prelu5_alpha"),v=o("onet/fc2_1"),g=o("onet/fc2_2"),m=o("onet/fc2_3");return Nn(Nn({},l),{conv4:f,prelu4_alpha:h,fc1:d,prelu5_alpha:p,fc2_1:v,fc2_2:g,fc2_3:m})}return{extractPNetParams:s,extractRNetParams:u,extractONetParams:c}}function X0(r){var t=[],e=G0(r,t),n=e.extractPNetParams,o=e.extractRNetParams,i=e.extractONetParams,a=n(),s=o(),u=i();return Tr(r,t),{params:{pnet:a,rnet:s,onet:u},paramMappings:t}}function Gs(r,t){var e=t[0],n=t[1];return{height:Math.floor(e*r),width:Math.floor(n*r)}}function J0(r,t,e){for(var n=e[0],o=e[1],i=ca/r,a=[],s=Math.min(n,o)*i,u=0;s>=12;)a.push(i*Math.pow(t,u)),s=s*t,u+=1;return a}var Xs=function(r){nt(t,r);function t(e,n,o,i){return r.call(this,{left:e,top:n,right:o,bottom:i},!0)||this}return t}(pr);function Zf(r){return Le(function(){return Fn(xn(r,Fe(127.5)),Fe(.0078125))})}function To(r,t){return Le(function(){return mt(nn(r),Fn(t,Mi(nn(Mi(r)))))})}function Js(r,t,e){return e===void 0&&(e=!1),Le(function(){var n=ar(r,t.conv1,"valid");return n=To(n,t.prelu1_alpha),n=En(n,e?[2,2]:[3,3],[2,2],"same"),n=ar(n,t.conv2,"valid"),n=To(n,t.prelu2_alpha),n=e?n:En(n,[3,3],[2,2],"valid"),n=ar(n,t.conv3,"valid"),n=To(n,t.prelu3_alpha),n})}function K0(r,t){return Le(function(){var e=Js(r,t,!0),n=ar(e,t.conv4_1,"valid"),o=qn(Hi(n,3),3),i=Cr(xn(n,o),3),a=ar(e,t.conv4_2,"valid");return{prob:i,regions:a}})}function Z0(r,t){return Le(function(){var e=Gs(t,r.shape.slice(1)),n=e.height,o=e.width,i=es.resizeBilinear(r,[n,o]),a=Zf(i);return Wr(a,[0,2,1,3])})}function q0(r,t,e,n){for(var o=[],i=r.arraySync(),a=0;a<r.shape[0];a++)for(var s=0;s<r.shape[1];s++)i[a][s]>=n&&o.push(new Ot(s,a));var u=o.map(function(c){var l=new Zi(Math.round((c.y*ua+1)/e),Math.round((c.x*ua+1)/e),Math.round((c.y*ua+ca)/e),Math.round((c.x*ua+ca)/e)),f=i[c.y][c.x],h=t.arraySync(),d=new Xs(h[c.y][c.x][0],h[c.y][c.x][1],h[c.y][c.x][2],h[c.y][c.x][3]);return{cell:l,score:f,region:d}});return u}function Y0(r,t,e,n,o){o.stage1=[];var i=t.map(function(h){return Le(function(){var d={scale:h},p=Z0(r,h),v=Date.now(),g=K0(p,n),m=g.prob,w=g.regions;d.pnet=Date.now()-v;var E=yn(yn(m,3)[1])[0],b=yn(w)[0];return{scoresTensor:E,regionsTensor:b,scale:h,statsForScale:d}})}),a=i.map(function(h){var d=h.scoresTensor,p=h.regionsTensor,v=h.scale,g=h.statsForScale,m=q0(d,p,v,e);if(d.dispose(),p.dispose(),!m.length)return o.stage1.push(g),[];var w=Date.now(),E=oi(m.map(function(b){return b.cell}),m.map(function(b){return b.score}),.5);return g.nms=Date.now()-w,g.numBoxes=E.length,o.stage1.push(g),E.map(function(b){return m[b]})}),s=a.reduce(function(h,d){return h.concat(d)},[]),u=[],c=[];if(s.length>0){var l=Date.now(),f=oi(s.map(function(h){return h.cell}),s.map(function(h){return h.score}),.7);o.stage1_nms=Date.now()-l,c=f.map(function(h){return s[h].score}),u=f.map(function(h){return s[h]}).map(function(h){var d=h.cell,p=h.region;return new Zi(d.left+p.left*d.width,d.top+p.top*d.height,d.right+p.right*d.width,d.bottom+p.bottom*d.height).toSquare().round()})}return{boxes:u,scores:c}}function qf(r,t,e){var n=e.width,o=e.height;return He(this,void 0,void 0,function(){var i,a,s,u=this;return je(this,function(c){switch(c.label){case 0:return i=vr(r),[4,Promise.all(t.map(function(l){return He(u,void 0,void 0,function(){var f,h,d,p,v,g,m,w;return je(this,function(E){return f=l.padAtBorders(r.height,r.width),h=f.y,d=f.ey,p=f.x,v=f.ex,g=p-1,m=h-1,w=i.getImageData(g,m,v-g,d-m),[2,On.isNodejs()?Fs(w):createImageBitmap(w)]})})}))];case 1:return a=c.sent(),s=[],a.forEach(function(l){var f=Yi({width:n,height:o}),h=vr(f);h.drawImage(l,0,0,n,o);for(var d=h.getImageData(0,0,n,o).data,p=[],v=0;v<d.length;v+=4)p.push(d[v+2]),p.push(d[v+1]),p.push(d[v]);s.push(p)}),[2,s.map(function(l){var f=Le(function(){var h=Wr(Qn(l,[1,n,o,3]),[0,2,1,3]).toFloat();return Zf(h)});return f})]}})})}function $0(r,t){return Le(function(){var e=Js(r,t),n=rr(e,[e.shape[0],t.fc1.weights.shape[0]]),o=gr(n,t.fc1),i=To(o,t.prelu4_alpha),a=gr(i,t.fc2_1),s=qn(Hi(a,1),1),u=Cr(xn(a,s),1),c=gr(i,t.fc2_2),l=yn(u,1)[1];return{scores:l,regions:c}})}function eA(r,t,e,n,o){return He(this,void 0,void 0,function(){var i,a,s,u,c,l,f,h,d,p,v,g,m,w;return je(this,function(E){switch(E.label){case 0:return i=Date.now(),[4,qf(r,t,{width:24,height:24})];case 1:return a=E.sent(),o.stage2_extractImagePatches=Date.now()-i,i=Date.now(),s=a.map(function(b){var C=$0(b,n);return b.dispose(),C}),o.stage2_rnet=Date.now()-i,u=s.length>1?An(s.map(function(b){return b.scores})):s[0].scores,f=(l=Array).from,[4,u.data()];case 2:return c=f.apply(l,[E.sent()]),u.dispose(),h=c.map(function(b,C){return{score:b,idx:C}}).filter(function(b){return b.score>e}).map(function(b){var C=b.idx;return C}),d=h.map(function(b){return t[b]}),p=h.map(function(b){return c[b]}),v=[],g=[],d.length>0&&(i=Date.now(),m=oi(d,p,.7),o.stage2_nms=Date.now()-i,w=m.map(function(b){var C=s[h[b]].regions.arraySync();return new Xs(C[0][0],C[0][1],C[0][2],C[0][3])}),g=m.map(function(b){return p[b]}),v=m.map(function(b,C){return d[b].calibrate(w[C])})),s.forEach(function(b){b.regions.dispose(),b.scores.dispose()}),[2,{boxes:v,scores:g}]}})})}function tA(r,t){return Le(function(){var e=Js(r,t);e=En(e,[2,2],[2,2],"same"),e=ar(e,t.conv4,"valid"),e=To(e,t.prelu4_alpha);var n=rr(e,[e.shape[0],t.fc1.weights.shape[0]]),o=gr(n,t.fc1),i=To(o,t.prelu5_alpha),a=gr(i,t.fc2_1),s=qn(Hi(a,1),1),u=Cr(xn(a,s),1),c=gr(i,t.fc2_2),l=gr(i,t.fc2_3),f=yn(u,1)[1];return{scores:f,regions:c,points:l}})}function nA(r,t,e,n,o){return He(this,void 0,void 0,function(){var i,a,s,u,c,l,f,h,d,p,v,g,m,w,E;return je(this,function(b){switch(b.label){case 0:return i=Date.now(),[4,qf(r,t,{width:48,height:48})];case 1:return a=b.sent(),o.stage3_extractImagePatches=Date.now()-i,i=Date.now(),s=a.map(function(C){var S=tA(C,n);return C.dispose(),S}),o.stage3_onet=Date.now()-i,u=s.length>1?An(s.map(function(C){return C.scores})):s[0].scores,f=(l=Array).from,[4,u.data()];case 2:return c=f.apply(l,[b.sent()]),u.dispose(),h=c.map(function(C,S){return{score:C,idx:S}}).filter(function(C){return C.score>e}).map(function(C){var S=C.idx;return S}),d=h.map(function(C){var S=s[C].regions.arraySync();return new Xs(S[0][0],S[0][1],S[0][2],S[0][3])}),p=h.map(function(C,S){return t[C].calibrate(d[S])}),v=h.map(function(C){return c[C]}),g=[],m=[],w=[],p.length>0&&(i=Date.now(),E=oi(p,v,.7,!1),o.stage3_nms=Date.now()-i,g=E.map(function(C){return p[C]}),m=E.map(function(C){return v[C]}),w=E.map(function(C,S){return Array(5).fill(0).map(function(N,O){var F=s[C].points.arraySync();return new Ot(F[0][O]*(g[S].width+1)+g[S].left,F[0][O+5]*(g[S].height+1)+g[S].top)})})),s.forEach(function(C){C.regions.dispose(),C.scores.dispose(),C.points.dispose()}),[2,{boxes:g,scores:m,points:w}]}})})}var rA=function(r){nt(t,r);function t(){return r.call(this,"Mtcnn")||this}return t.prototype.load=function(e){return He(this,void 0,void 0,function(){return je(this,function(n){return console.warn("mtcnn is deprecated and will be removed soon"),[2,r.prototype.load.call(this,e)]})})},t.prototype.loadFromDisk=function(e){return He(this,void 0,void 0,function(){return je(this,function(n){return console.warn("mtcnn is deprecated and will be removed soon"),[2,r.prototype.loadFromDisk.call(this,e)]})})},t.prototype.forwardInput=function(e,n){return n===void 0&&(n={}),He(this,void 0,void 0,function(){var o,i,a,s,u,c,l,f,h,d,p,v,g,m,w,E,b,C,S,N,O;return je(this,function(F){switch(F.label){case 0:if(o=this.params,!o)throw new Error("Mtcnn - load model before inference");if(i=e.canvases[0],!i)throw new Error("Mtcnn - inputCanvas is not defined, note that passing tensors into Mtcnn.forwardInput is not supported yet.");return a={},s=Date.now(),u=Le(function(){return H0(qn(As.fromPixels(i)).toFloat())}),c=function(P){return u.dispose(),a.total=Date.now()-s,P},l=u.shape.slice(1),f=l[0],h=l[1],d=new jf(n),p=d.minFaceSize,v=d.scaleFactor,g=d.maxNumScales,m=d.scoreThresholds,w=d.scaleSteps,E=(w||J0(p,v,[f,h])).filter(function(P){var U=Gs(P,[f,h]);return Math.min(U.width,U.height)>ca}).slice(0,g),a.scales=E,a.pyramid=E.map(function(P){return Gs(P,[f,h])}),b=Date.now(),[4,Y0(u,E,m[0],o.pnet,a)];case 1:return C=F.sent(),a.total_stage1=Date.now()-b,C.boxes.length?(a.stage2_numInputBoxes=C.boxes.length,b=Date.now(),[4,eA(i,C.boxes,m[1],o.rnet,a)]):[2,c({results:[],stats:a})];case 2:return S=F.sent(),a.total_stage2=Date.now()-b,S.boxes.length?(a.stage3_numInputBoxes=S.boxes.length,b=Date.now(),[4,nA(i,S.boxes,m[2],o.onet,a)]):[2,c({results:[],stats:a})];case 3:return N=F.sent(),a.total_stage3=Date.now()-b,O=N.boxes.map(function(P,U){return na(si({},new Gn(N.scores[U],new Rs(P.left/h,P.top/f,P.width/h,P.height/f),{height:f,width:h})),new Tm(N.points[U].map(function(Q){return Q.sub(new Ot(P.left,P.top)).div(new Ot(P.width,P.height))}),{width:P.width,height:P.height}))}),[2,c({results:O,stats:a})]}})})},t.prototype.forward=function(e,n){return n===void 0&&(n={}),He(this,void 0,void 0,function(){var o;return je(this,function(i){switch(i.label){case 0:return o=this.forwardInput,[4,Cn(e)];case 1:return[4,o.apply(this,[i.sent(),n])];case 2:return[2,i.sent().results]}})})},t.prototype.forwardWithStats=function(e,n){return n===void 0&&(n={}),He(this,void 0,void 0,function(){var o;return je(this,function(i){switch(i.label){case 0:return o=this.forwardInput,[4,Cn(e)];case 1:return[2,o.apply(this,[i.sent(),n])]}})})},t.prototype.getDefaultModelName=function(){return"mtcnn_model"},t.prototype.extractParamsFromWeigthMap=function(e){return X0(e)},t.prototype.extractParams=function(e){return V0(e)},t}(kr),oA=.4,iA=[new Ot(1.603231,2.094468),new Ot(6.041143,7.080126),new Ot(2.882459,3.518061),new Ot(4.266906,5.178857),new Ot(9.041765,10.66308)],aA=[117.001,114.697,97.404],sA=function(r){nt(t,r);function t(){var e=this,n={withSeparableConvs:!0,iouThreshold:oA,classes:["face"],anchors:iA,meanRgb:aA,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};return e=r.call(this,n)||this,e}return Object.defineProperty(t.prototype,"anchors",{get:function(){return this.config.anchors},enumerable:!0,configurable:!0}),t.prototype.locateFaces=function(e,n){return He(this,void 0,void 0,function(){var o;return je(this,function(i){switch(i.label){case 0:return[4,this.detect(e,n)];case 1:return o=i.sent(),[2,o.map(function(a){return new Gn(a.score,a.relativeBox,{width:a.imageWidth,height:a.imageHeight})})]}})})},t.prototype.getDefaultModelName=function(){return"tiny_face_detector_model"},t.prototype.extractParamsFromWeigthMap=function(e){return r.prototype.extractParamsFromWeigthMap.call(this,e)},t}(Xf),Wt={ssdMobilenetv1:new Vf,tinyFaceDetector:new sA,tinyYolov2:new U0,mtcnn:new rA,faceLandmark68Net:new Qf,faceLandmark68TinyNet:new u0,faceRecognitionNet:new v0,faceExpressionNet:new Gm,ageGenderNet:new o0},U1=function(r,t){return Wt.ssdMobilenetv1.locateFaces(r,t)},H1=function(r,t){return Wt.tinyFaceDetector.locateFaces(r,t)},j1=function(r,t){return Wt.tinyYolov2.locateFaces(r,t)},V1=function(r,t){return Wt.mtcnn.forward(r,t)},G1=function(r){return Wt.faceLandmark68Net.detectLandmarks(r)},X1=function(r){return Wt.faceLandmark68TinyNet.detectLandmarks(r)},J1=function(r){return Wt.faceRecognitionNet.computeFaceDescriptor(r)},K1=function(r){return Wt.faceExpressionNet.predictExpressions(r)},Z1=function(r){return Wt.ageGenderNet.predictAgeAndGender(r)},q1=function(r){return Wt.ssdMobilenetv1.load(r)},uA=function(r){return Wt.tinyFaceDetector.load(r)},Y1=function(r){return Wt.mtcnn.load(r)},$1=function(r){return Wt.tinyYolov2.load(r)},cA=function(r){return Wt.faceLandmark68Net.load(r)},ey=function(r){return Wt.faceLandmark68TinyNet.load(r)},lA=function(r){return Wt.faceRecognitionNet.load(r)},ty=function(r){return Wt.faceExpressionNet.load(r)},ny=function(r){return Wt.ageGenderNet.load(r)},ry=null,oy=null,iy=null;function ay(r){return typeof r.age=="number"}function Yf(r,t){var e={age:t};return Object.assign({},r,e)}var $f=function(r){nt(t,r);function t(e,n,o){var i=r.call(this)||this;return i.parentTask=e,i.input=n,i.extractedFaces=o,i}return t}(ui),Ks=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return He(this,void 0,void 0,function(){var e,n,o=this;return je(this,function(i){switch(i.label){case 0:return[4,this.parentTask];case 1:return e=i.sent(),[4,sa(e,this.input,function(a){return He(o,void 0,void 0,function(){return je(this,function(s){switch(s.label){case 0:return[4,Promise.all(a.map(function(u){return Wt.faceExpressionNet.predictExpressions(u)}))];case 1:return[2,s.sent()]}})})},this.extractedFaces)];case 2:return n=i.sent(),[2,e.map(function(a,s){return Lf(a,n[s])})]}})})},t.prototype.withAgeAndGender=function(){return new $s(this,this.input)},t}($f),Zs=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return He(this,void 0,void 0,function(){var e,n;return je(this,function(o){switch(o.label){case 0:return[4,this.parentTask];case 1:return e=o.sent(),e?[4,Vs(e,this.input,function(i){return Wt.faceExpressionNet.predictExpressions(i)},this.extractedFaces)]:[2];case 2:return n=o.sent(),[2,Lf(e,n)]}})})},t.prototype.withAgeAndGender=function(){return new eu(this,this.input)},t}($f),qs=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.withAgeAndGender=function(){return new tu(this,this.input)},t.prototype.withFaceDescriptors=function(){return new ru(this,this.input)},t}(Ks),Ys=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.withAgeAndGender=function(){return new nu(this,this.input)},t.prototype.withFaceDescriptor=function(){return new ou(this,this.input)},t}(Zs),eh=function(r){nt(t,r);function t(e,n,o){var i=r.call(this)||this;return i.parentTask=e,i.input=n,i.extractedFaces=o,i}return t}(ui),$s=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return He(this,void 0,void 0,function(){var e,n,o=this;return je(this,function(i){switch(i.label){case 0:return[4,this.parentTask];case 1:return e=i.sent(),[4,sa(e,this.input,function(a){return He(o,void 0,void 0,function(){return je(this,function(s){switch(s.label){case 0:return[4,Promise.all(a.map(function(u){return Wt.ageGenderNet.predictAgeAndGender(u)}))];case 1:return[2,s.sent()]}})})},this.extractedFaces)];case 2:return n=i.sent(),[2,e.map(function(a,s){var u=n[s],c=u.age,l=u.gender,f=u.genderProbability;return Yf(Hf(a,l,f),c)})]}})})},t.prototype.withFaceExpressions=function(){return new Ks(this,this.input)},t}(eh),eu=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return He(this,void 0,void 0,function(){var e,n,o,i,a;return je(this,function(s){switch(s.label){case 0:return[4,this.parentTask];case 1:return e=s.sent(),e?[4,Vs(e,this.input,function(u){return Wt.ageGenderNet.predictAgeAndGender(u)},this.extractedFaces)]:[2];case 2:return n=s.sent(),o=n.age,i=n.gender,a=n.genderProbability,[2,Yf(Hf(e,i,a),o)]}})})},t.prototype.withFaceExpressions=function(){return new Zs(this,this.input)},t}(eh),tu=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.withFaceExpressions=function(){return new qs(this,this.input)},t.prototype.withFaceDescriptors=function(){return new ru(this,this.input)},t}($s),nu=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.withFaceExpressions=function(){return new Ys(this,this.input)},t.prototype.withFaceDescriptor=function(){return new ou(this,this.input)},t}(eu),th=function(r){nt(t,r);function t(e,n){var o=r.call(this)||this;return o.parentTask=e,o.input=n,o}return t}(ui),ru=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return He(this,void 0,void 0,function(){var e,n;return je(this,function(o){switch(o.label){case 0:return[4,this.parentTask];case 1:return e=o.sent(),[4,sa(e,this.input,function(i){return Promise.all(i.map(function(a){return Wt.faceRecognitionNet.computeFaceDescriptor(a)}))},null,function(i){return i.landmarks.align(null,{useDlibAlignment:!0})})];case 2:return n=o.sent(),[2,n.map(function(i,a){return Kf(e[a],i)})]}})})},t.prototype.withFaceExpressions=function(){return new qs(this,this.input)},t.prototype.withAgeAndGender=function(){return new tu(this,this.input)},t}(th),ou=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return He(this,void 0,void 0,function(){var e,n;return je(this,function(o){switch(o.label){case 0:return[4,this.parentTask];case 1:return e=o.sent(),e?[4,Vs(e,this.input,function(i){return Wt.faceRecognitionNet.computeFaceDescriptor(i)},null,function(i){return i.landmarks.align(null,{useDlibAlignment:!0})})]:[2];case 2:return n=o.sent(),[2,Kf(e,n)]}})})},t.prototype.withFaceExpressions=function(){return new Ys(this,this.input)},t.prototype.withAgeAndGender=function(){return new nu(this,this.input)},t}(th),nh=function(r){nt(t,r);function t(e,n,o){var i=r.call(this)||this;return i.parentTask=e,i.input=n,i.useTinyLandmarkNet=o,i}return Object.defineProperty(t.prototype,"landmarkNet",{get:function(){return this.useTinyLandmarkNet?Wt.faceLandmark68TinyNet:Wt.faceLandmark68Net},enumerable:!0,configurable:!0}),t}(ui),fA=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return He(this,void 0,void 0,function(){var e,n,o,i,a,s=this;return je(this,function(u){switch(u.label){case 0:return[4,this.parentTask];case 1:return e=u.sent(),n=e.map(function(c){return c.detection}),this.input instanceof at?[4,Ns(this.input,n)]:[3,3];case 2:return i=u.sent(),[3,5];case 3:return[4,Ps(this.input,n)];case 4:i=u.sent(),u.label=5;case 5:return o=i,[4,Promise.all(o.map(function(c){return s.landmarkNet.detectLandmarks(c)}))];case 6:return a=u.sent(),o.forEach(function(c){return c instanceof at&&c.dispose()}),[2,e.map(function(c,l){return na(c,a[l])})]}})})},t.prototype.withFaceExpressions=function(){return new qs(this,this.input)},t.prototype.withAgeAndGender=function(){return new tu(this,this.input)},t.prototype.withFaceDescriptors=function(){return new ru(this,this.input)},t}(nh),hA=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return He(this,void 0,void 0,function(){var e,n,o,i,a;return je(this,function(s){switch(s.label){case 0:return[4,this.parentTask];case 1:return e=s.sent(),e?(n=e.detection,this.input instanceof at?[4,Ns(this.input,[n])]:[3,3]):[2];case 2:return i=s.sent(),[3,5];case 3:return[4,Ps(this.input,[n])];case 4:i=s.sent(),s.label=5;case 5:return o=i,[4,this.landmarkNet.detectLandmarks(o[0])];case 6:return a=s.sent(),o.forEach(function(u){return u instanceof at&&u.dispose()}),[2,na(e,a)]}})})},t.prototype.withFaceExpressions=function(){return new Ys(this,this.input)},t.prototype.withAgeAndGender=function(){return new nu(this,this.input)},t.prototype.withFaceDescriptor=function(){return new ou(this,this.input)},t}(nh),rh=function(r){nt(t,r);function t(e,n){n===void 0&&(n=new ia);var o=r.call(this)||this;return o.input=e,o.options=n,o}return t}(ui),dA=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return He(this,void 0,void 0,function(){var e,n,o,i;return je(this,function(a){switch(a.label){case 0:return e=this,n=e.input,o=e.options,o instanceof jf?[4,Wt.mtcnn.forward(n,o)]:[3,2];case 1:return[2,a.sent().map(function(s){return s.detection})];case 2:if(i=o instanceof Jf?function(s){return Wt.tinyFaceDetector.locateFaces(s,o)}:o instanceof ia?function(s){return Wt.ssdMobilenetv1.locateFaces(s,o)}:o instanceof js?function(s){return Wt.tinyYolov2.locateFaces(s,o)}:null,!i)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return[2,i(n)]}})})},t.prototype.runAndExtendWithFaceDetections=function(){var e=this;return new Promise(function(n){return He(e,void 0,void 0,function(){var o;return je(this,function(i){switch(i.label){case 0:return[4,this.run()];case 1:return o=i.sent(),[2,n(o.map(function(a){return si({},a)}))]}})})})},t.prototype.withFaceLandmarks=function(e){return e===void 0&&(e=!1),new fA(this.runAndExtendWithFaceDetections(),this.input,e)},t.prototype.withFaceExpressions=function(){return new Ks(this.runAndExtendWithFaceDetections(),this.input)},t.prototype.withAgeAndGender=function(){return new $s(this.runAndExtendWithFaceDetections(),this.input)},t}(rh),pA=function(r){nt(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return He(this,void 0,void 0,function(){var e,n;return je(this,function(o){switch(o.label){case 0:return[4,new dA(this.input,this.options)];case 1:return e=o.sent(),n=e[0],e.forEach(function(i){i.score>n.score&&(n=i)}),[2,n]}})})},t.prototype.runAndExtendWithFaceDetection=function(){var e=this;return new Promise(function(n){return He(e,void 0,void 0,function(){var o;return je(this,function(i){switch(i.label){case 0:return[4,this.run()];case 1:return o=i.sent(),[2,n(o?si({},o):void 0)]}})})})},t.prototype.withFaceLandmarks=function(e){return e===void 0&&(e=!1),new hA(this.runAndExtendWithFaceDetection(),this.input,e)},t.prototype.withFaceExpressions=function(){return new Zs(this.runAndExtendWithFaceDetection(),this.input)},t.prototype.withAgeAndGender=function(){return new eu(this.runAndExtendWithFaceDetection(),this.input)},t}(rh);function iu(r,t){return t===void 0&&(t=new ia),new pA(r,t)}function sy(r,t){return t===void 0&&(t=new SsdMobilenetv1Options),new DetectAllFacesTask(r,t)}function uy(r,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return console.warn("allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead"),[4,detectAllFaces(r,new SsdMobilenetv1Options(t?{minConfidence:t}:{})).withFaceLandmarks().withFaceDescriptors()];case 1:return[2,e.sent()]}})})}function cy(r,t){return t===void 0&&(t={}),__awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return console.warn("allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead"),[4,detectAllFaces(r,new TinyYolov2Options(t)).withFaceLandmarks().withFaceDescriptors()];case 1:return[2,e.sent()]}})})}function ly(r,t){return t===void 0&&(t={}),__awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return console.warn("allFacesMtcnn is deprecated and will be removed soon, use the high level api instead"),[4,detectAllFaces(r,new MtcnnOptions(t)).withFaceLandmarks().withFaceDescriptors()];case 1:return[2,e.sent()]}})})}var fy=null;function vA(r,t){if(r.length!==t.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");var e=Array.from(r),n=Array.from(t);return Math.sqrt(e.map(function(o,i){return o-n[i]}).reduce(function(o,i){return o+Math.pow(i,2)},0))}var gA=function(){function r(t,e){e===void 0&&(e=.6),this._distanceThreshold=e;var n=Array.isArray(t)?t:[t];if(!n.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");var o=1,i=function(){return"person "+o++};this._labeledDescriptors=n.map(function(a){if(a instanceof qi)return a;if(a instanceof Float32Array)return new qi(i(),[a]);if(a.descriptor&&a.descriptor instanceof Float32Array)return new qi(i(),[a.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor<any> | Float32Array | Array<LabeledFaceDescriptors | WithFaceDescriptor<any> | Float32Array>")})}return Object.defineProperty(r.prototype,"labeledDescriptors",{get:function(){return this._labeledDescriptors},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"distanceThreshold",{get:function(){return this._distanceThreshold},enumerable:!0,configurable:!0}),r.prototype.computeMeanDistance=function(t,e){return e.map(function(n){return vA(n,t)}).reduce(function(n,o){return n+o},0)/(e.length||1)},r.prototype.matchDescriptor=function(t){var e=this;return this.labeledDescriptors.map(function(n){var o=n.descriptors,i=n.label;return new gf(i,e.computeMeanDistance(t,o))}).reduce(function(n,o){return n.distance<o.distance?n:o})},r.prototype.findBestMatch=function(t){var e=this.matchDescriptor(t);return e.distance<this.distanceThreshold?e:new gf("unknown",e.distance)},r.prototype.toJSON=function(){return{distanceThreshold:this.distanceThreshold,labeledDescriptors:this.labeledDescriptors.map(function(t){return t.toJSON()})}},r.fromJSON=function(t){var e=t.labeledDescriptors.map(function(n){return qi.fromJSON(n)});return new r(e,t.distanceThreshold)},r}();function hy(r){var t=new Mtcnn;return t.extractWeights(r),t}function dy(r){var t=new TinyFaceDetector;return t.extractWeights(r),t}function oh(r,t){var e=new so(t.width,t.height),n=e.width,o=e.height;if(n<=0||o<=0)throw new Error("resizeResults - invalid dimensions: "+JSON.stringify({width:n,height:o}));if(Array.isArray(r))return r.map(function(s){return oh(s,{width:n,height:o})});if(Qs(r)){var i=r.detection.forSize(n,o),a=r.unshiftedLandmarks.forSize(i.box.width,i.box.height);return na(si(r,i),a)}return ai(r)?si(r,r.detection.forSize(n,o)):r instanceof Bo||r instanceof Gn?r.forSize(n,o):r}var mA=H(71418),AA=H(38147),yA={wrp:"wrp___x6ffm"},Do=H(59301),sr=(r,t,e)=>new Promise((n,o)=>{var i=u=>{try{s(e.next(u))}catch(c){o(c)}},a=u=>{try{s(e.throw(u))}catch(c){o(c)}},s=u=>u.done?n(u.value):Promise.resolve(u.value).then(i,a);s((e=e.apply(r,t)).next())});const xA=function(t,e){const n=t.split(","),o=n[0].match(/:(.*?);/)[1],i=atob(n[1]);let a=i.length;const s=new Uint8Array(a);for(;a--;)s[a]=i.charCodeAt(a);return new Blob([s],{type:o})},bA=r=>sr(void 0,null,function*(){return new Promise((t,e)=>{let n=new Image;(r==null?void 0:r.indexOf("educoder.net"))>-1?n.setAttribute("crossOrigin","educoder.net"):n.setAttribute("crossOrigin","aliyuncs.com"),n.onload=function(){let o=document.createElement("canvas");o.width=this.naturalWidth,o.height=this.naturalHeight,o.getContext("2d").drawImage(n,0,0);let i=o.toDataURL("image/png");t(i)},n.src=r,n.onerror=()=>{e(new Error("\u56FE\u7247\u6D41\u5F02\u5E38")),we.ZP.error("\u60A8\u7684\u8EAB\u4EFD\u7167\u7247\u5F02\u5E38\uFF0C\u8BF7\u62CD\u7167\u540E\u63D0\u4EA4\u81F3\u4EBA\u5DE5\u5BA1\u6838")}})});var wA=(0,D.forwardRef)(({outputResult:r,identity_url:t,onCameraReady:e,defaultOpen:n},o)=>{const i=(0,Te.useParams)(),a=window.ENV==="build"?"/react/build/weights":"/weights",s=(0,D.useRef)(),u=(0,D.useRef)(),c=(0,D.useRef)(),l=(0,D.useRef)(!1);let f=(0,D.useRef)();const[h,d]=(0,D.useState)(!0),[p,v]=(0,D.useState)(""),[g,m]=(0,D.useState)(""),w=(0,D.useRef)(!1),E=(0,D.useRef)(""),[b]=(0,D.useState)(!0),C=.7,S=224,N="\u5BA1\u6838\u5931\u8D25",O=(0,D.useMemo)(()=>new Jf({inputSize:S,scoreThreshold:C}),[]),F=()=>sr(void 0,null,function*(){yield Wt.ssdMobilenetv1.loadFromUri("https://www-cdn.educoder.net/weights/"),yield uA("https://www-cdn.educoder.net/weights/"),yield cA("https://www-cdn.educoder.net/weights/"),yield lA("https://www-cdn.educoder.net/weights/"),oe(!0)});(0,D.useEffect)(()=>{n&&F()},[n]),(0,D.useImperativeHandle)(o,()=>({handleStop:se,handleRemove:ue,handlePlay:oe,startDiscern:X,handleUploadImage:V}));const P=xe=>sr(void 0,null,function*(){if(!s.current){setTimeout(()=>P(xe));return}navigator.mediaDevices.getUserMedia({video:{width:640,height:360}}).then(ke=>sr(void 0,null,function*(){if("srcObject"in s.current?s.current.srcObject=ke:s.current.src=window.URL.createObjectURL(ke),s.current.onloadedmetadata=function(Ne){d(!1),s.current.play()},xe){const Ne=document.createElement("img");Ne.src=yield bA(t+"?t="+new Date().getTime()),f.current=yield iu(Ne,O).withFaceLandmarks().withFaceDescriptor()}})).catch(function(ke){console.log("err:",ke,ke.message),ke.message==="Permission denied"||ke.name==="NotAllowedError"?we.ZP.error("\u60A8\u5DF2\u62D2\u7EDD\u4E86\u83B7\u53D6\u6444\u50CF\u5934"):ke.message!="\u56FE\u7247\u6D41\u5F02\u5E38"&&we.ZP.error("\u6444\u50CF\u5934\u83B7\u53D6\u5931\u8D25\uFF0C\u6216\u60A8\u5DF2\u62D2\u7EDD\u4E86\u83B7\u53D6\u6444\u50CF\u5934")})}),U=(xe,ke)=>sr(void 0,null,function*(){return new Promise(Ne=>sr(void 0,null,function*(){const et=new FormData;et.append("file",xA(xe,"1")),et.append("1","123");var Ye=new window.XMLHttpRequest;Ye.withCredentials=!0,Ye.addEventListener("load",function(st){let xt=JSON.parse(st.target.responseText);(0,AA.ZP)(`/api/exercises/${i.categoryId}/upload_identify_photo.json`,{method:"post",body:{attachment_id:xt.id}}),Ne(xt)},!1),Ye.addEventListener("error",function(st){console.error(st)},!1),Ye.open("POST",`${ENV.API_SERVER}/api/attachments.json`),Ye.send(et)}))}),Q=xe=>sr(void 0,null,function*(){try{u.current.width=s.current.videoWidth,u.current.height=360,yield u.current.getContext("2d").drawImage(s.current,0,0,u.current.width,u.current.height),E.current=u.current.toDataURL("image/png"),xe===1&&U(E.current,xe)}catch(ke){}}),V=xe=>sr(void 0,null,function*(){return new Promise(ke=>sr(void 0,null,function*(){yield u.current.getContext("2d").drawImage(s.current,0,0,u.current.width,u.current.height),yield U(E.current,xe),ke()}))}),X=()=>sr(void 0,null,function*(){l.current=!0;const xe=yield iu(s.current,O).withFaceLandmarks().withFaceDescriptor();if(xe&&f.current){const Ne=new gA(xe).findBestMatch(f.current.descriptor);v(Ne._distance<.43?"\u8BC6\u522B\u6210\u529F":N),Q(Ne._distance<.43?1:0),setTimeout(()=>{r==null||r({content:Ne._distance<.43?"\u8BC6\u522B\u6210\u529F":N,success:Ne._distance<.43})},1e3),w.current=!0}else Q(0),v(N),setTimeout(()=>{r==null||r({content:N,success:!1})},1e3);setTimeout(()=>{s.current.pause()},600)}),te=()=>sr(void 0,null,function*(){var xe,ke;if((xe=s.current)!=null&&xe.paused||(ke=s.current)!=null&&ke.ended)return setTimeout(()=>te());const Ne=yield iu(s.current,O).withFaceLandmarks().withFaceDescriptor();l.current||(l.current=!0,e(!0)),Ne&&s.current?(m(""),he(s.current,c.current,[Ne],b)):m("\u8BF7\u5C06\u8138\u90E8\u79FB\u52A8\u81F3\u53D6\u666F\u6846\u5185"),w.current||setTimeout(()=>te())}),ue=()=>{try{s.current.srcObject.getTracks().forEach(function(Ne){Ne.stop()}),l.current=!1}catch(xe){}},se=()=>{d(!1);try{l.current=!1}catch(xe){}},oe=xe=>{l.current=!1,w.current=!1,u.current.getContext("2d").clearRect(0,0,640,480),v(""),d(!0);try{P(xe||!1)}catch(ke){}},he=(xe,ke,Ne,et=!0)=>{const Ye=pe(xe,ke,Ne);et&&Om(ke,Ye.map(st=>st.detection))},pe=(xe,ke,Ne)=>{const{width:et,height:Ye}=xe instanceof HTMLVideoElement?Ds(xe):xe;return ke.width=et,ke.height=Ye,oh(Ne,{width:et,height:Ye})};return Do.createElement("div",{className:yA.wrp},Do.createElement(mA.Z,{spinning:h,tip:"\u6B63\u5728\u542F\u52A8\u6444\u50CF\u5934\uFF0C\u8BF7\u7A0D\u540E..."},Do.createElement("video",{onPlay:te,ref:s,id:"inputVideo",autoPlay:!0,muted:!0}),Do.createElement("canvas",{style:{zIndex:2},ref:c}),Do.createElement("canvas",{ref:u}),Do.createElement("div",{className:"c-red mt5 tc",style:{height:22}},p," ",g)))}),EA="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAABEAAAAHoCAYAAABJiJprAAAAAXNSR0IArs4c6QAAQABJREFUeAHsnQegXFW1/r+Z23vqTe89IYEAoQpBRBBFLIiU518BeYoFffr08RQVEbF3fE9AEaygwEOUJh1CaIkEEpIQ0utNQurtbe7815q5J/fM3Jkz7ZwzZ858S4c5ZZ9dfvvumzvfrL1WAHEWDocDcZd4SgIkQAIkQAIkQAIkQAIkQAIkQAIkQAIFRSAQCITNHT4idlD4MGPhMQmQAAmQAAmQAAmQAAmQAAmQAAmQgB8IGEJIRABJV/y4/vrrjwgmfoDAMZAACZAACZAACZAACZAACZAACZAACRQugeuuuy7GyyPZSFQESSmAHBE9rrsO1/XXdPfdd1MISUaV10mABEiABEiABEiABEiABEiABEiABBwlcOGFF0aEj+u1lesj/4WVGBIRQJJ5fxjCh1QQcrTXrJwESIAESIAESIAESIAESIAESIAESIAEciQgOkaJVpFMCAkmqj8ifojHx9y5c+npkQgQr5EACZAACZAACZAACZAACZAACZAACXiKQETDEC3DcOiI79wgAeSI+MFtLvGseE4CJEACJEACJEACJEACJEACJEACJOBhAnNVy0giggwSQHQckQfkfeTIkfQA8fDEsmskQAIkQAIkQAIkQAIkQAIkQAIkQAJRAoaGYWga8VxiBBD1/pC9MpEy+uCbb75JASSeGM9JgARIgARIgARIgARIgARIgARIgAQ8R0A1DEMEUW0jfitMjACivdcML2v6xY+hQ4dSAPHclLJDJEACJEACJEACJEACJEACJEACJEAC8QRUw1ARRDWNRNlrYwWQfu+PxVrLccdh9+7dFEDiifKcBEiABEiABEiABEiABEiABEiABEjAcwQiGoZoGRFNQ3vXr3EYHT0igES2v/RfVcVk6KZNgenTpxvl+E4CJEACJEACJEACJEACJEACJEACJEACniWgGoZqGUY4Dw3wYd4Gc0QAMUawZs2aI14fe/bsOXJs3Oc7CZAACZAACZAACZAACZAACZAACZAACXiNgFnDMGsbRj9jBJDIHpnFUWcRbn8xEPGdBEiABEiABEiABEiABEiABEiABEigEAgc0TJE24iPA1KacACyZwZ79+Jgays9QBIC4kUSIAESIAESIAESIAESIAESIAESIAEvEThYUxMoHTUqjMZGoKVlUNdiPEAG3eUFEiABEiABEiABEiABEiABEiABEiABEvABAQogPphEDoEESIAESIAESIAESIAESIAESIAESMCaAAUQaz68SwIkQAIkQAIkQAIkQAIkQAIkQAIk4AMCFEB8MIkcAgmQAAmQAAmQAAmQAAmQAAmQAAmQgDUBCiDWfHiXBEiABEiABEiABEiABEiABEiABEjABwQogPhgEjkEEiABEiABEiABEiABEiABEiABEiABawIUQKz58C4JkAAJkAAJkAAJkAAJkAAJkAAJkIAPCFAA8cEkcggkQAIkQAIkQAIkQAIkQAIkQAIkQALWBCiAWPPhXRIgARIgARIgARIgARIgARIgARIgAR8QoADig0nkEEiABEiABEiABEiABEiABEiABEiABKwJUACx5sO7JEACJEACJEACJEACJEACJEACJEACPiBAAcQHk8ghkAAJkAAJkAAJkAAJkAAJkAAJkAAJWBOgAGLNh3dJgARIgARIgARIgARIgARIgARIgAR8QIACiA8mkUMgARIgARIgARIgARIgARIgARIgARKwJkABxJoP75IACZAACZAACZAACZAACZAACZAACfiAAAUQH0wih0ACJEACJEACJEACJEACJEACJEACJGBNgAKINR/eJQESIAESIAESIAESIAESIAESIAES8AEBCiA+mEQOgQRIgARIgARIgARIgARIgARIgARIwJoABRBrPrxLAiRAAiRAAiRAAiRAAiRAAiRAAiTgAwIUQHwwiRwCCZAACZAACZAACZAACZAACZAACZCANQEKINZ8eJcESIAESIAESIAESIAESIAESIAESMAHBCiA+GASOQQSIAESIAESIAESIAESIAESIAESIAFrAhRArPnwLgmQAAmQAAmQAAmQAAmQAAmQAAmQgA8IUADxwSRyCCRAAiRAAiRAAiRAAiRAAiRAAiRAAtYEKIBY8+FdEiABEiABEiABEiABEiABEiABEiABHxCgAOKDSeQQSIAESIAESIAESIAESIAESIAESIAErAlQALHmw7skQAIkQAIkQAIkQAIkQAIkQAIkQAI+IEABxAeTyCGQAAmQAAmQAAmQAAmQAAmQAAmQAAlYE6AAYs2Hd0mABEiABEiABEiABEiABEiABEiABHxAgAKIDyaRQyABEiABEiABEiABEiABEiABEiABErAmQAHEmg/vkgAJkAAJkAAJkAAJkAAJkAAJkAAJ+IAABRAfTCKHQAIkQAIkQAIkQAIkQAIkQAIkQAIkYE2AAog1H94lARIgARIgARIgARIgARIgARIgARLwAQEKID6YRA6BBEiABEiABEiABEiABEiABEiABEjAmgAFEGs+vEsCJEACJEACJEACJEACJEACJEACJOADAhRAfDCJHAIJkAAJkAAJkAAJkAAJkAAJkAAJkIA1AQog1nx4lwRIgARIgARIgARIgARIgARIgARIwAcEKID4YBI5BBIgARIgARIgARIgARIgARIgARIgAWsCFECs+fAuCZAACZAACZAACZAACZAACZAACZCADwhQAPHBJHIIJEACJEACJEACJEACJEACJEACJEAC1gQogFjz4V0SIAESIAESIAESIAESIAESIAESIAEfEKAA4oNJ5BBIgARIgARIgARIgARIgARIgARIgASsCVAAsebDuyRAAiRAAiRAAiRAAiRAAiRAAiRAAj4gQAHEB5PIIZAACZAACZAACZAACZAACZAACZAACVgToABizYd3SYAESIAESIAESIAESIAESIAESIAEfECAAogPJpFDIAESIAESIAESIAESIAESIAESIAESsCZAAcSaD++SAAmQAAmQAAmQAAmQAAmQAAmQAAn4gAAFEB9MIodAAiRAAiRAAiRAAiRAAiRAAiRAAiRgTYACiDUf3iUBEiABEiABEiABEiABEiABEiABEvABAQogPphEDoEESIAESIAESIAESIAESIAESIAESMCaAAUQaz68SwIkQAIkQAIkQAIkQAIkQAIkQAIk4AMCFEB8MIkcAgmQAAmQAAmQAAmQAAmQAAmQAAmQgDUBCiDWfHiXBEiABEiABEiABEiABEiABEiABEjABwQogPhgEjkEEiABEiABEiABEiABEiABEiABEiABawIUQKz58C4JkAAJkAAJkAAJkAAJkAAJkAAJkIAPCFAA8cEkcggkQAIkQAIkQAIkQAIkQAIkQAIkQALWBCiAWPPhXRIgARIgARIgARIgARIgARIgARIgAR8QoADig0nkEEiABEiABEiABEiABEiABEiABEiABKwJUACx5sO7JEACJEACJEACJEACJEACJEACJEACPiBAAcQHk8ghkAAJkAAJkAAJkAAJkAAJkAAJkAAJWBOgAGLNh3dJgARIgARIgARIgARIgARIgARIgAR8QIACiA8mkUMgARIgARIgARIgARIgARIgARIgARKwJkABxJoP75IACZAACZAACZAACZAACZAACZAACfiAAAUQH0wih0ACJEACJEACJEACJEACJEACJEACJGBNgAKINR/eJQESIAESIAESIAESIAESIAESIAES8AEBCiA+mEQOgQRIgARIgARIgARIgARIgARIgARIwJoABRBrPrxLAiRAAiRAAiRAAiRAAiRAAiRAAiTgAwIUQHwwiRwCCZAACZAACZAACZAACZAACZAACZCANQEKINZ8eJcESIAESIAESIAESIAESIAESIAESMAHBCiA+GASOQQSIAESIAESIAESIAESIAESIAESIAFrAhRArPnwLgmQAAmQAAmQAAmQAAmQAAmQAAmQgA8IlPpgDBwCCZAACZAACZAACZBACgJdPcCWPcDGJnntBjbJ+75moK0TaJVX5L0j+q5V1VQCtVX973Ks5yPqgaljgGmj5SXvk0cBFWUpGuZtEiABcP3xh4AEvEGAAog35iFlL3r7gG75T6gvgL6+cMryLEACJEACJJCcQDAYQEkwjPLSIOT/NBLwJYENInA8v0Zea4FVW4Cd+yF/Q6Q/1O5W4KC8rCwo62fccGD+ZOCUOfKaC0wXYYRGAsVOgOuv2H8COH6vEqAA4tWZ6e9XSMSOju6wCB9GRyl+GCT4TgIkQALZElAhWT8I9oiwXCIf4KrKVRAJZFsdnyMBTxBQseLRV4Cl/aLH3kPOd0vX0fa3oq+HlkXbaxwSFUNOFTHk7GOBobXO94MtkEC+CXD95XsG2D4JpEeAAkh6nPJSSr0+2ruAcL/mUVEWQFlJAPptC/9Mz8uUsFESIAEfENBfqRHxIxQWl+SowNwmv2urK0BvEB/Mb7ENobsXeHwFcO9S4OlVKurln4AKL397Ifr66u+AM+YDF5wKnLUQ4nWV//6xByRgFwGuP7tIsh4ScI8A/xlyj3VGLannR1T8CEe+nayuCIJfTmaEkIVJgARIICEBFZDV60M9PspLA/K7VrcXRn/n1ogIQk+QhNh40WMEVm4G7noW+MdLwOE2j3XO1B0VZB4TgUZfDTXAe08ELj4dWDDFVIiHJFBgBLj+CmzC2F0SMBGgAGKC4aVD3fainh/6R3pNZZAeH16aHPaFBEjANwRUWNbfsW2d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ysQfqZx0Mr/7kPRBw0nrySFfYoKAICAICAKCgCAgCAgCgkARIBD7F3QRDE6GIAhkFYE+g7PafCqNNyxcSnWz5lHTspVkrWWvk1gpdTkVatPyVbRy6iya/+n39Mcr7/PnA2pYkAdZPyAu25G1UArclq1qoxBuCuO2+PwuWx37ONbUX6iB0+D279qDNt58B0V4dGPPj+FD1wuTH9aK1eqI/fv1p+b61dShvJw01gIZvslWVNlQT01za8maHcokk0LXpKogIAikiUBdXR09/PDD9NZbb6XZUmZ2b2xsTKmhr7/+ms4880z6/vvvU9pv7Nix9P777ye1z+eff05TpkxJqq5UKl0EVqxYQatXh/6vyzYKd999N/32228xDzN//nxCne+++y5mHe+GpUuXeotirj/wwAOET6asublZtZfoPp43bx499NBDtHZt7N8kmeqTtCMIZAoB8QDJFJLSTukhAC0QeIKsSv4/qGyA1Lh4Gc356OuIpqEoAq8OfAx4d3D2FZMzgQQbmzj9abSAZrAhtR+4EQfLxAqyw/QemImW2r2N5XVrKTjXos4dGf9kst6k2GOTSSyQH41rY2vMaJxFR5s/lyr1Vk+P8eN/YH2PAA1hbRCEZNk4511C4TALF82n+vpWTRvDZAFXlrTRehS2HkuK0Ep1QSArCLz44os0adKkqLYPOugg2nzzzaPK77vvPnrhhRf4sa3RwIEDaeONN46q4y344YcfCMRJOjZs2DDq169fRBNo84wzzqD111+frrjiCtWniAo+KwMGDFCTvJ49e9JWW23lU8O/6P7776empibac889IyqgrMLltRbklN7nn38+7bXXXnTdddeF6yKL1cSJE5PCK7yTLBQtAiDuTj31VDJYn+2ee+6h7t3591qLvf7667Rs2TJnNanvwYMH0+jRo33r/vzzz/T444/TjBkz6Pbbb1d1li9fTtXV1RQIhKZaCxcuVHWqqqpo66239m3HXfjMM88QngVXX3017bbbbuFNsUiR9957T9U5/PDDw3XdCzU1NeG+uMtjLYPQALGB55BzH1v8+3Hu3Lk0a9Ys9fnmm28IhCfK0X6sY8c6hpQLAu2FgBAg7YW8HLc4EOjDk/Y6TonrQyrkaoBGRTkZnGbWVDojoaMilanJniD4sD+Ir+Ftf4eeXal6YD+qHjzAt07OCrv05MwxLAZbJLa6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",CA=H(89392),IA=Object.defineProperty,la=Object.getOwnPropertySymbols,ih=Object.prototype.hasOwnProperty,ah=Object.prototype.propertyIsEnumerable,sh=(r,t,e)=>t in r?IA(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,au=(r,t)=>{for(var e in t||(t={}))ih.call(t,e)&&sh(r,e,t[e]);if(la)for(var e of la(t))ah.call(t,e)&&sh(r,e,t[e]);return r},SA=(r,t)=>{var e={};for(var n in r)ih.call(r,n)&&t.indexOf(n)<0&&(e[n]=r[n]);if(r!=null&&la)for(var n of la(r))t.indexOf(n)<0&&ah.call(r,n)&&(e[n]=r[n]);return e},co=(r,t,e)=>new Promise((n,o)=>{var i=u=>{try{s(e.next(u))}catch(c){o(c)}},a=u=>{try{s(e.throw(u))}catch(c){o(c)}},s=u=>u.done?n(u.value):Promise.resolve(u.value).then(i,a);s((e=e.apply(r,t)).next())});const{Countdown:RA}=ce.default,{Step:BA}=Be.default,vy=null,gy={0:"c-red-ee4",1:"c-green"},my=null,kA=r=>{var t=r,{globalSetting:e,loading:n,user:o,exercise:i,dispatch:a}=t,s=SA(t,["globalSetting","loading","user","exercise","dispatch"]),u;const c=(0,Te.useParams)(),[l,f]=(0,D.useState)(0),[h,d]=(0,D.useState)(!1),[p,v]=(0,D.useState)(!1),[g,m]=(0,D.useState)(!1),[w,E]=(0,D.useState)(0),[b,C]=(0,D.useState)({}),S=(0,D.useRef)(),N=(0,D.useRef)(!0),O=[{title:"\u91C7\u96C6\u7167\u7247",content:"First-content"},{title:"\u5BA1\u6838\u7ED3\u679C",content:"Second-content"},{title:"\u5F00\u542F\u624B\u673A\u5F55\u5236",content:"Last-content"}].filter(V=>b!=null&&b.open_phone_video_recording?!0:V.content!=="Last-content"),F=()=>co(void 0,null,function*(){return new Promise(V=>co(void 0,null,function*(){const X=yield(0,ve.PJ)(au({},c));C(au({},X)),V(X)}))}),P=()=>co(void 0,null,function*(){var V;const X=yield F();X!=null&&X.identity_verify||f(2),X!=null&&X.can_start&&X.countdown_time===0?f(2):(X==null?void 0:X.identity_photo_state)==="rejected"?(N.current=!1,E(1)):(X==null?void 0:X.identity_photo_state)==="passed"&&(N.current=!1,(V=S==null?void 0:S.current)==null||V.handleStop(),b!=null&&b.open_phone_video_recording||f(2))}),U=()=>co(void 0,null,function*(){var V;const X=yield F();(X==null?void 0:X.identity_photo_state)==="submitted"||((X==null?void 0:X.identity_photo_state)==="rejected"?(N.current=!1,E(2)):(X==null?void 0:X.identity_photo_state)==="passed"&&(N.current=!1,(V=S==null?void 0:S.current)==null||V.handleStop(),E(1),b!=null&&b.open_phone_video_recording||f(2))),(X==null?void 0:X.identity_photo_state)!=="passed"&&N.current&&setTimeout(()=>{U()},30*1e3)}),Q=()=>{var V;d(!1),(V=S==null?void 0:S.current)==null||V.startDiscern()};return(0,D.useEffect)(()=>(P(),console.log("captureRef:",S),()=>{E(0),m(!1),v(!1),f(0)}),[]),D.createElement("div",{className:"p30 bg-white minHb100 edu-container mt20"},(b==null?void 0:b.identity_verify)&&D.createElement(D.Fragment,null,D.createElement("div",{className:"tc font16 blod"},"\u8EAB\u4EFD\u9A8C\u8BC1"),D.createElement("div",{className:Y.steps},D.createElement(Be.default,{current:l},O.map(V=>D.createElement(BA,{key:V.title,title:V.title}))))),D.createElement("div",{className:l===0?"":"hide"},D.createElement("div",{className:"tc mt50"},"\u8BF7\u4FDD\u8BC1\u5468\u56F4\u5149\u7EBF\u5145\u8DB3\uFF0C\u4E94\u5B98\u6E05\u6670\u53EF\u89C1\uFF01"),!p&&D.createElement("div",{className:"tc"},D.createElement("img",{width:536,src:EA,className:"mt30"})),D.createElement("div",{className:p?"":"hide"},D.createElement(wA,{ref:S,onCameraReady:V=>{d(V)},defaultOpen:b==null?void 0:b.identity_verify,identity_url:(0,de.Tv)((u=o==null?void 0:o.userInfo)==null?void 0:u.identity_url),outputResult:V=>{V.success?(we.ZP.success({content:"\u4EBA\u8138\u8BC6\u522B\u6210\u529F",key:"checkapi"}),f(2)):m(!0),d(!1)}})),p&&D.createElement(D.Fragment,null,g?D.createElement("div",{className:"tc mb30 mt15"},D.createElement($.ZP,{type:"primary",onClick:()=>{var V;(V=S==null?void 0:S.current)==null||V.handlePlay(),C(au({},{})),m(!1)}},"\u91CD\u65B0\u8BC6\u522B"),D.createElement($.ZP,{type:"primary",className:"ml90",onClick:()=>co(void 0,null,function*(){var V;yield(V=S==null?void 0:S.current)==null?void 0:V.handleUploadImage(0),N.current=!0,f(1),E(0),m(!1),U()})},"\u4EBA\u5DE5\u5BA1\u6838")):h&&D.createElement("div",{className:"tc mb30 mt15"},D.createElement($.ZP,{type:"primary",onClick:(0,CA.throttle)(Q,2e3)},"\u5F00\u59CB\u8BC6\u522B"))),!p&&D.createElement("div",{className:"tc mb30 mt15"},D.createElement($.ZP,{type:"primary",onClick:()=>{v(!0)}},"\u5F00\u59CB\u91C7\u96C6"))),l===1&&D.createElement("div",{className:"tc"},w===0&&D.createElement(D.Fragment,null,D.createElement("div",{className:"tc mt50"},D.createElement("span",{className:"c-blue font50 iconfont icon-dengdaishenhe"}),D.createElement("br",null),"\u4EBA\u5DE5\u5BA1\u6838\u4E2D...",D.createElement("br",null),"\u7533\u8BF7\u5DF2\u63D0\u4EA4\uFF0C\u76D1\u63A7\u8001\u5E08\u5BA1\u6838\u4E2D\uFF0C\u8BF7\u8010\u5FC3\u7B49\u5F85\uFF01"),D.createElement($.ZP,{type:"primary",className:"mt50",onClick:()=>co(void 0,null,function*(){const V=yield F();(V==null?void 0:V.identity_photo_state)==="submitted"?we.ZP.warning({content:"\u6B63\u5728\u7B49\u5F85\u8001\u5E08\u5BA1\u6838\u4E2D\uFF0C\u8BF7\u7A0D\u540E...",key:"sh1"}):(V==null?void 0:V.identity_photo_state)==="rejected"?(E(2),N.current=!1):(V==null?void 0:V.identity_photo_state)==="passed"&&(N.current=!1,E(1),b!=null&&b.open_phone_video_recording||f(2))})},"\u67E5\u770B\u5BA1\u6838\u7ED3\u679C")),w===1&&D.createElement(D.Fragment,null,D.createElement("div",{className:"tc mt50"},D.createElement("span",{className:"c-green font50 iconfont icon-tongguo"}),D.createElement("br",null),"\u8EAB\u4EFD\u9A8C\u8BC1\u5BA1\u6838\u901A\u8FC7\u3002"),(b==null?void 0:b.open_phone_video_recording)&&D.createElement($.ZP,{type:"primary",className:"mt50",onClick:()=>f(2)},"\u4E0B\u4E00\u6B65")),w===2&&D.createElement(D.Fragment,null,D.createElement("div",{className:"tc mt50"},D.createElement("span",{className:"c-red font50 iconfont icon-hongsejingshi"}),D.createElement("br",null),"\u8EAB\u4EFD\u9A8C\u8BC1\u5BA1\u6838\u4E0D\u901A\u8FC7\u3002\u8BF7\u91CD\u65B0\u62CD\u7167\u9A8C\u8BC1\u3002"),D.createElement("div",{className:"mt20"},D.createElement(ne.Z,null,D.createElement(M.Z,{className:"tr",flex:"430px"},"\u5931\u8D25\u539F\u56E0\uFF1A"),D.createElement(M.Z,null,b==null?void 0:b.identity_photo_comment)),D.createElement(ne.Z,{className:"mt30"},D.createElement(M.Z,{className:"tr",flex:"430px"},"\u91C7\u96C6\u7167\u7247\uFF1A"),D.createElement(M.Z,null,D.createElement("img",{src:(0,de.Tv)(b==null?void 0:b.identity_photo_url),width:200}))),D.createElement(ne.Z,null,D.createElement(M.Z,{className:"tr",flex:"430px"}),D.createElement(M.Z,null,D.createElement($.ZP,{type:"primary",className:"mt50",onClick:()=>{var V;f(0),d(!1),m(!1),v(!1),(V=S==null?void 0:S.current)==null||V.handlePlay()}},"\u91CD\u65B0\u8BA4\u8BC1")))))),l===2&&D.createElement(D.Fragment,null,D.createElement("div",{className:"tc mt50"},!(b!=null&&b.open_phone_video_recording)&&D.createElement(D.Fragment,null,(b==null?void 0:b.countdown_time)<=0?D.createElement(D.Fragment,null,D.createElement("div",{className:"tc mt50"},D.createElement("span",{className:"c-green font50 iconfont icon-tongguo"}),D.createElement("br",null),"\u8EAB\u4EFD\u9A8C\u8BC1\u5BA1\u6838\u901A\u8FC7\u3002")):"\u8003\u8BD5\u5373\u5C06\u5F00\u59CB\uFF0C\u8BF7\u8010\u5FC3\u7B49\u5F85..."),(b==null?void 0:b.open_phone_video_recording)&&D.createElement(D.Fragment,null,(b==null?void 0:b.countdown_time)<=0?D.createElement("div",{className:"tc"},"\u6839\u636E\u8003\u8BD5\u89C4\u5B9A\uFF0C\u8BF7\u6253\u5F00\u5FAE\u4FE1\u626B\u4E00\u626B\uFF0C\u626B\u7801\u4E0B\u9762\u7684\u4E8C\u7EF4\u7801\u5F00\u542F\u624B\u673A\u5F55\u5236\u89C6\u9891",D.createElement("br",null),D.createElement("span",{className:"c-blue",style:{cursor:"default"},onClick:()=>{K.default.info({icon:null,title:"\u67E5\u770B\u64CD\u4F5C\u6307\u5F15",className:"custom-modal-divider",width:540,content:D.createElement(ne.Z,null,D.createElement(M.Z,{flex:"178px"},D.createElement("img",{width:148,src:"/images/operation_guidance.png"})),D.createElement(M.Z,{flex:"1"},"\u8BF7\u70B9\u51FB\u53F3\u4E0A\u89D2\u201C\u2026\u201D\uFF0C\u9009\u62E9",D.createElement("span",{className:"c-orange"},"Safari\u4E2D\u6253\u5F00"),"\u6216\u8005",D.createElement("span",{className:"c-orange"},"\u201C\u5728\u9ED8\u8BA4\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u201D"),"\u540E\uFF0C\u6D4F\u89C8\u5668\u6253\u5F00\u540E\u8BF7\u70B9\u51FB\u5F00\u59CB\u5F55\u5236\u6309\u94AE\uFF0C\u53EF\u4EE5\u5F00\u542F\u624B\u673A\u5F55\u5236\u89C6\u9891\u3002"))})}},"\u5982\u82F9\u679C\u624B\u673A\u5FAE\u4FE1\u626B\u63CF\u4E8C\u7EF4\u7801\u540E\uFF0C\u51FA\u73B0\u70B9\u51FB\u5F00\u59CB\u5F55\u5236\u65E0\u54CD\u5E94\uFF0C\u8BF7\u67E5\u770B\u64CD\u4F5C\u6307\u5F15\u3002")):"\u8003\u8BD5\u5373\u5C06\u5F00\u59CB\uFF0C\u8BF7\u8010\u5FC3\u7B49\u5F85...")),(b==null?void 0:b.open_phone_video_recording)&&D.createElement("div",{className:Y.qrcode},D.createElement(Ee(),{value:`https://${document.domain}/live-push.html?id=${c.categoryId}&login=${c.login}&cookie=${(0,de.ej)("_educoder_session")}`})),(b==null?void 0:b.countdown_time)>0&&D.createElement("div",{className:"tc mt20"},D.createElement(RA,{value:Date.now()+(b==null?void 0:b.countdown_time)*1e3,valueStyle:{color:"#cf1322",fontSize:40},onFinish:()=>{F()}})),D.createElement("div",{className:"tc mb30 mt50"},D.createElement($.ZP,{type:"primary",onClick:()=>co(void 0,null,function*(){var V;const X=yield F();X!=null&&X.can_start&&(X==null?void 0:X.countdown_time)<=0?((V=S==null?void 0:S.current)==null||V.handleRemove(),b!=null&&b.open_phone_video_recording?X!=null&&X.video_url&&setTimeout(()=>{location.href=`/classrooms/${c.coursesId}/exercise/${c.categoryId}/users/${c.login}`},300):setTimeout(()=>{location.href=`/classrooms/${c.coursesId}/exercise/${c.categoryId}/users/${c.login}`},300)):(X==null?void 0:X.countdown_time)>0?we.ZP.warning({content:"\u8003\u8BD5\u6682\u672A\u5F00\u59CB\uFF0C\u8BF7\u7A0D\u540E..."}):we.ZP.warning({content:"\u8BF7\u6253\u5F00\u5FAE\u4FE1\u626B\u4E00\u626B\uFF0C\u5F00\u542F\u624B\u673A\u89C6\u9891\u5F55\u5236"})})},"\u5F00\u59CB\u8003\u8BD5"))))};var TA=(0,Te.connect)(({loading:r,user:t,exercise:e,globalSetting:n})=>({globalSetting:n,user:t,exercise:e,loading:r.effects}))(kA)},56762:function(Qt,$e,H){"use strict";H.d($e,{Z:function(){return Te}});var D=H(59301);function Te(){const[,ce]=D.useReducer(Be=>Be+1,0);return ce}},8628:function(Qt,$e,H){"use strict";var D=H(59301),Te=H(34280),ce=H(56762),Be=H(69507);function we(){let $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;const ne=(0,D.useRef)({}),M=(0,ce.Z)(),K=(0,Be.ZP)();return(0,Te.Z)(()=>{const Y=K.subscribe(de=>{ne.current=de,$&&M()});return()=>K.unsubscribe(Y)},[]),ne.current}$e.Z=we},93948:function(Qt,$e,H){"use strict";H.d($e,{Z:function(){return Mt}});var D=H(59301),Te=H(29679),ce=H(40001),Be=H(19248),we=H(99267),$=H(92310),ne=H.n($),M=H(2738),K=H(36355),Y=H(54476),de=H(33885),ve=H(75931),ae={percent:0,prefixCls:"rc-progress",strokeColor:"#2db7f5",strokeLinecap:"round",strokeWidth:1,trailColor:"#D9D9D9",trailWidth:1,gapPosition:"bottom"},Ee=function(){var Z=(0,D.useRef)([]),ee=(0,D.useRef)(null);return(0,D.useEffect)(function(){var Ie=Date.now(),De=!1;Z.current.forEach(function(Oe){if(Oe){De=!0;var Xe=Oe.style;Xe.transitionDuration=".3s, .3s, .3s, .06s",ee.current&&Ie-ee.current<100&&(Xe.transitionDuration="0s, 0s")}}),De&&(ee.current=Date.now())}),Z.current},ge=["className","percent","prefixCls","strokeColor","strokeLinecap","strokeWidth","style","trailColor","trailWidth","transition"],_e=function(Z){var ee=(0,de.Z)((0,de.Z)({},ae),Z),Ie=ee.className,De=ee.percent,Oe=ee.prefixCls,Xe=ee.strokeColor,Ve=ee.strokeLinecap,qe=ee.strokeWidth,ut=ee.style,it=ee.trailColor,lt=ee.trailWidth,bt=ee.transition,Gt=(0,ve.Z)(ee,ge);delete Gt.gapPosition;var Xt=Array.isArray(De)?De:[De],yt=Array.isArray(Xe)?Xe:[Xe],pt=Ee(),Nt=qe/2,wt=100-qe/2,ft="M ".concat(Ve==="round"?Nt:0,",").concat(Nt,`
L `).concat(Ve==="round"?wt:100,",").concat(Nt),j="0 0 100 ".concat(qe),dn=0;return D.createElement("svg",(0,Y.Z)({className:ne()("".concat(Oe,"-line"),Ie),viewBox:j,preserveAspectRatio:"none",style:ut},Gt),D.createElement("path",{className:"".concat(Oe,"-line-trail"),d:ft,strokeLinecap:Ve,stroke:it,strokeWidth:lt||qe,fillOpacity:"0"}),Xt.map(function(at,In){var mn=1;switch(Ve){case"round":mn=1-qe/100;break;case"square":mn=1-qe/2/100;break;default:mn=1;break}var Kn={strokeDasharray:"".concat(at*mn,"px, 100px"),strokeDashoffset:"-".concat(dn,"px"),transition:bt||"stroke-dashoffset 0.3s ease 0s, stroke-dasharray .3s ease 0s, stroke 0.3s linear"},Sn=yt[In]||yt[yt.length-1];return dn+=at,D.createElement("path",{key:In,className:"".concat(Oe,"-line-path"),d:ft,strokeLinecap:Ve,stroke:Sn,strokeWidth:qe,fillOpacity:"0",ref:function(ln){pt[In]=ln},style:Kn})}))},Et=_e,Pe=H(76190),be=H(42978),Se=H(47273),St=0,cn=(0,Se.Z)();function J(){var z;return cn?(z=St,St+=1):z="TEST_OR_SSR",z}var Zt=function(z){var Z=D.useState(),ee=(0,be.Z)(Z,2),Ie=ee[0],De=ee[1];return D.useEffect(function(){De("rc_progress_".concat(J()))},[]),z||Ie},ct=function(Z){var ee=Z.bg,Ie=Z.children;return D.createElement("div",{style:{width:"100%",height:"100%",background:ee}},Ie)};function rt(z,Z){return Object.keys(z).map(function(ee){var Ie=parseFloat(ee),De="".concat(Math.floor(Ie*Z),"%");return"".concat(z[ee]," ").concat(De)})}var Vt=D.forwardRef(function(z,Z){var ee=z.prefixCls,Ie=z.color,De=z.gradientId,Oe=z.radius,Xe=z.style,Ve=z.ptg,qe=z.strokeLinecap,ut=z.strokeWidth,it=z.size,lt=z.gapDegree,bt=Ie&&(0,Pe.Z)(Ie)==="object",Gt=bt?"#FFF":void 0,Xt=it/2,yt=D.createElement("circle",{className:"".concat(ee,"-circle-path"),r:Oe,cx:Xt,cy:Xt,stroke:Gt,strokeLinecap:qe,strokeWidth:ut,opacity:Ve===0?0:1,style:Xe,ref:Z});if(!bt)return yt;var pt="".concat(De,"-conic"),Nt=lt?"".concat(180+lt/2,"deg"):"0deg",wt=rt(Ie,(360-lt)/360),ft=rt(Ie,1),j="conic-gradient(from ".concat(Nt,", ").concat(wt.join(", "),")"),dn="linear-gradient(to ".concat(lt?"bottom":"top",", ").concat(ft.join(", "),")");return D.createElement(D.Fragment,null,D.createElement("mask",{id:pt},yt),D.createElement("foreignObject",{x:0,y:0,width:it,height:it,mask:"url(#".concat(pt,")")},D.createElement(ct,{bg:dn},D.createElement(ct,{bg:j}))))}),zt=Vt,Ut=100,qt=function(Z,ee,Ie,De,Oe,Xe,Ve,qe,ut,it){var lt=arguments.length>10&&arguments[10]!==void 0?arguments[10]:0,bt=Ie/100*360*((360-Xe)/360),Gt=Xe===0?0:{bottom:0,top:180,left:90,right:-90}[Ve],Xt=(100-De)/100*ee;ut==="round"&&De!==100&&(Xt+=it/2,Xt>=ee&&(Xt=ee-.01));var yt=Ut/2;return{stroke:typeof qe=="string"?qe:void 0,strokeDasharray:"".concat(ee,"px ").concat(Z),strokeDashoffset:Xt+lt,transform:"rotate(".concat(Oe+bt+Gt,"deg)"),transformOrigin:"".concat(yt,"px ").concat(yt,"px"),transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s",fillOpacity:0}},Ht=["id","prefixCls","steps","strokeWidth","trailWidth","gapDegree","gapPosition","trailColor","strokeLinecap","style","className","strokeColor","percent"];function Ce(z){var Z=z!=null?z:[];return Array.isArray(Z)?Z:[Z]}var re=function(Z){var ee=(0,de.Z)((0,de.Z)({},ae),Z),Ie=ee.id,De=ee.prefixCls,Oe=ee.steps,Xe=ee.strokeWidth,Ve=ee.trailWidth,qe=ee.gapDegree,ut=qe===void 0?0:qe,it=ee.gapPosition,lt=ee.trailColor,bt=ee.strokeLinecap,Gt=ee.style,Xt=ee.className,yt=ee.strokeColor,pt=ee.percent,Nt=(0,ve.Z)(ee,Ht),wt=Ut/2,ft=Zt(Ie),j="".concat(ft,"-gradient"),dn=wt-Xe/2,at=Math.PI*2*dn,In=ut>0?90+ut/2:-90,mn=at*((360-ut)/360),Kn=(0,Pe.Z)(Oe)==="object"?Oe:{count:Oe,space:2},Sn=Kn.count,$n=Kn.space,ln=Ce(pt),tn=Ce(yt),Lt=tn.find(function(Jr){return Jr&&(0,Pe.Z)(Jr)==="object"}),pn=Lt&&(0,Pe.Z)(Lt)==="object",vt=pn?"butt":bt,lo=qt(at,mn,0,100,In,ut,it,lt,vt,Xe),fo=Ee(),Oo=function(){var ho=0;return ln.map(function(W,wr){var Un=tn[wr]||tn[tn.length-1],er=qt(at,mn,ho,W,In,ut,it,Un,vt,Xe);return ho+=W,D.createElement(zt,{key:wr,color:Un,ptg:W,radius:dn,prefixCls:De,gradientId:j,style:er,strokeLinecap:vt,strokeWidth:Xe,gapDegree:ut,ref:function(Rn){fo[wr]=Rn},size:Ut})}).reverse()},hu=function(){var ho=Math.round(Sn*(ln[0]/100)),W=100/Sn,wr=0;return new Array(Sn).fill(null).map(function(Un,er){var wn=er<=ho-1?tn[0]:lt,Rn=wn&&(0,Pe.Z)(wn)==="object"?"url(#".concat(j,")"):void 0,ur=qt(at,mn,wr,W,In,ut,it,wn,"butt",Xe,$n);return wr+=(mn-ur.strokeDashoffset+$n)*100/mn,D.createElement("circle",{key:er,className:"".concat(De,"-circle-path"),r:dn,cx:wt,cy:wt,stroke:Rn,strokeWidth:Xe,opacity:1,style:ur,ref:function(li){fo[er]=li}})})};return D.createElement("svg",(0,Y.Z)({className:ne()("".concat(De,"-circle"),Xt),viewBox:"0 0 ".concat(Ut," ").concat(Ut),style:Gt,id:Ie,role:"presentation"},Nt),!Sn&&D.createElement("circle",{className:"".concat(De,"-circle-trail"),r:dn,cx:wt,cy:wt,stroke:lt,strokeLinecap:vt,strokeWidth:Ve||Xe,style:lo}),Sn?hu():Oo())},me=re,le={Line:Et,Circle:me},Me=H(6848),Qe=H(30071);function Ge(z){return!z||z<0?0:z>100?100:z}function B(z){let{success:Z,successPercent:ee}=z,Ie=ee;return Z&&"progress"in Z&&(Ie=Z.progress),Z&&"percent"in Z&&(Ie=Z.percent),Ie}const Je=z=>{let{percent:Z,success:ee,successPercent:Ie}=z;const De=Ge(B({success:ee,successPercent:Ie}));return[De,Ge(Ge(Z)-De)]},$t=z=>{let{success:Z={},strokeColor:ee}=z;const{strokeColor:Ie}=Z;return[Ie||Qe.presetPrimaryColors.green,ee||null]},Rt=(z,Z,ee)=>{var Ie,De,Oe,Xe;let Ve=-1,qe=-1;if(Z==="step"){const ut=ee.steps,it=ee.strokeWidth;typeof z=="string"||typeof z=="undefined"?(Ve=z==="small"?2:14,qe=it!=null?it:8):typeof z=="number"?[Ve,qe]=[z,z]:[Ve=14,qe=8]=z,Ve*=ut}else if(Z==="line"){const ut=ee==null?void 0:ee.strokeWidth;typeof z=="string"||typeof z=="undefined"?qe=ut||(z==="small"?6:8):typeof z=="number"?[Ve,qe]=[z,z]:[Ve=-1,qe=8]=z}else(Z==="circle"||Z==="dashboard")&&(typeof z=="string"||typeof z=="undefined"?[Ve,qe]=z==="small"?[60,60]:[120,120]:typeof z=="number"?[Ve,qe]=[z,z]:(Ve=(De=(Ie=z[0])!==null&&Ie!==void 0?Ie:z[1])!==null&&De!==void 0?De:120,qe=(Xe=(Oe=z[0])!==null&&Oe!==void 0?Oe:z[1])!==null&&Xe!==void 0?Xe:120));return[Ve,qe]},Re=3,Ke=z=>Re/z*100;var Pt=z=>{const{prefixCls:Z,trailColor:ee=null,strokeLinecap:Ie="round",gapPosition:De,gapDegree:Oe,width:Xe=120,type:Ve,children:qe,success:ut,size:it=Xe}=z,[lt,bt]=Rt(it,"circle");let{strokeWidth:Gt}=z;Gt===void 0&&(Gt=Math.max(Ke(lt),6));const Xt={width:lt,height:bt,fontSize:lt*.15+6},yt=D.useMemo(()=>{if(Oe||Oe===0)return Oe;if(Ve==="dashboard")return 75},[Oe,Ve]),pt=De||Ve==="dashboard"&&"bottom"||void 0,Nt=Object.prototype.toString.call(z.strokeColor)==="[object Object]",wt=$t({success:ut,strokeColor:z.strokeColor}),ft=ne()(`${Z}-inner`,{[`${Z}-circle-gradient`]:Nt}),j=D.createElement(me,{percent:Je(z),strokeWidth:Gt,trailWidth:Gt,strokeColor:wt,strokeLinecap:Ie,trailColor:ee,prefixCls:Z,gapDegree:yt,gapPosition:pt});return D.createElement("div",{className:ft,style:Xt},lt<=20?D.createElement(Me.Z,{title:qe},D.createElement("span",null,j)):D.createElement(D.Fragment,null,j,qe))},Tt=function(z,Z){var ee={};for(var Ie in z)Object.prototype.hasOwnProperty.call(z,Ie)&&Z.indexOf(Ie)<0&&(ee[Ie]=z[Ie]);if(z!=null&&typeof Object.getOwnPropertySymbols=="function")for(var De=0,Ie=Object.getOwnPropertySymbols(z);De<Ie.length;De++)Z.indexOf(Ie[De])<0&&Object.prototype.propertyIsEnumerable.call(z,Ie[De])&&(ee[Ie[De]]=z[Ie[De]]);return ee};const At=z=>{let Z=[];return Object.keys(z).forEach(ee=>{const Ie=parseFloat(ee.replace(/%/g,""));isNaN(Ie)||Z.push({key:Ie,value:z[ee]})}),Z=Z.sort((ee,Ie)=>ee.key-Ie.key),Z.map(ee=>{let{key:Ie,value:De}=ee;return`${De} ${Ie}%`}).join(", ")},jt=(z,Z)=>{const{from:ee=Qe.presetPrimaryColors.blue,to:Ie=Qe.presetPrimaryColors.blue,direction:De=Z==="rtl"?"to left":"to right"}=z,Oe=Tt(z,["from","to","direction"]);if(Object.keys(Oe).length!==0){const Xe=At(Oe);return{backgroundImage:`linear-gradient(${De}, ${Xe})`}}return{backgroundImage:`linear-gradient(${De}, ${ee}, ${Ie})`}};var Dt=z=>{const{prefixCls:Z,direction:ee,percent:Ie,size:De,strokeWidth:Oe,strokeColor:Xe,strokeLinecap:Ve="round",children:qe,trailColor:ut=null,success:it}=z,lt=Xe&&typeof Xe!="string"?jt(Xe,ee):{backgroundColor:Xe},bt=Ve==="square"||Ve==="butt"?0:void 0,Gt={backgroundColor:ut||void 0,borderRadius:bt},Xt=De!=null?De:[-1,Oe||(De==="small"?6:8)],[yt,pt]=Rt(Xt,"line",{strokeWidth:Oe}),Nt=Object.assign({width:`${Ge(Ie)}%`,height:pt,borderRadius:bt},lt),wt=B(z),ft={width:`${Ge(wt)}%`,height:pt,borderRadius:bt,backgroundColor:it==null?void 0:it.strokeColor},j={width:yt<0?"100%":yt,height:pt};return D.createElement(D.Fragment,null,D.createElement("div",{className:`${Z}-outer`,style:j},D.createElement("div",{className:`${Z}-inner`,style:Gt},D.createElement("div",{className:`${Z}-bg`,style:Nt}),wt!==void 0?D.createElement("div",{className:`${Z}-success-bg`,style:ft}):null)),qe)},T=z=>{const{size:Z,steps:ee,percent:Ie=0,strokeWidth:De=8,strokeColor:Oe,trailColor:Xe=null,prefixCls:Ve,children:qe}=z,ut=Math.round(ee*(Ie/100)),it=Z==="small"?2:14,lt=Z!=null?Z:[it,De],[bt,Gt]=Rt(lt,"step",{steps:ee,strokeWidth:De}),Xt=bt/ee,yt=new Array(ee);for(let pt=0;pt<ee;pt++){const Nt=Array.isArray(Oe)?Oe[pt]:Oe;yt[pt]=D.createElement("div",{key:pt,className:ne()(`${Ve}-steps-item`,{[`${Ve}-steps-item-active`]:pt<=ut-1}),style:{backgroundColor:pt<=ut-1?Nt:Xe,width:Xt,height:Gt}})}return D.createElement("div",{className:`${Ve}-steps-outer`},yt,qe)},y=H(36237),A=H(17313),R=H(83116),x=H(37613);const I=z=>{const Z=z?"100%":"-100%";return new y.Keyframes(`antProgress${z?"RTL":"LTR"}Active`,{"0%":{transform:`translateX(${Z}) scaleX(0)`,opacity:.1},"20%":{transform:`translateX(${Z}) scaleX(0)`,opacity:.5},to:{transform:"translateX(0) scaleX(1)",opacity:0}})},L=z=>{const{componentCls:Z,iconCls:ee}=z;return{[Z]:Object.assign(Object.assign({},(0,A.Wf)(z)),{display:"inline-block","&-rtl":{direction:"rtl"},"&-line":{position:"relative",width:"100%",fontSize:z.fontSize,marginInlineEnd:z.marginXS,marginBottom:z.marginXS},[`${Z}-outer`]:{display:"inline-block",width:"100%"},[`&${Z}-show-info`]:{[`${Z}-outer`]:{marginInlineEnd:`calc(-2em - ${z.marginXS}px)`,paddingInlineEnd:`calc(2em + ${z.paddingXS}px)`}},[`${Z}-inner`]:{position:"relative",display:"inline-block",width:"100%",overflow:"hidden",verticalAlign:"middle",backgroundColor:z.remainingColor,borderRadius:z.lineBorderRadius},[`${Z}-inner:not(${Z}-circle-gradient)`]:{[`${Z}-circle-path`]:{stroke:z.defaultColor}},[`${Z}-success-bg, ${Z}-bg`]:{position:"relative",backgroundColor:z.defaultColor,borderRadius:z.lineBorderRadius,transition:`all ${z.motionDurationSlow} ${z.motionEaseInOutCirc}`},[`${Z}-success-bg`]:{position:"absolute",insetBlockStart:0,insetInlineStart:0,backgroundColor:z.colorSuccess},[`${Z}-text`]:{display:"inline-block",width:"2em",marginInlineStart:z.marginXS,color:z.colorText,lineHeight:1,whiteSpace:"nowrap",textAlign:"start",verticalAlign:"middle",wordBreak:"normal",[ee]:{fontSize:z.fontSize}},[`&${Z}-status-active`]:{[`${Z}-bg::before`]:{position:"absolute",inset:0,backgroundColor:z.colorBgContainer,borderRadius:z.lineBorderRadius,opacity:0,animationName:I(),animationDuration:z.progressActiveMotionDuration,animationTimingFunction:z.motionEaseOutQuint,animationIterationCount:"infinite",content:'""'}},[`&${Z}-rtl${Z}-status-active`]:{[`${Z}-bg::before`]:{animationName:I(!0)}},[`&${Z}-status-exception`]:{[`${Z}-bg`]:{backgroundColor:z.colorError},[`${Z}-text`]:{color:z.colorError}},[`&${Z}-status-exception ${Z}-inner:not(${Z}-circle-gradient)`]:{[`${Z}-circle-path`]:{stroke:z.colorError}},[`&${Z}-status-success`]:{[`${Z}-bg`]:{backgroundColor:z.colorSuccess},[`${Z}-text`]:{color:z.colorSuccess}},[`&${Z}-status-success ${Z}-inner:not(${Z}-circle-gradient)`]:{[`${Z}-circle-path`]:{stroke:z.colorSuccess}}})}},G=z=>{const{componentCls:Z,iconCls:ee}=z;return{[Z]:{[`${Z}-circle-trail`]:{stroke:z.remainingColor},[`&${Z}-circle ${Z}-inner`]:{position:"relative",lineHeight:1,backgroundColor:"transparent"},[`&${Z}-circle ${Z}-text`]:{position:"absolute",insetBlockStart:"50%",insetInlineStart:0,width:"100%",margin:0,padding:0,color:z.circleTextColor,fontSize:z.circleTextFontSize,lineHeight:1,whiteSpace:"normal",textAlign:"center",transform:"translateY(-50%)",[ee]:{fontSize:`${z.fontSize/z.fontSizeSM}em`}},[`${Z}-circle&-status-exception`]:{[`${Z}-text`]:{color:z.colorError}},[`${Z}-circle&-status-success`]:{[`${Z}-text`]:{color:z.colorSuccess}}},[`${Z}-inline-circle`]:{lineHeight:1,[`${Z}-inner`]:{verticalAlign:"bottom"}}}},ie=z=>{const{componentCls:Z}=z;return{[Z]:{[`${Z}-steps`]:{display:"inline-block","&-outer":{display:"flex",flexDirection:"row",alignItems:"center"},"&-item":{flexShrink:0,minWidth:z.progressStepMinWidth,marginInlineEnd:z.progressStepMarginInlineEnd,backgroundColor:z.remainingColor,transition:`all ${z.motionDurationSlow}`,"&-active":{backgroundColor:z.defaultColor}}}}}},ye=z=>{const{componentCls:Z,iconCls:ee}=z;return{[Z]:{[`${Z}-small&-line, ${Z}-small&-line ${Z}-text ${ee}`]:{fontSize:z.fontSizeSM}}}};var Ae=(0,R.Z)("Progress",z=>{const Z=z.marginXXS/2,ee=(0,x.TS)(z,{progressStepMarginInlineEnd:Z,progressStepMinWidth:Z,progressActiveMotionDuration:"2.4s"});return[L(ee),G(ee),ie(ee),ye(ee)]},z=>({circleTextColor:z.colorText,defaultColor:z.colorInfo,remainingColor:z.colorFillSecondary,lineBorderRadius:100,circleTextFontSize:"1em"})),ze=function(z,Z){var ee={};for(var Ie in z)Object.prototype.hasOwnProperty.call(z,Ie)&&Z.indexOf(Ie)<0&&(ee[Ie]=z[Ie]);if(z!=null&&typeof Object.getOwnPropertySymbols=="function")for(var De=0,Ie=Object.getOwnPropertySymbols(z);De<Ie.length;De++)Z.indexOf(Ie[De])<0&&Object.prototype.propertyIsEnumerable.call(z,Ie[De])&&(ee[Ie[De]]=z[Ie[De]]);return ee};const Ze=null,Ft=["normal","exception","active","success"];var hn=D.forwardRef((z,Z)=>{const{prefixCls:ee,className:Ie,rootClassName:De,steps:Oe,strokeColor:Xe,percent:Ve=0,size:qe="default",showInfo:ut=!0,type:it="line",status:lt,format:bt,style:Gt}=z,Xt=ze(z,["prefixCls","className","rootClassName","steps","strokeColor","percent","size","showInfo","type","status","format","style"]),yt=D.useMemo(()=>{var ln,tn;const Lt=B(z);return parseInt(Lt!==void 0?(ln=Lt!=null?Lt:0)===null||ln===void 0?void 0:ln.toString():(tn=Ve!=null?Ve:0)===null||tn===void 0?void 0:tn.toString(),10)},[Ve,z.success,z.successPercent]),pt=D.useMemo(()=>!Ft.includes(lt)&&yt>=100?"success":lt||"normal",[lt,yt]),{getPrefixCls:Nt,direction:wt,progress:ft}=D.useContext(K.E_),j=Nt("progress",ee),[dn,at]=Ae(j),In=D.useMemo(()=>{if(!ut)return null;const ln=B(z);let tn;const Lt=bt||(vt=>`${vt}%`),pn=it==="line";return bt||pt!=="exception"&&pt!=="success"?tn=Lt(Ge(Ve),Ge(ln)):pt==="exception"?tn=pn?D.createElement(Be.Z,null):D.createElement(we.Z,null):pt==="success"&&(tn=pn?D.createElement(Te.Z,null):D.createElement(ce.Z,null)),D.createElement("span",{className:`${j}-text`,title:typeof tn=="string"?tn:void 0},tn)},[ut,Ve,yt,pt,it,j,bt]),mn=Array.isArray(Xe)?Xe[0]:Xe,Kn=typeof Xe=="string"||Array.isArray(Xe)?Xe:void 0;let Sn;it==="line"?Sn=Oe?D.createElement(T,Object.assign({},z,{strokeColor:Kn,prefixCls:j,steps:Oe}),In):D.createElement(Dt,Object.assign({},z,{strokeColor:mn,prefixCls:j,direction:wt}),In):(it==="circle"||it==="dashboard")&&(Sn=D.createElement(Pt,Object.assign({},z,{strokeColor:mn,prefixCls:j,progressStatus:pt}),In));const $n=ne()(j,`${j}-status-${pt}`,`${j}-${it==="dashboard"&&"circle"||Oe&&"steps"||it}`,{[`${j}-inline-circle`]:it==="circle"&&Rt(qe,"circle")[0]<=20,[`${j}-show-info`]:ut,[`${j}-${qe}`]:typeof qe=="string",[`${j}-rtl`]:wt==="rtl"},ft==null?void 0:ft.className,Ie,De,at);return dn(D.createElement("div",Object.assign({ref:Z,style:Object.assign(Object.assign({},ft==null?void 0:ft.style),Gt),className:$n,role:"progressbar","aria-valuenow":yt},(0,M.Z)(Xt,["trailColor","strokeWidth","width","gapDegree","gapPosition","strokeLinecap","success","successPercent"])),Sn))}),Mt=hn},61621:function(Qt,$e,H){"use strict";H.d($e,{Z:function(){return y}});var D=H(92310),Te=H.n(D),ce=H(59301),Be=H(36355),we=H(2738),ne=A=>{const{prefixCls:R,className:x,style:I,size:L,shape:G}=A,ie=Te()({[`${R}-lg`]:L==="large",[`${R}-sm`]:L==="small"}),ye=Te()({[`${R}-circle`]:G==="circle",[`${R}-square`]:G==="square",[`${R}-round`]:G==="round"}),Ae=ce.useMemo(()=>typeof L=="number"?{width:L,height:L,lineHeight:`${L}px`}:{},[L]);return ce.createElement("span",{className:Te()(R,ie,ye,x),style:Object.assign(Object.assign({},Ae),I)})},M=H(36237),K=H(83116),Y=H(37613);const de=new M.Keyframes("ant-skeleton-loading",{"0%":{backgroundPosition:"100% 50%"},"100%":{backgroundPosition:"0 50%"}}),ve=A=>({height:A,lineHeight:`${A}px`}),ae=A=>Object.assign({width:A},ve(A)),Ee=A=>({background:A.skeletonLoadingBackground,backgroundSize:"400% 100%",animationName:de,animationDuration:A.skeletonLoadingMotionDuration,animationTimingFunction:"ease",animationIterationCount:"infinite"}),ge=A=>Object.assign({width:A*5,minWidth:A*5},ve(A)),_e=A=>{const{skeletonAvatarCls:R,gradientFromColor:x,controlHeight:I,controlHeightLG:L,controlHeightSM:G}=A;return{[`${R}`]:Object.assign({display:"inline-block",verticalAlign:"top",background:x},ae(I)),[`${R}${R}-circle`]:{borderRadius:"50%"},[`${R}${R}-lg`]:Object.assign({},ae(L)),[`${R}${R}-sm`]:Object.assign({},ae(G))}},Et=A=>{const{controlHeight:R,borderRadiusSM:x,skeletonInputCls:I,controlHeightLG:L,controlHeightSM:G,gradientFromColor:ie}=A;return{[`${I}`]:Object.assign({display:"inline-block",verticalAlign:"top",background:ie,borderRadius:x},ge(R)),[`${I}-lg`]:Object.assign({},ge(L)),[`${I}-sm`]:Object.assign({},ge(G))}},Pe=A=>Object.assign({width:A},ve(A)),be=A=>{const{skeletonImageCls:R,imageSizeBase:x,gradientFromColor:I,borderRadiusSM:L}=A;return{[`${R}`]:Object.assign(Object.assign({display:"flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",background:I,borderRadius:L},Pe(x*2)),{[`${R}-path`]:{fill:"#bfbfbf"},[`${R}-svg`]:Object.assign(Object.assign({},Pe(x)),{maxWidth:x*4,maxHeight:x*4}),[`${R}-svg${R}-svg-circle`]:{borderRadius:"50%"}}),[`${R}${R}-circle`]:{borderRadius:"50%"}}},Se=(A,R,x)=>{const{skeletonButtonCls:I}=A;return{[`${x}${I}-circle`]:{width:R,minWidth:R,borderRadius:"50%"},[`${x}${I}-round`]:{borderRadius:R}}},St=A=>Object.assign({width:A*2,minWidth:A*2},ve(A)),cn=A=>{const{borderRadiusSM:R,skeletonButtonCls:x,controlHeight:I,controlHeightLG:L,controlHeightSM:G,gradientFromColor:ie}=A;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({[`${x}`]:Object.assign({display:"inline-block",verticalAlign:"top",background:ie,borderRadius:R,width:I*2,minWidth:I*2},St(I))},Se(A,I,x)),{[`${x}-lg`]:Object.assign({},St(L))}),Se(A,L,`${x}-lg`)),{[`${x}-sm`]:Object.assign({},St(G))}),Se(A,G,`${x}-sm`))},J=A=>{const{componentCls:R,skeletonAvatarCls:x,skeletonTitleCls:I,skeletonParagraphCls:L,skeletonButtonCls:G,skeletonInputCls:ie,skeletonImageCls:ye,controlHeight:Ae,controlHeightLG:ze,controlHeightSM:Ze,gradientFromColor:Ft,padding:dt,marginSM:hn,borderRadius:Mt,titleHeight:z,blockRadius:Z,paragraphLiHeight:ee,controlHeightXS:Ie,paragraphMarginTop:De}=A;return{[`${R}`]:{display:"table",width:"100%",[`${R}-header`]:{display:"table-cell",paddingInlineEnd:dt,verticalAlign:"top",[`${x}`]:Object.assign({display:"inline-block",verticalAlign:"top",background:Ft},ae(Ae)),[`${x}-circle`]:{borderRadius:"50%"},[`${x}-lg`]:Object.assign({},ae(ze)),[`${x}-sm`]:Object.assign({},ae(Ze))},[`${R}-content`]:{display:"table-cell",width:"100%",verticalAlign:"top",[`${I}`]:{width:"100%",height:z,background:Ft,borderRadius:Z,[`+ ${L}`]:{marginBlockStart:Ze}},[`${L}`]:{padding:0,"> li":{width:"100%",height:ee,listStyle:"none",background:Ft,borderRadius:Z,"+ li":{marginBlockStart:Ie}}},[`${L}> li:last-child:not(:first-child):not(:nth-child(2))`]:{width:"61%"}},[`&-round ${R}-content`]:{[`${I}, ${L} > li`]:{borderRadius:Mt}}},[`${R}-with-avatar ${R}-content`]:{[`${I}`]:{marginBlockStart:hn,[`+ ${L}`]:{marginBlockStart:De}}},[`${R}${R}-element`]:Object.assign(Object.assign(Object.assign(Object.assign({display:"inline-block",width:"auto"},cn(A)),_e(A)),Et(A)),be(A)),[`${R}${R}-block`]:{width:"100%",[`${G}`]:{width:"100%"},[`${ie}`]:{width:"100%"}},[`${R}${R}-active`]:{[`
${I},
${L} > li,
${x},
${G},
${ie},
${ye}
`]:Object.assign({},Ee(A))}}};var Zt=(0,K.Z)("Skeleton",A=>{const{componentCls:R}=A,x=(0,Y.TS)(A,{skeletonAvatarCls:`${R}-avatar`,skeletonTitleCls:`${R}-title`,skeletonParagraphCls:`${R}-paragraph`,skeletonButtonCls:`${R}-button`,skeletonInputCls:`${R}-input`,skeletonImageCls:`${R}-image`,imageSizeBase:A.controlHeight*1.5,borderRadius:100,skeletonLoadingBackground:`linear-gradient(90deg, ${A.gradientFromColor} 25%, ${A.gradientToColor} 37%, ${A.gradientFromColor} 63%)`,skeletonLoadingMotionDuration:"1.4s"});return[J(x)]},A=>{const{colorFillContent:R,colorFill:x}=A,I=R,L=x;return{color:I,colorGradientEnd:L,gradientFromColor:I,gradientToColor:L,titleHeight:A.controlHeight/2,blockRadius:A.borderRadiusSM,paragraphMarginTop:A.marginLG+A.marginXXS,paragraphLiHeight:A.controlHeight/2}},{deprecatedTokens:[["color","gradientFromColor"],["colorGradientEnd","gradientToColor"]]}),rt=A=>{const{prefixCls:R,className:x,rootClassName:I,active:L,shape:G="circle",size:ie="default"}=A,{getPrefixCls:ye}=ce.useContext(Be.E_),Ae=ye("skeleton",R),[ze,Ze]=Zt(Ae),Ft=(0,we.Z)(A,["prefixCls","className"]),dt=Te()(Ae,`${Ae}-element`,{[`${Ae}-active`]:L},x,I,Ze);return ze(ce.createElement("div",{className:dt},ce.createElement(ne,Object.assign({prefixCls:`${Ae}-avatar`,shape:G,size:ie},Ft))))},zt=A=>{const{prefixCls:R,className:x,rootClassName:I,active:L,block:G=!1,size:ie="default"}=A,{getPrefixCls:ye}=ce.useContext(Be.E_),Ae=ye("skeleton",R),[ze,Ze]=Zt(Ae),Ft=(0,we.Z)(A,["prefixCls"]),dt=Te()(Ae,`${Ae}-element`,{[`${Ae}-active`]:L,[`${Ae}-block`]:G},x,I,Ze);return ze(ce.createElement("div",{className:dt},ce.createElement(ne,Object.assign({prefixCls:`${Ae}-button`,size:ie},Ft))))};const Ut="M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z";var Ht=A=>{const{prefixCls:R,className:x,rootClassName:I,style:L,active:G}=A,{getPrefixCls:ie}=ce.useContext(Be.E_),ye=ie("skeleton",R),[Ae,ze]=Zt(ye),Ze=Te()(ye,`${ye}-element`,{[`${ye}-active`]:G},x,I,ze);return Ae(ce.createElement("div",{className:Ze},ce.createElement("div",{className:Te()(`${ye}-image`,x),style:L},ce.createElement("svg",{viewBox:"0 0 1098 1024",xmlns:"http://www.w3.org/2000/svg",className:`${ye}-image-svg`},ce.createElement("path",{d:Ut,className:`${ye}-image-path`})))))},re=A=>{const{prefixCls:R,className:x,rootClassName:I,active:L,block:G,size:ie="default"}=A,{getPrefixCls:ye}=ce.useContext(Be.E_),Ae=ye("skeleton",R),[ze,Ze]=Zt(Ae),Ft=(0,we.Z)(A,["prefixCls"]),dt=Te()(Ae,`${Ae}-element`,{[`${Ae}-active`]:L,[`${Ae}-block`]:G},x,I,Ze);return ze(ce.createElement("div",{className:dt},ce.createElement(ne,Object.assign({prefixCls:`${Ae}-input`,size:ie},Ft))))},me=H(54476),le={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 10128 0 64 64 0 10-128 0zm118-224a48 48 0 1096 0 48 48 0 10-96 0zm158 228a96 96 0 10192 0 96 96 0 10-192 0zm148-314a56 56 0 10112 0 56 56 0 10-112 0z"}}]},name:"dot-chart",theme:"outlined"},Me=le,Qe=H(7657),Ge=function(R,x){return ce.createElement(Qe.Z,(0,me.Z)({},R,{ref:x,icon:Me}))},B=ce.forwardRef(Ge),Je=B,Rt=A=>{const{prefixCls:R,className:x,rootClassName:I,style:L,active:G,children:ie}=A,{getPrefixCls:ye}=ce.useContext(Be.E_),Ae=ye("skeleton",R),[ze,Ze]=Zt(Ae),Ft=Te()(Ae,`${Ae}-element`,{[`${Ae}-active`]:G},Ze,x,I),dt=ie!=null?ie:ce.createElement(Je,null);return ze(ce.createElement("div",{className:Ft},ce.createElement("div",{className:Te()(`${Ae}-image`,x),style:L},dt)))},Re=H(94480),Ue=A=>{const R=ye=>{const{width:Ae,rows:ze=2}=A;if(Array.isArray(Ae))return Ae[ye];if(ze-1===ye)return Ae},{prefixCls:x,className:I,style:L,rows:G}=A,ie=(0,Re.Z)(Array(G)).map((ye,Ae)=>ce.createElement("li",{key:Ae,style:{width:R(Ae)}}));return ce.createElement("ul",{className:Te()(x,I),style:L},ie)},Tt=A=>{let{prefixCls:R,className:x,width:I,style:L}=A;return ce.createElement("h3",{className:Te()(R,x),style:Object.assign({width:I},L)})};function At(A){return A&&typeof A=="object"?A:{}}function jt(A,R){return A&&!R?{size:"large",shape:"square"}:{size:"large",shape:"circle"}}function Kt(A,R){return!A&&R?{width:"38%"}:A&&R?{width:"50%"}:{}}function Dt(A,R){const x={};return(!A||!R)&&(x.width="61%"),!A&&R?x.rows=3:x.rows=2,x}const an=A=>{const{prefixCls:R,loading:x,className:I,rootClassName:L,style:G,children:ie,avatar:ye=!1,title:Ae=!0,paragraph:ze=!0,active:Ze,round:Ft}=A,{getPrefixCls:dt,direction:hn,skeleton:Mt}=ce.useContext(Be.E_),z=dt("skeleton",R),[Z,ee]=Zt(z);if(x||!("loading"in A)){const Ie=!!ye,De=!!Ae,Oe=!!ze;let Xe;if(Ie){const ut=Object.assign(Object.assign({prefixCls:`${z}-avatar`},jt(De,Oe)),At(ye));Xe=ce.createElement("div",{className:`${z}-header`},ce.createElement(ne,Object.assign({},ut)))}let Ve;if(De||Oe){let ut;if(De){const lt=Object.assign(Object.assign({prefixCls:`${z}-title`},Kt(Ie,Oe)),At(Ae));ut=ce.createElement(Tt,Object.assign({},lt))}let it;if(Oe){const lt=Object.assign(Object.assign({prefixCls:`${z}-paragraph`},Dt(Ie,De)),At(ze));it=ce.createElement(Ue,Object.assign({},lt))}Ve=ce.createElement("div",{className:`${z}-content`},ut,it)}const qe=Te()(z,{[`${z}-with-avatar`]:Ie,[`${z}-active`]:Ze,[`${z}-rtl`]:hn==="rtl",[`${z}-round`]:Ft},Mt==null?void 0:Mt.className,I,L,ee);return Z(ce.createElement("div",{className:qe,style:Object.assign(Object.assign({},Mt==null?void 0:Mt.style),G)},Xe,Ve))}return typeof ie!="undefined"?ie:null};an.Button=zt,an.Avatar=rt,an.Input=re,an.Image=Ht,an.Node=Rt;var T=an,y=T},31797:function(Qt,$e,H){"use strict";H.d($e,{default:function(){return Zt}});var D=H(59301),Te=H(56762),ce=H(92343),Be=H(92310),we=H.n(Be),$=H(36355),ne=H(61621),K=ct=>{const{value:rt,formatter:Vt,precision:zt,decimalSeparator:Ut,groupSeparator:qt="",prefixCls:Ht}=ct;let Ce;if(typeof Vt=="function")Ce=Vt(rt);else{const re=String(rt),me=re.match(/^(-?)(\d*)(\.(\d+))?$/);if(!me||re==="-")Ce=re;else{const le=me[1];let Me=me[2]||"0",Qe=me[4]||"";Me=Me.replace(/\B(?=(\d{3})+(?!\d))/g,qt),typeof zt=="number"&&(Qe=Qe.padEnd(zt,"0").slice(0,zt>0?zt:0)),Qe&&(Qe=`${Ut}${Qe}`),Ce=[D.createElement("span",{key:"int",className:`${Ht}-content-value-int`},le,Me),Qe&&D.createElement("span",{key:"decimal",className:`${Ht}-content-value-decimal`},Qe)]}}return D.createElement("span",{className:`${Ht}-content-value`},Ce)},Y=H(17313),de=H(83116),ve=H(37613);const ae=ct=>{const{componentCls:rt,marginXXS:Vt,padding:zt,colorTextDescription:Ut,titleFontSize:qt,colorTextHeading:Ht,contentFontSize:Ce,fontFamily:re}=ct;return{[`${rt}`]:Object.assign(Object.assign({},(0,Y.Wf)(ct)),{[`${rt}-title`]:{marginBottom:Vt,color:Ut,fontSize:qt},[`${rt}-skeleton`]:{paddingTop:zt},[`${rt}-content`]:{color:Ht,fontSize:Ce,fontFamily:re,[`${rt}-content-value`]:{display:"inline-block",direction:"ltr"},[`${rt}-content-prefix, ${rt}-content-suffix`]:{display:"inline-block"},[`${rt}-content-prefix`]:{marginInlineEnd:Vt},[`${rt}-content-suffix`]:{marginInlineStart:Vt}}})}};var Ee=(0,de.Z)("Statistic",ct=>{const rt=(0,ve.TS)(ct,{});return[ae(rt)]},ct=>{const{fontSizeHeading3:rt,fontSize:Vt}=ct;return{titleFontSize:Vt,contentFontSize:rt}}),_e=ct=>{const{prefixCls:rt,className:Vt,rootClassName:zt,style:Ut,valueStyle:qt,value:Ht=0,title:Ce,valueRender:re,prefix:me,suffix:le,loading:Me=!1,onMouseEnter:Qe,onMouseLeave:Ge,decimalSeparator:B=".",groupSeparator:Je=","}=ct,{getPrefixCls:$t,direction:Rt,statistic:Re}=D.useContext($.E_),Ke=$t("statistic",rt),[Ue,Pt]=Ee(Ke),Tt=D.createElement(K,Object.assign({decimalSeparator:B,groupSeparator:Je,prefixCls:Ke},ct,{value:Ht})),At=we()(Ke,{[`${Ke}-rtl`]:Rt==="rtl"},Re==null?void 0:Re.className,Vt,zt,Pt);return Ue(D.createElement("div",{className:At,style:Object.assign(Object.assign({},Re==null?void 0:Re.style),Ut),onMouseEnter:Qe,onMouseLeave:Ge},Ce&&D.createElement("div",{className:`${Ke}-title`},Ce),D.createElement(ne.Z,{paragraph:!1,loading:Me,className:`${Ke}-skeleton`},D.createElement("div",{style:qt,className:`${Ke}-content`},me&&D.createElement("span",{className:`${Ke}-content-prefix`},me),re?re(Tt):Tt,le&&D.createElement("span",{className:`${Ke}-content-suffix`},le)))))};const Et=[["Y",1e3*60*60*24*365],["M",1e3*60*60*24*30],["D",1e3*60*60*24],["H",1e3*60*60],["m",1e3*60],["s",1e3],["S",1]];function Pe(ct,rt){let Vt=ct;const zt=/\[[^\]]*]/g,Ut=(rt.match(zt)||[]).map(re=>re.slice(1,-1)),qt=rt.replace(zt,"[]"),Ht=Et.reduce((re,me)=>{let[le,Me]=me;if(re.includes(le)){const Qe=Math.floor(Vt/Me);return Vt-=Qe*Me,re.replace(new RegExp(`${le}+`,"g"),Ge=>{const B=Ge.length;return Qe.toString().padStart(B,"0")})}return re},qt);let Ce=0;return Ht.replace(zt,()=>{const re=Ut[Ce];return Ce+=1,re})}function be(ct,rt){const{format:Vt=""}=rt,zt=new Date(ct).getTime(),Ut=Date.now(),qt=Math.max(zt-Ut,0);return Pe(qt,Vt)}const Se=1e3/30;function St(ct){return new Date(ct).getTime()}const cn=ct=>{const{value:rt,format:Vt="HH:mm:ss",onChange:zt,onFinish:Ut}=ct,qt=(0,Te.Z)(),Ht=D.useRef(null),Ce=()=>{Ut==null||Ut(),Ht.current&&(clearInterval(Ht.current),Ht.current=null)},re=()=>{const Me=St(rt);Me>=Date.now()&&(Ht.current=setInterval(()=>{qt(),zt==null||zt(Me-Date.now()),Me<Date.now()&&Ce()},Se))};D.useEffect(()=>(re(),()=>{Ht.current&&(clearInterval(Ht.current),Ht.current=null)}),[rt]);const me=(Me,Qe)=>be(Me,Object.assign(Object.assign({},Qe),{format:Vt})),le=Me=>(0,ce.Tm)(Me,{title:void 0});return D.createElement(_e,Object.assign({},ct,{valueRender:le,formatter:me}))};var J=D.memo(cn);_e.Countdown=J;var Zt=_e},45413:function(Qt,$e,H){"use strict";H.d($e,{default:function(){return R}});var D=H(40001),Te=H(99267),ce=H(92310),Be=H.n(ce),we=H(54476),$=H(33885),ne=H(20068),M=H(75931),K=H(59301),Y=H(10228),de=["className","prefixCls","style","active","status","iconPrefix","icon","wrapperStyle","stepNumber","disabled","description","title","subTitle","progressDot","stepIcon","tailContent","icons","stepIndex","onStepClick","onClick","render"];function ve(x){return typeof x=="string"}function ae(x){var I,L=x.className,G=x.prefixCls,ie=x.style,ye=x.active,Ae=x.status,ze=x.iconPrefix,Ze=x.icon,Ft=x.wrapperStyle,dt=x.stepNumber,hn=x.disabled,Mt=x.description,z=x.title,Z=x.subTitle,ee=x.progressDot,Ie=x.stepIcon,De=x.tailContent,Oe=x.icons,Xe=x.stepIndex,Ve=x.onStepClick,qe=x.onClick,ut=x.render,it=(0,M.Z)(x,de),lt=!!Ve&&!hn,bt={};lt&&(bt.role="button",bt.tabIndex=0,bt.onClick=function(wt){qe==null||qe(wt),Ve(Xe)},bt.onKeyDown=function(wt){var ft=wt.which;(ft===Y.Z.ENTER||ft===Y.Z.SPACE)&&Ve(Xe)});var Gt=function(){var ft,j,dn=Be()("".concat(G,"-icon"),"".concat(ze,"icon"),(ft={},(0,ne.Z)(ft,"".concat(ze,"icon-").concat(Ze),Ze&&ve(Ze)),(0,ne.Z)(ft,"".concat(ze,"icon-check"),!Ze&&Ae==="finish"&&(Oe&&!Oe.finish||!Oe)),(0,ne.Z)(ft,"".concat(ze,"icon-cross"),!Ze&&Ae==="error"&&(Oe&&!Oe.error||!Oe)),ft)),at=K.createElement("span",{className:"".concat(G,"-icon-dot")});return ee?typeof ee=="function"?j=K.createElement("span",{className:"".concat(G,"-icon")},ee(at,{index:dt-1,status:Ae,title:z,description:Mt})):j=K.createElement("span",{className:"".concat(G,"-icon")},at):Ze&&!ve(Ze)?j=K.createElement("span",{className:"".concat(G,"-icon")},Ze):Oe&&Oe.finish&&Ae==="finish"?j=K.createElement("span",{className:"".concat(G,"-icon")},Oe.finish):Oe&&Oe.error&&Ae==="error"?j=K.createElement("span",{className:"".concat(G,"-icon")},Oe.error):Ze||Ae==="finish"||Ae==="error"?j=K.createElement("span",{className:dn}):j=K.createElement("span",{className:"".concat(G,"-icon")},dt),Ie&&(j=Ie({index:dt-1,status:Ae,title:z,description:Mt,node:j})),j},Xt=Ae||"wait",yt=Be()("".concat(G,"-item"),"".concat(G,"-item-").concat(Xt),L,(I={},(0,ne.Z)(I,"".concat(G,"-item-custom"),Ze),(0,ne.Z)(I,"".concat(G,"-item-active"),ye),(0,ne.Z)(I,"".concat(G,"-item-disabled"),hn===!0),I)),pt=(0,$.Z)({},ie),Nt=K.createElement("div",(0,we.Z)({},it,{className:yt,style:pt}),K.createElement("div",(0,we.Z)({onClick:qe},bt,{className:"".concat(G,"-item-container")}),K.createElement("div",{className:"".concat(G,"-item-tail")},De),K.createElement("div",{className:"".concat(G,"-item-icon")},Gt()),K.createElement("div",{className:"".concat(G,"-item-content")},K.createElement("div",{className:"".concat(G,"-item-title")},z,Z&&K.createElement("div",{title:typeof Z=="string"?Z:void 0,className:"".concat(G,"-item-subtitle")},Z)),Mt&&K.createElement("div",{className:"".concat(G,"-item-description")},Mt))));return ut&&(Nt=ut(Nt)||null),Nt}var Ee=ae,ge=["prefixCls","style","className","children","direction","type","labelPlacement","iconPrefix","status","size","current","progressDot","stepIcon","initial","icons","onChange","itemRender","items"];function _e(x){var I,L=x.prefixCls,G=L===void 0?"rc-steps":L,ie=x.style,ye=ie===void 0?{}:ie,Ae=x.className,ze=x.children,Ze=x.direction,Ft=Ze===void 0?"horizontal":Ze,dt=x.type,hn=dt===void 0?"default":dt,Mt=x.labelPlacement,z=Mt===void 0?"horizontal":Mt,Z=x.iconPrefix,ee=Z===void 0?"rc":Z,Ie=x.status,De=Ie===void 0?"process":Ie,Oe=x.size,Xe=x.current,Ve=Xe===void 0?0:Xe,qe=x.progressDot,ut=qe===void 0?!1:qe,it=x.stepIcon,lt=x.initial,bt=lt===void 0?0:lt,Gt=x.icons,Xt=x.onChange,yt=x.itemRender,pt=x.items,Nt=pt===void 0?[]:pt,wt=(0,M.Z)(x,ge),ft=hn==="navigation",j=hn==="inline",dn=j||ut,at=j?"horizontal":Ft,In=j?void 0:Oe,mn=dn?"vertical":z,Kn=Be()(G,"".concat(G,"-").concat(at),Ae,(I={},(0,ne.Z)(I,"".concat(G,"-").concat(In),In),(0,ne.Z)(I,"".concat(G,"-label-").concat(mn),at==="horizontal"),(0,ne.Z)(I,"".concat(G,"-dot"),!!dn),(0,ne.Z)(I,"".concat(G,"-navigation"),ft),(0,ne.Z)(I,"".concat(G,"-inline"),j),I)),Sn=function(tn){Xt&&Ve!==tn&&Xt(tn)},$n=function(tn,Lt){var pn=(0,$.Z)({},tn),vt=bt+Lt;return De==="error"&&Lt===Ve-1&&(pn.className="".concat(G,"-next-error")),pn.status||(vt===Ve?pn.status=De:vt<Ve?pn.status="finish":pn.status="wait"),j&&(pn.icon=void 0,pn.subTitle=void 0),!pn.render&&yt&&(pn.render=function(lo){return yt(pn,lo)}),K.createElement(Ee,(0,we.Z)({},pn,{active:vt===Ve,stepNumber:vt+1,stepIndex:vt,key:vt,prefixCls:G,iconPrefix:ee,wrapperStyle:ye,progressDot:dn,stepIcon:it,icons:Gt,onStepClick:Xt&&Sn}))};return K.createElement("div",(0,we.Z)({className:Kn,style:ye},wt),Nt.filter(function(ln){return ln}).map($n))}_e.Step=Ee;var Et=_e,Pe=Et,be=H(36355),Se=H(19716),St=H(8628),cn=H(93948),J=H(6848),Zt=H(17313),ct=H(83116),rt=H(37613),zt=x=>{const{componentCls:I,customIconTop:L,customIconSize:G,customIconFontSize:ie}=x;return{[`${I}-item-custom`]:{[`> ${I}-item-container > ${I}-item-icon`]:{height:"auto",background:"none",border:0,[`> ${I}-icon`]:{top:L,width:G,height:G,fontSize:ie,lineHeight:`${ie}px`}}},[`&:not(${I}-vertical)`]:{[`${I}-item-custom`]:{[`${I}-item-icon`]:{width:"auto",background:"none"}}}}},qt=x=>{const{componentCls:I,inlineDotSize:L,inlineTitleColor:G,inlineTailColor:ie}=x,ye=x.paddingXS+x.lineWidth,Ae={[`${I}-item-container ${I}-item-content ${I}-item-title`]:{color:G}};return{[`&${I}-inline`]:{width:"auto",display:"inline-flex",[`${I}-item`]:{flex:"none","&-container":{padding:`${ye}px ${x.paddingXXS}px 0`,margin:`0 ${x.marginXXS/2}px`,borderRadius:x.borderRadiusSM,cursor:"pointer",transition:`background-color ${x.motionDurationMid}`,"&:hover":{background:x.controlItemBgHover},"&[role='button']:hover":{opacity:1}},"&-icon":{width:L,height:L,marginInlineStart:`calc(50% - ${L/2}px)`,[`> ${I}-icon`]:{top:0},[`${I}-icon-dot`]:{borderRadius:x.fontSizeSM/4}},"&-content":{width:"auto",marginTop:x.marginXS-x.lineWidth},"&-title":{color:G,fontSize:x.fontSizeSM,lineHeight:x.lineHeightSM,fontWeight:"normal",marginBottom:x.marginXXS/2},"&-description":{display:"none"},"&-tail":{marginInlineStart:0,top:ye+L/2,transform:"translateY(-50%)","&:after":{width:"100%",height:x.lineWidth,borderRadius:0,marginInlineStart:0,background:ie}},[`&:first-child ${I}-item-tail`]:{width:"50%",marginInlineStart:"50%"},[`&:last-child ${I}-item-tail`]:{display:"block",width:"50%"},"&-wait":Object.assign({[`${I}-item-icon ${I}-icon ${I}-icon-dot`]:{backgroundColor:x.colorBorderBg,border:`${x.lineWidth}px ${x.lineType} ${ie}`}},Ae),"&-finish":Object.assign({[`${I}-item-tail::after`]:{backgroundColor:ie},[`${I}-item-icon ${I}-icon ${I}-icon-dot`]:{backgroundColor:ie,border:`${x.lineWidth}px ${x.lineType} ${ie}`}},Ae),"&-error":Ae,"&-active, &-process":Object.assign({[`${I}-item-icon`]:{width:L,height:L,marginInlineStart:`calc(50% - ${L/2}px)`,top:0}},Ae),[`&:not(${I}-item-active) > ${I}-item-container[role='button']:hover`]:{[`${I}-item-title`]:{color:G}}}}}},Ce=x=>{const{componentCls:I,iconSize:L,lineHeight:G,iconSizeSM:ie}=x;return{[`&${I}-label-vertical`]:{[`${I}-item`]:{overflow:"visible","&-tail":{marginInlineStart:L/2+x.controlHeightLG,padding:`${x.paddingXXS}px ${x.paddingLG}px`},"&-content":{display:"block",width:(L/2+x.controlHeightLG)*2,marginTop:x.marginSM,textAlign:"center"},"&-icon":{display:"inline-block",marginInlineStart:x.controlHeightLG},"&-title":{paddingInlineEnd:0,paddingInlineStart:0,"&::after":{display:"none"}},"&-subtitle":{display:"block",marginBottom:x.marginXXS,marginInlineStart:0,lineHeight:G}},[`&${I}-small:not(${I}-dot)`]:{[`${I}-item`]:{"&-icon":{marginInlineStart:x.controlHeightLG+(L-ie)/2}}}}}},me=x=>{const{componentCls:I,navContentMaxWidth:L,navArrowColor:G,stepsNavActiveColor:ie,motionDurationSlow:ye}=x;return{[`&${I}-navigation`]:{paddingTop:x.paddingSM,[`&${I}-small`]:{[`${I}-item`]:{"&-container":{marginInlineStart:-x.marginSM}}},[`${I}-item`]:{overflow:"visible",textAlign:"center","&-container":{display:"inline-block",height:"100%",marginInlineStart:-x.margin,paddingBottom:x.paddingSM,textAlign:"start",transition:`opacity ${ye}`,[`${I}-item-content`]:{maxWidth:L},[`${I}-item-title`]:Object.assign(Object.assign({maxWidth:"100%",paddingInlineEnd:0},Zt.vS),{"&::after":{display:"none"}})},[`&:not(${I}-item-active)`]:{[`${I}-item-container[role='button']`]:{cursor:"pointer","&:hover":{opacity:.85}}},"&:last-child":{flex:1,"&::after":{display:"none"}},"&::after":{position:"absolute",top:`calc(50% - ${x.paddingSM/2}px)`,insetInlineStart:"100%",display:"inline-block",width:x.fontSizeIcon,height:x.fontSizeIcon,borderTop:`${x.lineWidth}px ${x.lineType} ${G}`,borderBottom:"none",borderInlineStart:"none",borderInlineEnd:`${x.lineWidth}px ${x.lineType} ${G}`,transform:"translateY(-50%) translateX(-50%) rotate(45deg)",content:'""'},"&::before":{position:"absolute",bottom:0,insetInlineStart:"50%",display:"inline-block",width:0,height:x.lineWidthBold,backgroundColor:ie,transition:`width ${ye}, inset-inline-start ${ye}`,transitionTimingFunction:"ease-out",content:'""'}},[`${I}-item${I}-item-active::before`]:{insetInlineStart:0,width:"100%"}},[`&${I}-navigation${I}-vertical`]:{[`> ${I}-item`]:{marginInlineEnd:0,"&::before":{display:"none"},[`&${I}-item-active::before`]:{top:0,insetInlineEnd:0,insetInlineStart:"unset",display:"block",width:x.lineWidth*3,height:`calc(100% - ${x.marginLG}px)`},"&::after":{position:"relative",insetInlineStart:"50%",display:"block",width:x.controlHeight*.25,height:x.controlHeight*.25,marginBottom:x.marginXS,textAlign:"center",transform:"translateY(-50%) translateX(-50%) rotate(135deg)"},"&:last-child":{"&::after":{display:"none"}},[`> ${I}-item-container > ${I}-item-tail`]:{visibility:"hidden"}}},[`&${I}-navigation${I}-horizontal`]:{[`> ${I}-item > ${I}-item-container > ${I}-item-tail`]:{visibility:"hidden"}}}},Me=x=>{const{antCls:I,componentCls:L}=x;return{[`&${L}-with-progress`]:{[`${L}-item`]:{paddingTop:x.paddingXXS,[`&-process ${L}-item-container ${L}-item-icon ${L}-icon`]:{color:x.processIconColor}},[`&${L}-vertical > ${L}-item `]:{paddingInlineStart:x.paddingXXS,[`> ${L}-item-container > ${L}-item-tail`]:{top:x.marginXXS,insetInlineStart:x.iconSize/2-x.lineWidth+x.paddingXXS}},[`&, &${L}-small`]:{[`&${L}-horizontal ${L}-item:first-child`]:{paddingBottom:x.paddingXXS,paddingInlineStart:x.paddingXXS}},[`&${L}-small${L}-vertical > ${L}-item > ${L}-item-container > ${L}-item-tail`]:{insetInlineStart:x.iconSizeSM/2-x.lineWidth+x.paddingXXS},[`&${L}-label-vertical`]:{[`${L}-item ${L}-item-tail`]:{top:x.margin-2*x.lineWidth}},[`${L}-item-icon`]:{position:"relative",[`${I}-progress`]:{position:"absolute",insetBlockStart:(x.iconSize-x.stepsProgressSize-x.lineWidth*2)/2,insetInlineStart:(x.iconSize-x.stepsProgressSize-x.lineWidth*2)/2}}}}},Ge=x=>{const{componentCls:I,descriptionMaxWidth:L,lineHeight:G,dotCurrentSize:ie,dotSize:ye,motionDurationSlow:Ae}=x;return{[`&${I}-dot, &${I}-dot${I}-small`]:{[`${I}-item`]:{"&-title":{lineHeight:G},"&-tail":{top:Math.floor((x.dotSize-x.lineWidth*3)/2),width:"100%",marginTop:0,marginBottom:0,marginInline:`${L/2}px 0`,padding:0,"&::after":{width:`calc(100% - ${x.marginSM*2}px)`,height:x.lineWidth*3,marginInlineStart:x.marginSM}},"&-icon":{width:ye,height:ye,marginInlineStart:(x.descriptionMaxWidth-ye)/2,paddingInlineEnd:0,lineHeight:`${ye}px`,background:"transparent",border:0,[`${I}-icon-dot`]:{position:"relative",float:"left",width:"100%",height:"100%",borderRadius:100,transition:`all ${Ae}`,"&::after":{position:"absolute",top:-x.marginSM,insetInlineStart:(ye-x.controlHeightLG*1.5)/2,width:x.controlHeightLG*1.5,height:x.controlHeight,background:"transparent",content:'""'}}},"&-content":{width:L},[`&-process ${I}-item-icon`]:{position:"relative",top:(ye-ie)/2,width:ie,height:ie,lineHeight:`${ie}px`,background:"none",marginInlineStart:(x.descriptionMaxWidth-ie)/2},[`&-process ${I}-icon`]:{[`&:first-child ${I}-icon-dot`]:{insetInlineStart:0}}}},[`&${I}-vertical${I}-dot`]:{[`${I}-item-icon`]:{marginTop:(x.controlHeight-ye)/2,marginInlineStart:0,background:"none"},[`${I}-item-process ${I}-item-icon`]:{marginTop:(x.controlHeight-ie)/2,top:0,insetInlineStart:(ye-ie)/2,marginInlineStart:0},[`${I}-item > ${I}-item-container > ${I}-item-tail`]:{top:(x.controlHeight-ye)/2,insetInlineStart:0,margin:0,padding:`${ye+x.paddingXS}px 0 ${x.paddingXS}px`,"&::after":{marginInlineStart:(ye-x.lineWidth)/2}},[`&${I}-small`]:{[`${I}-item-icon`]:{marginTop:(x.controlHeightSM-ye)/2},[`${I}-item-process ${I}-item-icon`]:{marginTop:(x.controlHeightSM-ie)/2},[`${I}-item > ${I}-item-container > ${I}-item-tail`]:{top:(x.controlHeightSM-ye)/2}},[`${I}-item:first-child ${I}-icon-dot`]:{insetInlineStart:0},[`${I}-item-content`]:{width:"inherit"}}}},Je=x=>{const{componentCls:I}=x;return{[`&${I}-rtl`]:{direction:"rtl",[`${I}-item`]:{"&-subtitle":{float:"left"}},[`&${I}-navigation`]:{[`${I}-item::after`]:{transform:"rotate(-45deg)"}},[`&${I}-vertical`]:{[`> ${I}-item`]:{"&::after":{transform:"rotate(225deg)"},[`${I}-item-icon`]:{float:"right"}}},[`&${I}-dot`]:{[`${I}-item-icon ${I}-icon-dot, &${I}-small ${I}-item-icon ${I}-icon-dot`]:{float:"right"}}}}},Rt=x=>{const{componentCls:I,iconSizeSM:L,fontSizeSM:G,fontSize:ie,colorTextDescription:ye}=x;return{[`&${I}-small`]:{[`&${I}-horizontal:not(${I}-label-vertical) ${I}-item`]:{paddingInlineStart:x.paddingSM,"&:first-child":{paddingInlineStart:0}},[`${I}-item-icon`]:{width:L,height:L,marginTop:0,marginBottom:0,marginInline:`0 ${x.marginXS}px`,fontSize:G,lineHeight:`${L}px`,textAlign:"center",borderRadius:L},[`${I}-item-title`]:{paddingInlineEnd:x.paddingSM,fontSize:ie,lineHeight:`${L}px`,"&::after":{top:L/2}},[`${I}-item-description`]:{color:ye,fontSize:ie},[`${I}-item-tail`]:{top:L/2-x.paddingXXS},[`${I}-item-custom ${I}-item-icon`]:{width:"inherit",height:"inherit",lineHeight:"inherit",background:"none",border:0,borderRadius:0,[`> ${I}-icon`]:{fontSize:L,lineHeight:`${L}px`,transform:"none"}}}}},Ke=x=>{const{componentCls:I,iconSizeSM:L,iconSize:G}=x;return{[`&${I}-vertical`]:{display:"flex",flexDirection:"column",[`> ${I}-item`]:{display:"block",flex:"1 0 auto",paddingInlineStart:0,overflow:"visible",[`${I}-item-icon`]:{float:"left",marginInlineEnd:x.margin},[`${I}-item-content`]:{display:"block",minHeight:x.controlHeight*1.5,overflow:"hidden"},[`${I}-item-title`]:{lineHeight:`${G}px`},[`${I}-item-description`]:{paddingBottom:x.paddingSM}},[`> ${I}-item > ${I}-item-container > ${I}-item-tail`]:{position:"absolute",top:0,insetInlineStart:G/2-x.lineWidth,width:x.lineWidth,height:"100%",padding:`${G+x.marginXXS*1.5}px 0 ${x.marginXXS*1.5}px`,"&::after":{width:x.lineWidth,height:"100%"}},[`> ${I}-item:not(:last-child) > ${I}-item-container > ${I}-item-tail`]:{display:"block"},[` > ${I}-item > ${I}-item-container > ${I}-item-content > ${I}-item-title`]:{"&::after":{display:"none"}},[`&${I}-small ${I}-item-container`]:{[`${I}-item-tail`]:{position:"absolute",top:0,insetInlineStart:L/2-x.lineWidth,padding:`${L+x.marginXXS*1.5}px 0 ${x.marginXXS*1.5}px`},[`${I}-item-title`]:{lineHeight:`${L}px`}}}}},Ue;(function(x){x.wait="wait",x.process="process",x.finish="finish",x.error="error"})(Ue||(Ue={}));const Pt=(x,I)=>{const L=`${I.componentCls}-item`,G=`${x}IconColor`,ie=`${x}TitleColor`,ye=`${x}DescriptionColor`,Ae=`${x}TailColor`,ze=`${x}IconBgColor`,Ze=`${x}IconBorderColor`,Ft=`${x}DotColor`;return{[`${L}-${x} ${L}-icon`]:{backgroundColor:I[ze],borderColor:I[Ze],[`> ${I.componentCls}-icon`]:{color:I[G],[`${I.componentCls}-icon-dot`]:{background:I[Ft]}}},[`${L}-${x}${L}-custom ${L}-icon`]:{[`> ${I.componentCls}-icon`]:{color:I[Ft]}},[`${L}-${x} > ${L}-container > ${L}-content > ${L}-title`]:{color:I[ie],"&::after":{backgroundColor:I[Ae]}},[`${L}-${x} > ${L}-container > ${L}-content > ${L}-description`]:{color:I[ye]},[`${L}-${x} > ${L}-container > ${L}-tail::after`]:{backgroundColor:I[Ae]}}},Tt=x=>{const{componentCls:I,motionDurationSlow:L}=x,G=`${I}-item`,ie=`${G}-icon`;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({[G]:{position:"relative",display:"inline-block",flex:1,overflow:"hidden",verticalAlign:"top","&:last-child":{flex:"none",[`> ${G}-container > ${G}-tail, > ${G}-container > ${G}-content > ${G}-title::after`]:{display:"none"}}},[`${G}-container`]:{outline:"none","&:focus-visible":{[ie]:Object.assign({},(0,Zt.oN)(x))}},[`${ie}, ${G}-content`]:{display:"inline-block",verticalAlign:"top"},[ie]:{width:x.iconSize,height:x.iconSize,marginTop:0,marginBottom:0,marginInlineStart:0,marginInlineEnd:x.marginXS,fontSize:x.iconFontSize,fontFamily:x.fontFamily,lineHeight:`${x.iconSize}px`,textAlign:"center",borderRadius:x.iconSize,border:`${x.lineWidth}px ${x.lineType} transparent`,transition:`background-color ${L}, border-color ${L}`,[`${I}-icon`]:{position:"relative",top:x.iconTop,color:x.colorPrimary,lineHeight:1}},[`${G}-tail`]:{position:"absolute",top:x.iconSize/2-x.paddingXXS,insetInlineStart:0,width:"100%","&::after":{display:"inline-block",width:"100%",height:x.lineWidth,background:x.colorSplit,borderRadius:x.lineWidth,transition:`background ${L}`,content:'""'}},[`${G}-title`]:{position:"relative",display:"inline-block",paddingInlineEnd:x.padding,color:x.colorText,fontSize:x.fontSizeLG,lineHeight:`${x.titleLineHeight}px`,"&::after":{position:"absolute",top:x.titleLineHeight/2,insetInlineStart:"100%",display:"block",width:9999,height:x.lineWidth,background:x.processTailColor,content:'""'}},[`${G}-subtitle`]:{display:"inline",marginInlineStart:x.marginXS,color:x.colorTextDescription,fontWeight:"normal",fontSize:x.fontSize},[`${G}-description`]:{color:x.colorTextDescription,fontSize:x.fontSize}},Pt(Ue.wait,x)),Pt(Ue.process,x)),{[`${G}-process > ${G}-container > ${G}-title`]:{fontWeight:x.fontWeightStrong}}),Pt(Ue.finish,x)),Pt(Ue.error,x)),{[`${G}${I}-next-error > ${I}-item-title::after`]:{background:x.colorError},[`${G}-disabled`]:{cursor:"not-allowed"}})},At=x=>{const{componentCls:I,motionDurationSlow:L}=x;return{[`& ${I}-item`]:{[`&:not(${I}-item-active)`]:{[`& > ${I}-item-container[role='button']`]:{cursor:"pointer",[`${I}-item`]:{[`&-title, &-subtitle, &-description, &-icon ${I}-icon`]:{transition:`color ${L}`}},"&:hover":{[`${I}-item`]:{"&-title, &-subtitle, &-description":{color:x.colorPrimary}}}},[`&:not(${I}-item-process)`]:{[`& > ${I}-item-container[role='button']:hover`]:{[`${I}-item`]:{"&-icon":{borderColor:x.colorPrimary,[`${I}-icon`]:{color:x.colorPrimary}}}}}}},[`&${I}-horizontal:not(${I}-label-vertical)`]:{[`${I}-item`]:{paddingInlineStart:x.padding,whiteSpace:"nowrap","&:first-child":{paddingInlineStart:0},[`&:last-child ${I}-item-title`]:{paddingInlineEnd:0},"&-tail":{display:"none"},"&-description":{maxWidth:x.descriptionMaxWidth,whiteSpace:"normal"}}}}},jt=x=>{const{componentCls:I}=x;return{[I]:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},(0,Zt.Wf)(x)),{display:"flex",width:"100%",fontSize:0,textAlign:"initial"}),Tt(x)),At(x)),zt(x)),Rt(x)),Ke(x)),Ce(x)),Ge(x)),me(x)),Je(x)),Me(x)),qt(x))}};var Kt=(0,ct.Z)("Steps",x=>{const{wireframe:I,colorTextDisabled:L,controlHeightLG:G,colorTextLightSolid:ie,colorText:ye,colorPrimary:Ae,colorTextLabel:ze,colorTextDescription:Ze,colorTextQuaternary:Ft,colorFillContent:dt,controlItemBgActive:hn,colorError:Mt,colorBgContainer:z,colorBorderSecondary:Z,colorSplit:ee}=x,Ie=(0,rt.TS)(x,{processIconColor:ie,processTitleColor:ye,processDescriptionColor:ye,processIconBgColor:Ae,processIconBorderColor:Ae,processDotColor:Ae,processTailColor:ee,waitIconColor:I?L:ze,waitTitleColor:Ze,waitDescriptionColor:Ze,waitTailColor:ee,waitIconBgColor:I?z:dt,waitIconBorderColor:I?L:"transparent",waitDotColor:L,finishIconColor:Ae,finishTitleColor:ye,finishDescriptionColor:Ze,finishTailColor:Ae,finishIconBgColor:I?z:hn,finishIconBorderColor:I?Ae:hn,finishDotColor:Ae,errorIconColor:ie,errorTitleColor:Mt,errorDescriptionColor:Mt,errorTailColor:ee,errorIconBgColor:Mt,errorIconBorderColor:Mt,errorDotColor:Mt,stepsNavActiveColor:Ae,stepsProgressSize:G,inlineDotSize:6,inlineTitleColor:Ft,inlineTailColor:Z});return[jt(Ie)]},x=>{const{colorTextDisabled:I,fontSize:L,controlHeightSM:G,controlHeight:ie,controlHeightLG:ye,fontSizeHeading3:Ae}=x;return{titleLineHeight:ie,customIconSize:ie,customIconTop:0,customIconFontSize:G,iconSize:ie,iconTop:-.5,iconFontSize:L,iconSizeSM:Ae,dotSize:ie/4,dotCurrentSize:ye/4,navArrowColor:I,navContentMaxWidth:"auto",descriptionMaxWidth:140}}),Dt=H(11592);function an(x){return x.filter(I=>I)}function T(x,I){if(x)return x;const L=(0,Dt.Z)(I).map(G=>{if(K.isValidElement(G)){const{props:ie}=G;return Object.assign({},ie)}return null});return an(L)}var y=function(x,I){var L={};for(var G in x)Object.prototype.hasOwnProperty.call(x,G)&&I.indexOf(G)<0&&(L[G]=x[G]);if(x!=null&&typeof Object.getOwnPropertySymbols=="function")for(var ie=0,G=Object.getOwnPropertySymbols(x);ie<G.length;ie++)I.indexOf(G[ie])<0&&Object.prototype.propertyIsEnumerable.call(x,G[ie])&&(L[G[ie]]=x[G[ie]]);return L};const A=x=>{const{percent:I,size:L,className:G,rootClassName:ie,direction:ye,items:Ae,responsive:ze=!0,current:Ze=0,children:Ft,style:dt}=x,hn=y(x,["percent","size","className","rootClassName","direction","items","responsive","current","children","style"]),{xs:Mt}=(0,St.Z)(ze),{getPrefixCls:z,direction:Z,steps:ee}=K.useContext(be.E_),Ie=K.useMemo(()=>ze&&Mt?"vertical":ye,[Mt,ye]),De=(0,Se.Z)(L),Oe=z("steps",x.prefixCls),[Xe,Ve]=Kt(Oe),qe=x.type==="inline",ut=z("",x.iconPrefix),it=T(Ae,Ft),lt=qe?void 0:I,bt=Object.assign(Object.assign({},ee==null?void 0:ee.style),dt),Gt=Be()(ee==null?void 0:ee.className,{[`${Oe}-rtl`]:Z==="rtl",[`${Oe}-with-progress`]:lt!==void 0},G,ie,Ve),Xt={finish:K.createElement(D.Z,{className:`${Oe}-finish-icon`}),error:K.createElement(Te.Z,{className:`${Oe}-error-icon`})},yt=Nt=>{let{node:wt,status:ft}=Nt;if(ft==="process"&&lt!==void 0){const j=De==="small"?32:40;return K.createElement("div",{className:`${Oe}-progress-icon`},K.createElement(cn.Z,{type:"circle",percent:lt,size:j,strokeWidth:4,format:()=>null}),wt)}return wt},pt=(Nt,wt)=>Nt.description?K.createElement(J.Z,{title:Nt.description},wt):wt;return Xe(K.createElement(Pe,Object.assign({icons:Xt},hn,{style:bt,current:Ze,size:De,items:it,itemRender:qe?pt:void 0,stepIcon:yt,direction:Ie,prefixCls:Oe,iconPrefix:ut,className:Gt})))};A.Step=Pe.Step;var R=A},86251:function(Qt,$e){"use strict";$e.byteLength=ne,$e.toByteArray=K,$e.fromByteArray=ve;for(var H=[],D=[],Te=typeof Uint8Array!="undefined"?Uint8Array:Array,ce="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Be=0,we=ce.length;Be<we;++Be)H[Be]=ce[Be],D[ce.charCodeAt(Be)]=Be;D[45]=62,D[95]=63;function $(ae){var Ee=ae.length;if(Ee%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var ge=ae.indexOf("=");ge===-1&&(ge=Ee);var _e=ge===Ee?0:4-ge%4;return[ge,_e]}function ne(ae){var Ee=$(ae),ge=Ee[0],_e=Ee[1];return(ge+_e)*3/4-_e}function M(ae,Ee,ge){return(Ee+ge)*3/4-ge}function K(ae){var Ee,ge=$(ae),_e=ge[0],Et=ge[1],Pe=new Te(M(ae,_e,Et)),be=0,Se=Et>0?_e-4:_e,St;for(St=0;St<Se;St+=4)Ee=D[ae.charCodeAt(St)]<<18|D[ae.charCodeAt(St+1)]<<12|D[ae.charCodeAt(St+2)]<<6|D[ae.charCodeAt(St+3)],Pe[be++]=Ee>>16&255,Pe[be++]=Ee>>8&255,Pe[be++]=Ee&255;return Et===2&&(Ee=D[ae.charCodeAt(St)]<<2|D[ae.charCodeAt(St+1)]>>4,Pe[be++]=Ee&255),Et===1&&(Ee=D[ae.charCodeAt(St)]<<10|D[ae.charCodeAt(St+1)]<<4|D[ae.charCodeAt(St+2)]>>2,Pe[be++]=Ee>>8&255,Pe[be++]=Ee&255),Pe}function Y(ae){return H[ae>>18&63]+H[ae>>12&63]+H[ae>>6&63]+H[ae&63]}function de(ae,Ee,ge){for(var _e,Et=[],Pe=Ee;Pe<ge;Pe+=3)_e=(ae[Pe]<<16&16711680)+(ae[Pe+1]<<8&65280)+(ae[Pe+2]&255),Et.push(Y(_e));return Et.join("")}function ve(ae){for(var Ee,ge=ae.length,_e=ge%3,Et=[],Pe=16383,be=0,Se=ge-_e;be<Se;be+=Pe)Et.push(de(ae,be,be+Pe>Se?Se:be+Pe));return _e===1?(Ee=ae[ge-1],Et.push(H[Ee>>2]+H[Ee<<4&63]+"==")):_e===2&&(Ee=(ae[ge-2]<<8)+ae[ge-1],Et.push(H[Ee>>10]+H[Ee>>4&63]+H[Ee<<2&63]+"=")),Et.join("")}},19208:function(Qt,$e,H){"use strict";var D;var Te=H(86251),ce=H(67467),Be=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;$e.lW=M,D=be,$e.h2=50;var we=2147483647;D=we,M.TYPED_ARRAY_SUPPORT=$(),!M.TYPED_ARRAY_SUPPORT&&typeof console!="undefined"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function $(){try{var T=new Uint8Array(1),y={foo:function(){return 42}};return Object.setPrototypeOf(y,Uint8Array.prototype),Object.setPrototypeOf(T,y),T.foo()===42}catch(A){return!1}}Object.defineProperty(M.prototype,"parent",{enumerable:!0,get:function(){if(M.isBuffer(this))return this.buffer}}),Object.defineProperty(M.prototype,"offset",{enumerable:!0,get:function(){if(M.isBuffer(this))return this.byteOffset}});function ne(T){if(T>we)throw new RangeError('The value "'+T+'" is invalid for option "size"');var y=new Uint8Array(T);return Object.setPrototypeOf(y,M.prototype),y}function M(T,y,A){if(typeof T=="number"){if(typeof y=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return ve(T)}return K(T,y,A)}M.poolSize=8192;function K(T,y,A){if(typeof T=="string")return ae(T,y);if(ArrayBuffer.isView(T))return ge(T);if(T==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof T);if(Kt(T,ArrayBuffer)||T&&Kt(T.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(Kt(T,SharedArrayBuffer)||T&&Kt(T.buffer,SharedArrayBuffer)))return _e(T,y,A);if(typeof T=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var R=T.valueOf&&T.valueOf();if(R!=null&&R!==T)return M.from(R,y,A);var x=Et(T);if(x)return x;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof T[Symbol.toPrimitive]=="function")return M.from(T[Symbol.toPrimitive]("string"),y,A);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof T)}M.from=function(T,y,A){return K(T,y,A)},Object.setPrototypeOf(M.prototype,Uint8Array.prototype),Object.setPrototypeOf(M,Uint8Array);function Y(T){if(typeof T!="number")throw new TypeError('"size" argument must be of type number');if(T<0)throw new RangeError('The value "'+T+'" is invalid for option "size"')}function de(T,y,A){return Y(T),T<=0?ne(T):y!==void 0?typeof A=="string"?ne(T).fill(y,A):ne(T).fill(y):ne(T)}M.alloc=function(T,y,A){return de(T,y,A)};function ve(T){return Y(T),ne(T<0?0:Pe(T)|0)}M.allocUnsafe=function(T){return ve(T)},M.allocUnsafeSlow=function(T){return ve(T)};function ae(T,y){if((typeof y!="string"||y==="")&&(y="utf8"),!M.isEncoding(y))throw new TypeError("Unknown encoding: "+y);var A=Se(T,y)|0,R=ne(A),x=R.write(T,y);return x!==A&&(R=R.slice(0,x)),R}function Ee(T){for(var y=T.length<0?0:Pe(T.length)|0,A=ne(y),R=0;R<y;R+=1)A[R]=T[R]&255;return A}function ge(T){if(Kt(T,Uint8Array)){var y=new Uint8Array(T);return _e(y.buffer,y.byteOffset,y.byteLength)}return Ee(T)}function _e(T,y,A){if(y<0||T.byteLength<y)throw new RangeError('"offset" is outside of buffer bounds');if(T.byteLength<y+(A||0))throw new RangeError('"length" is outside of buffer bounds');var R;return y===void 0&&A===void 0?R=new Uint8Array(T):A===void 0?R=new Uint8Array(T,y):R=new Uint8Array(T,y,A),Object.setPrototypeOf(R,M.prototype),R}function Et(T){if(M.isBuffer(T)){var y=Pe(T.length)|0,A=ne(y);return A.length===0||T.copy(A,0,0,y),A}if(T.length!==void 0)return typeof T.length!="number"||Dt(T.length)?ne(0):Ee(T);if(T.type==="Buffer"&&Array.isArray(T.data))return Ee(T.data)}function Pe(T){if(T>=we)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+we.toString(16)+" bytes");return T|0}function be(T){return+T!=T&&(T=0),M.alloc(+T)}M.isBuffer=function(y){return y!=null&&y._isBuffer===!0&&y!==M.prototype},M.compare=function(y,A){if(Kt(y,Uint8Array)&&(y=M.from(y,y.offset,y.byteLength)),Kt(A,Uint8Array)&&(A=M.from(A,A.offset,A.byteLength)),!M.isBuffer(y)||!M.isBuffer(A))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(y===A)return 0;for(var R=y.length,x=A.length,I=0,L=Math.min(R,x);I<L;++I)if(y[I]!==A[I]){R=y[I],x=A[I];break}return R<x?-1:x<R?1:0},M.isEncoding=function(y){switch(String(y).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},M.concat=function(y,A){if(!Array.isArray(y))throw new TypeError('"list" argument must be an Array of Buffers');if(y.length===0)return M.alloc(0);var R;if(A===void 0)for(A=0,R=0;R<y.length;++R)A+=y[R].length;var x=M.allocUnsafe(A),I=0;for(R=0;R<y.length;++R){var L=y[R];if(Kt(L,Uint8Array))I+L.length>x.length?M.from(L).copy(x,I):Uint8Array.prototype.set.call(x,L,I);else if(M.isBuffer(L))L.copy(x,I);else throw new TypeError('"list" argument must be an Array of Buffers');I+=L.length}return x};function Se(T,y){if(M.isBuffer(T))return T.length;if(ArrayBuffer.isView(T)||Kt(T,ArrayBuffer))return T.byteLength;if(typeof T!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof T);var A=T.length,R=arguments.length>2&&arguments[2]===!0;if(!R&&A===0)return 0;for(var x=!1;;)switch(y){case"ascii":case"latin1":case"binary":return A;case"utf8":case"utf-8":return Ue(T).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A*2;case"hex":return A>>>1;case"base64":return At(T).length;default:if(x)return R?-1:Ue(T).length;y=(""+y).toLowerCase(),x=!0}}M.byteLength=Se;function St(T,y,A){var R=!1;if((y===void 0||y<0)&&(y=0),y>this.length||((A===void 0||A>this.length)&&(A=this.length),A<=0)||(A>>>=0,y>>>=0,A<=y))return"";for(T||(T="utf8");;)switch(T){case"hex":return Me(this,y,A);case"utf8":case"utf-8":return Ht(this,y,A);case"ascii":return me(this,y,A);case"latin1":case"binary":return le(this,y,A);case"base64":return qt(this,y,A);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Qe(this,y,A);default:if(R)throw new TypeError("Unknown encoding: "+T);T=(T+"").toLowerCase(),R=!0}}M.prototype._isBuffer=!0;function cn(T,y,A){var R=T[y];T[y]=T[A],T[A]=R}M.prototype.swap16=function(){var y=this.length;if(y%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var A=0;A<y;A+=2)cn(this,A,A+1);return this},M.prototype.swap32=function(){var y=this.length;if(y%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var A=0;A<y;A+=4)cn(this,A,A+3),cn(this,A+1,A+2);return this},M.prototype.swap64=function(){var y=this.length;if(y%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var A=0;A<y;A+=8)cn(this,A,A+7),cn(this,A+1,A+6),cn(this,A+2,A+5),cn(this,A+3,A+4);return this},M.prototype.toString=function(){var y=this.length;return y===0?"":arguments.length===0?Ht(this,0,y):St.apply(this,arguments)},M.prototype.toLocaleString=M.prototype.toString,M.prototype.equals=function(y){if(!M.isBuffer(y))throw new TypeError("Argument must be a Buffer");return this===y?!0:M.compare(this,y)===0},M.prototype.inspect=function(){var y="",A=$e.h2;return y=this.toString("hex",0,A).replace(/(.{2})/g,"$1 ").trim(),this.length>A&&(y+=" ... "),"<Buffer "+y+">"},Be&&(M.prototype[Be]=M.prototype.inspect),M.prototype.compare=function(y,A,R,x,I){if(Kt(y,Uint8Array)&&(y=M.from(y,y.offset,y.byteLength)),!M.isBuffer(y))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof y);if(A===void 0&&(A=0),R===void 0&&(R=y?y.length:0),x===void 0&&(x=0),I===void 0&&(I=this.length),A<0||R>y.length||x<0||I>this.length)throw new RangeError("out of range index");if(x>=I&&A>=R)return 0;if(x>=I)return-1;if(A>=R)return 1;if(A>>>=0,R>>>=0,x>>>=0,I>>>=0,this===y)return 0;for(var L=I-x,G=R-A,ie=Math.min(L,G),ye=this.slice(x,I),Ae=y.slice(A,R),ze=0;ze<ie;++ze)if(ye[ze]!==Ae[ze]){L=ye[ze],G=Ae[ze];break}return L<G?-1:G<L?1:0};function J(T,y,A,R,x){if(T.length===0)return-1;if(typeof A=="string"?(R=A,A=0):A>2147483647?A=2147483647:A<-2147483648&&(A=-2147483648),A=+A,Dt(A)&&(A=x?0:T.length-1),A<0&&(A=T.length+A),A>=T.length){if(x)return-1;A=T.length-1}else if(A<0)if(x)A=0;else return-1;if(typeof y=="string"&&(y=M.from(y,R)),M.isBuffer(y))return y.length===0?-1:Zt(T,y,A,R,x);if(typeof y=="number")return y=y&255,typeof Uint8Array.prototype.indexOf=="function"?x?Uint8Array.prototype.indexOf.call(T,y,A):Uint8Array.prototype.lastIndexOf.call(T,y,A):Zt(T,[y],A,R,x);throw new TypeError("val must be string, number or Buffer")}function Zt(T,y,A,R,x){var I=1,L=T.length,G=y.length;if(R!==void 0&&(R=String(R).toLowerCase(),R==="ucs2"||R==="ucs-2"||R==="utf16le"||R==="utf-16le")){if(T.length<2||y.length<2)return-1;I=2,L/=2,G/=2,A/=2}function ie(Ft,dt){return I===1?Ft[dt]:Ft.readUInt16BE(dt*I)}var ye;if(x){var Ae=-1;for(ye=A;ye<L;ye++)if(ie(T,ye)===ie(y,Ae===-1?0:ye-Ae)){if(Ae===-1&&(Ae=ye),ye-Ae+1===G)return Ae*I}else Ae!==-1&&(ye-=ye-Ae),Ae=-1}else for(A+G>L&&(A=L-G),ye=A;ye>=0;ye--){for(var ze=!0,Ze=0;Ze<G;Ze++)if(ie(T,ye+Ze)!==ie(y,Ze)){ze=!1;break}if(ze)return ye}return-1}M.prototype.includes=function(y,A,R){return this.indexOf(y,A,R)!==-1},M.prototype.indexOf=function(y,A,R){return J(this,y,A,R,!0)},M.prototype.lastIndexOf=function(y,A,R){return J(this,y,A,R,!1)};function ct(T,y,A,R){A=Number(A)||0;var x=T.length-A;R?(R=Number(R),R>x&&(R=x)):R=x;var I=y.length;R>I/2&&(R=I/2);for(var L=0;L<R;++L){var G=parseInt(y.substr(L*2,2),16);if(Dt(G))return L;T[A+L]=G}return L}function rt(T,y,A,R){return jt(Ue(y,T.length-A),T,A,R)}function Vt(T,y,A,R){return jt(Pt(y),T,A,R)}function zt(T,y,A,R){return jt(At(y),T,A,R)}function Ut(T,y,A,R){return jt(Tt(y,T.length-A),T,A,R)}M.prototype.write=function(y,A,R,x){if(A===void 0)x="utf8",R=this.length,A=0;else if(R===void 0&&typeof A=="string")x=A,R=this.length,A=0;else if(isFinite(A))A=A>>>0,isFinite(R)?(R=R>>>0,x===void 0&&(x="utf8")):(x=R,R=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var I=this.length-A;if((R===void 0||R>I)&&(R=I),y.length>0&&(R<0||A<0)||A>this.length)throw new RangeError("Attempt to write outside buffer bounds");x||(x="utf8");for(var L=!1;;)switch(x){case"hex":return ct(this,y,A,R);case"utf8":case"utf-8":return rt(this,y,A,R);case"ascii":case"latin1":case"binary":return Vt(this,y,A,R);case"base64":return zt(this,y,A,R);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ut(this,y,A,R);default:if(L)throw new TypeError("Unknown encoding: "+x);x=(""+x).toLowerCase(),L=!0}},M.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function qt(T,y,A){return y===0&&A===T.length?Te.fromByteArray(T):Te.fromByteArray(T.slice(y,A))}function Ht(T,y,A){A=Math.min(T.length,A);for(var R=[],x=y;x<A;){var I=T[x],L=null,G=I>239?4:I>223?3:I>191?2:1;if(x+G<=A){var ie,ye,Ae,ze;switch(G){case 1:I<128&&(L=I);break;case 2:ie=T[x+1],(ie&192)===128&&(ze=(I&31)<<6|ie&63,ze>127&&(L=ze));break;case 3:ie=T[x+1],ye=T[x+2],(ie&192)===128&&(ye&192)===128&&(ze=(I&15)<<12|(ie&63)<<6|ye&63,ze>2047&&(ze<55296||ze>57343)&&(L=ze));break;case 4:ie=T[x+1],ye=T[x+2],Ae=T[x+3],(ie&192)===128&&(ye&192)===128&&(Ae&192)===128&&(ze=(I&15)<<18|(ie&63)<<12|(ye&63)<<6|Ae&63,ze>65535&&ze<1114112&&(L=ze))}}L===null?(L=65533,G=1):L>65535&&(L-=65536,R.push(L>>>10&1023|55296),L=56320|L&1023),R.push(L),x+=G}return re(R)}var Ce=4096;function re(T){var y=T.length;if(y<=Ce)return String.fromCharCode.apply(String,T);for(var A="",R=0;R<y;)A+=String.fromCharCode.apply(String,T.slice(R,R+=Ce));return A}function me(T,y,A){var R="";A=Math.min(T.length,A);for(var x=y;x<A;++x)R+=String.fromCharCode(T[x]&127);return R}function le(T,y,A){var R="";A=Math.min(T.length,A);for(var x=y;x<A;++x)R+=String.fromCharCode(T[x]);return R}function Me(T,y,A){var R=T.length;(!y||y<0)&&(y=0),(!A||A<0||A>R)&&(A=R);for(var x="",I=y;I<A;++I)x+=an[T[I]];return x}function Qe(T,y,A){for(var R=T.slice(y,A),x="",I=0;I<R.length-1;I+=2)x+=String.fromCharCode(R[I]+R[I+1]*256);return x}M.prototype.slice=function(y,A){var R=this.length;y=~~y,A=A===void 0?R:~~A,y<0?(y+=R,y<0&&(y=0)):y>R&&(y=R),A<0?(A+=R,A<0&&(A=0)):A>R&&(A=R),A<y&&(A=y);var x=this.subarray(y,A);return Object.setPrototypeOf(x,M.prototype),x};function Ge(T,y,A){if(T%1!==0||T<0)throw new RangeError("offset is not uint");if(T+y>A)throw new RangeError("Trying to access beyond buffer length")}M.prototype.readUintLE=M.prototype.readUIntLE=function(y,A,R){y=y>>>0,A=A>>>0,R||Ge(y,A,this.length);for(var x=this[y],I=1,L=0;++L<A&&(I*=256);)x+=this[y+L]*I;return x},M.prototype.readUintBE=M.prototype.readUIntBE=function(y,A,R){y=y>>>0,A=A>>>0,R||Ge(y,A,this.length);for(var x=this[y+--A],I=1;A>0&&(I*=256);)x+=this[y+--A]*I;return x},M.prototype.readUint8=M.prototype.readUInt8=function(y,A){return y=y>>>0,A||Ge(y,1,this.length),this[y]},M.prototype.readUint16LE=M.prototype.readUInt16LE=function(y,A){return y=y>>>0,A||Ge(y,2,this.length),this[y]|this[y+1]<<8},M.prototype.readUint16BE=M.prototype.readUInt16BE=function(y,A){return y=y>>>0,A||Ge(y,2,this.length),this[y]<<8|this[y+1]},M.prototype.readUint32LE=M.prototype.readUInt32LE=function(y,A){return y=y>>>0,A||Ge(y,4,this.length),(this[y]|this[y+1]<<8|this[y+2]<<16)+this[y+3]*16777216},M.prototype.readUint32BE=M.prototype.readUInt32BE=function(y,A){return y=y>>>0,A||Ge(y,4,this.length),this[y]*16777216+(this[y+1]<<16|this[y+2]<<8|this[y+3])},M.prototype.readIntLE=function(y,A,R){y=y>>>0,A=A>>>0,R||Ge(y,A,this.length);for(var x=this[y],I=1,L=0;++L<A&&(I*=256);)x+=this[y+L]*I;return I*=128,x>=I&&(x-=Math.pow(2,8*A)),x},M.prototype.readIntBE=function(y,A,R){y=y>>>0,A=A>>>0,R||Ge(y,A,this.length);for(var x=A,I=1,L=this[y+--x];x>0&&(I*=256);)L+=this[y+--x]*I;return I*=128,L>=I&&(L-=Math.pow(2,8*A)),L},M.prototype.readInt8=function(y,A){return y=y>>>0,A||Ge(y,1,this.length),this[y]&128?(255-this[y]+1)*-1:this[y]},M.prototype.readInt16LE=function(y,A){y=y>>>0,A||Ge(y,2,this.length);var R=this[y]|this[y+1]<<8;return R&32768?R|4294901760:R},M.prototype.readInt16BE=function(y,A){y=y>>>0,A||Ge(y,2,this.length);var R=this[y+1]|this[y]<<8;return R&32768?R|4294901760:R},M.prototype.readInt32LE=function(y,A){return y=y>>>0,A||Ge(y,4,this.length),this[y]|this[y+1]<<8|this[y+2]<<16|this[y+3]<<24},M.prototype.readInt32BE=function(y,A){return y=y>>>0,A||Ge(y,4,this.length),this[y]<<24|this[y+1]<<16|this[y+2]<<8|this[y+3]},M.prototype.readFloatLE=function(y,A){return y=y>>>0,A||Ge(y,4,this.length),ce.read(this,y,!0,23,4)},M.prototype.readFloatBE=function(y,A){return y=y>>>0,A||Ge(y,4,this.length),ce.read(this,y,!1,23,4)},M.prototype.readDoubleLE=function(y,A){return y=y>>>0,A||Ge(y,8,this.length),ce.read(this,y,!0,52,8)},M.prototype.readDoubleBE=function(y,A){return y=y>>>0,A||Ge(y,8,this.length),ce.read(this,y,!1,52,8)};function B(T,y,A,R,x,I){if(!M.isBuffer(T))throw new TypeError('"buffer" argument must be a Buffer instance');if(y>x||y<I)throw new RangeError('"value" argument is out of bounds');if(A+R>T.length)throw new RangeError("Index out of range")}M.prototype.writeUintLE=M.prototype.writeUIntLE=function(y,A,R,x){if(y=+y,A=A>>>0,R=R>>>0,!x){var I=Math.pow(2,8*R)-1;B(this,y,A,R,I,0)}var L=1,G=0;for(this[A]=y&255;++G<R&&(L*=256);)this[A+G]=y/L&255;return A+R},M.prototype.writeUintBE=M.prototype.writeUIntBE=function(y,A,R,x){if(y=+y,A=A>>>0,R=R>>>0,!x){var I=Math.pow(2,8*R)-1;B(this,y,A,R,I,0)}var L=R-1,G=1;for(this[A+L]=y&255;--L>=0&&(G*=256);)this[A+L]=y/G&255;return A+R},M.prototype.writeUint8=M.prototype.writeUInt8=function(y,A,R){return y=+y,A=A>>>0,R||B(this,y,A,1,255,0),this[A]=y&255,A+1},M.prototype.writeUint16LE=M.prototype.writeUInt16LE=function(y,A,R){return y=+y,A=A>>>0,R||B(this,y,A,2,65535,0),this[A]=y&255,this[A+1]=y>>>8,A+2},M.prototype.writeUint16BE=M.prototype.writeUInt16BE=function(y,A,R){return y=+y,A=A>>>0,R||B(this,y,A,2,65535,0),this[A]=y>>>8,this[A+1]=y&255,A+2},M.prototype.writeUint32LE=M.prototype.writeUInt32LE=function(y,A,R){return y=+y,A=A>>>0,R||B(this,y,A,4,4294967295,0),this[A+3]=y>>>24,this[A+2]=y>>>16,this[A+1]=y>>>8,this[A]=y&255,A+4},M.prototype.writeUint32BE=M.prototype.writeUInt32BE=function(y,A,R){return y=+y,A=A>>>0,R||B(this,y,A,4,4294967295,0),this[A]=y>>>24,this[A+1]=y>>>16,this[A+2]=y>>>8,this[A+3]=y&255,A+4},M.prototype.writeIntLE=function(y,A,R,x){if(y=+y,A=A>>>0,!x){var I=Math.pow(2,8*R-1);B(this,y,A,R,I-1,-I)}var L=0,G=1,ie=0;for(this[A]=y&255;++L<R&&(G*=256);)y<0&&ie===0&&this[A+L-1]!==0&&(ie=1),this[A+L]=(y/G>>0)-ie&255;return A+R},M.prototype.writeIntBE=function(y,A,R,x){if(y=+y,A=A>>>0,!x){var I=Math.pow(2,8*R-1);B(this,y,A,R,I-1,-I)}var L=R-1,G=1,ie=0;for(this[A+L]=y&255;--L>=0&&(G*=256);)y<0&&ie===0&&this[A+L+1]!==0&&(ie=1),this[A+L]=(y/G>>0)-ie&255;return A+R},M.prototype.writeInt8=function(y,A,R){return y=+y,A=A>>>0,R||B(this,y,A,1,127,-128),y<0&&(y=255+y+1),this[A]=y&255,A+1},M.prototype.writeInt16LE=function(y,A,R){return y=+y,A=A>>>0,R||B(this,y,A,2,32767,-32768),this[A]=y&255,this[A+1]=y>>>8,A+2},M.prototype.writeInt16BE=function(y,A,R){return y=+y,A=A>>>0,R||B(this,y,A,2,32767,-32768),this[A]=y>>>8,this[A+1]=y&255,A+2},M.prototype.writeInt32LE=function(y,A,R){return y=+y,A=A>>>0,R||B(this,y,A,4,2147483647,-2147483648),this[A]=y&255,this[A+1]=y>>>8,this[A+2]=y>>>16,this[A+3]=y>>>24,A+4},M.prototype.writeInt32BE=function(y,A,R){return y=+y,A=A>>>0,R||B(this,y,A,4,2147483647,-2147483648),y<0&&(y=4294967295+y+1),this[A]=y>>>24,this[A+1]=y>>>16,this[A+2]=y>>>8,this[A+3]=y&255,A+4};function Je(T,y,A,R,x,I){if(A+R>T.length)throw new RangeError("Index out of range");if(A<0)throw new RangeError("Index out of range")}function $t(T,y,A,R,x){return y=+y,A=A>>>0,x||Je(T,y,A,4,34028234663852886e22,-34028234663852886e22),ce.write(T,y,A,R,23,4),A+4}M.prototype.writeFloatLE=function(y,A,R){return $t(this,y,A,!0,R)},M.prototype.writeFloatBE=function(y,A,R){return $t(this,y,A,!1,R)};function Rt(T,y,A,R,x){return y=+y,A=A>>>0,x||Je(T,y,A,8,17976931348623157e292,-17976931348623157e292),ce.write(T,y,A,R,52,8),A+8}M.prototype.writeDoubleLE=function(y,A,R){return Rt(this,y,A,!0,R)},M.prototype.writeDoubleBE=function(y,A,R){return Rt(this,y,A,!1,R)},M.prototype.copy=function(y,A,R,x){if(!M.isBuffer(y))throw new TypeError("argument should be a Buffer");if(R||(R=0),!x&&x!==0&&(x=this.length),A>=y.length&&(A=y.length),A||(A=0),x>0&&x<R&&(x=R),x===R||y.length===0||this.length===0)return 0;if(A<0)throw new RangeError("targetStart out of bounds");if(R<0||R>=this.length)throw new RangeError("Index out of range");if(x<0)throw new RangeError("sourceEnd out of bounds");x>this.length&&(x=this.length),y.length-A<x-R&&(x=y.length-A+R);var I=x-R;return this===y&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(A,R,x):Uint8Array.prototype.set.call(y,this.subarray(R,x),A),I},M.prototype.fill=function(y,A,R,x){if(typeof y=="string"){if(typeof A=="string"?(x=A,A=0,R=this.length):typeof R=="string"&&(x=R,R=this.length),x!==void 0&&typeof x!="string")throw new TypeError("encoding must be a string");if(typeof x=="string"&&!M.isEncoding(x))throw new TypeError("Unknown encoding: "+x);if(y.length===1){var I=y.charCodeAt(0);(x==="utf8"&&I<128||x==="latin1")&&(y=I)}}else typeof y=="number"?y=y&255:typeof y=="boolean"&&(y=Number(y));if(A<0||this.length<A||this.length<R)throw new RangeError("Out of range index");if(R<=A)return this;A=A>>>0,R=R===void 0?this.length:R>>>0,y||(y=0);var L;if(typeof y=="number")for(L=A;L<R;++L)this[L]=y;else{var G=M.isBuffer(y)?y:M.from(y,x),ie=G.length;if(ie===0)throw new TypeError('The value "'+y+'" is invalid for argument "value"');for(L=0;L<R-A;++L)this[L+A]=G[L%ie]}return this};var Re=/[^+/0-9A-Za-z-_]/g;function Ke(T){if(T=T.split("=")[0],T=T.trim().replace(Re,""),T.length<2)return"";for(;T.length%4!==0;)T=T+"=";return T}function Ue(T,y){y=y||1/0;for(var A,R=T.length,x=null,I=[],L=0;L<R;++L){if(A=T.charCodeAt(L),A>55295&&A<57344){if(!x){if(A>56319){(y-=3)>-1&&I.push(239,191,189);continue}else if(L+1===R){(y-=3)>-1&&I.push(239,191,189);continue}x=A;continue}if(A<56320){(y-=3)>-1&&I.push(239,191,189),x=A;continue}A=(x-55296<<10|A-56320)+65536}else x&&(y-=3)>-1&&I.push(239,191,189);if(x=null,A<128){if((y-=1)<0)break;I.push(A)}else if(A<2048){if((y-=2)<0)break;I.push(A>>6|192,A&63|128)}else if(A<65536){if((y-=3)<0)break;I.push(A>>12|224,A>>6&63|128,A&63|128)}else if(A<1114112){if((y-=4)<0)break;I.push(A>>18|240,A>>12&63|128,A>>6&63|128,A&63|128)}else throw new Error("Invalid code point")}return I}function Pt(T){for(var y=[],A=0;A<T.length;++A)y.push(T.charCodeAt(A)&255);return y}function Tt(T,y){for(var A,R,x,I=[],L=0;L<T.length&&!((y-=2)<0);++L)A=T.charCodeAt(L),R=A>>8,x=A%256,I.push(x),I.push(R);return I}function At(T){return Te.toByteArray(Ke(T))}function jt(T,y,A,R){for(var x=0;x<R&&!(x+A>=y.length||x>=T.length);++x)y[x+A]=T[x];return x}function Kt(T,y){return T instanceof y||T!=null&&T.constructor!=null&&T.constructor.name!=null&&T.constructor.name===y.name}function Dt(T){return T!==T}var an=function(){for(var T="0123456789abcdef",y=new Array(256),A=0;A<16;++A)for(var R=A*16,x=0;x<16;++x)y[R+x]=T[A]+T[x];return y}()},67467:function(Qt,$e){$e.read=function(H,D,Te,ce,Be){var we,$,ne=Be*8-ce-1,M=(1<<ne)-1,K=M>>1,Y=-7,de=Te?Be-1:0,ve=Te?-1:1,ae=H[D+de];for(de+=ve,we=ae&(1<<-Y)-1,ae>>=-Y,Y+=ne;Y>0;we=we*256+H[D+de],de+=ve,Y-=8);for($=we&(1<<-Y)-1,we>>=-Y,Y+=ce;Y>0;$=$*256+H[D+de],de+=ve,Y-=8);if(we===0)we=1-K;else{if(we===M)return $?NaN:(ae?-1:1)*(1/0);$=$+Math.pow(2,ce),we=we-K}return(ae?-1:1)*$*Math.pow(2,we-ce)},$e.write=function(H,D,Te,ce,Be,we){var $,ne,M,K=we*8-Be-1,Y=(1<<K)-1,de=Y>>1,ve=Be===23?Math.pow(2,-24)-Math.pow(2,-77):0,ae=ce?0:we-1,Ee=ce?1:-1,ge=D<0||D===0&&1/D<0?1:0;for(D=Math.abs(D),isNaN(D)||D===1/0?(ne=isNaN(D)?1:0,$=Y):($=Math.floor(Math.log(D)/Math.LN2),D*(M=Math.pow(2,-$))<1&&($--,M*=2),$+de>=1?D+=ve/M:D+=ve*Math.pow(2,1-de),D*M>=2&&($++,M/=2),$+de>=Y?(ne=0,$=Y):$+de>=1?(ne=(D*M-1)*Math.pow(2,Be),$=$+de):(ne=D*Math.pow(2,de-1)*Math.pow(2,Be),$=0));Be>=8;H[Te+ae]=ne&255,ae+=Ee,ne/=256,Be-=8);for($=$<<Be|ne,K+=Be;K>0;H[Te+ae]=$&255,ae+=Ee,$/=256,K-=8);H[Te+ae-Ee]|=ge*128}},31193:function(Qt,$e,H){var D=H(48955);function Te(ce){this.mode=D.MODE_8BIT_BYTE,this.data=ce}Te.prototype={getLength:function(ce){return this.data.length},write:function(ce){for(var Be=0;Be<this.data.length;Be++)ce.put(this.data.charCodeAt(Be),8)}},Qt.exports=Te},31144:function(Qt){function $e(){this.buffer=new Array,this.length=0}$e.prototype={get:function(H){var D=Math.floor(H/8);return(this.buffer[D]>>>7-H%8&1)==1},put:function(H,D){for(var Te=0;Te<D;Te++)this.putBit((H>>>D-Te-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(H){var D=Math.floor(this.length/8);this.buffer.length<=D&&this.buffer.push(0),H&&(this.buffer[D]|=128>>>this.length%8),this.length++}},Qt.exports=$e},78485:function(Qt){Qt.exports={L:1,M:0,Q:3,H:2}},13679:function(Qt,$e,H){var D=H(87532);function Te(ce,Be){if(ce.length==null)throw new Error(ce.length+"/"+Be);for(var we=0;we<ce.length&&ce[we]==0;)we++;this.num=new Array(ce.length-we+Be);for(var $=0;$<ce.length-we;$++)this.num[$]=ce[$+we]}Te.prototype={get:function(ce){return this.num[ce]},getLength:function(){return this.num.length},multiply:function(ce){for(var Be=new Array(this.getLength()+ce.getLength()-1),we=0;we<this.getLength();we++)for(var $=0;$<ce.getLength();$++)Be[we+$]^=D.gexp(D.glog(this.get(we))+D.glog(ce.get($)));return new Te(Be,0)},mod:function(ce){if(this.getLength()-ce.getLength()<0)return this;for(var Be=D.glog(this.get(0))-D.glog(ce.get(0)),we=new Array(this.getLength()),$=0;$<this.getLength();$++)we[$]=this.get($);for(var $=0;$<ce.getLength();$++)we[$]^=D.gexp(D.glog(ce.get($))+Be);return new Te(we,0).mod(ce)}},Qt.exports=Te},86397:function(Qt,$e,H){var D=H(31193),Te=H(84590),ce=H(31144),Be=H(28688),we=H(13679);function $(M,K){this.typeNumber=M,this.errorCorrectLevel=K,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}var ne=$.prototype;ne.addData=function(M){var K=new D(M);this.dataList.push(K),this.dataCache=null},ne.isDark=function(M,K){if(M<0||this.moduleCount<=M||K<0||this.moduleCount<=K)throw new Error(M+","+K);return this.modules[M][K]},ne.getModuleCount=function(){return this.moduleCount},ne.make=function(){if(this.typeNumber<1){var M=1;for(M=1;M<40;M++){for(var K=Te.getRSBlocks(M,this.errorCorrectLevel),Y=new ce,de=0,ve=0;ve<K.length;ve++)de+=K[ve].dataCount;for(var ve=0;ve<this.dataList.length;ve++){var ae=this.dataList[ve];Y.put(ae.mode,4),Y.put(ae.getLength(),Be.getLengthInBits(ae.mode,M)),ae.write(Y)}if(Y.getLengthInBits()<=de*8)break}this.typeNumber=M}this.makeImpl(!1,this.getBestMaskPattern())},ne.makeImpl=function(M,K){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var Y=0;Y<this.moduleCount;Y++){this.modules[Y]=new Array(this.moduleCount);for(var de=0;de<this.moduleCount;de++)this.modules[Y][de]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(M,K),this.typeNumber>=7&&this.setupTypeNumber(M),this.dataCache==null&&(this.dataCache=$.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,K)},ne.setupPositionProbePattern=function(M,K){for(var Y=-1;Y<=7;Y++)if(!(M+Y<=-1||this.moduleCount<=M+Y))for(var de=-1;de<=7;de++)K+de<=-1||this.moduleCount<=K+de||(0<=Y&&Y<=6&&(de==0||de==6)||0<=de&&de<=6&&(Y==0||Y==6)||2<=Y&&Y<=4&&2<=de&&de<=4?this.modules[M+Y][K+de]=!0:this.modules[M+Y][K+de]=!1)},ne.getBestMaskPattern=function(){for(var M=0,K=0,Y=0;Y<8;Y++){this.makeImpl(!0,Y);var de=Be.getLostPoint(this);(Y==0||M>de)&&(M=de,K=Y)}return K},ne.createMovieClip=function(M,K,Y){var de=M.createEmptyMovieClip(K,Y),ve=1;this.make();for(var ae=0;ae<this.modules.length;ae++)for(var Ee=ae*ve,ge=0;ge<this.modules[ae].length;ge++){var _e=ge*ve,Et=this.modules[ae][ge];Et&&(de.beginFill(0,100),de.moveTo(_e,Ee),de.lineTo(_e+ve,Ee),de.lineTo(_e+ve,Ee+ve),de.lineTo(_e,Ee+ve),de.endFill())}return de},ne.setupTimingPattern=function(){for(var M=8;M<this.moduleCount-8;M++)this.modules[M][6]==null&&(this.modules[M][6]=M%2==0);for(var K=8;K<this.moduleCount-8;K++)this.modules[6][K]==null&&(this.modules[6][K]=K%2==0)},ne.setupPositionAdjustPattern=function(){for(var M=Be.getPatternPosition(this.typeNumber),K=0;K<M.length;K++)for(var Y=0;Y<M.length;Y++){var de=M[K],ve=M[Y];if(this.modules[de][ve]==null)for(var ae=-2;ae<=2;ae++)for(var Ee=-2;Ee<=2;Ee++)ae==-2||ae==2||Ee==-2||Ee==2||ae==0&&Ee==0?this.modules[de+ae][ve+Ee]=!0:this.modules[de+ae][ve+Ee]=!1}},ne.setupTypeNumber=function(M){for(var K=Be.getBCHTypeNumber(this.typeNumber),Y=0;Y<18;Y++){var de=!M&&(K>>Y&1)==1;this.modules[Math.floor(Y/3)][Y%3+this.moduleCount-8-3]=de}for(var Y=0;Y<18;Y++){var de=!M&&(K>>Y&1)==1;this.modules[Y%3+this.moduleCount-8-3][Math.floor(Y/3)]=de}},ne.setupTypeInfo=function(M,K){for(var Y=this.errorCorrectLevel<<3|K,de=Be.getBCHTypeInfo(Y),ve=0;ve<15;ve++){var ae=!M&&(de>>ve&1)==1;ve<6?this.modules[ve][8]=ae:ve<8?this.modules[ve+1][8]=ae:this.modules[this.moduleCount-15+ve][8]=ae}for(var ve=0;ve<15;ve++){var ae=!M&&(de>>ve&1)==1;ve<8?this.modules[8][this.moduleCount-ve-1]=ae:ve<9?this.modules[8][15-ve-1+1]=ae:this.modules[8][15-ve-1]=ae}this.modules[this.moduleCount-8][8]=!M},ne.mapData=function(M,K){for(var Y=-1,de=this.moduleCount-1,ve=7,ae=0,Ee=this.moduleCount-1;Ee>0;Ee-=2)for(Ee==6&&Ee--;;){for(var ge=0;ge<2;ge++)if(this.modules[de][Ee-ge]==null){var _e=!1;ae<M.length&&(_e=(M[ae]>>>ve&1)==1);var Et=Be.getMask(K,de,Ee-ge);Et&&(_e=!_e),this.modules[de][Ee-ge]=_e,ve--,ve==-1&&(ae++,ve=7)}if(de+=Y,de<0||this.moduleCount<=de){de-=Y,Y=-Y;break}}},$.PAD0=236,$.PAD1=17,$.createData=function(M,K,Y){for(var de=Te.getRSBlocks(M,K),ve=new ce,ae=0;ae<Y.length;ae++){var Ee=Y[ae];ve.put(Ee.mode,4),ve.put(Ee.getLength(),Be.getLengthInBits(Ee.mode,M)),Ee.write(ve)}for(var ge=0,ae=0;ae<de.length;ae++)ge+=de[ae].dataCount;if(ve.getLengthInBits()>ge*8)throw new Error("code length overflow. ("+ve.getLengthInBits()+">"+ge*8+")");for(ve.getLengthInBits()+4<=ge*8&&ve.put(0,4);ve.getLengthInBits()%8!=0;)ve.putBit(!1);for(;!(ve.getLengthInBits()>=ge*8||(ve.put($.PAD0,8),ve.getLengthInBits()>=ge*8));)ve.put($.PAD1,8);return $.createBytes(ve,de)},$.createBytes=function(M,K){for(var Y=0,de=0,ve=0,ae=new Array(K.length),Ee=new Array(K.length),ge=0;ge<K.length;ge++){var _e=K[ge].dataCount,Et=K[ge].totalCount-_e;de=Math.max(de,_e),ve=Math.max(ve,Et),ae[ge]=new Array(_e);for(var Pe=0;Pe<ae[ge].length;Pe++)ae[ge][Pe]=255&M.buffer[Pe+Y];Y+=_e;var be=Be.getErrorCorrectPolynomial(Et),Se=new we(ae[ge],be.getLength()-1),St=Se.mod(be);Ee[ge]=new Array(be.getLength()-1);for(var Pe=0;Pe<Ee[ge].length;Pe++){var cn=Pe+St.getLength()-Ee[ge].length;Ee[ge][Pe]=cn>=0?St.get(cn):0}}for(var J=0,Pe=0;Pe<K.length;Pe++)J+=K[Pe].totalCount;for(var Zt=new Array(J),ct=0,Pe=0;Pe<de;Pe++)for(var ge=0;ge<K.length;ge++)Pe<ae[ge].length&&(Zt[ct++]=ae[ge][Pe]);for(var Pe=0;Pe<ve;Pe++)for(var ge=0;ge<K.length;ge++)Pe<Ee[ge].length&&(Zt[ct++]=Ee[ge][Pe]);return Zt},Qt.exports=$},84590:function(Qt,$e,H){var D=H(78485);function Te(ce,Be){this.totalCount=ce,this.dataCount=Be}Te.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],Te.getRSBlocks=function(ce,Be){var we=Te.getRsBlockTable(ce,Be);if(we==null)throw new Error("bad rs block @ typeNumber:"+ce+"/errorCorrectLevel:"+Be);for(var $=we.length/3,ne=new Array,M=0;M<$;M++)for(var K=we[M*3+0],Y=we[M*3+1],de=we[M*3+2],ve=0;ve<K;ve++)ne.push(new Te(Y,de));return ne},Te.getRsBlockTable=function(ce,Be){switch(Be){case D.L:return Te.RS_BLOCK_TABLE[(ce-1)*4+0];case D.M:return Te.RS_BLOCK_TABLE[(ce-1)*4+1];case D.Q:return Te.RS_BLOCK_TABLE[(ce-1)*4+2];case D.H:return Te.RS_BLOCK_TABLE[(ce-1)*4+3];default:return}},Qt.exports=Te},87532:function(Qt){for(var $e={glog:function(D){if(D<1)throw new Error("glog("+D+")");return $e.LOG_TABLE[D]},gexp:function(D){for(;D<0;)D+=255;for(;D>=256;)D-=255;return $e.EXP_TABLE[D]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},H=0;H<8;H++)$e.EXP_TABLE[H]=1<<H;for(var H=8;H<256;H++)$e.EXP_TABLE[H]=$e.EXP_TABLE[H-4]^$e.EXP_TABLE[H-5]^$e.EXP_TABLE[H-6]^$e.EXP_TABLE[H-8];for(var H=0;H<255;H++)$e.LOG_TABLE[$e.EXP_TABLE[H]]=H;Qt.exports=$e},48955:function(Qt){Qt.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}},28688:function(Qt,$e,H){var D=H(48955),Te=H(13679),ce=H(87532),Be={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},we={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function($){for(var ne=$<<10;we.getBCHDigit(ne)-we.getBCHDigit(we.G15)>=0;)ne^=we.G15<<we.getBCHDigit(ne)-we.getBCHDigit(we.G15);return($<<10|ne)^we.G15_MASK},getBCHTypeNumber:function($){for(var ne=$<<12;we.getBCHDigit(ne)-we.getBCHDigit(we.G18)>=0;)ne^=we.G18<<we.getBCHDigit(ne)-we.getBCHDigit(we.G18);return $<<12|ne},getBCHDigit:function($){for(var ne=0;$!=0;)ne++,$>>>=1;return ne},getPatternPosition:function($){return we.PATTERN_POSITION_TABLE[$-1]},getMask:function($,ne,M){switch($){case Be.PATTERN000:return(ne+M)%2==0;case Be.PATTERN001:return ne%2==0;case Be.PATTERN010:return M%3==0;case Be.PATTERN011:return(ne+M)%3==0;case Be.PATTERN100:return(Math.floor(ne/2)+Math.floor(M/3))%2==0;case Be.PATTERN101:return ne*M%2+ne*M%3==0;case Be.PATTERN110:return(ne*M%2+ne*M%3)%2==0;case Be.PATTERN111:return(ne*M%3+(ne+M)%2)%2==0;default:throw new Error("bad maskPattern:"+$)}},getErrorCorrectPolynomial:function($){for(var ne=new Te([1],0),M=0;M<$;M++)ne=ne.multiply(new Te([1,ce.gexp(M)],0));return ne},getLengthInBits:function($,ne){if(1<=ne&&ne<10)switch($){case D.MODE_NUMBER:return 10;case D.MODE_ALPHA_NUM:return 9;case D.MODE_8BIT_BYTE:return 8;case D.MODE_KANJI:return 8;default:throw new Error("mode:"+$)}else if(ne<27)switch($){case D.MODE_NUMBER:return 12;case D.MODE_ALPHA_NUM:return 11;case D.MODE_8BIT_BYTE:return 16;case D.MODE_KANJI:return 10;default:throw new Error("mode:"+$)}else if(ne<41)switch($){case D.MODE_NUMBER:return 14;case D.MODE_ALPHA_NUM:return 13;case D.MODE_8BIT_BYTE:return 16;case D.MODE_KANJI:return 12;default:throw new Error("mode:"+$)}else throw new Error("type:"+ne)},getLostPoint:function($){for(var ne=$.getModuleCount(),M=0,K=0;K<ne;K++)for(var Y=0;Y<ne;Y++){for(var de=0,ve=$.isDark(K,Y),ae=-1;ae<=1;ae++)if(!(K+ae<0||ne<=K+ae))for(var Ee=-1;Ee<=1;Ee++)Y+Ee<0||ne<=Y+Ee||ae==0&&Ee==0||ve==$.isDark(K+ae,Y+Ee)&&de++;de>5&&(M+=3+de-5)}for(var K=0;K<ne-1;K++)for(var Y=0;Y<ne-1;Y++){var ge=0;$.isDark(K,Y)&&ge++,$.isDark(K+1,Y)&&ge++,$.isDark(K,Y+1)&&ge++,$.isDark(K+1,Y+1)&&ge++,(ge==0||ge==4)&&(M+=3)}for(var K=0;K<ne;K++)for(var Y=0;Y<ne-6;Y++)$.isDark(K,Y)&&!$.isDark(K,Y+1)&&$.isDark(K,Y+2)&&$.isDark(K,Y+3)&&$.isDark(K,Y+4)&&!$.isDark(K,Y+5)&&$.isDark(K,Y+6)&&(M+=40);for(var Y=0;Y<ne;Y++)for(var K=0;K<ne-6;K++)$.isDark(K,Y)&&!$.isDark(K+1,Y)&&$.isDark(K+2,Y)&&$.isDark(K+3,Y)&&$.isDark(K+4,Y)&&!$.isDark(K+5,Y)&&$.isDark(K+6,Y)&&(M+=40);for(var _e=0,Y=0;Y<ne;Y++)for(var K=0;K<ne;K++)$.isDark(K,Y)&&_e++;var Et=Math.abs(100*_e/ne/ne-50)/5;return M+=Et*10,M}};Qt.exports=we},15845:function(Qt,$e,H){"use strict";function D(Ce){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?D=function(me){return typeof me}:D=function(me){return me&&typeof Symbol=="function"&&me.constructor===Symbol&&me!==Symbol.prototype?"symbol":typeof me},D(Ce)}function Te(){return Te=Object.assign||function(Ce){for(var re=1;re<arguments.length;re++){var me=arguments[re];for(var le in me)Object.prototype.hasOwnProperty.call(me,le)&&(Ce[le]=me[le])}return Ce},Te.apply(this,arguments)}function ce(Ce,re){var me=Object.keys(Ce);if(Object.getOwnPropertySymbols){var le=Object.getOwnPropertySymbols(Ce);re&&(le=le.filter(function(Me){return Object.getOwnPropertyDescriptor(Ce,Me).enumerable})),me.push.apply(me,le)}return me}function Be(Ce){for(var re=1;re<arguments.length;re++){var me=arguments[re]!=null?arguments[re]:{};re%2?ce(me,!0).forEach(function(le){ge(Ce,le,me[le])}):Object.getOwnPropertyDescriptors?Object.defineProperties(Ce,Object.getOwnPropertyDescriptors(me)):ce(me).forEach(function(le){Object.defineProperty(Ce,le,Object.getOwnPropertyDescriptor(me,le))})}return Ce}function we(Ce,re){if(Ce==null)return{};var me=$(Ce,re),le,Me;if(Object.getOwnPropertySymbols){var Qe=Object.getOwnPropertySymbols(Ce);for(Me=0;Me<Qe.length;Me++)le=Qe[Me],!(re.indexOf(le)>=0)&&Object.prototype.propertyIsEnumerable.call(Ce,le)&&(me[le]=Ce[le])}return me}function $(Ce,re){if(Ce==null)return{};var me={},le=Object.keys(Ce),Me,Qe;for(Qe=0;Qe<le.length;Qe++)Me=le[Qe],!(re.indexOf(Me)>=0)&&(me[Me]=Ce[Me]);return me}function ne(Ce,re){if(!(Ce instanceof re))throw new TypeError("Cannot call a class as a function")}function M(Ce,re){for(var me=0;me<re.length;me++){var le=re[me];le.enumerable=le.enumerable||!1,le.configurable=!0,"value"in le&&(le.writable=!0),Object.defineProperty(Ce,le.key,le)}}function K(Ce,re,me){return re&&M(Ce.prototype,re),me&&M(Ce,me),Ce}function Y(Ce,re){return re&&(D(re)==="object"||typeof re=="function")?re:ve(Ce)}function de(Ce){return de=Object.setPrototypeOf?Object.getPrototypeOf:function(me){return me.__proto__||Object.getPrototypeOf(me)},de(Ce)}function ve(Ce){if(Ce===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return Ce}function ae(Ce,re){if(typeof re!="function"&&re!==null)throw new TypeError("Super expression must either be null or a function");Ce.prototype=Object.create(re&&re.prototype,{constructor:{value:Ce,writable:!0,configurable:!0}}),re&&Ee(Ce,re)}function Ee(Ce,re){return Ee=Object.setPrototypeOf||function(le,Me){return le.__proto__=Me,le},Ee(Ce,re)}function ge(Ce,re,me){return re in Ce?Object.defineProperty(Ce,re,{value:me,enumerable:!0,configurable:!0,writable:!0}):Ce[re]=me,Ce}var _e=H(59301),Et=H(12708),Pe=H(86397),be=H(78485);function Se(Ce){for(var re="",me=0;me<Ce.length;me++){var le=Ce.charCodeAt(me);le<128?re+=String.fromCharCode(le):le<2048?(re+=String.fromCharCode(192|le>>6),re+=String.fromCharCode(128|le&63)):le<55296||le>=57344?(re+=String.fromCharCode(224|le>>12),re+=String.fromCharCode(128|le>>6&63),re+=String.fromCharCode(128|le&63)):(me++,le=65536+((le&1023)<<10|Ce.charCodeAt(me)&1023),re+=String.fromCharCode(240|le>>18),re+=String.fromCharCode(128|le>>12&63),re+=String.fromCharCode(128|le>>6&63),re+=String.fromCharCode(128|le&63))}return re}var St={size:128,level:"L",bgColor:"#FFFFFF",fgColor:"#000000",includeMargin:!1},cn={},J=4,Zt=.1;function ct(Ce){var re=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,me=[];return Ce.forEach(function(le,Me){var Qe=null;le.forEach(function(Ge,B){if(!Ge&&Qe!==null){me.push("M".concat(Qe+re," ").concat(Me+re,"h").concat(B-Qe,"v1H").concat(Qe+re,"z")),Qe=null;return}if(B===le.length-1){if(!Ge)return;Qe===null?me.push("M".concat(B+re,",").concat(Me+re," h1v1H").concat(B+re,"z")):me.push("M".concat(Qe+re,",").concat(Me+re," h").concat(B+1-Qe,"v1H").concat(Qe+re,"z"));return}Ge&&Qe===null&&(Qe=B)})}),me.join("")}function rt(Ce,re){return Ce.slice().map(function(me,le){return le<re.y||le>=re.y+re.h?me:me.map(function(Me,Qe){return Qe<re.x||Qe>=re.x+re.w?Me:!1})})}function Vt(Ce,re){var me=Ce.imageSettings,le=Ce.size,Me=Ce.includeMargin;if(me==null)return null;var Qe=Me?J:0,Ge=re.length+Qe*2,B=Math.floor(le*Zt),Je=Ge/le,$t=(me.width||B)*Je,Rt=(me.height||B)*Je,Re=me.x==null?re.length/2-$t/2:me.x*Je,Ke=me.y==null?re.length/2-Rt/2:me.y*Je,Ue=null;if(me.excavate){var Pt=Math.floor(Re),Tt=Math.floor(Ke),At=Math.ceil($t+Re-Pt),jt=Math.ceil(Rt+Ke-Tt);Ue={x:Pt,y:Tt,w:At,h:jt}}return{x:Re,y:Ke,h:Rt,w:$t,excavation:Ue}}var zt=function(){try{new Path2D().addPath(new Path2D)}catch(Ce){return!1}return!0}(),Ut=function(Ce){ae(re,Ce);function re(){var me,le;ne(this,re);for(var Me=arguments.length,Qe=new Array(Me),Ge=0;Ge<Me;Ge++)Qe[Ge]=arguments[Ge];return le=Y(this,(me=de(re)).call.apply(me,[this].concat(Qe))),ge(ve(le),"_canvas",void 0),ge(ve(le),"_image",void 0),ge(ve(le),"state",{imgLoaded:!1}),ge(ve(le),"handleImageLoad",function(){le.setState({imgLoaded:!0})}),le}return K(re,[{key:"componentDidMount",value:function(){this.update()}},{key:"componentDidUpdate",value:function(){this.update()}},{key:"update",value:function(){var le=this.props,Me=le.value,Qe=le.size,Ge=le.level,B=le.bgColor,Je=le.fgColor,$t=le.includeMargin,Rt=le.imageSettings,Re=new Pe(-1,be[Ge]);if(Re.addData(Se(Me)),Re.make(),this._canvas!=null){var Ke=this._canvas,Ue=Ke.getContext("2d");if(!Ue)return;var Pt=Re.modules;if(Pt===null)return;var Tt=$t?J:0,At=Pt.length+Tt*2,jt=Vt(this.props,Pt);Rt!=null&&jt!=null&&jt.excavation!=null&&(Pt=rt(Pt,jt.excavation));var Kt=window.devicePixelRatio||1;Ke.height=Ke.width=Qe*Kt;var Dt=Qe/At*Kt;Ue.scale(Dt,Dt),Ue.fillStyle=B,Ue.fillRect(0,0,At,At),Ue.fillStyle=Je,zt?Ue.fill(new Path2D(ct(Pt,Tt))):Pt.forEach(function(an,T){an.forEach(function(y,A){y&&Ue.fillRect(A+Tt,T+Tt,1,1)})}),this.state.imgLoaded&&this._image&&jt!=null&&Ue.drawImage(this._image,jt.x+Tt,jt.y+Tt,jt.w,jt.h)}}},{key:"render",value:function(){var le=this,Me=this.props,Qe=Me.value,Ge=Me.size,B=Me.level,Je=Me.bgColor,$t=Me.fgColor,Rt=Me.style,Re=Me.includeMargin,Ke=Me.imageSettings,Ue=we(Me,["value","size","level","bgColor","fgColor","style","includeMargin","imageSettings"]),Pt=Be({height:Ge,width:Ge},Rt),Tt=null,At=Ke&&Ke.src;return Ke!=null&&At!=null&&(Tt=_e.createElement("img",{src:At,style:{display:"none"},onLoad:this.handleImageLoad,ref:function(Kt){return le._image=Kt}})),_e.createElement(_e.Fragment,null,_e.createElement("canvas",Te({style:Pt,height:Ge,width:Ge,ref:function(Kt){return le._canvas=Kt}},Ue)),Tt)}}]),re}(_e.PureComponent);ge(Ut,"defaultProps",St);var qt=function(Ce){ae(re,Ce);function re(){return ne(this,re),Y(this,de(re).apply(this,arguments))}return K(re,[{key:"render",value:function(){var le=this.props,Me=le.value,Qe=le.size,Ge=le.level,B=le.bgColor,Je=le.fgColor,$t=le.includeMargin,Rt=le.imageSettings,Re=we(le,["value","size","level","bgColor","fgColor","includeMargin","imageSettings"]),Ke=new Pe(-1,be[Ge]);Ke.addData(Se(Me)),Ke.make();var Ue=Ke.modules;if(Ue===null)return null;var Pt=$t?J:0,Tt=Ue.length+Pt*2,At=Vt(this.props,Ue),jt=null;Rt!=null&&At!=null&&(At.excavation!=null&&(Ue=rt(Ue,At.excavation)),jt=_e.createElement("image",{xlinkHref:Rt.src,height:At.h,width:At.w,x:At.x+Pt,y:At.y+Pt,preserveAspectRatio:"none"}));var Kt=ct(Ue,Pt);return _e.createElement("svg",Te({shapeRendering:"crispEdges",height:Qe,width:Qe,viewBox:"0 0 ".concat(Tt," ").concat(Tt)},Re),_e.createElement("path",{fill:B,d:"M0,0 h".concat(Tt,"v").concat(Tt,"H0z")}),_e.createElement("path",{fill:Je,d:Kt}),jt)}}]),re}(_e.PureComponent);ge(qt,"defaultProps",St);var Ht=function(re){var me=re.renderAs,le=we(re,["renderAs"]),Me=me==="svg"?qt:Ut;return _e.createElement(Me,le)};Ht.defaultProps=Be({renderAs:"canvas"},St),Qt.exports=Ht},91423:function(){},22591:function(){},24726:function(){},90872:function(){}}]);