easy-email-pro-kit 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.cjs.js +1 -1
- package/lib/index.es.js +266 -258
- package/package.json +1 -1
package/lib/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Ve=Object.defineProperty,je=Object.defineProperties;var Oe=Object.getOwnPropertyDescriptors;var F=Object.getOwnPropertySymbols;var me=Object.prototype.hasOwnProperty,ue=Object.prototype.propertyIsEnumerable;var ne=(e,t,l)=>t in e?Ve(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,C=(e,t)=>{for(var l in t||(t={}))me.call(t,l)&&ne(e,l,t[l]);if(F)for(var l of F(t))ue.call(t,l)&&ne(e,l,t[l]);return e},z=(e,t)=>je(e,Oe(t));var pe=(e,t)=>{var l={};for(var s in e)me.call(e,s)&&t.indexOf(s)<0&&(l[s]=e[s]);if(e!=null&&F)for(var s of F(e))t.indexOf(s)<0&&ue.call(e,s)&&(l[s]=e[s]);return l};var Me=(e,t,l)=>(ne(e,typeof t!="symbol"?t+"":t,l),l);var V=(e,t,l)=>new Promise((s,r)=>{var c=o=>{try{n(l.next(o))}catch(i){r(i)}},a=o=>{try{n(l.throw(o))}catch(i){r(i)}},n=o=>o.done?s(o.value):Promise.resolve(o.value).then(c,a);n((l=l.apply(e,t)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("easy-email-pro-core"),L=require("lodash"),m=require("react"),ve=require("react-dom/server"),w=require("easy-email-pro-theme"),D=require("@arco-design/web-react"),ye=require("slate-react"),I=require("easy-email-pro-editor"),{Raw:R}=x.components;function Pe(e){const{desktop:t,mobile:l}=e,s=x.useEmailRenderContext(),{displayMode:r="desktop-mobile"}=s;return r==="only-desktop"?m.createElement(x.EmailRenderProvider,z(C({},s),{displayMode:"only-desktop"}),m.createElement(m.Fragment,null,m.createElement(t,null))):r==="only-mobile"?m.createElement(m.Fragment,null,m.createElement(R,null,"<!-- htmlmin:ignore --><!--[if !mso]><!--><!-- htmlmin:ignore -->"),m.createElement(x.EmailRenderProvider,z(C({},s),{displayMode:"only-mobile"}),m.createElement(m.Fragment,null,m.createElement(l,null))),m.createElement(R,null,"<!-- htmlmin:ignore --><!--<![endif]--><!-- htmlmin:ignore -->")):m.createElement(m.Fragment,null,m.createElement(x.EmailRenderProvider,z(C({},s),{displayMode:"only-desktop"}),m.createElement(m.Fragment,null,m.createElement(t,null))),m.createElement(R,null,"<!-- htmlmin:ignore --><!--[if !mso]><!--><!-- htmlmin:ignore -->"),m.createElement(x.EmailRenderProvider,z(C({},s),{displayMode:"only-mobile"}),m.createElement(m.Fragment,null,m.createElement(l,null))),m.createElement(R,null,"<!-- htmlmin:ignore --><!--<![endif]--><!-- htmlmin:ignore -->"))}const Qe="hide-desktop-block",Ue="hide-mobile-block",Je="hide-desktop-inline-block",Fe="hide-mobile-inline-block",he=[x.ElementType.GROUP,x.ElementType.COLUMN,x.ElementType.NAVBAR_LINK];class Re extends x.ResponsivePlugin{constructor(){super(...arguments);Me(this,"generateResponsive",l=>{var g;const{mode:s,displayMode:r,node:c,keepEmptyAttributes:a,mergetagsData:n={},children:o,context:i,idx:d,desktopContent:p}=l;let u=p;const y=x.BlockManager.getBlockByType(c.type);if(!y)throw new Error(`${c.type} block is not registered`);const M=c.mobileAttributes&&Object.keys(c.mobileAttributes).some(Z=>c.mobileAttributes[Z]!==c.attributes[Z]),b=he.includes(y.type)?Je:Qe,h=he.includes(y.type)?Fe:Ue,T=L.get(c,"attributes.css-class")||"";if(r==="only-desktop"){if(T.includes(b))return null;T.includes(h)||L.set(c,"attributes.css-class",x.classnames(T,h))}else if(r==="only-mobile"){if(T.includes(h))return null;T.includes(b)||L.set(c,"attributes.css-class",x.classnames(T,b))}r==="only-mobile"?c.attributes=x.mergeBlock(x.mergeBlock(y.defaultData.attributes,y.defaultData.mobileAttributes),c.attributes):c.attributes=x.mergeBlock(((g=y.defaultData)==null?void 0:g.attributes)||{},c.attributes),c.visible==="desktop"?L.set(c,"attributes.css-class",x.classnames(T,h)):c.visible==="mobile"&&L.set(c,"attributes.css-class",x.classnames(T,b));const Y=y.render({mode:s,children:o,context:i,idx:d,node:z(C({},c),{attributes:x.mergeBlock(c.attributes,c.mobileAttributes),mobileAttributes:void 0}),keepEmptyAttributes:a,mergetagsData:n});return M&&(u=m.createElement(m.Fragment,null,m.createElement(Pe,{desktop:()=>m.createElement(m.Fragment,null,p),mobile:()=>m.createElement(m.Fragment,null,Y)}))),u})}}const re=60,A=60*re,H=24*A;function De(e){const t=Math.floor(e/H),l=Math.floor((e-t*H)/A),s=Math.floor((e-t*H-l*A)/re),r=Math.floor(e-t*H-l*A-s*re);return{day:t<10?"0"+t:t.toString(),hour:l<10?"0"+l:l.toString(),minute:s<10?"0"+s:s.toString(),second:r<10?"0"+r:r.toString()}}const B=document.createElement("canvas"),xe=B.getContext("2d"),He=e=>V(exports,null,function*(){const t=new Image;return t.src=e,yield new Promise((l,s)=>{t.onload=l,t.onerror=s}),t}),Ae=e=>V(exports,null,function*(){const t=new Image;return t.crossOrigin="anonymous",new Promise((l,s)=>{t.onload=()=>{const r=t.width,c=t.height;B.width=r,B.height=c,xe.clearRect(0,0,r,c),xe.drawImage(t,0,0),l(B.toDataURL())},t.onerror=s,t.src=e.src})}),Be=L.flatMap(["padding","margin","border"].map(e=>[`${e}-top`,`${e}-right`,`${e}-bottom`,`${e}-left`])),qe=["color","width","height","position","color","background","background-color","transform","display","font-family","font-size","line-height","flex-direction","align-items","justify-content","text-align","border-radius","box-sizing","opacity","visibility","textTransform",...Be];function Ie(e){const t=e.cloneNode(!0);if(!(t instanceof HTMLElement&&e instanceof HTMLElement))return t;const l=window.getComputedStyle(e);return qe.forEach(s=>{t.style.setProperty(s,l.getPropertyValue(s))}),t.childNodes.forEach((s,r)=>{t.replaceChild(Ie(e.childNodes[r]),s)}),t}const $e=function(l){return V(this,arguments,function*(e,t={}){const s=t.width||e.offsetWidth,r=t.height||e.offsetHeight,{overwrite:c=[],wrapper:a=d=>d}=t,n=Ie(e);if(n.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),n.classList.remove("outline"),t.styleText){const d=document.createElement("style");d.innerHTML=t.styleText,n.appendChild(d)}c.forEach(d=>{if(d.selector===""&&d instanceof HTMLElement){const p=d.style;Object.keys(d.style).forEach(u=>{p.setProperty(u,d.style[u])}),d.innerText&&(n.innerText=d.innerText),d.innerHTML&&(n.innerHTML=d.innerHTML),d.attrs&&Object.keys(d.attrs).forEach(u=>{n.setAttribute(u,d.attrs[u])})}n.querySelectorAll(d.selector).forEach(p=>{if(L.get(p,"nodeType")===1){const u=p,y=u.style;if(d.style&&Object.keys(d.style).forEach(M=>{y.setProperty(M,d.style[M])}),d.innerText&&(u.innerText=d.innerText),d.innerHTML&&(u.innerHTML=d.innerHTML),d.attrs)for(const M in d.attrs)u.setAttribute(M,d.attrs[M])}})}),yield Promise.all([...n.querySelectorAll("img")].map(d=>V(this,null,function*(){d.src=yield Ae(d)})));const o=new XMLSerializer().serializeToString(a(n));let i='data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="'+s+'" height="'+r+'"><foreignObject x="0" y="0" width="100%" height="100%">'+o+"</foreignObject></svg>";return i=i.replace(/\n/g,"").replace(/\t/g,"").replace(/#/g,"%23"),i})};var _e=Object.defineProperty,et=Object.defineProperties,tt=Object.getOwnPropertyDescriptors,ge=Object.getOwnPropertySymbols,nt=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable,X=Math.pow,Ze=(e,t,l)=>t in e?_e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,O=(e,t)=>{for(var l in t||(t={}))nt.call(t,l)&&Ze(e,l,t[l]);if(ge)for(var l of ge(t))lt.call(t,l)&&Ze(e,l,t[l]);return e},U=(e,t)=>et(e,tt(t)),j=(e,t,l)=>new Promise((s,r)=>{var c=o=>{try{n(l.next(o))}catch(i){r(i)}},a=o=>{try{n(l.throw(o))}catch(i){r(i)}},n=o=>o.done?s(o.value):Promise.resolve(o.value).then(c,a);n((l=l.apply(e,t)).next())});const st=typeof window<"u",W=65536-1,v=W*W,ot=512-1,le=[0,20,40,60,80,99,119,139,159,179,199,219,241,264,288,313,340,367,396,427,458,491,526,562,599,637,677,718,761,805,851,898,947,997,1048,1101,1156,1212,1270,1330,1391,1453,1517,1583,1651,1720,1790,1863,1937,2013,2090,2170,2250,2333,2418,2504,2592,2681,2773,2866,2961,3058,3157,3258,3360,3464,3570,3678,3788,3900,4014,4129,4247,4366,4488,4611,4736,4864,4993,5124,5257,5392,5530,5669,5810,5953,6099,6246,6395,6547,6700,6856,7014,7174,7335,7500,7666,7834,8004,8177,8352,8528,8708,8889,9072,9258,9445,9635,9828,10022,10219,10417,10619,10822,11028,11235,11446,11658,11873,12090,12309,12530,12754,12980,13209,13440,13673,13909,14146,14387,14629,14874,15122,15371,15623,15878,16135,16394,16656,16920,17187,17456,17727,18001,18277,18556,18837,19121,19407,19696,19987,20281,20577,20876,21177,21481,21787,22096,22407,22721,23038,23357,23678,24002,24329,24658,24990,25325,25662,26001,26344,26688,27036,27386,27739,28094,28452,28813,29176,29542,29911,30282,30656,31033,31412,31794,32179,32567,32957,33350,33745,34143,34544,34948,35355,35764,36176,36591,37008,37429,37852,38278,38706,39138,39572,40009,40449,40891,41337,41785,42236,42690,43147,43606,44069,44534,45002,45473,45947,46423,46903,47385,47871,48359,48850,49344,49841,50341,50844,51349,51858,52369,52884,53401,53921,54445,54971,55500,56032,56567,57105,57646,58190,58737,59287,59840,60396,60955,61517,62082,62650,63221,63795,64372,64952,65535],we=[0,6,13,18,22,25,28,31,34,36,38,40,42,44,46,48,50,51,53,54,56,57,59,60,61,62,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,86,87,88,89,90,91,91,92,93,94,95,95,96,97,98,98,99,100,101,101,102,103,103,104,105,106,106,107,108,108,109,110,110,111,111,112,113,113,114,115,115,116,116,117,118,118,119,119,120,121,121,122,122,123,123,124,125,125,126,126,127,127,128,128,129,129,130,130,131,132,132,133,133,134,134,135,135,136,136,137,137,138,138,139,139,140,140,140,141,141,142,142,143,143,144,144,145,145,146,146,147,147,147,148,148,149,149,150,150,151,151,151,152,152,153,153,154,154,154,155,155,156,156,156,157,157,158,158,159,159,159,160,160,161,161,161,162,162,163,163,163,164,164,165,165,165,166,166,166,167,167,168,168,168,169,169,169,170,170,171,171,171,172,172,172,173,173,174,174,174,175,175,175,176,176,176,177,177,177,178,178,179,179,179,180,180,180,181,181,181,182,182,182,183,183,183,184,184,184,185,185,185,186,186,186,187,187,187,188,188,188,189,189,189,190,190,190,191,191,191,192,192,192,193,193,193,193,194,194,194,195,195,195,196,196,196,197,197,197,198,198,198,198,199,199,199,200,200,200,201,201,201,201,202,202,202,203,203,203,204,204,204,204,205,205,205,206,206,206,206,207,207,207,208,208,208,208,209,209,209,210,210,210,210,211,211,211,212,212,212,212,213,213,213,214,214,214,214,215,215,215,215,216,216,216,217,217,217,217,218,218,218,218,219,219,219,220,220,220,220,221,221,221,221,222,222,222,222,223,223,223,224,224,224,224,225,225,225,225,226,226,226,226,227,227,227,227,228,228,228,228,229,229,229,229,230,230,230,230,231,231,231,231,232,232,232,232,233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236,237,237,237,237,238,238,238,238,239,239,239,239,239,240,240,240,240,241,241,241,241,242,242,242,242,243,243,243,243,243,244,244,244,244,245,245,245,245,246,246,246,246,246,247,247,247,247,248,248,248,248,249,249,249,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,253,253,253,253,253,254,254,254,254,255,255,255];function se(e){let t;if(e<=0)return 0;if(e>=W)return W;t=e*(e*(e+-144107)/W+132114)/W+14379;for(let l=0;l<2;l++){const s=t*t*t,r=e+(2*s+v/2)/v;t=(t*(2*e+(s+v/2)/v)+r/2)/r}return t}function f(e,t){return(e^t)<0?(e-t/2)/t:(e+t/2)/t}function Ke(e){const t=le[e>>16&255],l=le[e>>8&255],s=le[e&255],r=(27015*t+35149*l+3372*s+W/2)/W,c=(13887*t+44610*l+7038*s+W/2)/W,a=(5787*t+18462*l+41286*s+W/2)/W,n=se(r),o=se(c),i=se(a);return[f(13792*n+52010*o-267*i,W),f(129628*n-159158*o+29530*i,W),f(1698*n+51299*o-52997*i,W)]}function oe(e){if(e<=0)return 0;if(e>=W)return 255;{const t=e*ot,l=~~(t/W),s=t%W,r=we[l],c=we[l+1];return(s*(c-r)+W/2)/W+r}}function it(e){const t=e[0]+f(25974*e[1],W)+f(14143*e[2],W),l=e[0]+f(-6918*e[1],W)+f(-4185*e[2],W),s=e[0]+f(-5864*e[1],W)+f(-84638*e[2],W),r=X(t,2)*t/v,c=X(l,2)*l/v,a=X(s,2)*s/v,n=oe((267169*r+-216771*c+15137*a+W/2)/W),o=oe((-83127*r+171030*c+-22368*a+W/2)/W),i=oe((-275*r+-46099*c+111909*a+W/2)/W);return n<<16|o<<8|i}function rt(e){const t={l:0,a:1,b:2},l=e[0],s=e[1],r=e[2],c=t[l],a=t[s],n=t[r];return(o,i)=>o.oklab[c]-i.oklab[c]||o.oklab[a]-i.oklab[a]||o.oklab[n]-i.oklab[n]}function ct(e,t,l){return e>=t?t>=l?"lab":e>=l?"lba":"bla":e>=l?"alb":t>=l?"abl":"bal"}function at(e){return new Promise(t=>{const l=new Image;l.decoding="sync",l.loading="eager",l.crossOrigin="anonymous",l.onload=()=>t(l),l.onerror=()=>t(l),l.src=e})}function ke(e){return e&&typeof e=="object"&&"__CONTEXT__"in e}function dt(e){return ke(e)?e:bt(e)}function bt(e={}){const{maxColors:t=256,statsMode:l="full",samples:s=[],skipTransparent:r=!0}=e;return{__CONTEXT__:!0,samples:s,maxColors:t,statsMode:l,skipTransparent:r,colorSamples:[],colorSamplesCache:new Map,colorBoxes:[],colorBoxesIndexTree:[],finderCache:new Map}}function Ce(e){const t=ke(e)?e:e.context,{colorBoxesIndexTree:l,finderCache:s}=t;function r(a,n,o){const{left:i,right:d,longest:p,oklab:u,colorBoxIndex:y}=l[a],M=Math.min(X(n[0]-u[0],2)+X(n[1]-u[1],2)+X(n[2]-u[2],2),4294967295-1);M<o.dist&&(o.colorBoxIndex=y,o.dist=M);let b,h;if(i!==-1||d!==-1){const T=n[p]-u[p];T<=0?(b=i,h=d):(b=d,h=i),b!==-1&&r(b,n,o),h!==-1&&X(T,2)<o.dist&&r(h,n,o)}}function c(a){const n={dist:Number.MAX_SAFE_INTEGER,colorBoxIndex:-1};return r(0,a,n),n.colorBoxIndex}return a=>{const n=a%32768;let o=s.get(n);o||(o=new Map,s.set(n,o));let i=o.get(a);return i!==void 0||(i=c(Ke(a)),o.set(a,i)),i}}function mt(e,t){const{colorBoxes:l}=e,s=l.reduce((a,n)=>a+n.weight,0);if(!t)return e.colorBoxes.map(a=>{const{srgb:n,weight:o}=a;return{value:n,percentage:o/s}});const r=[];for(let a=l.length,n=0;n<a;n++){const{srgb:o,weight:i}=l[n];r.push({value:[o>>16&255,o>>8&255,o&255],percentage:i/s})}let c;if(t==="buffer"){c=new Uint8ClampedArray(r.length*4);for(let a=r.length,n=0;n<a;n++){const o=n*4,i=r[n].value;c[o]=i[0],c[o+1]=i[1],c[o+2]=i[2],c[o+3]=255}}else if(t==="hex"){c=[];for(let a=r.length,n=0;n<a;n++){const{value:o,percentage:i}=r[n],d=o[0].toString(16).padStart(2,"0"),p=o[1].toString(16).padStart(2,"0"),u=o[2].toString(16).padStart(2,"0");c.push({value:`#${d}${p}${u}`,percentage:i})}}else c=r;return c}function ce(e,t,l){var s,r,c,a;const{getContext2d:n,previousSample:o,skipTransparent:i}=l,{statsMode:d,colorSamples:p,colorSamplesCache:u}=e;let y;if(ArrayBuffer.isView(t))y=new Uint8ClampedArray(t.buffer);else if(t instanceof ArrayBuffer)y=new Uint8ClampedArray(t);else if(Array.isArray(t))if(Array.isArray(t[0])){const M=[];for(let b=t.length,h=0;h<b;h++)M.push((s=t[h][0])!=null?s:0,(r=t[h][1])!=null?r:0,(c=t[h][2])!=null?c:0,(a=t[h][3])!=null?a:255);y=new Uint8ClampedArray(M)}else y=new Uint8ClampedArray(t);else if(typeof t=="string"){const M=n==null?void 0:n();if(!M)return;const b=M.canvas;return at(t).then(h=>(M.clearRect(0,0,b.width,b.height),b.width=h.width,b.height=h.height,M.drawImage(h,0,0,b.width,b.height),ce(e,M.getImageData(0,0,b.width,b.height).data,l)))}else{const M=n==null?void 0:n();if(!M)return;const b=M.canvas;return M.clearRect(0,0,b.width,b.height),b.width=typeof t.width=="number"?t.width:t.width.baseVal.value,b.height=typeof t.height=="number"?t.height:t.height.baseVal.value,M.drawImage(t,0,0,b.width,b.height),ce(e,M.getImageData(0,0,b.width,b.height).data,l)}for(let M=y.length,b=0;b<M;b+=4){const h=y[b],T=y[b+1],Y=y[b+2],g=y[b+3];if(i&&g===0||d==="diff"&&o&&h===o[b]&&T===o[b+1]&&Y===o[b+2]&&g===o[b+3])continue;const Z=h<<16|T<<8|Y,N=g*1e8+Z,G=N%32768;let S=u.get(G);S||(S=new Map,u.set(G,S));let E=S.get(N);if(E!==void 0){p[E].count++;continue}E=p.push({alpha:g,srgb:Z,oklab:Ke(Z),count:1})-1,S.set(N,E)}return y}function Ee(e,t){const{colorSamples:l}=t,{start:s,end:r}=e;e.length=r-s,e.weight=0;const c=[0,0,0];for(let n=s;n<r;n++){const o=l[n];c[0]+=o.oklab[0]*o.count,c[1]+=o.oklab[1]*o.count,c[2]+=o.oklab[2]*o.count,e.weight+=o.count}e.oklab=[c[0]/e.weight,c[1]/e.weight,c[2]/e.weight];const a=[0,0,0];for(let n=s;n<r;n++){const o=l[n];a[0]+=X(o.oklab[0]-e.oklab[0],2)*o.count,a[1]+=X(o.oklab[1]-e.oklab[1],2)*o.count,a[2]+=X(o.oklab[2]-e.oklab[2],2)*o.count}e.sort=ct(a[0],a[1],a[2]),e.score=Math.max(a[0],a[1],a[2])}function Te(e,t){const l=O({start:0,end:0,length:0,score:0,weight:0,sort:"lab",sorted:null,srgb:0,oklab:[0,0,0]},e);return Ee(l,t),l}function ut(e){const{colorBoxes:t}=e,l=[],s=new Map;for(let a=-1,n=t.length,o=0;o<n;o++){const{srgb:i}=t[o];if(i===a){s.set(o,!0);continue}a=i}c({min:[-65535,-65535,-65535],max:[65535,65535,65535]});function r(a){const n={min:[65535,65535,65535],max:[-65535,-65535,-65535]};let o=0;const i=[];for(let M=t.length,b=0;b<M;b++){const{oklab:h}=t[b];s.has(b)||h[0]<a.min[0]||h[1]<a.min[1]||h[2]<a.min[2]||h[0]>a.max[0]||h[1]>a.max[1]||h[2]>a.max[2]||(h[0]<n.min[0]&&(n.min[0]=h[0]),h[1]<n.min[1]&&(n.min[1]=h[1]),h[2]<n.min[2]&&(n.min[2]=h[2]),h[0]>n.max[0]&&(n.max[0]=h[0]),h[1]>n.max[1]&&(n.max[1]=h[1]),h[2]>n.max[2]&&(n.max[2]=h[2]),i[o++]={oklab:h,colorBoxIndex:b})}let d=0;if(!o)return{colorBoxIndex:-1,longest:d};const p=n.max[0]-n.min[0],u=n.max[1]-n.min[1],y=n.max[2]-n.min[2];return p>=u&&p>=y?d=0:y>=p&&y>=u?d=2:u>=p&&u>=y&&(d=1),{colorBoxIndex:i.sort((M,b)=>M.oklab[d]-b.oklab[d])[o>>1].colorBoxIndex,longest:d}}function c(a){const{colorBoxIndex:n,longest:o}=r(a);if(n<0)return-1;const{oklab:i}=t[n],d={longest:o,oklab:i,colorBoxIndex:n},p=l.push(d)-1;s.set(n,!0);const u={max:[...a.max],min:[...a.min]},y={max:[...a.max],min:[...a.min]};u.max[o]=i[o],y.min[o]=Math.min(i[o]+1,65535);const M=c(u);let b=-1;return y.min[o]<=y.max[o]&&(b=c(y)),d.left=M,d.right=b,p}return l}function pt(e,t={}){const{maxColors:l,colorSamples:s}=e;if(!s.length)return;const{maxColors:r=l,clearSamples:c=!0}=t;let a=Te({end:s.length},e),n=1;const o=[a];function i(){let p=-1,u=-1;if(n===r)return-1;for(let y=0;y<n;y++){const M=o[y];M.length>=2&&M.score>u&&(p=y,u=M.score)}return p}function d(p,u){const y=Te({start:u+1,end:p.end,sorted:p.sorted},e);p.end-=y.length,Ee(p,e),o.push(y),n++}for(;a&&a.length>1;){const{start:p,end:u,sort:y,sorted:M}=a;if(y!==M){const g=s.slice(p,u).sort(rt(y));for(let Z=g.length,N=0;N<Z;N++)s[p+N]=g[N];a.sorted=y}const b=a.weight+1>>1;let h=p,T=0;for(let g=u-2;h<g&&(T+=s[h].count,!(T>b));h++);d(a,h);const Y=i();a=Y>=0?o[Y]:null}for(let p=o.length,u=0;u<p;u++)o[u].srgb=it(o[u].oklab);e.colorBoxes=o.sort((p,u)=>p.srgb-u.srgb),e.colorBoxesIndexTree=ut(e),c&&(e.colorSamples=[],e.colorSamplesCache.clear()),e.finderCache.clear()}function Mt(e,t,l){const{colorBoxes:s}=e;if(!t)return;let r;if(typeof l=="number")r=l;else if(typeof l=="string"){const o=l.replace(/^#/,""),i=[`${o[0]}${o[1]}`,`${o[2]}${o[3]}`,`${o[4]}${o[5]}`].map(d=>parseInt(d,16));r=i[0]<<16|i[1]<<8|i[2]}else if(Array.isArray(l))r=l[0]<<16|l[1]<<8|l[2];else throw new TypeError("Unsupported color format");const c=t(r);if(c===void 0)return;const a=s[c];if(!a)return;const{srgb:n}=a;if(typeof l=="string"){const o=(n>>16&255).toString(16).padStart(2,"0"),i=(n>>8&255).toString(16).padStart(2,"0"),d=(n&255).toString(16).padStart(2,"0");return{value:`#${o}${i}${d}`,index:c}}else if(typeof l=="object"&&Array.isArray(l))return{value:[n>>16&255,n>>8&255,n&255],index:c};return{value:n,index:c}}function yt(e){e.colorSamples=[],e.colorSamplesCache.clear(),e.colorBoxes=[],e.colorBoxesIndexTree=[],e.finderCache.clear()}function Ne(e){const t=dt(e),{statsMode:l,samples:s,skipTransparent:r}=t,c=function(){let i;return()=>(!i&&st&&(i=document.createElement("canvas").getContext("2d",{willReadFrequently:!0})),i)}();let a=null,n=null;const o={context:t,addSample:i=>{t.colorSamples.length===0&&(a=null);const d=ce(t,i,{getContext2d:c,previousSample:a,skipTransparent:r});return(d instanceof Promise?d:Promise.resolve().then(()=>d)).then(p=>{p&&l==="diff"&&(a=p)}),d},generate(i={}){const{clearSamples:d=!0}=i;return d&&(a=null),pt(t,i),this},getColors:i=>mt(t,i),findNearestColor:i=>(n||(n=Ce(t)),Mt(t,n,i)),reset:()=>yt(t)};return s.length&&(s.forEach(i=>o.addSample(i)),t.samples=[]),o}const q="[modern-gif]",ht="GIF",xt=44,Xe=33,gt=255,Zt=11,wt=249,Tt=4,Nt=59,Wt=(...e)=>console.warn(q,...e),Yt=(...e)=>console.debug(q,...e),Lt=e=>console.time(`${q} ${e}`),Gt=e=>console.timeEnd(`${q} ${e}`);function St(e){const t=new Uint8Array(e.reduce((l,s)=>l+s.byteLength,0));return e.reduce((l,s)=>(t.set(s,l),l+s.byteLength),0),t}function Dt(e,t,l){let s;if(ArrayBuffer.isView(e))s=e.buffer;else if(e instanceof ArrayBuffer)s=e;else{const r=document.createElement("canvas"),{width:c,height:a}=l||{},n=r.getContext("2d");if(!n)throw new Error("Failed to create canvas context2d");r.width=c!=null?c:typeof e.width=="number"?e.width:e.width.baseVal.value,r.height=a!=null?a:typeof e.height=="number"?e.height:e.height.baseVal.value,n.drawImage(e,0,0,r.width,r.height),s=n.getImageData(0,0,r.width,r.height).data.buffer}switch(t){case"uint8Array":return new Uint8Array(s);case"uint8ClampedArray":return new Uint8ClampedArray(s);case"dataView":return new DataView(s);default:throw new Error("Unsupported output format")}}function It(e){const t=new Image;return t.decoding="sync",t.loading="eager",t.crossOrigin="anonymous",t.src=e,t}function Kt(e){return new Promise((t,l)=>{const s=It(e);s.onload=()=>t(s),s.onerror=l})}function kt(e,t){var l;const{top:s=0,left:r=0,width:c,height:a,rawWidth:n,rate:o=4,callback:i}=t,d=new Uint8ClampedArray(c*a*o),p=r*o,u=s*o,y=c*o,M=n*o;for(let b=0;b<a;b++)for(let h=0;h<y;h++){const T=(u+b)*M+(p+h);d[b*y+h]=(l=i==null?void 0:i(T))!=null?l:e[T]}return d}function fe(e={}){const{chunkSize:t=4096}=e;let l=[new Uint8Array(t)],s=0,r=0;const c=(n,o)=>{o?l[o[0]][o[1]]=n:(r>=t&&(l[++s]=new Uint8Array(t),r=0),l[s][r++]=n)},a=n=>n.forEach(o=>c(o));return{getCursor:()=>[s,r],setCursor:n=>{s=n[0],r=n[1]},calculateDistance:n=>s*t+r-(n[0]*t+n[1]),writeByte:c,writeBytes:a,writeString:n=>n.split("").forEach((o,i)=>c(n.charCodeAt(i))),writeUnsigned:n=>a([n&255,n>>8&255]),flush:()=>{l[s]=l[s].slice(0,r);const n=new Uint8Array(l.reduce((i,d)=>i+d.byteLength,0));let o=0;return l.forEach(i=>{n.set(i,o),o+=i.byteLength}),l=[new Uint8Array(t)],s=0,r=0,n}}}function Ct(e){var t,l,s;const r=O({version:"89a",looped:!0,loopCount:0,width:0,height:0,colorTableSize:0,backgroundColorIndex:0,pixelAspectRatio:0},e);if(r.width<=0||r.width>65535)throw new Error("Width invalid.");if(r.height<=0||r.height>65535)throw new Error("Height invalid.");let c=0;if((t=r.colorTable)!=null&&t.length){let u=r.colorTable.length;if(u<2||u>256||u&u-1)throw new Error("Invalid color table length, must be power of 2 and 2 .. 256.");for(;u>>=1;)++c;if(u=1<<c,r.colorTableSize=--c,r.backgroundColorIndex>=u)throw new Error("Background index out of range.");if(r.backgroundColorIndex===0)throw new Error("Background index explicitly passed as 0.")}const a=fe(),{writeByte:n,writeBytes:o,writeUnsigned:i,writeString:d,flush:p}=a;return d(ht),d(r.version),i(r.width),i(r.height),n(parseInt(`${r.colorTableSize?1:0}1110${r.colorTableSize.toString(2).padStart(3,"0")}`,2)),n(r.backgroundColorIndex),n(r.pixelAspectRatio),o((s=(l=r.colorTable)==null?void 0:l.flat())!=null?s:[]),r.looped&&(n(Xe),n(gt),n(Zt),d("NETSCAPE2.0"),n(3),n(1),i(r.loopCount),n(0)),p()}function Et(e,t,l){const{writeByte:s,getCursor:r,calculateDistance:c}=l;s(e);let a=r();s(0);const n=1<<e,o=n-1,i=n+1;let d=i+1,p=e+1,u=0,y=0;function M(N){for(;u>=N;)s(y&255),y>>=8,u-=8,c(a)===256&&(s(255,a),a=r(),s(0))}function b(N){y|=N<<u,u+=p,M(8)}let h=t[0]&o,T={},Y,g,Z;b(n);for(let N=t.length,G=1;G<N;++G)if(Z=t[G]&o,Y=h<<8|Z,g=T[Y],g===void 0){for(y|=h<<u,u+=p;u>=8;)s(y&255),y>>=8,u-=8,c(a)===256&&(s(255,a),a=r(),s(0));d===4096?(b(n),d=i+1,p=e+1,T={}):(d>=1<<p&&++p,T[Y]=d++),h=Z}else h=g;b(h),b(i),M(1),c(a)===1?s(0,a):(s(c(a)-1,a),s(0))}function Xt(e){var t,l,s;const r=fe(),{writeByte:c,writeBytes:a,writeUnsigned:n,flush:o}=r,{left:i=0,top:d=0,width:p=0,height:u=0,delay:y=100,colorTable:M}=e;let{disposal:b=0}=e;const h=(t=e.graphicControl)==null?void 0:t.transparent;let T=(s=(l=e.graphicControl)==null?void 0:l.transparentIndex)!=null?s:255;if(i<0||i>65535)throw new Error("Left invalid.");if(d<0||d>65535)throw new Error("Top invalid.");if(p<=0||p>65535)throw new Error("Width invalid.");if(u<=0||u>65535)throw new Error("Height invalid.");let Y=8,g=M?M.length:0;if(g){if(g<2||g>256||g&g-1)throw new Error("Invalid color table length, must be power of 2 and 2 .. 256.");for(;g>>=1;)++Y}return c(Xe),c(wt),c(Tt),h?b||(b=2):T=0,c(parseInt(`000${Number(b&7).toString(2).padStart(3,"0")}0${h?1:0}`,2)),n(y/10),c(T),c(0),c(xt),n(i),n(d),n(p),n(u),M!=null&&M.length?(c(parseInt(`10000${(Y-1).toString(2).padStart(3,"0")}`,2)),a(M.flat())):c(0),Et(Y,e.imageData,r),o()}function ft(e){const{frames:t,palette:l,transparentIndex:s}=e,r=Ce(l);return t.map(({imageData:c})=>{let a=!1;const n=new Uint8ClampedArray(c.length/4);for(let o=c.length,i=0;i<o;i+=4)c[i+3]===0?(n[i/4]=s,a=!0):n[i/4]=r(c[i]<<16|c[i+1]<<8|c[i+2]);return{imageData:n,transparent:a}})}function zt(e){const{frames:t,transparentIndex:l}=e;let s;const r=t.length;return t.map((c,a)=>{const{width:n,height:o,transparent:i,imageData:d}=c;let p=0,u=0,y=n-1,M=o-1,b;if(i){for(;u<M;){let g=!0;for(let Z=0;Z<n;Z++)if(d[n*u+Z]!==l){g=!1;break}if(!g)break;u++}for(;M>u;){let g=!0;for(let Z=0;Z<n;Z++)if(d[n*M+Z]!==l){g=!1;break}if(!g)break;M--}for(;p<y;){let g=!0;for(let Z=u;Z<M;Z++)if(d[n*Z+p]!==l){g=!1;break}if(!g)break;p++}for(;y>p;){let g=!0;for(let Z=u;Z<M;Z++)if(d[n*Z+y]!==l){g=!1;break}if(!g)break;y--}}else{if(s){for(;u<M;){let g=!0;for(let Z=0;Z<n;Z++){const N=n*u+Z;if(d[N]!==s[N]){g=!1;break}}if(!g)break;u++}for(;M>u;){let g=!0;for(let Z=0;Z<n;Z++){const N=n*M+Z;if(d[N]!==s[N]){g=!1;break}}if(!g)break;M--}if(u===M)p=y;else{for(;p<y;){let g=!0;for(let Z=u;Z<=M;Z++){const N=Z*n+p;if(d[N]!==s[N]){g=!1;break}}if(!g)break;p++}for(;y>p;){let g=!0;for(let Z=u;Z<=M;Z++){const N=Z*n+y;if(d[N]!==s[N]){g=!1;break}}if(!g)break;y--}}}b=s,s=d}const h=y+1-p,T=M+1-u,Y=kt(d,{left:p,top:u,width:h,height:T,rawWidth:n,rate:1,callback:g=>{if(!i&&b&&d[g]===b[g])return l}});return{left:p,top:u,width:h,height:T,disposal:i&&a!==r-1?2:1,imageData:Y}})}function Vt(e){return{time:t=>e&&Lt(t),timeEnd:t=>e&&Gt(t),debug:(...t)=>e&&Yt(...t),warn:(...t)=>e&&Wt(...t)}}function jt(e){const t=new Map,{workerUrl:l}=e;let{workerNumber:s=1}=e;const r=[...new Array(l?s:0)].map(()=>{try{const n=new Worker(l);return n.onmessage=c,n}catch(n){return null}}).filter(Boolean);s=r.length;function c(n){var o;const{id:i,data:d}=n.data;(o=t.get(i))==null||o(d),t.delete(i)}const a=function(){let n=0;return o=>r[(o!=null?o:n++)%s]}();return{call:function(){let n=0;return(o,i,d,p)=>new Promise(u=>{const y=a(p);if(!y)return u(void 0);t.set(n,u),y.postMessage({id:n++,type:o,data:i},{transfer:d})})}()}}function Ot(e){const{width:t,height:l,workerUrl:s,workerNumber:r=1,colorTableSize:c=256,backgroundColorIndex:a=c-1,maxColors:n=c-1,debug:o=!1}=e,i={width:t,height:l,maxColors:n,frames:[],log:Vt(o),palette:Ne({skipTransparent:!1}),worker:jt({workerUrl:s,workerNumber:r}),encodeId:0,encode(b){return j(this,null,function*(){const{log:h,frames:T,encodeId:Y,width:g,height:Z}=i;i.encodeId++;const{width:N=g,height:G=Z}=b;let{imageData:S}=b;h.time(`palette:sample-${Y}`);try{S=typeof S=="string"?yield Kt(S):S;const E=Dt(S,"uint8ClampedArray",{width:N,height:G});T.push(U(O({width:N,height:G},b),{imageData:E})),yield d(E)}finally{h.timeEnd(`palette:sample-${Y}`)}})},flush(){return j(this,null,function*(){const{log:b,frames:h,width:T,height:Y,maxColors:g,palette:Z}=i;b.time("palette:generate");const N=yield p(g),G=Ne(N).getColors("rgb").map(k=>k.value);b.debug("palette:maxColors",g);const S=G.map(k=>{const Q=k[0].toString(16).padStart(2,"0"),ee=k[1].toString(16).padStart(2,"0"),te=k[2].toString(16).padStart(2,"0");return`#${Q}${ee}${te}`});for(o&&console.debug(S.map(()=>"%c ").join(""),...S.map(k=>`margin: 1px; background: ${k}`));G.length<c;)G.push([0,0,0]);b.timeEnd("palette:generate"),b.time("frames:index");const E=yield u({frames:h,palette:N,transparentIndex:a});b.timeEnd("frames:index"),b.time("frames:crop");const $=yield y({frames:E.map((k,Q)=>{const{width:ee=1,height:te=1}=h[Q];return U(O({},k),{width:ee,height:te})}),transparentIndex:a});b.timeEnd("frames:crop"),b.time("frames:encode");const _=yield Promise.all(h.map((k,Q)=>M(U(O(O({},k),$[Q]),{graphicControl:U(O({},k.graphicControl),{transparent:!0,transparentIndex:a})}))));b.timeEnd("frames:encode"),b.time("output");const K=Ct(U(O({},e),{colorTable:G,backgroundColorIndex:a,width:T,height:Y})),be=St(_),P=new Uint8Array(K.length+be.byteLength+1);return P.set(K),P.set(be,K.byteLength),P[P.length-1]=Nt,b.timeEnd("output"),Z.reset(),i.frames=[],i.encodeId=0,P})}};function d(b){return j(this,null,function*(){(yield i.worker.call("palette:addSample",b,void 0,0))||i.palette.addSample(b)})}function p(b){return j(this,null,function*(){return(yield i.worker.call("palette:generate",{maxColors:b},void 0,0))||(i.palette.generate({maxColors:b}),i.palette.context)})}function u(b){return j(this,null,function*(){return(yield i.worker.call("frames:index",b))||ft(b)})}function y(b){return j(this,null,function*(){return(yield i.worker.call("frames:crop",b,b.frames.map(T=>T.imageData.buffer)))||zt(b)})}function M(b){return j(this,null,function*(){return(yield i.worker.call("frame:encode",b,[b.imageData.buffer]))||Xt(b)})}return i}function vt(e){return j(this,null,function*(){const{frames:t}=e,l=Ot(e);for(let s=t.length,r=0;r<s;r++)yield l.encode(t[r]);return yield l.flush()})}const Pt="data:application/javascript;base64,dmFyIEdlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgc2U9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczt2YXIgSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxxZT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO3ZhciBBPU1hdGgucG93LGllPShCLHgsayk9PnggaW4gQj9HZShCLHgse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KTpCW3hdPWssWj0oQix4KT0+e2Zvcih2YXIgayBpbiB4fHwoeD17fSkpSGUuY2FsbCh4LGspJiZpZShCLGsseFtrXSk7aWYoc2UpZm9yKHZhciBrIG9mIHNlKHgpKXFlLmNhbGwoeCxrKSYmaWUoQixrLHhba10pO3JldHVybiBCfTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgQj10eXBlb2Ygd2luZG93PCJ1Iix4PTY1NTM2LTEsaz14KngsY2U9NTEyLTEsTD1bMCwyMCw0MCw2MCw4MCw5OSwxMTksMTM5LDE1OSwxNzksMTk5LDIxOSwyNDEsMjY0LDI4OCwzMTMsMzQwLDM2NywzOTYsNDI3LDQ1OCw0OTEsNTI2LDU2Miw1OTksNjM3LDY3Nyw3MTgsNzYxLDgwNSw4NTEsODk4LDk0Nyw5OTcsMTA0OCwxMTAxLDExNTYsMTIxMiwxMjcwLDEzMzAsMTM5MSwxNDUzLDE1MTcsMTU4MywxNjUxLDE3MjAsMTc5MCwxODYzLDE5MzcsMjAxMywyMDkwLDIxNzAsMjI1MCwyMzMzLDI0MTgsMjUwNCwyNTkyLDI2ODEsMjc3MywyODY2LDI5NjEsMzA1OCwzMTU3LDMyNTgsMzM2MCwzNDY0LDM1NzAsMzY3OCwzNzg4LDM5MDAsNDAxNCw0MTI5LDQyNDcsNDM2Niw0NDg4LDQ2MTEsNDczNiw0ODY0LDQ5OTMsNTEyNCw1MjU3LDUzOTIsNTUzMCw1NjY5LDU4MTAsNTk1Myw2MDk5LDYyNDYsNjM5NSw2NTQ3LDY3MDAsNjg1Niw3MDE0LDcxNzQsNzMzNSw3NTAwLDc2NjYsNzgzNCw4MDA0LDgxNzcsODM1Miw4NTI4LDg3MDgsODg4OSw5MDcyLDkyNTgsOTQ0NSw5NjM1LDk4MjgsMTAwMjIsMTAyMTksMTA0MTcsMTA2MTksMTA4MjIsMTEwMjgsMTEyMzUsMTE0NDYsMTE2NTgsMTE4NzMsMTIwOTAsMTIzMDksMTI1MzAsMTI3NTQsMTI5ODAsMTMyMDksMTM0NDAsMTM2NzMsMTM5MDksMTQxNDYsMTQzODcsMTQ2MjksMTQ4NzQsMTUxMjIsMTUzNzEsMTU2MjMsMTU4NzgsMTYxMzUsMTYzOTQsMTY2NTYsMTY5MjAsMTcxODcsMTc0NTYsMTc3MjcsMTgwMDEsMTgyNzcsMTg1NTYsMTg4MzcsMTkxMjEsMTk0MDcsMTk2OTYsMTk5ODcsMjAyODEsMjA1NzcsMjA4NzYsMjExNzcsMjE0ODEsMjE3ODcsMjIwOTYsMjI0MDcsMjI3MjEsMjMwMzgsMjMzNTcsMjM2NzgsMjQwMDIsMjQzMjksMjQ2NTgsMjQ5OTAsMjUzMjUsMjU2NjIsMjYwMDEsMjYzNDQsMjY2ODgsMjcwMzYsMjczODYsMjc3MzksMjgwOTQsMjg0NTIsMjg4MTMsMjkxNzYsMjk1NDIsMjk5MTEsMzAyODIsMzA2NTYsMzEwMzMsMzE0MTIsMzE3OTQsMzIxNzksMzI1NjcsMzI5NTcsMzMzNTAsMzM3NDUsMzQxNDMsMzQ1NDQsMzQ5NDgsMzUzNTUsMzU3NjQsMzYxNzYsMzY1OTEsMzcwMDgsMzc0MjksMzc4NTIsMzgyNzgsMzg3MDYsMzkxMzgsMzk1NzIsNDAwMDksNDA0NDksNDA4OTEsNDEzMzcsNDE3ODUsNDIyMzYsNDI2OTAsNDMxNDcsNDM2MDYsNDQwNjksNDQ1MzQsNDUwMDIsNDU0NzMsNDU5NDcsNDY0MjMsNDY5MDMsNDczODUsNDc4NzEsNDgzNTksNDg4NTAsNDkzNDQsNDk4NDEsNTAzNDEsNTA4NDQsNTEzNDksNTE4NTgsNTIzNjksNTI4ODQsNTM0MDEsNTM5MjEsNTQ0NDUsNTQ5NzEsNTU1MDAsNTYwMzIsNTY1NjcsNTcxMDUsNTc2NDYsNTgxOTAsNTg3MzcsNTkyODcsNTk4NDAsNjAzOTYsNjA5NTUsNjE1MTcsNjIwODIsNjI2NTAsNjMyMjEsNjM3OTUsNjQzNzIsNjQ5NTIsNjU1MzVdLEc9WzAsNiwxMywxOCwyMiwyNSwyOCwzMSwzNCwzNiwzOCw0MCw0Miw0NCw0Niw0OCw1MCw1MSw1Myw1NCw1Niw1Nyw1OSw2MCw2MSw2Miw2NCw2NSw2Niw2Nyw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Niw4Nyw4OCw4OSw5MCw5MSw5MSw5Miw5Myw5NCw5NSw5NSw5Niw5Nyw5OCw5OCw5OSwxMDAsMTAxLDEwMSwxMDIsMTAzLDEwMywxMDQsMTA1LDEwNiwxMDYsMTA3LDEwOCwxMDgsMTA5LDExMCwxMTAsMTExLDExMSwxMTIsMTEzLDExMywxMTQsMTE1LDExNSwxMTYsMTE2LDExNywxMTgsMTE4LDExOSwxMTksMTIwLDEyMSwxMjEsMTIyLDEyMiwxMjMsMTIzLDEyNCwxMjUsMTI1LDEyNiwxMjYsMTI3LDEyNywxMjgsMTI4LDEyOSwxMjksMTMwLDEzMCwxMzEsMTMyLDEzMiwxMzMsMTMzLDEzNCwxMzQsMTM1LDEzNSwxMzYsMTM2LDEzNywxMzcsMTM4LDEzOCwxMzksMTM5LDE0MCwxNDAsMTQwLDE0MSwxNDEsMTQyLDE0MiwxNDMsMTQzLDE0NCwxNDQsMTQ1LDE0NSwxNDYsMTQ2LDE0NywxNDcsMTQ3LDE0OCwxNDgsMTQ5LDE0OSwxNTAsMTUwLDE1MSwxNTEsMTUxLDE1MiwxNTIsMTUzLDE1MywxNTQsMTU0LDE1NCwxNTUsMTU1LDE1NiwxNTYsMTU2LDE1NywxNTcsMTU4LDE1OCwxNTksMTU5LDE1OSwxNjAsMTYwLDE2MSwxNjEsMTYxLDE2MiwxNjIsMTYzLDE2MywxNjMsMTY0LDE2NCwxNjUsMTY1LDE2NSwxNjYsMTY2LDE2NiwxNjcsMTY3LDE2OCwxNjgsMTY4LDE2OSwxNjksMTY5LDE3MCwxNzAsMTcxLDE3MSwxNzEsMTcyLDE3MiwxNzIsMTczLDE3MywxNzQsMTc0LDE3NCwxNzUsMTc1LDE3NSwxNzYsMTc2LDE3NiwxNzcsMTc3LDE3NywxNzgsMTc4LDE3OSwxNzksMTc5LDE4MCwxODAsMTgwLDE4MSwxODEsMTgxLDE4MiwxODIsMTgyLDE4MywxODMsMTgzLDE4NCwxODQsMTg0LDE4NSwxODUsMTg1LDE4NiwxODYsMTg2LDE4NywxODcsMTg3LDE4OCwxODgsMTg4LDE4OSwxODksMTg5LDE5MCwxOTAsMTkwLDE5MSwxOTEsMTkxLDE5MiwxOTIsMTkyLDE5MywxOTMsMTkzLDE5MywxOTQsMTk0LDE5NCwxOTUsMTk1LDE5NSwxOTYsMTk2LDE5NiwxOTcsMTk3LDE5NywxOTgsMTk4LDE5OCwxOTgsMTk5LDE5OSwxOTksMjAwLDIwMCwyMDAsMjAxLDIwMSwyMDEsMjAxLDIwMiwyMDIsMjAyLDIwMywyMDMsMjAzLDIwNCwyMDQsMjA0LDIwNCwyMDUsMjA1LDIwNSwyMDYsMjA2LDIwNiwyMDYsMjA3LDIwNywyMDcsMjA4LDIwOCwyMDgsMjA4LDIwOSwyMDksMjA5LDIxMCwyMTAsMjEwLDIxMCwyMTEsMjExLDIxMSwyMTIsMjEyLDIxMiwyMTIsMjEzLDIxMywyMTMsMjE0LDIxNCwyMTQsMjE0LDIxNSwyMTUsMjE1LDIxNSwyMTYsMjE2LDIxNiwyMTcsMjE3LDIxNywyMTcsMjE4LDIxOCwyMTgsMjE4LDIxOSwyMTksMjE5LDIyMCwyMjAsMjIwLDIyMCwyMjEsMjIxLDIyMSwyMjEsMjIyLDIyMiwyMjIsMjIyLDIyMywyMjMsMjIzLDIyNCwyMjQsMjI0LDIyNCwyMjUsMjI1LDIyNSwyMjUsMjI2LDIyNiwyMjYsMjI2LDIyNywyMjcsMjI3LDIyNywyMjgsMjI4LDIyOCwyMjgsMjI5LDIyOSwyMjksMjI5LDIzMCwyMzAsMjMwLDIzMCwyMzEsMjMxLDIzMSwyMzEsMjMyLDIzMiwyMzIsMjMyLDIzMywyMzMsMjMzLDIzMywyMzQsMjM0LDIzNCwyMzQsMjM1LDIzNSwyMzUsMjM1LDIzNiwyMzYsMjM2LDIzNiwyMzcsMjM3LDIzNywyMzcsMjM4LDIzOCwyMzgsMjM4LDIzOSwyMzksMjM5LDIzOSwyMzksMjQwLDI0MCwyNDAsMjQwLDI0MSwyNDEsMjQxLDI0MSwyNDIsMjQyLDI0MiwyNDIsMjQzLDI0MywyNDMsMjQzLDI0MywyNDQsMjQ0LDI0NCwyNDQsMjQ1LDI0NSwyNDUsMjQ1LDI0NiwyNDYsMjQ2LDI0NiwyNDYsMjQ3LDI0NywyNDcsMjQ3LDI0OCwyNDgsMjQ4LDI0OCwyNDksMjQ5LDI0OSwyNDksMjQ5LDI1MCwyNTAsMjUwLDI1MCwyNTEsMjUxLDI1MSwyNTEsMjUxLDI1MiwyNTIsMjUyLDI1MiwyNTMsMjUzLDI1MywyNTMsMjUzLDI1NCwyNTQsMjU0LDI1NCwyNTUsMjU1LDI1NV07ZnVuY3Rpb24gUihuKXtsZXQgZTtpZihuPD0wKXJldHVybiAwO2lmKG4+PXgpcmV0dXJuIHg7ZT1uKihuKihuKy0xNDQxMDcpL3grMTMyMTE0KS94KzE0Mzc5O2ZvcihsZXQgbz0wO288MjtvKyspe2NvbnN0IGk9ZSplKmUsbD1uKygyKmkray8yKS9rO2U9KGUqKDIqbisoaStrLzIpL2spK2wvMikvbH1yZXR1cm4gZX1mdW5jdGlvbiBfKG4sZSl7cmV0dXJuKG5eZSk8MD8obi1lLzIpL2U6KG4rZS8yKS9lfWZ1bmN0aW9uIEgobil7Y29uc3QgZT1MW24+PjE2JjI1NV0sbz1MW24+PjgmMjU1XSxpPUxbbiYyNTVdLGw9KDI3MDE1KmUrMzUxNDkqbyszMzcyKmkreC8yKS94LGM9KDEzODg3KmUrNDQ2MTAqbys3MDM4KmkreC8yKS94LGE9KDU3ODcqZSsxODQ2MipvKzQxMjg2KmkreC8yKS94LHQ9UihsKSxyPVIoYykscz1SKGEpO3JldHVybltfKDEzNzkyKnQrNTIwMTAqci0yNjcqcyx4KSxfKDEyOTYyOCp0LTE1OTE1OCpyKzI5NTMwKnMseCksXygxNjk4KnQrNTEyOTkqci01Mjk5NypzLHgpXX1mdW5jdGlvbiB6KG4pe2lmKG48PTApcmV0dXJuIDA7aWYobj49eClyZXR1cm4gMjU1O3tjb25zdCBlPW4qY2Usbz1+fihlL3gpLGk9ZSV4LGw9R1tvXSxjPUdbbysxXTtyZXR1cm4oaSooYy1sKSt4LzIpL3grbH19ZnVuY3Rpb24gZmUobil7Y29uc3QgZT1uWzBdK18oMjU5NzQqblsxXSx4KStfKDE0MTQzKm5bMl0seCksbz1uWzBdK18oLTY5MTgqblsxXSx4KStfKC00MTg1Km5bMl0seCksaT1uWzBdK18oLTU4NjQqblsxXSx4KStfKC04NDYzOCpuWzJdLHgpLGw9QShlLDIpKmUvayxjPUEobywyKSpvL2ssYT1BKGksMikqaS9rLHQ9eigoMjY3MTY5KmwrLTIxNjc3MSpjKzE1MTM3KmEreC8yKS94KSxyPXooKC04MzEyNypsKzE3MTAzMCpjKy0yMjM2OCphK3gvMikveCkscz16KCgtMjc1KmwrLTQ2MDk5KmMrMTExOTA5KmEreC8yKS94KTtyZXR1cm4gdDw8MTZ8cjw8OHxzfWZ1bmN0aW9uIGRlKG4pe2NvbnN0IGU9e2w6MCxhOjEsYjoyfSxvPW5bMF0saT1uWzFdLGw9blsyXSxjPWVbb10sYT1lW2ldLHQ9ZVtsXTtyZXR1cm4ocixzKT0+ci5va2xhYltjXS1zLm9rbGFiW2NdfHxyLm9rbGFiW2FdLXMub2tsYWJbYV18fHIub2tsYWJbdF0tcy5va2xhYlt0XX1mdW5jdGlvbiB1ZShuLGUsbyl7cmV0dXJuIG4+PWU/ZT49bz8ibGFiIjpuPj1vPyJsYmEiOiJibGEiOm4+PW8/ImFsYiI6ZT49bz8iYWJsIjoiYmFsIn1mdW5jdGlvbiBoZShuKXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2NvbnN0IG89bmV3IEltYWdlO28uZGVjb2Rpbmc9InN5bmMiLG8ubG9hZGluZz0iZWFnZXIiLG8uY3Jvc3NPcmlnaW49ImFub255bW91cyIsby5vbmxvYWQ9KCk9PmUobyksby5vbmVycm9yPSgpPT5lKG8pLG8uc3JjPW59KX1mdW5jdGlvbiBxKG4pe3JldHVybiBuJiZ0eXBlb2Ygbj09Im9iamVjdCImJiJfX0NPTlRFWFRfXyJpbiBufWZ1bmN0aW9uIGdlKG4pe3JldHVybiBxKG4pP246cGUobil9ZnVuY3Rpb24gcGUobj17fSl7Y29uc3R7bWF4Q29sb3JzOmU9MjU2LHN0YXRzTW9kZTpvPSJmdWxsIixzYW1wbGVzOmk9W10sc2tpcFRyYW5zcGFyZW50Omw9ITB9PW47cmV0dXJue19fQ09OVEVYVF9fOiEwLHNhbXBsZXM6aSxtYXhDb2xvcnM6ZSxzdGF0c01vZGU6byxza2lwVHJhbnNwYXJlbnQ6bCxjb2xvclNhbXBsZXM6W10sY29sb3JTYW1wbGVzQ2FjaGU6bmV3IE1hcCxjb2xvckJveGVzOltdLGNvbG9yQm94ZXNJbmRleFRyZWU6W10sZmluZGVyQ2FjaGU6bmV3IE1hcH19ZnVuY3Rpb24gWShuKXtjb25zdCBlPXEobik/bjpuLmNvbnRleHQse2NvbG9yQm94ZXNJbmRleFRyZWU6byxmaW5kZXJDYWNoZTppfT1lO2Z1bmN0aW9uIGwoYSx0LHIpe2NvbnN0e2xlZnQ6cyxyaWdodDp1LGxvbmdlc3Q6ZCxva2xhYjpoLGNvbG9yQm94SW5kZXg6Yn09b1thXSxwPU1hdGgubWluKEEodFswXS1oWzBdLDIpK0EodFsxXS1oWzFdLDIpK0EodFsyXS1oWzJdLDIpLDQyOTQ5NjcyOTUtMSk7cDxyLmRpc3QmJihyLmNvbG9yQm94SW5kZXg9YixyLmRpc3Q9cCk7bGV0IGYsZztpZihzIT09LTF8fHUhPT0tMSl7Y29uc3QgQz10W2RdLWhbZF07Qzw9MD8oZj1zLGc9dSk6KGY9dSxnPXMpLGYhPT0tMSYmbChmLHQsciksZyE9PS0xJiZBKEMsMik8ci5kaXN0JiZsKGcsdCxyKX19ZnVuY3Rpb24gYyhhKXtjb25zdCB0PXtkaXN0Ok51bWJlci5NQVhfU0FGRV9JTlRFR0VSLGNvbG9yQm94SW5kZXg6LTF9O3JldHVybiBsKDAsYSx0KSx0LmNvbG9yQm94SW5kZXh9cmV0dXJuIGE9Pntjb25zdCB0PWElMzI3Njg7bGV0IHI9aS5nZXQodCk7cnx8KHI9bmV3IE1hcCxpLnNldCh0LHIpKTtsZXQgcz1yLmdldChhKTtyZXR1cm4gcyE9PXZvaWQgMHx8KHM9YyhIKGEpKSxyLnNldChhLHMpKSxzfX1mdW5jdGlvbiBtZShuLGUpe2NvbnN0e2NvbG9yQm94ZXM6b309bixpPW8ucmVkdWNlKChhLHQpPT5hK3Qud2VpZ2h0LDApO2lmKCFlKXJldHVybiBuLmNvbG9yQm94ZXMubWFwKGE9Pntjb25zdHtzcmdiOnQsd2VpZ2h0OnJ9PWE7cmV0dXJue3ZhbHVlOnQscGVyY2VudGFnZTpyL2l9fSk7Y29uc3QgbD1bXTtmb3IobGV0IGE9by5sZW5ndGgsdD0wO3Q8YTt0Kyspe2NvbnN0e3NyZ2I6cix3ZWlnaHQ6c309b1t0XTtsLnB1c2goe3ZhbHVlOltyPj4xNiYyNTUscj4+OCYyNTUsciYyNTVdLHBlcmNlbnRhZ2U6cy9pfSl9bGV0IGM7aWYoZT09PSJidWZmZXIiKXtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsLmxlbmd0aCo0KTtmb3IobGV0IGE9bC5sZW5ndGgsdD0wO3Q8YTt0Kyspe2NvbnN0IHI9dCo0LHM9bFt0XS52YWx1ZTtjW3JdPXNbMF0sY1tyKzFdPXNbMV0sY1tyKzJdPXNbMl0sY1tyKzNdPTI1NX19ZWxzZSBpZihlPT09ImhleCIpe2M9W107Zm9yKGxldCBhPWwubGVuZ3RoLHQ9MDt0PGE7dCsrKXtjb25zdHt2YWx1ZTpyLHBlcmNlbnRhZ2U6c309bFt0XSx1PXJbMF0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSxkPXJbMV0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSxoPXJbMl0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKTtjLnB1c2goe3ZhbHVlOmAjJHt1fSR7ZH0ke2h9YCxwZXJjZW50YWdlOnN9KX19ZWxzZSBjPWw7cmV0dXJuIGN9ZnVuY3Rpb24gRihuLGUsbyl7dmFyIHUsZCxoLGI7Y29uc3R7Z2V0Q29udGV4dDJkOmkscHJldmlvdXNTYW1wbGU6bCxza2lwVHJhbnNwYXJlbnQ6Y309byx7c3RhdHNNb2RlOmEsY29sb3JTYW1wbGVzOnQsY29sb3JTYW1wbGVzQ2FjaGU6cn09bjtsZXQgcztpZihBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZS5idWZmZXIpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGUpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSlpZihBcnJheS5pc0FycmF5KGVbMF0pKXtjb25zdCBwPVtdO2ZvcihsZXQgZj1lLmxlbmd0aCxnPTA7ZzxmO2crKylwLnB1c2goKHU9ZVtnXVswXSkhPW51bGw/dTowLChkPWVbZ11bMV0pIT1udWxsP2Q6MCwoaD1lW2ddWzJdKSE9bnVsbD9oOjAsKGI9ZVtnXVszXSkhPW51bGw/YjoyNTUpO3M9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHApfWVsc2Ugcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7ZWxzZSBpZih0eXBlb2YgZT09InN0cmluZyIpe2NvbnN0IHA9aT09bnVsbD92b2lkIDA6aSgpO2lmKCFwKXJldHVybjtjb25zdCBmPXAuY2FudmFzO3JldHVybiBoZShlKS50aGVuKGc9PihwLmNsZWFyUmVjdCgwLDAsZi53aWR0aCxmLmhlaWdodCksZi53aWR0aD1nLndpZHRoLGYuaGVpZ2h0PWcuaGVpZ2h0LHAuZHJhd0ltYWdlKGcsMCwwLGYud2lkdGgsZi5oZWlnaHQpLEYobixwLmdldEltYWdlRGF0YSgwLDAsZi53aWR0aCxmLmhlaWdodCkuZGF0YSxvKSkpfWVsc2V7Y29uc3QgcD1pPT1udWxsP3ZvaWQgMDppKCk7aWYoIXApcmV0dXJuO2NvbnN0IGY9cC5jYW52YXM7cmV0dXJuIHAuY2xlYXJSZWN0KDAsMCxmLndpZHRoLGYuaGVpZ2h0KSxmLndpZHRoPXR5cGVvZiBlLndpZHRoPT0ibnVtYmVyIj9lLndpZHRoOmUud2lkdGguYmFzZVZhbC52YWx1ZSxmLmhlaWdodD10eXBlb2YgZS5oZWlnaHQ9PSJudW1iZXIiP2UuaGVpZ2h0OmUuaGVpZ2h0LmJhc2VWYWwudmFsdWUscC5kcmF3SW1hZ2UoZSwwLDAsZi53aWR0aCxmLmhlaWdodCksRihuLHAuZ2V0SW1hZ2VEYXRhKDAsMCxmLndpZHRoLGYuaGVpZ2h0KS5kYXRhLG8pfWZvcihsZXQgcD1zLmxlbmd0aCxmPTA7ZjxwO2YrPTQpe2NvbnN0IGc9c1tmXSxDPXNbZisxXSx5PXNbZisyXSx3PXNbZiszXTtpZihjJiZ3PT09MHx8YT09PSJkaWZmIiYmbCYmZz09PWxbZl0mJkM9PT1sW2YrMV0mJnk9PT1sW2YrMl0mJnc9PT1sW2YrM10pY29udGludWU7Y29uc3QgbT1nPDwxNnxDPDw4fHksUz13KjFlOCttLEk9UyUzMjc2ODtsZXQgVD1yLmdldChJKTtUfHwoVD1uZXcgTWFwLHIuc2V0KEksVCkpO2xldCBFPVQuZ2V0KFMpO2lmKEUhPT12b2lkIDApe3RbRV0uY291bnQrKztjb250aW51ZX1FPXQucHVzaCh7YWxwaGE6dyxzcmdiOm0sb2tsYWI6SChtKSxjb3VudDoxfSktMSxULnNldChTLEUpfXJldHVybiBzfWZ1bmN0aW9uIEoobixlKXtjb25zdHtjb2xvclNhbXBsZXM6b309ZSx7c3RhcnQ6aSxlbmQ6bH09bjtuLmxlbmd0aD1sLWksbi53ZWlnaHQ9MDtjb25zdCBjPVswLDAsMF07Zm9yKGxldCB0PWk7dDxsO3QrKyl7Y29uc3Qgcj1vW3RdO2NbMF0rPXIub2tsYWJbMF0qci5jb3VudCxjWzFdKz1yLm9rbGFiWzFdKnIuY291bnQsY1syXSs9ci5va2xhYlsyXSpyLmNvdW50LG4ud2VpZ2h0Kz1yLmNvdW50fW4ub2tsYWI9W2NbMF0vbi53ZWlnaHQsY1sxXS9uLndlaWdodCxjWzJdL24ud2VpZ2h0XTtjb25zdCBhPVswLDAsMF07Zm9yKGxldCB0PWk7dDxsO3QrKyl7Y29uc3Qgcj1vW3RdO2FbMF0rPUEoci5va2xhYlswXS1uLm9rbGFiWzBdLDIpKnIuY291bnQsYVsxXSs9QShyLm9rbGFiWzFdLW4ub2tsYWJbMV0sMikqci5jb3VudCxhWzJdKz1BKHIub2tsYWJbMl0tbi5va2xhYlsyXSwyKSpyLmNvdW50fW4uc29ydD11ZShhWzBdLGFbMV0sYVsyXSksbi5zY29yZT1NYXRoLm1heChhWzBdLGFbMV0sYVsyXSl9ZnVuY3Rpb24gUShuLGUpe2NvbnN0IG89Wih7c3RhcnQ6MCxlbmQ6MCxsZW5ndGg6MCxzY29yZTowLHdlaWdodDowLHNvcnQ6ImxhYiIsc29ydGVkOm51bGwsc3JnYjowLG9rbGFiOlswLDAsMF19LG4pO3JldHVybiBKKG8sZSksb31mdW5jdGlvbiB3ZShuKXtjb25zdHtjb2xvckJveGVzOmV9PW4sbz1bXSxpPW5ldyBNYXA7Zm9yKGxldCBhPS0xLHQ9ZS5sZW5ndGgscj0wO3I8dDtyKyspe2NvbnN0e3NyZ2I6c309ZVtyXTtpZihzPT09YSl7aS5zZXQociwhMCk7Y29udGludWV9YT1zfWMoe21pbjpbLTY1NTM1LC02NTUzNSwtNjU1MzVdLG1heDpbNjU1MzUsNjU1MzUsNjU1MzVdfSk7ZnVuY3Rpb24gbChhKXtjb25zdCB0PXttaW46WzY1NTM1LDY1NTM1LDY1NTM1XSxtYXg6Wy02NTUzNSwtNjU1MzUsLTY1NTM1XX07bGV0IHI9MDtjb25zdCBzPVtdO2ZvcihsZXQgcD1lLmxlbmd0aCxmPTA7ZjxwO2YrKyl7Y29uc3R7b2tsYWI6Z309ZVtmXTtpLmhhcyhmKXx8Z1swXTxhLm1pblswXXx8Z1sxXTxhLm1pblsxXXx8Z1syXTxhLm1pblsyXXx8Z1swXT5hLm1heFswXXx8Z1sxXT5hLm1heFsxXXx8Z1syXT5hLm1heFsyXXx8KGdbMF08dC5taW5bMF0mJih0Lm1pblswXT1nWzBdKSxnWzFdPHQubWluWzFdJiYodC5taW5bMV09Z1sxXSksZ1syXTx0Lm1pblsyXSYmKHQubWluWzJdPWdbMl0pLGdbMF0+dC5tYXhbMF0mJih0Lm1heFswXT1nWzBdKSxnWzFdPnQubWF4WzFdJiYodC5tYXhbMV09Z1sxXSksZ1syXT50Lm1heFsyXSYmKHQubWF4WzJdPWdbMl0pLHNbcisrXT17b2tsYWI6Zyxjb2xvckJveEluZGV4OmZ9KX1sZXQgdT0wO2lmKCFyKXJldHVybntjb2xvckJveEluZGV4Oi0xLGxvbmdlc3Q6dX07Y29uc3QgZD10Lm1heFswXS10Lm1pblswXSxoPXQubWF4WzFdLXQubWluWzFdLGI9dC5tYXhbMl0tdC5taW5bMl07cmV0dXJuIGQ+PWgmJmQ+PWI/dT0wOmI+PWQmJmI+PWg/dT0yOmg+PWQmJmg+PWImJih1PTEpLHtjb2xvckJveEluZGV4OnMuc29ydCgocCxmKT0+cC5va2xhYlt1XS1mLm9rbGFiW3VdKVtyPj4xXS5jb2xvckJveEluZGV4LGxvbmdlc3Q6dX19ZnVuY3Rpb24gYyhhKXtjb25zdHtjb2xvckJveEluZGV4OnQsbG9uZ2VzdDpyfT1sKGEpO2lmKHQ8MClyZXR1cm4tMTtjb25zdHtva2xhYjpzfT1lW3RdLHU9e2xvbmdlc3Q6cixva2xhYjpzLGNvbG9yQm94SW5kZXg6dH0sZD1vLnB1c2godSktMTtpLnNldCh0LCEwKTtjb25zdCBoPXttYXg6Wy4uLmEubWF4XSxtaW46Wy4uLmEubWluXX0sYj17bWF4OlsuLi5hLm1heF0sbWluOlsuLi5hLm1pbl19O2gubWF4W3JdPXNbcl0sYi5taW5bcl09TWF0aC5taW4oc1tyXSsxLDY1NTM1KTtjb25zdCBwPWMoaCk7bGV0IGY9LTE7cmV0dXJuIGIubWluW3JdPD1iLm1heFtyXSYmKGY9YyhiKSksdS5sZWZ0PXAsdS5yaWdodD1mLGR9cmV0dXJuIG99ZnVuY3Rpb24gYmUobixlPXt9KXtjb25zdHttYXhDb2xvcnM6byxjb2xvclNhbXBsZXM6aX09bjtpZighaS5sZW5ndGgpcmV0dXJuO2NvbnN0e21heENvbG9yczpsPW8sY2xlYXJTYW1wbGVzOmM9ITB9PWU7bGV0IGE9USh7ZW5kOmkubGVuZ3RofSxuKSx0PTE7Y29uc3Qgcj1bYV07ZnVuY3Rpb24gcygpe2xldCBkPS0xLGg9LTE7aWYodD09PWwpcmV0dXJuLTE7Zm9yKGxldCBiPTA7Yjx0O2IrKyl7Y29uc3QgcD1yW2JdO3AubGVuZ3RoPj0yJiZwLnNjb3JlPmgmJihkPWIsaD1wLnNjb3JlKX1yZXR1cm4gZH1mdW5jdGlvbiB1KGQsaCl7Y29uc3QgYj1RKHtzdGFydDpoKzEsZW5kOmQuZW5kLHNvcnRlZDpkLnNvcnRlZH0sbik7ZC5lbmQtPWIubGVuZ3RoLEooZCxuKSxyLnB1c2goYiksdCsrfWZvcig7YSYmYS5sZW5ndGg+MTspe2NvbnN0e3N0YXJ0OmQsZW5kOmgsc29ydDpiLHNvcnRlZDpwfT1hO2lmKGIhPT1wKXtjb25zdCB3PWkuc2xpY2UoZCxoKS5zb3J0KGRlKGIpKTtmb3IobGV0IG09dy5sZW5ndGgsUz0wO1M8bTtTKyspaVtkK1NdPXdbU107YS5zb3J0ZWQ9Yn1jb25zdCBmPWEud2VpZ2h0KzE+PjE7bGV0IGc9ZCxDPTA7Zm9yKGxldCB3PWgtMjtnPHcmJihDKz1pW2ddLmNvdW50LCEoQz5mKSk7ZysrKTt1KGEsZyk7Y29uc3QgeT1zKCk7YT15Pj0wP3JbeV06bnVsbH1mb3IobGV0IGQ9ci5sZW5ndGgsaD0wO2g8ZDtoKyspcltoXS5zcmdiPWZlKHJbaF0ub2tsYWIpO24uY29sb3JCb3hlcz1yLnNvcnQoKGQsaCk9PmQuc3JnYi1oLnNyZ2IpLG4uY29sb3JCb3hlc0luZGV4VHJlZT13ZShuKSxjJiYobi5jb2xvclNhbXBsZXM9W10sbi5jb2xvclNhbXBsZXNDYWNoZS5jbGVhcigpKSxuLmZpbmRlckNhY2hlLmNsZWFyKCl9ZnVuY3Rpb24geGUobixlLG8pe2NvbnN0e2NvbG9yQm94ZXM6aX09bjtpZighZSlyZXR1cm47bGV0IGw7aWYodHlwZW9mIG89PSJudW1iZXIiKWw9bztlbHNlIGlmKHR5cGVvZiBvPT0ic3RyaW5nIil7Y29uc3Qgcj1vLnJlcGxhY2UoL14jLywiIikscz1bYCR7clswXX0ke3JbMV19YCxgJHtyWzJdfSR7clszXX1gLGAke3JbNF19JHtyWzVdfWBdLm1hcCh1PT5wYXJzZUludCh1LDE2KSk7bD1zWzBdPDwxNnxzWzFdPDw4fHNbMl19ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKWw9b1swXTw8MTZ8b1sxXTw8OHxvWzJdO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5zdXBwb3J0ZWQgY29sb3IgZm9ybWF0Iik7Y29uc3QgYz1lKGwpO2lmKGM9PT12b2lkIDApcmV0dXJuO2NvbnN0IGE9aVtjXTtpZighYSlyZXR1cm47Y29uc3R7c3JnYjp0fT1hO2lmKHR5cGVvZiBvPT0ic3RyaW5nIil7Y29uc3Qgcj0odD4+MTYmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHM9KHQ+PjgmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHU9KHQmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpO3JldHVybnt2YWx1ZTpgIyR7cn0ke3N9JHt1fWAsaW5kZXg6Y319ZWxzZSBpZih0eXBlb2Ygbz09Im9iamVjdCImJkFycmF5LmlzQXJyYXkobykpcmV0dXJue3ZhbHVlOlt0Pj4xNiYyNTUsdD4+OCYyNTUsdCYyNTVdLGluZGV4OmN9O3JldHVybnt2YWx1ZTp0LGluZGV4OmN9fWZ1bmN0aW9uIFNlKG4pe24uY29sb3JTYW1wbGVzPVtdLG4uY29sb3JTYW1wbGVzQ2FjaGUuY2xlYXIoKSxuLmNvbG9yQm94ZXM9W10sbi5jb2xvckJveGVzSW5kZXhUcmVlPVtdLG4uZmluZGVyQ2FjaGUuY2xlYXIoKX1mdW5jdGlvbiBDZShuKXtjb25zdCBlPWdlKG4pLHtzdGF0c01vZGU6byxzYW1wbGVzOmksc2tpcFRyYW5zcGFyZW50Omx9PWUsYz1mdW5jdGlvbigpe2xldCBzO3JldHVybigpPT4oIXMmJkImJihzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkpLHMpfSgpO2xldCBhPW51bGwsdD1udWxsO2NvbnN0IHI9e2NvbnRleHQ6ZSxhZGRTYW1wbGU6cz0+e2UuY29sb3JTYW1wbGVzLmxlbmd0aD09PTAmJihhPW51bGwpO2NvbnN0IHU9RihlLHMse2dldENvbnRleHQyZDpjLHByZXZpb3VzU2FtcGxlOmEsc2tpcFRyYW5zcGFyZW50Omx9KTtyZXR1cm4odSBpbnN0YW5jZW9mIFByb21pc2U/dTpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT51KSkudGhlbihkPT57ZCYmbz09PSJkaWZmIiYmKGE9ZCl9KSx1fSxnZW5lcmF0ZShzPXt9KXtjb25zdHtjbGVhclNhbXBsZXM6dT0hMH09cztyZXR1cm4gdSYmKGE9bnVsbCksYmUoZSxzKSx0aGlzfSxnZXRDb2xvcnM6cz0+bWUoZSxzKSxmaW5kTmVhcmVzdENvbG9yOnM9Pih0fHwodD1ZKGUpKSx4ZShlLHQscykpLHJlc2V0OigpPT5TZShlKX07cmV0dXJuIGkubGVuZ3RoJiYoaS5mb3JFYWNoKHM9PnIuYWRkU2FtcGxlKHMpKSxlLnNhbXBsZXM9W10pLHJ9Y29uc3QgeWU9Ilttb2Rlcm4tZ2lmXSIsSWU9IkdJRiIsa2U9WyI4N2EiLCI4OWEiXSxlZT00NCx0ZT0zMyxUZT0yNTUsQWU9MTEsRWU9MjU0LG5lPTI0OSxyZT00LEJlPTEsX2U9MSxNZT01OSxvZT0oLi4ubik9PmNvbnNvbGUud2Fybih5ZSwuLi5uKTtmdW5jdGlvbiB2ZShuKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4ucmVkdWNlKChvLGkpPT5vK2kuYnl0ZUxlbmd0aCwwKSk7cmV0dXJuIG4ucmVkdWNlKChvLGkpPT4oZS5zZXQoaSxvKSxvK2kuYnl0ZUxlbmd0aCksMCksZX1mdW5jdGlvbiBhZShuLGUsbyl7bGV0IGk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KG4pKWk9bi5idWZmZXI7ZWxzZSBpZihuIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpaT1uO2Vsc2V7Y29uc3QgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx7d2lkdGg6YyxoZWlnaHQ6YX09b3x8e30sdD1sLmdldENvbnRleHQoIjJkIik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIGNhbnZhcyBjb250ZXh0MmQiKTtsLndpZHRoPWMhPW51bGw/Yzp0eXBlb2Ygbi53aWR0aD09Im51bWJlciI/bi53aWR0aDpuLndpZHRoLmJhc2VWYWwudmFsdWUsbC5oZWlnaHQ9YSE9bnVsbD9hOnR5cGVvZiBuLmhlaWdodD09Im51bWJlciI/bi5oZWlnaHQ6bi5oZWlnaHQuYmFzZVZhbC52YWx1ZSx0LmRyYXdJbWFnZShuLDAsMCxsLndpZHRoLGwuaGVpZ2h0KSxpPXQuZ2V0SW1hZ2VEYXRhKDAsMCxsLndpZHRoLGwuaGVpZ2h0KS5kYXRhLmJ1ZmZlcn1zd2l0Y2goZSl7Y2FzZSJ1aW50OEFycmF5IjpyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoaSk7Y2FzZSJ1aW50OENsYW1wZWRBcnJheSI6cmV0dXJuIG5ldyBVaW50OENsYW1wZWRBcnJheShpKTtjYXNlImRhdGFWaWV3IjpyZXR1cm4gbmV3IERhdGFWaWV3KGkpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgZm9ybWF0Iil9fWZ1bmN0aW9uIE5lKG4sZSl7dmFyIHA7Y29uc3R7dG9wOm89MCxsZWZ0Omk9MCx3aWR0aDpsLGhlaWdodDpjLHJhd1dpZHRoOmEscmF0ZTp0PTQsY2FsbGJhY2s6cn09ZSxzPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmMqdCksdT1pKnQsZD1vKnQsaD1sKnQsYj1hKnQ7Zm9yKGxldCBmPTA7ZjxjO2YrKylmb3IobGV0IGc9MDtnPGg7ZysrKXtjb25zdCBDPShkK2YpKmIrKHUrZyk7c1tmKmgrZ109KHA9cj09bnVsbD92b2lkIDA6cihDKSkhPW51bGw/cDpuW0NdfXJldHVybiBzfWZ1bmN0aW9uIFVlKG4pe2NvbnN0IGU9YWUobiwiZGF0YVZpZXciKTtsZXQgbz0wO2NvbnN0IGk9KCk9PmUuZ2V0VWludDgobysrKSxsPWM9PkFycmF5LmZyb20oe2xlbmd0aDpjfSkubWFwKGkpO3JldHVybntnZXRDdXJzb3I6KCk9Pm8sc2V0Q3Vyc29yOmM9Pm89YyxyZWFkQnl0ZTppLHJlYWRCeXRlczpsLHJlYWRTdHJpbmc6Yz0+U3RyaW5nLmZyb21DaGFyQ29kZSguLi5sKGMpKSxyZWFkVW5zaWduZWQ6KCk9PltlLmdldFVpbnQxNihvLCEwKSxvKz0yXVswXSxyZWFkQml0czooKT0+ZS5nZXRVaW50OChvKyspLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDgsIjAiKS5zcGxpdCgiIikubWFwKE51bWJlcikscmVhZENvbG9yVGFibGU6Yz0+QXJyYXkuZnJvbSh7bGVuZ3RoOmN9LCgpPT5BcnJheS5mcm9tKGwoMykpKSxyZWFkU3ViQmxvY2s6KCk9Pntjb25zdCBjPVtdO2Zvcig7Oyl7Y29uc3QgYT1pKCk7aWYoYT09PTAmJmUuZ2V0VWludDgobykhPT0wKWJyZWFrO2MucHVzaChhKX1yZXR1cm4gY319fWZ1bmN0aW9uIE9lKG4pe2NvbnN0IGU9e30se2dldEN1cnNvcjpvLHNldEN1cnNvcjppLHJlYWRCeXRlOmwscmVhZFN0cmluZzpjLHJlYWRVbnNpZ25lZDphLHJlYWRCaXRzOnQscmVhZENvbG9yVGFibGU6cixyZWFkU3ViQmxvY2s6c309VWUobiksdT0oKT0+KHtpbmRleDowLGRlbGF5OjEwMCxkaXNwb3NhbDowfSksZD1jKDMpLGg9YygzKTtpZihkIT09SWV8fCFrZS5pbmNsdWRlcyhoKSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgaXMgbm90IGEgODdhLzg5YSBHSUYgZGF0YS4iKTtlLnZlcnNpb249aCxlLndpZHRoPWEoKSxlLmhlaWdodD1hKCk7Y29uc3QgYj10KCk7ZS5nbG9iYWxDb2xvclRhYmxlPSEhYlswXSxlLmNvbG9yUmVzb2x1VGlvbj1wYXJzZUludChiLnNsaWNlKDEsNCkuam9pbigiIiksMikrMSxlLmNvbG9yVGFibGVTb3J0ZWQ9ISFiWzRdO2NvbnN0IHA9cGFyc2VJbnQoYi5zbGljZSg1LDgpLmpvaW4oIiIpLDIpO2UuY29sb3JUYWJsZVNpemU9cD9NYXRoLnBvdygyLHArMSk6MCxlLmJhY2tncm91bmRDb2xvckluZGV4PWwoKSxlLnBpeGVsQXNwZWN0UmF0aW89bCgpLGUuZ2xvYmFsQ29sb3JUYWJsZSYmKGUuY29sb3JUYWJsZVNpemU/ZS5jb2xvclRhYmxlPXIoZS5jb2xvclRhYmxlU2l6ZSk6cygpKSxlLmZyYW1lcz1bXTtsZXQgZj11KCk7Y29uc3QgZz1bXSxDPVtdO2Zvcig7Oyl7Y29uc3QgeT1sKCk7aWYoZy5wdXNoKHkpLHk9PT1lZSl7Zi5sZWZ0PWEoKSxmLnRvcD1hKCksZi53aWR0aD1hKCksZi5oZWlnaHQ9YSgpO2NvbnN0IHc9dCgpO2YubG9jYWxDb2xvclRhYmxlPSEhd1swXSxmLmludGVybGFjZWQ9ISF3WzFdLGYuY29sb3JUYWJsZVNvcnRlZD0hIXdbMl0sZi5yZXNlcnZlZD1wYXJzZUludCh3LnNsaWNlKDMsNSkuam9pbigiIiksMik7Y29uc3QgbT1wYXJzZUludCh3LnNsaWNlKDUsOCkuam9pbigiIiksMik7Zm9yKGYuY29sb3JUYWJsZVNpemU9bT9NYXRoLnBvdygyLG0rMSk6MCxmLmxvY2FsQ29sb3JUYWJsZSYmKGYuY29sb3JUYWJsZT1yKGYuY29sb3JUYWJsZVNpemUpKSxmLmx6d01pbkNvZGVTaXplPWwoKSxmLmltYWdlRGF0YVBvc2l0aW9ucz1bXTs7KXtjb25zdCBTPWwoKTtpZihTPT09MClicmVhaztjb25zdCBJPW8oKTtmLmltYWdlRGF0YVBvc2l0aW9ucy5wdXNoKFtJLFNdKSxpKEkrUyl9ZS5mcmFtZXMucHVzaChmKSxmPXUoKSxmLmluZGV4PWUuZnJhbWVzLmxlbmd0aDtjb250aW51ZX1pZih5PT09dGUpe2NvbnN0IHc9bCgpO2lmKEMucHVzaCh3KSx3PT09VGUpe2lmKGwoKSE9PUFlKWNvbnRpbnVlO2NvbnN0IG09e2lkZW50aWZpZXI6Yyg4KSxjb2RlOmMoMyksZGF0YTpbXX07YCR7bS5pZGVudGlmaWVyfSR7bS5jb2RlfWA9PSJORVRTQ0FQRTIuMCImJmwoKT09PTMmJihlLmxvb3BlZD0hIWwoKSxlLmxvb3BDb3VudD1hKCkpLG0uZGF0YT1zKCksZi5hcHBsaWNhdGlvbj1tO2NvbnRpbnVlfWlmKHc9PT1FZSl7Zi5jb21tZW50PXMoKS5tYXAobT0+U3RyaW5nLmZyb21DaGFyQ29kZShtKSkuam9pbigiIik7Y29udGludWV9aWYodz09PW5lKXtpZihsKCkhPT1yZSljb250aW51ZTtjb25zdCBtPXQoKSxTPXtyZXNlcnZlZDpwYXJzZUludChtLnNsaWNlKDAsMykuam9pbigiIiksMiksZGlzcG9zYWw6cGFyc2VJbnQobS5zbGljZSgzLDYpLmpvaW4oIiIpLDIpLHVzZXJJbnB1dDohIW1bNl0sdHJhbnNwYXJlbnQ6ISFtWzddLGRlbGF5VGltZTphKCksdHJhbnNwYXJlbnRJbmRleDpsKCl9O3MoKSxmLmdyYXBoaWNDb250cm9sPVMsZi5kaXNwb3NhbD1TLmRpc3Bvc2FsLGYuZGVsYXk9KFMuZGVsYXlUaW1lfHwxMCkqMTA7Y29udGludWV9aWYodz09PUJlKXtpZihsKCkhPT1fZSljb250aW51ZTtmLnBsYWluVGV4dD17bGVmdDphKCksdG9wOmEoKSx3aWR0aDphKCksaGVpZ2h0OmEoKSxjZWxsV2lkdGg6bCgpLGNlbGxIZWlnaHQ6bCgpLGNvbG9ySW5kZXg6bCgpLGJhY2tncm91bmRDb2xvckluZGV4OmwoKSxkYXRhOnMoKX07Y29udGludWV9b2UoYFVua25vd24gZXh0ZW5zaW9uIGJsb2NrOiAweCR7dy50b1N0cmluZygxNil9YCxnLnNsaWNlKDAsZy5sZW5ndGgtMSkubWFwKG09PmAweCR7bS50b1N0cmluZygxNil9YCksQy5zbGljZSgwLEMubGVuZ3RoLTEpLm1hcChtPT5gMHgke20udG9TdHJpbmcoMTYpfWApKTtjb250aW51ZX1pZih5PT09TWUpYnJlYWs7b2UoYFVua25vd24gYmxvY2s6IDB4JHt5LnRvU3RyaW5nKDE2KX1gLGcuc2xpY2UoMCxnLmxlbmd0aC0xKS5tYXAodz0+YDB4JHt3LnRvU3RyaW5nKDE2KX1gKSxDLnNsaWNlKDAsQy5sZW5ndGgtMSkubWFwKHc9PmAweCR7dy50b1N0cmluZygxNil9YCkpfXJldHVybiBlfWZ1bmN0aW9uIFBlKG4sZSxvKXtjb25zdCBjPW87bGV0IGEsdCxyLHMsdSxkLGg7Y29uc3QgYj1uZXcgQXJyYXkobykscD1uZXcgQXJyYXkoNDA5NiksZj1uZXcgQXJyYXkoNDA5NiksZz1uZXcgQXJyYXkoNDA5NisxKSxDPW4seT0xPDxDLHc9eSsxO2ZvcihhPXkrMix1PS0xLHI9QysxLHQ9KDE8PHIpLTEsZD0wO2Q8eTtkKyspcFtkXT0wLGZbZF09ZDtsZXQgbSxTLEksVCxFLFA7Zm9yKG09Uz1JPVQ9RT1QPTAsaD0wO2g8Yzspe2lmKFQ9PT0wKXtpZihTPHIpe20rPWVbUF08PFMsUys9OCxQKys7Y29udGludWV9aWYoZD1tJnQsbT4+PXIsUy09cixkPmF8fGQ9PT13KWJyZWFrO2lmKGQ9PT15KXtyPUMrMSx0PSgxPDxyKS0xLGE9eSsyLHU9LTE7Y29udGludWV9aWYodT09PS0xKXtnW1QrK109ZltkXSx1PWQsST1kO2NvbnRpbnVlfWZvcihzPWQsZD09PWEmJihnW1QrK109SSxkPXUpO2Q+eTspZ1tUKytdPWZbZF0sZD1wW2RdO0k9ZltkXSYyNTUsZ1tUKytdPUksYTw0MDk2JiYocFthXT11LGZbYV09SSxhKyssIShhJnQpJiZhPDQwOTYmJihyKyssdCs9YSkpLHU9c31ULS0sYltFKytdPWdbVF0saCsrfWZvcihoPUU7aDxjO2grKyliW2hdPTA7cmV0dXJuIGJ9ZnVuY3Rpb24gJGUobixlKXtjb25zdCBvPW5ldyBBcnJheShuLmxlbmd0aCksaT1uLmxlbmd0aC9lLGw9WzAsNCwyLDFdLGM9WzgsOCw0LDJdO2xldCBhPTA7Zm9yKGxldCB0PTA7dDw0O3QrKylmb3IobGV0IHI9bFt0XTtyPGk7cis9Y1t0XSlvLnNwbGljZS5hcHBseShvLFtyKmUsZV0uY29uY2F0KG4uc2xpY2UoYSplLChhKzEpKmUpKSksYSsrO3JldHVybiBvfWZ1bmN0aW9uIERlKG4pe2NvbnN0IGU9bmV3IE1hcCx7d29ya2VyVXJsOm99PW47bGV0e3dvcmtlck51bWJlcjppPTF9PW47Y29uc3QgbD1bLi4ubmV3IEFycmF5KG8/aTowKV0ubWFwKCgpPT57dHJ5e2NvbnN0IHI9bmV3IFdvcmtlcihvKTtyZXR1cm4gci5vbm1lc3NhZ2U9YyxyfWNhdGNoKHIpe3JldHVybiBudWxsfX0pLmZpbHRlcihCb29sZWFuKTtpPWwubGVuZ3RoO2Z1bmN0aW9uIGMocil7dmFyIGQ7Y29uc3R7aWQ6cyxkYXRhOnV9PXIuZGF0YTsoZD1lLmdldChzKSk9PW51bGx8fGQodSksZS5kZWxldGUocyl9Y29uc3QgYT1mdW5jdGlvbigpe2xldCByPTA7cmV0dXJuIHM9PmxbKHMhPW51bGw/czpyKyspJWldfSgpO3JldHVybntjYWxsOmZ1bmN0aW9uKCl7bGV0IHI9MDtyZXR1cm4ocyx1LGQsaCk9Pm5ldyBQcm9taXNlKGI9Pntjb25zdCBwPWEoaCk7aWYoIXApcmV0dXJuIGIodm9pZCAwKTtlLnNldChyLGIpLHAucG9zdE1lc3NhZ2Uoe2lkOnIrKyx0eXBlOnMsZGF0YTp1fSx7dHJhbnNmZXI6ZH0pfSl9KCl9fWZ1bmN0aW9uIFhlKG4sZSl7Y29uc3Qgbz1hZShuLCJ1aW50OEFycmF5Iik7aWYoZSE9bnVsbCYmZS53b3JrZXJVcmwpcmV0dXJuIERlKHt3b3JrZXJVcmw6ZS53b3JrZXJVcmx9KS5jYWxsKCJmcmFtZXM6ZGVjb2RlIixvLFtvLmJ1ZmZlcl0pO2NvbnN0e2dpZjppPU9lKG4pLHJhbmdlOmx9PWUhPW51bGw/ZTp7fSx7d2lkdGg6YyxoZWlnaHQ6YSxjb2xvclRhYmxlOnQsZnJhbWVzOnJ9PWkscz1sP3Iuc2xpY2UobFswXSxsWzFdKzEpOnIsdT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYyphKjQpO2xldCBkO3JldHVybiBzLm1hcChoPT57dmFyIGxlO2NvbnN0e2xlZnQ6Yix0b3A6cCx3aWR0aDpmLGhlaWdodDpnLGludGVybGFjZWQ6Qyxsb2NhbENvbG9yVGFibGU6eSxjb2xvclRhYmxlOncsbHp3TWluQ29kZVNpemU6bSxpbWFnZURhdGFQb3NpdGlvbnM6UyxncmFwaGljQ29udHJvbDpJLGRpc3Bvc2FsOlQsZGVsYXk6RX09aCxQPXArZyx7dHJhbnNwYXJlbnQ6S2UsdHJhbnNwYXJlbnRJbmRleDpWZX09SSE9bnVsbD9JOnt9LFc9eT93OnQsamU9S2U/VmU6LTEsWmU9dmUoUy5tYXAoKFtNLFVdKT0+by5zdWJhcnJheShNLE0rVSkpKTtsZXQgSz1QZShtLFplLGYqZyk7aWYoQyYmKEs9JGUoSyxmKSksKGQ9PW51bGw/dm9pZCAwOmQuZGlzcG9zYWwpIT09MSl7Y29uc3R7bGVmdDpNPTAsdG9wOlU9MCx3aWR0aDpWPWMsaGVpZ2h0Ok89YX09ZCE9bnVsbD9kOnt9LFg9VStPO2ZvcihsZXQgJD1VOyQ8WDskKyspe2NvbnN0IGo9JCpjK007Zm9yKGxldCBEPTA7RDxWO0QrKyl7Y29uc3Qgdj0oaitEKSo0O3Vbdl09dVt2KzFdPXVbdisyXT11W3YrM109MH19fWZvcihsZXQgTT1wO008UDtNKyspe2NvbnN0IFU9TSpjK2IsVj0oTS1wKSpmO2ZvcihsZXQgTz0wO088ZjtPKyspe2NvbnN0IFg9S1tWK09dO2lmKFg9PT1qZSljb250aW51ZTtjb25zdFskLGosRF09KGxlPVc9PW51bGw/dm9pZCAwOldbWF0pIT1udWxsP2xlOlswLDAsMF0sdj0oVStPKSo0O3Vbdl09JCx1W3YrMV09aix1W3YrMl09RCx1W3YrM109MjU1fX1yZXR1cm4gVCE9PTMmJihkPWgpLHt3aWR0aDpjLGhlaWdodDphLGRlbGF5OkUsaW1hZ2VEYXRhOnUuc2xpY2UoMCl9fSl9ZnVuY3Rpb24gTGUobixlLG8pe2NvbnN0e3dyaXRlQnl0ZTppLGdldEN1cnNvcjpsLGNhbGN1bGF0ZURpc3RhbmNlOmN9PW87aShuKTtsZXQgYT1sKCk7aSgwKTtjb25zdCB0PTE8PG4scj10LTEscz10KzE7bGV0IHU9cysxLGQ9bisxLGg9MCxiPTA7ZnVuY3Rpb24gcChTKXtmb3IoO2g+PVM7KWkoYiYyNTUpLGI+Pj04LGgtPTgsYyhhKT09PTI1NiYmKGkoMjU1LGEpLGE9bCgpLGkoMCkpfWZ1bmN0aW9uIGYoUyl7Ynw9Uzw8aCxoKz1kLHAoOCl9bGV0IGc9ZVswXSZyLEM9e30seSx3LG07Zih0KTtmb3IobGV0IFM9ZS5sZW5ndGgsST0xO0k8UzsrK0kpaWYobT1lW0ldJnIseT1nPDw4fG0sdz1DW3ldLHc9PT12b2lkIDApe2ZvcihifD1nPDxoLGgrPWQ7aD49ODspaShiJjI1NSksYj4+PTgsaC09OCxjKGEpPT09MjU2JiYoaSgyNTUsYSksYT1sKCksaSgwKSk7dT09PTQwOTY/KGYodCksdT1zKzEsZD1uKzEsQz17fSk6KHU+PTE8PGQmJisrZCxDW3ldPXUrKyksZz1tfWVsc2UgZz13O2YoZyksZihzKSxwKDEpLGMoYSk9PT0xP2koMCxhKTooaShjKGEpLTEsYSksaSgwKSl9ZnVuY3Rpb24gUmUobj17fSl7Y29uc3R7Y2h1bmtTaXplOmU9NDA5Nn09bjtsZXQgbz1bbmV3IFVpbnQ4QXJyYXkoZSldLGk9MCxsPTA7Y29uc3QgYz0odCxyKT0+e3I/b1tyWzBdXVtyWzFdXT10OihsPj1lJiYob1srK2ldPW5ldyBVaW50OEFycmF5KGUpLGw9MCksb1tpXVtsKytdPXQpfSxhPXQ9PnQuZm9yRWFjaChyPT5jKHIpKTtyZXR1cm57Z2V0Q3Vyc29yOigpPT5baSxsXSxzZXRDdXJzb3I6dD0+e2k9dFswXSxsPXRbMV19LGNhbGN1bGF0ZURpc3RhbmNlOnQ9PmkqZStsLSh0WzBdKmUrdFsxXSksd3JpdGVCeXRlOmMsd3JpdGVCeXRlczphLHdyaXRlU3RyaW5nOnQ9PnQuc3BsaXQoIiIpLmZvckVhY2goKHIscyk9PmModC5jaGFyQ29kZUF0KHMpKSksd3JpdGVVbnNpZ25lZDp0PT5hKFt0JjI1NSx0Pj44JjI1NV0pLGZsdXNoOigpPT57b1tpXT1vW2ldLnNsaWNlKDAsbCk7Y29uc3QgdD1uZXcgVWludDhBcnJheShvLnJlZHVjZSgocyx1KT0+cyt1LmJ5dGVMZW5ndGgsMCkpO2xldCByPTA7cmV0dXJuIG8uZm9yRWFjaChzPT57dC5zZXQocyxyKSxyKz1zLmJ5dGVMZW5ndGh9KSxvPVtuZXcgVWludDhBcnJheShlKV0saT0wLGw9MCx0fX19ZnVuY3Rpb24gemUobil7dmFyIEMseSx3O2NvbnN0IGU9UmUoKSx7d3JpdGVCeXRlOm8sd3JpdGVCeXRlczppLHdyaXRlVW5zaWduZWQ6bCxmbHVzaDpjfT1lLHtsZWZ0OmE9MCx0b3A6dD0wLHdpZHRoOnI9MCxoZWlnaHQ6cz0wLGRlbGF5OnU9MTAwLGNvbG9yVGFibGU6ZH09bjtsZXR7ZGlzcG9zYWw6aD0wfT1uO2NvbnN0IGI9KEM9bi5ncmFwaGljQ29udHJvbCk9PW51bGw/dm9pZCAwOkMudHJhbnNwYXJlbnQ7bGV0IHA9KHc9KHk9bi5ncmFwaGljQ29udHJvbCk9PW51bGw/dm9pZCAwOnkudHJhbnNwYXJlbnRJbmRleCkhPW51bGw/dzoyNTU7aWYoYTwwfHxhPjY1NTM1KXRocm93IG5ldyBFcnJvcigiTGVmdCBpbnZhbGlkLiIpO2lmKHQ8MHx8dD42NTUzNSl0aHJvdyBuZXcgRXJyb3IoIlRvcCBpbnZhbGlkLiIpO2lmKHI8PTB8fHI+NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJXaWR0aCBpbnZhbGlkLiIpO2lmKHM8PTB8fHM+NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJIZWlnaHQgaW52YWxpZC4iKTtsZXQgZj04LGc9ZD9kLmxlbmd0aDowO2lmKGcpe2lmKGc8Mnx8Zz4yNTZ8fGcmZy0xKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2xvciB0YWJsZSBsZW5ndGgsIG11c3QgYmUgcG93ZXIgb2YgMiBhbmQgMiAuLiAyNTYuIik7Zm9yKDtnPj49MTspKytmfXJldHVybiBvKHRlKSxvKG5lKSxvKHJlKSxiP2h8fChoPTIpOnA9MCxvKHBhcnNlSW50KGAwMDAke051bWJlcihoJjcpLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDMsIjAiKX0wJHtiPzE6MH1gLDIpKSxsKHUvMTApLG8ocCksbygwKSxvKGVlKSxsKGEpLGwodCksbChyKSxsKHMpLGQhPW51bGwmJmQubGVuZ3RoPyhvKHBhcnNlSW50KGAxMDAwMCR7KGYtMSkudG9TdHJpbmcoMikucGFkU3RhcnQoMywiMCIpfWAsMikpLGkoZC5mbGF0KCkpKTpvKDApLExlKGYsbi5pbWFnZURhdGEsZSksYygpfWZ1bmN0aW9uIEZlKG4pe2NvbnN0e2ZyYW1lczplLHBhbGV0dGU6byx0cmFuc3BhcmVudEluZGV4Oml9PW4sbD1ZKG8pO3JldHVybiBlLm1hcCgoe2ltYWdlRGF0YTpjfSk9PntsZXQgYT0hMTtjb25zdCB0PW5ldyBVaW50OENsYW1wZWRBcnJheShjLmxlbmd0aC80KTtmb3IobGV0IHI9Yy5sZW5ndGgscz0wO3M8cjtzKz00KWNbcyszXT09PTA/KHRbcy80XT1pLGE9ITApOnRbcy80XT1sKGNbc108PDE2fGNbcysxXTw8OHxjW3MrMl0pO3JldHVybntpbWFnZURhdGE6dCx0cmFuc3BhcmVudDphfX0pfWZ1bmN0aW9uIFdlKG4pe2NvbnN0e2ZyYW1lczplLHRyYW5zcGFyZW50SW5kZXg6b309bjtsZXQgaTtjb25zdCBsPWUubGVuZ3RoO3JldHVybiBlLm1hcCgoYyxhKT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OnIsdHJhbnNwYXJlbnQ6cyxpbWFnZURhdGE6dX09YztsZXQgZD0wLGg9MCxiPXQtMSxwPXItMSxmO2lmKHMpe2Zvcig7aDxwOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKylpZih1W3QqaCttXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7aCsrfWZvcig7cD5oOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKylpZih1W3QqcCttXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7cC0tfWZvcig7ZDxiOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTxwO20rKylpZih1W3QqbStkXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7ZCsrfWZvcig7Yj5kOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTxwO20rKylpZih1W3QqbStiXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7Yi0tfX1lbHNle2lmKGkpe2Zvcig7aDxwOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKyl7Y29uc3QgUz10KmgrbTtpZih1W1NdIT09aVtTXSl7dz0hMTticmVha319aWYoIXcpYnJlYWs7aCsrfWZvcig7cD5oOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKyl7Y29uc3QgUz10KnArbTtpZih1W1NdIT09aVtTXSl7dz0hMTticmVha319aWYoIXcpYnJlYWs7cC0tfWlmKGg9PT1wKWQ9YjtlbHNle2Zvcig7ZDxiOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTw9cDttKyspe2NvbnN0IFM9bSp0K2Q7aWYodVtTXSE9PWlbU10pe3c9ITE7YnJlYWt9fWlmKCF3KWJyZWFrO2QrK31mb3IoO2I+ZDspe2xldCB3PSEwO2ZvcihsZXQgbT1oO208PXA7bSsrKXtjb25zdCBTPW0qdCtiO2lmKHVbU10hPT1pW1NdKXt3PSExO2JyZWFrfX1pZighdylicmVhaztiLS19fX1mPWksaT11fWNvbnN0IGc9YisxLWQsQz1wKzEtaCx5PU5lKHUse2xlZnQ6ZCx0b3A6aCx3aWR0aDpnLGhlaWdodDpDLHJhd1dpZHRoOnQscmF0ZToxLGNhbGxiYWNrOnc9PntpZighcyYmZiYmdVt3XT09PWZbd10pcmV0dXJuIG99fSk7cmV0dXJue2xlZnQ6ZCx0b3A6aCx3aWR0aDpnLGhlaWdodDpDLGRpc3Bvc2FsOnMmJmEhPT1sLTE/MjoxLGltYWdlRGF0YTp5fX0pfWNvbnN0IE49Q2Uoe3NraXBUcmFuc3BhcmVudDohMX0pO3NlbGYub25tZXNzYWdlPW49Pntjb25zdHtpZDplLHR5cGU6byxkYXRhOml9PW4uZGF0YTtpZihvPT09InBhbGV0dGU6YWRkU2FtcGxlIiYmTilyZXR1cm4gTi5hZGRTYW1wbGUoaSksc2VsZi5wb3N0TWVzc2FnZSh7aWQ6ZSx0eXBlOm8sZGF0YTohMH0pO2lmKG89PT0icGFsZXR0ZTpnZW5lcmF0ZSImJk4pe04uZ2VuZXJhdGUoaSk7Y29uc3QgbD1aKHt9LE4uY29udGV4dCk7cmV0dXJuIE4ucmVzZXQoKSxzZWxmLnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6byxkYXRhOmx9KX1pZihvPT09ImZyYW1lczppbmRleCIpe2NvbnN0IGw9RmUoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9aWYobz09PSJmcmFtZXM6Y3JvcCIpe2NvbnN0IGw9V2UoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9aWYobz09PSJmcmFtZTplbmNvZGUiKXtjb25zdCBsPXplKGkpO3JldHVybiBzZWxmLnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6byxkYXRhOmx9LFtsLmJ1ZmZlcl0pfWlmKG89PT0iZnJhbWVzOmRlY29kZSIpe2NvbnN0IGw9WGUoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9fX0pKCk7Cg==",ze=e=>V(exports,null,function*(){const{perFrameTime:t=1e3/24,gif:l,images:s,autoSize:r=!0}=e,c=C({},l),a=[];if(r){const i=(l==null?void 0:l.width)||Math.min(...s.map(p=>p.width)),d=(l==null?void 0:l.height)||Math.min(...s.map(p=>p.height));c.width=i,c.height=d}s.forEach(i=>{a.push({imageData:i,delay:t})});const n=yield vt({workerUrl:Pt,width:c.width||200,height:c.height||200,maxColors:255,frames:a});return new Blob([n],{type:"image/gif"})});function Qt(e){const{attributes:t,data:l}=e;let s=l.remainingTime;switch(l.unit){case"minute":s=60*s;break;case"hour":s=60*60*s;break;case"day":s=60*60*24*s}const{day:r,hour:c,minute:a,second:n}=De(s),o=[{unit:"days",value:r},{unit:"hrs",value:c},{unit:"mins",value:a},{unit:"secs",value:n}];return m.createElement("div",{style:{color:t.color}},m.createElement("div",null,m.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",paddingBottom:10}},o.map((i,d)=>m.createElement("div",{key:i.unit,style:{display:"flex",alignItems:"center",justifyContent:"center"}},m.createElement("div",{style:{width:50,height:50,lineHeight:"50px",backgroundColor:t["grid-color"],borderRadius:8,display:"flex",alignItems:"center",justifyContent:"center",boxShadow:`0px 4px 13px 4px ${t["shadow-color"]}`,fontSize:24}},m.createElement("div",{style:{height:"100%",overflow:"hidden"}},m.createElement("div",{className:i.unit},i.value))),d!==o.length-1&&m.createElement("div",{key:i.unit,style:{margin:"0px 10px",fontWeight:"bold"}},":")))),m.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",paddingBottom:10}},o.map((i,d)=>m.createElement("div",{key:i.unit,style:{display:"flex",alignItems:"center",justifyContent:"center"}},m.createElement("div",{key:i.unit,style:{width:50,display:"flex",alignItems:"center",justifyContent:"center",textTransform:"uppercase",fontSize:14,textAlign:"center"}},i.unit),d!==o.length-1&&m.createElement("div",{style:{margin:"0px 10px",fontWeight:"bold",visibility:"hidden"}},":"))))))}const J={MARKETING_SHOPWINDOW:"marketing-shopwindow",MARKETING_COUNTDOWN:"marketing-countdown"},{Column:We,Image:Ut,Raw:Jt,Section:Ye,Spacer:Ft,ContentEditableBlock:Rt}=x.components,ie={attributes:{color:"#ffffff","padding-top":"20px","padding-bottom":"20px","padding-left":"0px","padding-right":"0px","background-color":"#1A1F25","grid-color":"#12304b","shadow-color":"#000000",src:"https://d3k81ch9hvuctc.cloudfront.net/company/S7EvMw/images/29140463-2f83-49ea-922d-ac65063642cd.gif"},data:{remainingTime:24,unit:"hour"}},ae=x.createCustomBlock({get name(){return x.t("Countdown")},defaultData:ie,void:!0,type:J.MARKETING_COUNTDOWN,create:e=>{const t={type:J.MARKETING_COUNTDOWN,data:C({},ie.data),attributes:C({},ie.attributes),children:[{type:"text",data:{},attributes:{color:"#ffffff","font-size":"32px",align:"center"},children:[{text:"SUMMER SALE"}]},{type:"text",data:{},attributes:{color:"#ffffff","font-size":"64px",align:"center"},children:[{text:"50% OFF",italic:!0}]}]};return x.mergeBlock(t,e)},category:x.ElementCategory.SECTION,render(e){const{node:t,mode:l}=e,{attributes:s,children:r}=t;if(l==="testing"){const c=ve.renderToString(m.createElement(Qt,{attributes:t.attributes,data:t.data}));return m.createElement(Ye,{"padding-bottom":s["padding-bottom"],"padding-top":s["padding-top"],"padding-left":s["padding-left"],"padding-right":s["padding-right"],"background-color":s["background-color"]},m.createElement(We,null,r.map((a,n)=>x.NodeUtils.isTextElement(a)?m.createElement(Rt,{key:n,node:a}):null),m.createElement(Ft,{height:"20px"}),m.createElement(Jt,null,c)))}return m.createElement(Ye,{"padding-bottom":s["padding-bottom"],"padding-top":s["padding-top"],"padding-left":s["padding-left"],"padding-right":s["padding-right"],"background-color":s["background-color"]},m.createElement(We,null,m.createElement(Ut,z(C({idx:e.idx},e.node.attributes),{children:t.children}))))}}),Ht=({nodePath:e})=>m.createElement(w.AttributesPanelWrapper,null,m.createElement(w.ResponsiveTabs,{desktop:m.createElement(Le,{mode:I.ActiveTabKeys.DESKTOP,nodePath:e}),mobile:m.createElement(Le,{mode:I.ActiveTabKeys.MOBILE,nodePath:e})}));function Le({nodePath:e,mode:t}){const l=ye.useSlate(),{onUpload:s}=I.useEditorProps(),{setFieldValue:r}=w.useEditorForm(),{selectedNode:c}=I.useSelectedNode(),{setLock:a}=I.useEditorState(),[n,o]=m.useState(!1),i=m.useRef();i.current||(i.current=L.cloneDeep(c)),m.useEffect(()=>{L.isEqual(i.current,c)?a(!1):a(!0)},[c,a]);const d=()=>V(this,null,function*(){if(c)try{o(!0);const p=ye.ReactEditor.toDOMNode(l,c),u=[],y=c.data;let M=y.remainingTime;switch(y.unit){case"minute":M=60*M;break;case"hour":M=60*60*M;break;case"day":M=60*60*24*M}const b=60*2;for(let g=0;g<b;g++){const{day:Z,hour:N,minute:G,second:S}=De(M-=1),E=yield $e(p,{wrapper(_){const K=document.createElement("table");return K.style.width="100%",K.border="0",K.cellPadding="0",K.cellSpacing="0",K.role="presentation",K.style.verticalAlign="top",K.appendChild(_),K},styleText:"td {padding: 0px};",overwrite:[{selector:".days",innerText:Z},{selector:".hrs",innerText:N},{selector:".mins",innerText:G},{selector:".secs",innerText:S}]}),$=yield He(E);u.push($)}const h=yield ze({images:u,perFrameTime:1e3}),T=yield s==null?void 0:s(new File([h],"countdown.gif"));r(e,t===I.ActiveTabKeys.DESKTOP?"attributes.src":"mobileAttributes.src",T);const Y=L.cloneDeep(c);L.set(Y,t===I.ActiveTabKeys.DESKTOP?"attributes.src":"mobileAttributes.src",T),i.current=Y}catch(p){console.error(p),D.Message.error(String(p))}finally{o(!1)}});return c?m.createElement(w.CollapseWrapper,{defaultActiveKey:["0","1","2","3"]},m.createElement(D.Collapse.Item,{name:"0",header:x.t("Image"),extra:m.createElement(D.Button,{loading:n,type:"primary",onClick:d},x.t("Save as gif"))},m.createElement(w.ResponsiveField,{component:w.AttributeField.ImageUrl,path:e,name:"src",formItem:{layout:"vertical"},hideInput:!0})),m.createElement(D.Collapse.Item,{name:"3",header:x.t("Settings")},m.createElement(D.Grid.Row,null,m.createElement(D.Grid.Col,{span:14,style:{textAlign:"right"}},m.createElement(w.AttributeField.NumberField,{name:"data.remainingTime",path:e,label:x.t("Remaining Time"),formItem:{labelCol:{span:14,offset:0},wrapperCol:{span:10}}})),m.createElement(D.Grid.Col,{span:10},m.createElement(w.AttributeField.SelectField,{name:"data.unit",path:e,label:"",options:[{label:x.t("Day"),value:"day"},{label:x.t("Hour"),value:"hour"},{label:x.t("Minute"),value:"minute"},{label:x.t("Second"),value:"second"}]})))),m.createElement(D.Collapse.Item,{name:"1",header:x.t("Colors")},m.createElement(w.ResponsiveField,{component:w.AttributeField.ColorPickerField,path:e,name:"color",label:x.t("Text color")}),m.createElement(w.AttributeField.SyncChildrenField,{path:e,mode:t,name:"color",childrenFieldName:"color"}),m.createElement(w.ResponsiveField,{component:w.AttributeField.ColorPickerField,path:e,name:"shadow-color",label:x.t("Shadow color")}),m.createElement(w.ResponsiveField,{component:w.AttributeField.ColorPickerField,path:e,name:"grid-color",label:x.t("Grid color")}),m.createElement(w.ResponsiveField,{component:w.AttributeField.ColorPickerField,path:e,name:"background-color",label:x.t("Background color")})),m.createElement(D.Collapse.Item,{contentStyle:{padding:"28px 13px 8px 13px"},name:"2",header:x.t("Dimension")},m.createElement(w.ResponsiveField,{component:w.AttributeField.Padding,path:e,name:""}))):null}class At extends x.ElementPlugin{generateElement(){x.BlockManager.registerBlocks([ae]),L.set(w.ConfigPanelsMap,ae.type,Ht)}}const{Image:Bt}=x.components,Ge={attributes:{align:"center",border:"0",height:"auto","padding-top":"0px","padding-bottom":"0px","padding-left":"0px","padding-right":"0px","border-width":"1px","border-style":"solid","border-color":"#AAAAAA","border-radius":"0px",target:"_blank"},data:{list:[{src:"https://res.cloudinary.com/djnkpbshx/image/upload/v1688116393/easy-email-pro/jwfkjrlq8izkekcx7ad9.png"},{src:"https://res.cloudinary.com/djnkpbshx/image/upload/v1688116371/easy-email-pro/as41p2ahhff377y8c9s8.png"},{src:"https://res.cloudinary.com/djnkpbshx/image/upload/v1688116331/easy-email-pro/mrzhiom54uhmxu5fqfs8.png"}]}},de=x.createCustomBlock({get name(){return x.t("Shopwindow")},defaultData:Ge,void:!0,type:J.MARKETING_SHOPWINDOW,create:e=>{const t={type:J.MARKETING_SHOPWINDOW,data:C({},Ge.data),attributes:{src:"https://res.cloudinary.com/djnkpbshx/image/upload/v1688116417/easy-email-pro/gsdrahrenerqzrdnihsv.gif"},children:[]};return x.mergeBlock(t,e)},category:x.ElementCategory.IMAGE,render(e){const{node:t}=e,o=t.attributes,{"border-enabled":l,"border-width":s,"border-style":r,"border-color":c}=o,a=pe(o,["border-enabled","border-width","border-style","border-color"]),n=l?`${s||"1px"} ${r||"solid"} ${c||"#AAAAAA"}`:"";return m.createElement(Bt,z(C({idx:e.idx},a),{data:t.data,border:n,children:t.children}))}}),qt={formatter(e){return!!e},normalize(e){return e?"true":void 0}},$t=({nodePath:e})=>m.createElement(w.AttributesPanelWrapper,null,m.createElement(w.ResponsiveTabs,{desktop:m.createElement(Se,{mode:I.ActiveTabKeys.DESKTOP,nodePath:e}),mobile:m.createElement(Se,{mode:I.ActiveTabKeys.MOBILE,nodePath:e})}));function Se({nodePath:e,mode:t}){const{onUpload:l}=I.useEditorProps(),{setFieldValue:s}=w.useEditorForm(),{selectedNode:r}=I.useSelectedNode(),{setLock:c}=I.useEditorState(),[a,n]=m.useState(!1),o=m.useRef();o.current||(o.current=L.cloneDeep(r)),m.useEffect(()=>{var d;L.isEqual((d=o.current)==null?void 0:d.data.list,r==null?void 0:r.data.list)?c(!1):c(!0)},[r,c]);const i=()=>V(this,null,function*(){if(r)try{n(!0);const d=yield Promise.all(r.data.list.filter(M=>M.src).map(M=>w.previewLoadImage(M.src))),p=yield ze({images:d,perFrameTime:1e3}),u=yield l==null?void 0:l(new File([p],"shopwindow.gif"));s(e,t===I.ActiveTabKeys.DESKTOP?"attributes.src":"mobileAttributes.src",u);const y=L.cloneDeep(r);L.set(y,t===I.ActiveTabKeys.DESKTOP?"attributes.src":"mobileAttributes.src",u),o.current=y}catch(d){console.error(d),D.Message.error(String(d))}finally{n(!1)}});return r?m.createElement(w.CollapseWrapper,{defaultActiveKey:["0","1","2","3"]},m.createElement(D.Collapse.Item,{name:"3",header:x.t("Image"),extra:m.createElement(D.Button,{loading:a,type:"primary",onClick:i},x.t("Save as gif"))},m.createElement(w.AttributeField.EditPanelTabsField,{path:e,tabPosition:"top",name:"data.list",label:"",renderItem:(d,p)=>m.createElement(_t,{index:p,path:e}),renderHeader:(d,p)=>d.content||x.t("Image")+" "+(p+1)})),m.createElement(D.Collapse.Item,{name:"1",header:x.t("Image settings")},m.createElement(w.ResponsiveField,{component:w.AttributeField.TextField,path:e,name:"href",label:x.t("Link address")}),m.createElement(w.ResponsiveField,{component:w.AttributeField.TextField,path:e,name:"alt",label:x.t("Alt text"),placeholder:x.t("Brief description of your image")}),m.createElement(w.ResponsiveField,{component:w.AttributeField.SwitchField,path:e,name:"fluid-on-mobile",label:x.t("Full width on mobile"),formItem:qt})),m.createElement(D.Collapse.Item,{name:"0",header:x.t("Dimension")},m.createElement(w.ResponsiveField,{component:w.AttributeField.ImageWidth,path:e,name:"width"}),m.createElement(w.ResponsiveField,{component:w.AttributeField.Height,path:e,name:"height"}),m.createElement(w.ResponsiveField,{component:w.AttributeField.Padding,path:e,name:""})),m.createElement(D.Collapse.Item,{name:"2",header:x.t("Border")},m.createElement(w.ResponsiveField,{component:w.AttributeField.Border,path:e,name:""})),m.createElement(D.Collapse.Item,{name:"4",header:x.t("Block")},m.createElement(w.ResponsiveField,{component:w.AttributeField.BackgroundColor,path:e,name:"container-background-color"}),m.createElement(w.ResponsiveField,{component:w.AttributeField.TextAlign,path:e,name:"align",label:x.t("Align")}))):null}function _t({index:e,path:t}){return m.createElement("div",{style:{paddingTop:20}},m.createElement(w.AttributeField.ImageUrl,{path:t,name:`data.list.[${e}].src`}))}class en extends x.ElementPlugin{generateElement(){x.BlockManager.registerBlocks([de]),L.set(w.ConfigPanelsMap,de.type,$t)}}exports.Countdown=At;exports.MarketingCountdown=ae;exports.MarketingShopwindow=de;exports.MarketingType=J;exports.Responsive=Re;exports.Shopwindow=en;
|
|
1
|
+
"use strict";var ze=Object.defineProperty,Ve=Object.defineProperties;var je=Object.getOwnPropertyDescriptors;var F=Object.getOwnPropertySymbols;var me=Object.prototype.hasOwnProperty,ue=Object.prototype.propertyIsEnumerable;var ne=(e,t,l)=>t in e?ze(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,C=(e,t)=>{for(var l in t||(t={}))me.call(t,l)&&ne(e,l,t[l]);if(F)for(var l of F(t))ue.call(t,l)&&ne(e,l,t[l]);return e},z=(e,t)=>Ve(e,je(t));var pe=(e,t)=>{var l={};for(var s in e)me.call(e,s)&&t.indexOf(s)<0&&(l[s]=e[s]);if(e!=null&&F)for(var s of F(e))t.indexOf(s)<0&&ue.call(e,s)&&(l[s]=e[s]);return l};var Me=(e,t,l)=>(ne(e,typeof t!="symbol"?t+"":t,l),l);var V=(e,t,l)=>new Promise((s,r)=>{var c=o=>{try{n(l.next(o))}catch(i){r(i)}},a=o=>{try{n(l.throw(o))}catch(i){r(i)}},n=o=>o.done?s(o.value):Promise.resolve(o.value).then(c,a);n((l=l.apply(e,t)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("easy-email-pro-core"),L=require("lodash"),m=require("react"),Oe=require("react-dom/server"),w=require("easy-email-pro-theme"),D=require("@arco-design/web-react"),ye=require("slate-react"),I=require("easy-email-pro-editor"),{Raw:R}=x.components;function ve(e){const{desktop:t,mobile:l}=e,s=x.useEmailRenderContext(),{displayMode:r="desktop-mobile"}=s;return r==="only-desktop"?m.createElement(x.EmailRenderProvider,z(C({},s),{displayMode:"only-desktop"}),m.createElement(m.Fragment,null,m.createElement(t,null))):r==="only-mobile"?m.createElement(m.Fragment,null,m.createElement(R,null,"<!-- htmlmin:ignore --><!--[if !mso]><!--><!-- htmlmin:ignore -->"),m.createElement(x.EmailRenderProvider,z(C({},s),{displayMode:"only-mobile"}),m.createElement(m.Fragment,null,m.createElement(l,null))),m.createElement(R,null,"<!-- htmlmin:ignore --><!--<![endif]--><!-- htmlmin:ignore -->")):m.createElement(m.Fragment,null,m.createElement(x.EmailRenderProvider,z(C({},s),{displayMode:"only-desktop"}),m.createElement(m.Fragment,null,m.createElement(t,null))),m.createElement(R,null,"<!-- htmlmin:ignore --><!--[if !mso]><!--><!-- htmlmin:ignore -->"),m.createElement(x.EmailRenderProvider,z(C({},s),{displayMode:"only-mobile"}),m.createElement(m.Fragment,null,m.createElement(l,null))),m.createElement(R,null,"<!-- htmlmin:ignore --><!--<![endif]--><!-- htmlmin:ignore -->"))}const Pe="hide-desktop-block",Qe="hide-mobile-block",Ue="hide-desktop-inline-block",Je="hide-mobile-inline-block",he=[x.ElementType.GROUP,x.ElementType.COLUMN,x.ElementType.NAVBAR_LINK];class Fe extends x.ResponsivePlugin{constructor(){super(...arguments);Me(this,"generateResponsive",l=>{var g;const{mode:s,displayMode:r,node:c,keepEmptyAttributes:a,mergetagsData:n={},children:o,context:i,idx:d,desktopContent:p}=l;let u=p;const y=x.BlockManager.getBlockByType(c.type);if(!y)throw new Error(`${c.type} block is not registered`);const M=c.mobileAttributes&&Object.keys(c.mobileAttributes).some(Z=>c.mobileAttributes[Z]!==c.attributes[Z]),b=he.includes(y.type)?Ue:Pe,h=he.includes(y.type)?Je:Qe,T=L.get(c,"attributes.css-class")||"";if(r==="only-desktop"){if(T.includes(b))return null;T.includes(h)||L.set(c,"attributes.css-class",x.classnames(T,h))}else if(r==="only-mobile"){if(T.includes(h))return null;T.includes(b)||L.set(c,"attributes.css-class",x.classnames(T,b))}r==="only-mobile"?c.attributes=x.mergeBlock(x.mergeBlock(y.defaultData.attributes,y.defaultData.mobileAttributes),c.attributes):c.attributes=x.mergeBlock(((g=y.defaultData)==null?void 0:g.attributes)||{},c.attributes),c.visible==="desktop"?L.set(c,"attributes.css-class",x.classnames(T,h)):c.visible==="mobile"&&L.set(c,"attributes.css-class",x.classnames(T,b));const Y=y.render({mode:s,children:o,context:i,idx:d,node:z(C({},c),{attributes:x.mergeBlock(c.attributes,c.mobileAttributes),mobileAttributes:void 0}),keepEmptyAttributes:a,mergetagsData:n});return M&&(u=m.createElement(m.Fragment,null,m.createElement(ve,{desktop:()=>m.createElement(m.Fragment,null,p),mobile:()=>m.createElement(m.Fragment,null,Y)}))),u})}}const re=60,A=60*re,H=24*A;function Se(e){const t=Math.floor(e/H),l=Math.floor((e-t*H)/A),s=Math.floor((e-t*H-l*A)/re),r=Math.floor(e-t*H-l*A-s*re);return{day:t<10?"0"+t:t.toString(),hour:l<10?"0"+l:l.toString(),minute:s<10?"0"+s:s.toString(),second:r<10?"0"+r:r.toString()}}const B=document.createElement("canvas"),xe=B.getContext("2d"),Re=e=>V(exports,null,function*(){const t=new Image;return t.src=e,yield new Promise((l,s)=>{t.onload=l,t.onerror=s}),t}),He=e=>V(exports,null,function*(){const t=new Image;return t.crossOrigin="anonymous",new Promise((l,s)=>{t.onload=()=>{const r=t.width,c=t.height;B.width=r,B.height=c,xe.clearRect(0,0,r,c),xe.drawImage(t,0,0),l(B.toDataURL())},t.onerror=s,t.src=e.src})}),Ae=L.flatMap(["padding","margin","border"].map(e=>[`${e}-top`,`${e}-right`,`${e}-bottom`,`${e}-left`])),Be=["color","width","height","position","color","background","background-color","transform","display","font-family","font-size","line-height","flex-direction","align-items","justify-content","text-align","border-radius","box-sizing","opacity","visibility","textTransform",...Ae];function De(e){const t=e.cloneNode(!0);if(!(t instanceof HTMLElement&&e instanceof HTMLElement))return t;const l=window.getComputedStyle(e);return Be.forEach(s=>{t.style.setProperty(s,l.getPropertyValue(s))}),t.childNodes.forEach((s,r)=>{t.replaceChild(De(e.childNodes[r]),s)}),t}const qe=function(l){return V(this,arguments,function*(e,t={}){const s=t.width||e.offsetWidth,r=t.height||e.offsetHeight,{overwrite:c=[],wrapper:a=d=>d}=t,n=De(e);if(n.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),n.classList.remove("outline"),t.styleText){const d=document.createElement("style");d.innerHTML=t.styleText,n.appendChild(d)}c.forEach(d=>{if(d.selector===""&&d instanceof HTMLElement){const p=d.style;Object.keys(d.style).forEach(u=>{p.setProperty(u,d.style[u])}),d.innerText&&(n.innerText=d.innerText),d.innerHTML&&(n.innerHTML=d.innerHTML),d.attrs&&Object.keys(d.attrs).forEach(u=>{n.setAttribute(u,d.attrs[u])})}n.querySelectorAll(d.selector).forEach(p=>{if(L.get(p,"nodeType")===1){const u=p,y=u.style;if(d.style&&Object.keys(d.style).forEach(M=>{y.setProperty(M,d.style[M])}),d.innerText&&(u.innerText=d.innerText),d.innerHTML&&(u.innerHTML=d.innerHTML),d.attrs)for(const M in d.attrs)u.setAttribute(M,d.attrs[M])}})}),yield Promise.all([...n.querySelectorAll("img")].map(d=>V(this,null,function*(){d.src=yield He(d)})));const o=new XMLSerializer().serializeToString(a(n));let i='data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="'+s+'" height="'+r+'"><foreignObject x="0" y="0" width="100%" height="100%">'+o+"</foreignObject></svg>";return i=i.replace(/\n/g,"").replace(/\t/g,"").replace(/#/g,"%23"),i})};var $e=Object.defineProperty,_e=Object.defineProperties,et=Object.getOwnPropertyDescriptors,ge=Object.getOwnPropertySymbols,tt=Object.prototype.hasOwnProperty,nt=Object.prototype.propertyIsEnumerable,X=Math.pow,Ze=(e,t,l)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,O=(e,t)=>{for(var l in t||(t={}))tt.call(t,l)&&Ze(e,l,t[l]);if(ge)for(var l of ge(t))nt.call(t,l)&&Ze(e,l,t[l]);return e},U=(e,t)=>_e(e,et(t)),j=(e,t,l)=>new Promise((s,r)=>{var c=o=>{try{n(l.next(o))}catch(i){r(i)}},a=o=>{try{n(l.throw(o))}catch(i){r(i)}},n=o=>o.done?s(o.value):Promise.resolve(o.value).then(c,a);n((l=l.apply(e,t)).next())});const lt=typeof window<"u",W=65536-1,v=W*W,st=512-1,le=[0,20,40,60,80,99,119,139,159,179,199,219,241,264,288,313,340,367,396,427,458,491,526,562,599,637,677,718,761,805,851,898,947,997,1048,1101,1156,1212,1270,1330,1391,1453,1517,1583,1651,1720,1790,1863,1937,2013,2090,2170,2250,2333,2418,2504,2592,2681,2773,2866,2961,3058,3157,3258,3360,3464,3570,3678,3788,3900,4014,4129,4247,4366,4488,4611,4736,4864,4993,5124,5257,5392,5530,5669,5810,5953,6099,6246,6395,6547,6700,6856,7014,7174,7335,7500,7666,7834,8004,8177,8352,8528,8708,8889,9072,9258,9445,9635,9828,10022,10219,10417,10619,10822,11028,11235,11446,11658,11873,12090,12309,12530,12754,12980,13209,13440,13673,13909,14146,14387,14629,14874,15122,15371,15623,15878,16135,16394,16656,16920,17187,17456,17727,18001,18277,18556,18837,19121,19407,19696,19987,20281,20577,20876,21177,21481,21787,22096,22407,22721,23038,23357,23678,24002,24329,24658,24990,25325,25662,26001,26344,26688,27036,27386,27739,28094,28452,28813,29176,29542,29911,30282,30656,31033,31412,31794,32179,32567,32957,33350,33745,34143,34544,34948,35355,35764,36176,36591,37008,37429,37852,38278,38706,39138,39572,40009,40449,40891,41337,41785,42236,42690,43147,43606,44069,44534,45002,45473,45947,46423,46903,47385,47871,48359,48850,49344,49841,50341,50844,51349,51858,52369,52884,53401,53921,54445,54971,55500,56032,56567,57105,57646,58190,58737,59287,59840,60396,60955,61517,62082,62650,63221,63795,64372,64952,65535],we=[0,6,13,18,22,25,28,31,34,36,38,40,42,44,46,48,50,51,53,54,56,57,59,60,61,62,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,86,87,88,89,90,91,91,92,93,94,95,95,96,97,98,98,99,100,101,101,102,103,103,104,105,106,106,107,108,108,109,110,110,111,111,112,113,113,114,115,115,116,116,117,118,118,119,119,120,121,121,122,122,123,123,124,125,125,126,126,127,127,128,128,129,129,130,130,131,132,132,133,133,134,134,135,135,136,136,137,137,138,138,139,139,140,140,140,141,141,142,142,143,143,144,144,145,145,146,146,147,147,147,148,148,149,149,150,150,151,151,151,152,152,153,153,154,154,154,155,155,156,156,156,157,157,158,158,159,159,159,160,160,161,161,161,162,162,163,163,163,164,164,165,165,165,166,166,166,167,167,168,168,168,169,169,169,170,170,171,171,171,172,172,172,173,173,174,174,174,175,175,175,176,176,176,177,177,177,178,178,179,179,179,180,180,180,181,181,181,182,182,182,183,183,183,184,184,184,185,185,185,186,186,186,187,187,187,188,188,188,189,189,189,190,190,190,191,191,191,192,192,192,193,193,193,193,194,194,194,195,195,195,196,196,196,197,197,197,198,198,198,198,199,199,199,200,200,200,201,201,201,201,202,202,202,203,203,203,204,204,204,204,205,205,205,206,206,206,206,207,207,207,208,208,208,208,209,209,209,210,210,210,210,211,211,211,212,212,212,212,213,213,213,214,214,214,214,215,215,215,215,216,216,216,217,217,217,217,218,218,218,218,219,219,219,220,220,220,220,221,221,221,221,222,222,222,222,223,223,223,224,224,224,224,225,225,225,225,226,226,226,226,227,227,227,227,228,228,228,228,229,229,229,229,230,230,230,230,231,231,231,231,232,232,232,232,233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236,237,237,237,237,238,238,238,238,239,239,239,239,239,240,240,240,240,241,241,241,241,242,242,242,242,243,243,243,243,243,244,244,244,244,245,245,245,245,246,246,246,246,246,247,247,247,247,248,248,248,248,249,249,249,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,253,253,253,253,253,254,254,254,254,255,255,255];function se(e){let t;if(e<=0)return 0;if(e>=W)return W;t=e*(e*(e+-144107)/W+132114)/W+14379;for(let l=0;l<2;l++){const s=t*t*t,r=e+(2*s+v/2)/v;t=(t*(2*e+(s+v/2)/v)+r/2)/r}return t}function f(e,t){return(e^t)<0?(e-t/2)/t:(e+t/2)/t}function Ie(e){const t=le[e>>16&255],l=le[e>>8&255],s=le[e&255],r=(27015*t+35149*l+3372*s+W/2)/W,c=(13887*t+44610*l+7038*s+W/2)/W,a=(5787*t+18462*l+41286*s+W/2)/W,n=se(r),o=se(c),i=se(a);return[f(13792*n+52010*o-267*i,W),f(129628*n-159158*o+29530*i,W),f(1698*n+51299*o-52997*i,W)]}function oe(e){if(e<=0)return 0;if(e>=W)return 255;{const t=e*st,l=~~(t/W),s=t%W,r=we[l],c=we[l+1];return(s*(c-r)+W/2)/W+r}}function ot(e){const t=e[0]+f(25974*e[1],W)+f(14143*e[2],W),l=e[0]+f(-6918*e[1],W)+f(-4185*e[2],W),s=e[0]+f(-5864*e[1],W)+f(-84638*e[2],W),r=X(t,2)*t/v,c=X(l,2)*l/v,a=X(s,2)*s/v,n=oe((267169*r+-216771*c+15137*a+W/2)/W),o=oe((-83127*r+171030*c+-22368*a+W/2)/W),i=oe((-275*r+-46099*c+111909*a+W/2)/W);return n<<16|o<<8|i}function it(e){const t={l:0,a:1,b:2},l=e[0],s=e[1],r=e[2],c=t[l],a=t[s],n=t[r];return(o,i)=>o.oklab[c]-i.oklab[c]||o.oklab[a]-i.oklab[a]||o.oklab[n]-i.oklab[n]}function rt(e,t,l){return e>=t?t>=l?"lab":e>=l?"lba":"bla":e>=l?"alb":t>=l?"abl":"bal"}function ct(e){return new Promise(t=>{const l=new Image;l.decoding="sync",l.loading="eager",l.crossOrigin="anonymous",l.onload=()=>t(l),l.onerror=()=>t(l),l.src=e})}function Ke(e){return e&&typeof e=="object"&&"__CONTEXT__"in e}function at(e){return Ke(e)?e:dt(e)}function dt(e={}){const{maxColors:t=256,statsMode:l="full",samples:s=[],skipTransparent:r=!0}=e;return{__CONTEXT__:!0,samples:s,maxColors:t,statsMode:l,skipTransparent:r,colorSamples:[],colorSamplesCache:new Map,colorBoxes:[],colorBoxesIndexTree:[],finderCache:new Map}}function ke(e){const t=Ke(e)?e:e.context,{colorBoxesIndexTree:l,finderCache:s}=t;function r(a,n,o){const{left:i,right:d,longest:p,oklab:u,colorBoxIndex:y}=l[a],M=Math.min(X(n[0]-u[0],2)+X(n[1]-u[1],2)+X(n[2]-u[2],2),4294967295-1);M<o.dist&&(o.colorBoxIndex=y,o.dist=M);let b,h;if(i!==-1||d!==-1){const T=n[p]-u[p];T<=0?(b=i,h=d):(b=d,h=i),b!==-1&&r(b,n,o),h!==-1&&X(T,2)<o.dist&&r(h,n,o)}}function c(a){const n={dist:Number.MAX_SAFE_INTEGER,colorBoxIndex:-1};return r(0,a,n),n.colorBoxIndex}return a=>{const n=a%32768;let o=s.get(n);o||(o=new Map,s.set(n,o));let i=o.get(a);return i!==void 0||(i=c(Ie(a)),o.set(a,i)),i}}function bt(e,t){const{colorBoxes:l}=e,s=l.reduce((a,n)=>a+n.weight,0);if(!t)return e.colorBoxes.map(a=>{const{srgb:n,weight:o}=a;return{value:n,percentage:o/s}});const r=[];for(let a=l.length,n=0;n<a;n++){const{srgb:o,weight:i}=l[n];r.push({value:[o>>16&255,o>>8&255,o&255],percentage:i/s})}let c;if(t==="buffer"){c=new Uint8ClampedArray(r.length*4);for(let a=r.length,n=0;n<a;n++){const o=n*4,i=r[n].value;c[o]=i[0],c[o+1]=i[1],c[o+2]=i[2],c[o+3]=255}}else if(t==="hex"){c=[];for(let a=r.length,n=0;n<a;n++){const{value:o,percentage:i}=r[n],d=o[0].toString(16).padStart(2,"0"),p=o[1].toString(16).padStart(2,"0"),u=o[2].toString(16).padStart(2,"0");c.push({value:`#${d}${p}${u}`,percentage:i})}}else c=r;return c}function ce(e,t,l){var s,r,c,a;const{getContext2d:n,previousSample:o,skipTransparent:i}=l,{statsMode:d,colorSamples:p,colorSamplesCache:u}=e;let y;if(ArrayBuffer.isView(t))y=new Uint8ClampedArray(t.buffer);else if(t instanceof ArrayBuffer)y=new Uint8ClampedArray(t);else if(Array.isArray(t))if(Array.isArray(t[0])){const M=[];for(let b=t.length,h=0;h<b;h++)M.push((s=t[h][0])!=null?s:0,(r=t[h][1])!=null?r:0,(c=t[h][2])!=null?c:0,(a=t[h][3])!=null?a:255);y=new Uint8ClampedArray(M)}else y=new Uint8ClampedArray(t);else if(typeof t=="string"){const M=n==null?void 0:n();if(!M)return;const b=M.canvas;return ct(t).then(h=>(M.clearRect(0,0,b.width,b.height),b.width=h.width,b.height=h.height,M.drawImage(h,0,0,b.width,b.height),ce(e,M.getImageData(0,0,b.width,b.height).data,l)))}else{const M=n==null?void 0:n();if(!M)return;const b=M.canvas;return M.clearRect(0,0,b.width,b.height),b.width=typeof t.width=="number"?t.width:t.width.baseVal.value,b.height=typeof t.height=="number"?t.height:t.height.baseVal.value,M.drawImage(t,0,0,b.width,b.height),ce(e,M.getImageData(0,0,b.width,b.height).data,l)}for(let M=y.length,b=0;b<M;b+=4){const h=y[b],T=y[b+1],Y=y[b+2],g=y[b+3];if(i&&g===0||d==="diff"&&o&&h===o[b]&&T===o[b+1]&&Y===o[b+2]&&g===o[b+3])continue;const Z=h<<16|T<<8|Y,N=g*1e8+Z,G=N%32768;let S=u.get(G);S||(S=new Map,u.set(G,S));let E=S.get(N);if(E!==void 0){p[E].count++;continue}E=p.push({alpha:g,srgb:Z,oklab:Ie(Z),count:1})-1,S.set(N,E)}return y}function Ce(e,t){const{colorSamples:l}=t,{start:s,end:r}=e;e.length=r-s,e.weight=0;const c=[0,0,0];for(let n=s;n<r;n++){const o=l[n];c[0]+=o.oklab[0]*o.count,c[1]+=o.oklab[1]*o.count,c[2]+=o.oklab[2]*o.count,e.weight+=o.count}e.oklab=[c[0]/e.weight,c[1]/e.weight,c[2]/e.weight];const a=[0,0,0];for(let n=s;n<r;n++){const o=l[n];a[0]+=X(o.oklab[0]-e.oklab[0],2)*o.count,a[1]+=X(o.oklab[1]-e.oklab[1],2)*o.count,a[2]+=X(o.oklab[2]-e.oklab[2],2)*o.count}e.sort=rt(a[0],a[1],a[2]),e.score=Math.max(a[0],a[1],a[2])}function Te(e,t){const l=O({start:0,end:0,length:0,score:0,weight:0,sort:"lab",sorted:null,srgb:0,oklab:[0,0,0]},e);return Ce(l,t),l}function mt(e){const{colorBoxes:t}=e,l=[],s=new Map;for(let a=-1,n=t.length,o=0;o<n;o++){const{srgb:i}=t[o];if(i===a){s.set(o,!0);continue}a=i}c({min:[-65535,-65535,-65535],max:[65535,65535,65535]});function r(a){const n={min:[65535,65535,65535],max:[-65535,-65535,-65535]};let o=0;const i=[];for(let M=t.length,b=0;b<M;b++){const{oklab:h}=t[b];s.has(b)||h[0]<a.min[0]||h[1]<a.min[1]||h[2]<a.min[2]||h[0]>a.max[0]||h[1]>a.max[1]||h[2]>a.max[2]||(h[0]<n.min[0]&&(n.min[0]=h[0]),h[1]<n.min[1]&&(n.min[1]=h[1]),h[2]<n.min[2]&&(n.min[2]=h[2]),h[0]>n.max[0]&&(n.max[0]=h[0]),h[1]>n.max[1]&&(n.max[1]=h[1]),h[2]>n.max[2]&&(n.max[2]=h[2]),i[o++]={oklab:h,colorBoxIndex:b})}let d=0;if(!o)return{colorBoxIndex:-1,longest:d};const p=n.max[0]-n.min[0],u=n.max[1]-n.min[1],y=n.max[2]-n.min[2];return p>=u&&p>=y?d=0:y>=p&&y>=u?d=2:u>=p&&u>=y&&(d=1),{colorBoxIndex:i.sort((M,b)=>M.oklab[d]-b.oklab[d])[o>>1].colorBoxIndex,longest:d}}function c(a){const{colorBoxIndex:n,longest:o}=r(a);if(n<0)return-1;const{oklab:i}=t[n],d={longest:o,oklab:i,colorBoxIndex:n},p=l.push(d)-1;s.set(n,!0);const u={max:[...a.max],min:[...a.min]},y={max:[...a.max],min:[...a.min]};u.max[o]=i[o],y.min[o]=Math.min(i[o]+1,65535);const M=c(u);let b=-1;return y.min[o]<=y.max[o]&&(b=c(y)),d.left=M,d.right=b,p}return l}function ut(e,t={}){const{maxColors:l,colorSamples:s}=e;if(!s.length)return;const{maxColors:r=l,clearSamples:c=!0}=t;let a=Te({end:s.length},e),n=1;const o=[a];function i(){let p=-1,u=-1;if(n===r)return-1;for(let y=0;y<n;y++){const M=o[y];M.length>=2&&M.score>u&&(p=y,u=M.score)}return p}function d(p,u){const y=Te({start:u+1,end:p.end,sorted:p.sorted},e);p.end-=y.length,Ce(p,e),o.push(y),n++}for(;a&&a.length>1;){const{start:p,end:u,sort:y,sorted:M}=a;if(y!==M){const g=s.slice(p,u).sort(it(y));for(let Z=g.length,N=0;N<Z;N++)s[p+N]=g[N];a.sorted=y}const b=a.weight+1>>1;let h=p,T=0;for(let g=u-2;h<g&&(T+=s[h].count,!(T>b));h++);d(a,h);const Y=i();a=Y>=0?o[Y]:null}for(let p=o.length,u=0;u<p;u++)o[u].srgb=ot(o[u].oklab);e.colorBoxes=o.sort((p,u)=>p.srgb-u.srgb),e.colorBoxesIndexTree=mt(e),c&&(e.colorSamples=[],e.colorSamplesCache.clear()),e.finderCache.clear()}function pt(e,t,l){const{colorBoxes:s}=e;if(!t)return;let r;if(typeof l=="number")r=l;else if(typeof l=="string"){const o=l.replace(/^#/,""),i=[`${o[0]}${o[1]}`,`${o[2]}${o[3]}`,`${o[4]}${o[5]}`].map(d=>parseInt(d,16));r=i[0]<<16|i[1]<<8|i[2]}else if(Array.isArray(l))r=l[0]<<16|l[1]<<8|l[2];else throw new TypeError("Unsupported color format");const c=t(r);if(c===void 0)return;const a=s[c];if(!a)return;const{srgb:n}=a;if(typeof l=="string"){const o=(n>>16&255).toString(16).padStart(2,"0"),i=(n>>8&255).toString(16).padStart(2,"0"),d=(n&255).toString(16).padStart(2,"0");return{value:`#${o}${i}${d}`,index:c}}else if(typeof l=="object"&&Array.isArray(l))return{value:[n>>16&255,n>>8&255,n&255],index:c};return{value:n,index:c}}function Mt(e){e.colorSamples=[],e.colorSamplesCache.clear(),e.colorBoxes=[],e.colorBoxesIndexTree=[],e.finderCache.clear()}function Ne(e){const t=at(e),{statsMode:l,samples:s,skipTransparent:r}=t,c=function(){let i;return()=>(!i&<&&(i=document.createElement("canvas").getContext("2d",{willReadFrequently:!0})),i)}();let a=null,n=null;const o={context:t,addSample:i=>{t.colorSamples.length===0&&(a=null);const d=ce(t,i,{getContext2d:c,previousSample:a,skipTransparent:r});return(d instanceof Promise?d:Promise.resolve().then(()=>d)).then(p=>{p&&l==="diff"&&(a=p)}),d},generate(i={}){const{clearSamples:d=!0}=i;return d&&(a=null),ut(t,i),this},getColors:i=>bt(t,i),findNearestColor:i=>(n||(n=ke(t)),pt(t,n,i)),reset:()=>Mt(t)};return s.length&&(s.forEach(i=>o.addSample(i)),t.samples=[]),o}const q="[modern-gif]",yt="GIF",ht=44,Ee=33,xt=255,gt=11,Zt=249,wt=4,Tt=59,Nt=(...e)=>console.warn(q,...e),Wt=(...e)=>console.debug(q,...e),Yt=e=>console.time(`${q} ${e}`),Lt=e=>console.timeEnd(`${q} ${e}`);function Gt(e){const t=new Uint8Array(e.reduce((l,s)=>l+s.byteLength,0));return e.reduce((l,s)=>(t.set(s,l),l+s.byteLength),0),t}function St(e,t,l){let s;if(ArrayBuffer.isView(e))s=e.buffer;else if(e instanceof ArrayBuffer)s=e;else{const r=document.createElement("canvas"),{width:c,height:a}=l||{},n=r.getContext("2d");if(!n)throw new Error("Failed to create canvas context2d");r.width=c!=null?c:typeof e.width=="number"?e.width:e.width.baseVal.value,r.height=a!=null?a:typeof e.height=="number"?e.height:e.height.baseVal.value,n.drawImage(e,0,0,r.width,r.height),s=n.getImageData(0,0,r.width,r.height).data.buffer}switch(t){case"uint8Array":return new Uint8Array(s);case"uint8ClampedArray":return new Uint8ClampedArray(s);case"dataView":return new DataView(s);default:throw new Error("Unsupported output format")}}function Dt(e){const t=new Image;return t.decoding="sync",t.loading="eager",t.crossOrigin="anonymous",t.src=e,t}function It(e){return new Promise((t,l)=>{const s=Dt(e);s.onload=()=>t(s),s.onerror=l})}function Kt(e,t){var l;const{top:s=0,left:r=0,width:c,height:a,rawWidth:n,rate:o=4,callback:i}=t,d=new Uint8ClampedArray(c*a*o),p=r*o,u=s*o,y=c*o,M=n*o;for(let b=0;b<a;b++)for(let h=0;h<y;h++){const T=(u+b)*M+(p+h);d[b*y+h]=(l=i==null?void 0:i(T))!=null?l:e[T]}return d}function Xe(e={}){const{chunkSize:t=4096}=e;let l=[new Uint8Array(t)],s=0,r=0;const c=(n,o)=>{o?l[o[0]][o[1]]=n:(r>=t&&(l[++s]=new Uint8Array(t),r=0),l[s][r++]=n)},a=n=>n.forEach(o=>c(o));return{getCursor:()=>[s,r],setCursor:n=>{s=n[0],r=n[1]},calculateDistance:n=>s*t+r-(n[0]*t+n[1]),writeByte:c,writeBytes:a,writeString:n=>n.split("").forEach((o,i)=>c(n.charCodeAt(i))),writeUnsigned:n=>a([n&255,n>>8&255]),flush:()=>{l[s]=l[s].slice(0,r);const n=new Uint8Array(l.reduce((i,d)=>i+d.byteLength,0));let o=0;return l.forEach(i=>{n.set(i,o),o+=i.byteLength}),l=[new Uint8Array(t)],s=0,r=0,n}}}function kt(e){var t,l,s;const r=O({version:"89a",looped:!0,loopCount:0,width:0,height:0,colorTableSize:0,backgroundColorIndex:0,pixelAspectRatio:0},e);if(r.width<=0||r.width>65535)throw new Error("Width invalid.");if(r.height<=0||r.height>65535)throw new Error("Height invalid.");let c=0;if((t=r.colorTable)!=null&&t.length){let u=r.colorTable.length;if(u<2||u>256||u&u-1)throw new Error("Invalid color table length, must be power of 2 and 2 .. 256.");for(;u>>=1;)++c;if(u=1<<c,r.colorTableSize=--c,r.backgroundColorIndex>=u)throw new Error("Background index out of range.");if(r.backgroundColorIndex===0)throw new Error("Background index explicitly passed as 0.")}const a=Xe(),{writeByte:n,writeBytes:o,writeUnsigned:i,writeString:d,flush:p}=a;return d(yt),d(r.version),i(r.width),i(r.height),n(parseInt(`${r.colorTableSize?1:0}1110${r.colorTableSize.toString(2).padStart(3,"0")}`,2)),n(r.backgroundColorIndex),n(r.pixelAspectRatio),o((s=(l=r.colorTable)==null?void 0:l.flat())!=null?s:[]),r.looped&&(n(Ee),n(xt),n(gt),d("NETSCAPE2.0"),n(3),n(1),i(r.loopCount),n(0)),p()}function Ct(e,t,l){const{writeByte:s,getCursor:r,calculateDistance:c}=l;s(e);let a=r();s(0);const n=1<<e,o=n-1,i=n+1;let d=i+1,p=e+1,u=0,y=0;function M(N){for(;u>=N;)s(y&255),y>>=8,u-=8,c(a)===256&&(s(255,a),a=r(),s(0))}function b(N){y|=N<<u,u+=p,M(8)}let h=t[0]&o,T={},Y,g,Z;b(n);for(let N=t.length,G=1;G<N;++G)if(Z=t[G]&o,Y=h<<8|Z,g=T[Y],g===void 0){for(y|=h<<u,u+=p;u>=8;)s(y&255),y>>=8,u-=8,c(a)===256&&(s(255,a),a=r(),s(0));d===4096?(b(n),d=i+1,p=e+1,T={}):(d>=1<<p&&++p,T[Y]=d++),h=Z}else h=g;b(h),b(i),M(1),c(a)===1?s(0,a):(s(c(a)-1,a),s(0))}function Et(e){var t,l,s;const r=Xe(),{writeByte:c,writeBytes:a,writeUnsigned:n,flush:o}=r,{left:i=0,top:d=0,width:p=0,height:u=0,delay:y=100,colorTable:M}=e;let{disposal:b=0}=e;const h=(t=e.graphicControl)==null?void 0:t.transparent;let T=(s=(l=e.graphicControl)==null?void 0:l.transparentIndex)!=null?s:255;if(i<0||i>65535)throw new Error("Left invalid.");if(d<0||d>65535)throw new Error("Top invalid.");if(p<=0||p>65535)throw new Error("Width invalid.");if(u<=0||u>65535)throw new Error("Height invalid.");let Y=8,g=M?M.length:0;if(g){if(g<2||g>256||g&g-1)throw new Error("Invalid color table length, must be power of 2 and 2 .. 256.");for(;g>>=1;)++Y}return c(Ee),c(Zt),c(wt),h?b||(b=2):T=0,c(parseInt(`000${Number(b&7).toString(2).padStart(3,"0")}0${h?1:0}`,2)),n(y/10),c(T),c(0),c(ht),n(i),n(d),n(p),n(u),M!=null&&M.length?(c(parseInt(`10000${(Y-1).toString(2).padStart(3,"0")}`,2)),a(M.flat())):c(0),Ct(Y,e.imageData,r),o()}function Xt(e){const{frames:t,palette:l,transparentIndex:s}=e,r=ke(l);return t.map(({imageData:c})=>{let a=!1;const n=new Uint8ClampedArray(c.length/4);for(let o=c.length,i=0;i<o;i+=4)c[i+3]===0?(n[i/4]=s,a=!0):n[i/4]=r(c[i]<<16|c[i+1]<<8|c[i+2]);return{imageData:n,transparent:a}})}function ft(e){const{frames:t,transparentIndex:l}=e;let s;const r=t.length;return t.map((c,a)=>{const{width:n,height:o,transparent:i,imageData:d}=c;let p=0,u=0,y=n-1,M=o-1,b;if(i){for(;u<M;){let g=!0;for(let Z=0;Z<n;Z++)if(d[n*u+Z]!==l){g=!1;break}if(!g)break;u++}for(;M>u;){let g=!0;for(let Z=0;Z<n;Z++)if(d[n*M+Z]!==l){g=!1;break}if(!g)break;M--}for(;p<y;){let g=!0;for(let Z=u;Z<M;Z++)if(d[n*Z+p]!==l){g=!1;break}if(!g)break;p++}for(;y>p;){let g=!0;for(let Z=u;Z<M;Z++)if(d[n*Z+y]!==l){g=!1;break}if(!g)break;y--}}else{if(s){for(;u<M;){let g=!0;for(let Z=0;Z<n;Z++){const N=n*u+Z;if(d[N]!==s[N]){g=!1;break}}if(!g)break;u++}for(;M>u;){let g=!0;for(let Z=0;Z<n;Z++){const N=n*M+Z;if(d[N]!==s[N]){g=!1;break}}if(!g)break;M--}if(u===M)p=y;else{for(;p<y;){let g=!0;for(let Z=u;Z<=M;Z++){const N=Z*n+p;if(d[N]!==s[N]){g=!1;break}}if(!g)break;p++}for(;y>p;){let g=!0;for(let Z=u;Z<=M;Z++){const N=Z*n+y;if(d[N]!==s[N]){g=!1;break}}if(!g)break;y--}}}b=s,s=d}const h=y+1-p,T=M+1-u,Y=Kt(d,{left:p,top:u,width:h,height:T,rawWidth:n,rate:1,callback:g=>{if(!i&&b&&d[g]===b[g])return l}});return{left:p,top:u,width:h,height:T,disposal:i&&a!==r-1?2:1,imageData:Y}})}function zt(e){return{time:t=>e&&Yt(t),timeEnd:t=>e&&Lt(t),debug:(...t)=>e&&Wt(...t),warn:(...t)=>e&&Nt(...t)}}function Vt(e){const t=new Map,{workerUrl:l}=e;let{workerNumber:s=1}=e;const r=[...new Array(l?s:0)].map(()=>{try{const n=new Worker(l);return n.onmessage=c,n}catch(n){return null}}).filter(Boolean);s=r.length;function c(n){var o;const{id:i,data:d}=n.data;(o=t.get(i))==null||o(d),t.delete(i)}const a=function(){let n=0;return o=>r[(o!=null?o:n++)%s]}();return{call:function(){let n=0;return(o,i,d,p)=>new Promise(u=>{const y=a(p);if(!y)return u(void 0);t.set(n,u),y.postMessage({id:n++,type:o,data:i},{transfer:d})})}()}}function jt(e){const{width:t,height:l,workerUrl:s,workerNumber:r=1,colorTableSize:c=256,backgroundColorIndex:a=c-1,maxColors:n=c-1,debug:o=!1}=e,i={width:t,height:l,maxColors:n,frames:[],log:zt(o),palette:Ne({skipTransparent:!1}),worker:Vt({workerUrl:s,workerNumber:r}),encodeId:0,encode(b){return j(this,null,function*(){const{log:h,frames:T,encodeId:Y,width:g,height:Z}=i;i.encodeId++;const{width:N=g,height:G=Z}=b;let{imageData:S}=b;h.time(`palette:sample-${Y}`);try{S=typeof S=="string"?yield It(S):S;const E=St(S,"uint8ClampedArray",{width:N,height:G});T.push(U(O({width:N,height:G},b),{imageData:E})),yield d(E)}finally{h.timeEnd(`palette:sample-${Y}`)}})},flush(){return j(this,null,function*(){const{log:b,frames:h,width:T,height:Y,maxColors:g,palette:Z}=i;b.time("palette:generate");const N=yield p(g),G=Ne(N).getColors("rgb").map(k=>k.value);b.debug("palette:maxColors",g);const S=G.map(k=>{const Q=k[0].toString(16).padStart(2,"0"),ee=k[1].toString(16).padStart(2,"0"),te=k[2].toString(16).padStart(2,"0");return`#${Q}${ee}${te}`});for(o&&console.debug(S.map(()=>"%c ").join(""),...S.map(k=>`margin: 1px; background: ${k}`));G.length<c;)G.push([0,0,0]);b.timeEnd("palette:generate"),b.time("frames:index");const E=yield u({frames:h,palette:N,transparentIndex:a});b.timeEnd("frames:index"),b.time("frames:crop");const $=yield y({frames:E.map((k,Q)=>{const{width:ee=1,height:te=1}=h[Q];return U(O({},k),{width:ee,height:te})}),transparentIndex:a});b.timeEnd("frames:crop"),b.time("frames:encode");const _=yield Promise.all(h.map((k,Q)=>M(U(O(O({},k),$[Q]),{graphicControl:U(O({},k.graphicControl),{transparent:!0,transparentIndex:a})}))));b.timeEnd("frames:encode"),b.time("output");const K=kt(U(O({},e),{colorTable:G,backgroundColorIndex:a,width:T,height:Y})),be=Gt(_),P=new Uint8Array(K.length+be.byteLength+1);return P.set(K),P.set(be,K.byteLength),P[P.length-1]=Tt,b.timeEnd("output"),Z.reset(),i.frames=[],i.encodeId=0,P})}};function d(b){return j(this,null,function*(){(yield i.worker.call("palette:addSample",b,void 0,0))||i.palette.addSample(b)})}function p(b){return j(this,null,function*(){return(yield i.worker.call("palette:generate",{maxColors:b},void 0,0))||(i.palette.generate({maxColors:b}),i.palette.context)})}function u(b){return j(this,null,function*(){return(yield i.worker.call("frames:index",b))||Xt(b)})}function y(b){return j(this,null,function*(){return(yield i.worker.call("frames:crop",b,b.frames.map(T=>T.imageData.buffer)))||ft(b)})}function M(b){return j(this,null,function*(){return(yield i.worker.call("frame:encode",b,[b.imageData.buffer]))||Et(b)})}return i}function Ot(e){return j(this,null,function*(){const{frames:t}=e,l=jt(e);for(let s=t.length,r=0;r<s;r++)yield l.encode(t[r]);return yield l.flush()})}const vt="data:application/javascript;base64,dmFyIEdlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgc2U9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczt2YXIgSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxxZT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO3ZhciBBPU1hdGgucG93LGllPShCLHgsayk9PnggaW4gQj9HZShCLHgse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KTpCW3hdPWssWj0oQix4KT0+e2Zvcih2YXIgayBpbiB4fHwoeD17fSkpSGUuY2FsbCh4LGspJiZpZShCLGsseFtrXSk7aWYoc2UpZm9yKHZhciBrIG9mIHNlKHgpKXFlLmNhbGwoeCxrKSYmaWUoQixrLHhba10pO3JldHVybiBCfTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgQj10eXBlb2Ygd2luZG93PCJ1Iix4PTY1NTM2LTEsaz14KngsY2U9NTEyLTEsTD1bMCwyMCw0MCw2MCw4MCw5OSwxMTksMTM5LDE1OSwxNzksMTk5LDIxOSwyNDEsMjY0LDI4OCwzMTMsMzQwLDM2NywzOTYsNDI3LDQ1OCw0OTEsNTI2LDU2Miw1OTksNjM3LDY3Nyw3MTgsNzYxLDgwNSw4NTEsODk4LDk0Nyw5OTcsMTA0OCwxMTAxLDExNTYsMTIxMiwxMjcwLDEzMzAsMTM5MSwxNDUzLDE1MTcsMTU4MywxNjUxLDE3MjAsMTc5MCwxODYzLDE5MzcsMjAxMywyMDkwLDIxNzAsMjI1MCwyMzMzLDI0MTgsMjUwNCwyNTkyLDI2ODEsMjc3MywyODY2LDI5NjEsMzA1OCwzMTU3LDMyNTgsMzM2MCwzNDY0LDM1NzAsMzY3OCwzNzg4LDM5MDAsNDAxNCw0MTI5LDQyNDcsNDM2Niw0NDg4LDQ2MTEsNDczNiw0ODY0LDQ5OTMsNTEyNCw1MjU3LDUzOTIsNTUzMCw1NjY5LDU4MTAsNTk1Myw2MDk5LDYyNDYsNjM5NSw2NTQ3LDY3MDAsNjg1Niw3MDE0LDcxNzQsNzMzNSw3NTAwLDc2NjYsNzgzNCw4MDA0LDgxNzcsODM1Miw4NTI4LDg3MDgsODg4OSw5MDcyLDkyNTgsOTQ0NSw5NjM1LDk4MjgsMTAwMjIsMTAyMTksMTA0MTcsMTA2MTksMTA4MjIsMTEwMjgsMTEyMzUsMTE0NDYsMTE2NTgsMTE4NzMsMTIwOTAsMTIzMDksMTI1MzAsMTI3NTQsMTI5ODAsMTMyMDksMTM0NDAsMTM2NzMsMTM5MDksMTQxNDYsMTQzODcsMTQ2MjksMTQ4NzQsMTUxMjIsMTUzNzEsMTU2MjMsMTU4NzgsMTYxMzUsMTYzOTQsMTY2NTYsMTY5MjAsMTcxODcsMTc0NTYsMTc3MjcsMTgwMDEsMTgyNzcsMTg1NTYsMTg4MzcsMTkxMjEsMTk0MDcsMTk2OTYsMTk5ODcsMjAyODEsMjA1NzcsMjA4NzYsMjExNzcsMjE0ODEsMjE3ODcsMjIwOTYsMjI0MDcsMjI3MjEsMjMwMzgsMjMzNTcsMjM2NzgsMjQwMDIsMjQzMjksMjQ2NTgsMjQ5OTAsMjUzMjUsMjU2NjIsMjYwMDEsMjYzNDQsMjY2ODgsMjcwMzYsMjczODYsMjc3MzksMjgwOTQsMjg0NTIsMjg4MTMsMjkxNzYsMjk1NDIsMjk5MTEsMzAyODIsMzA2NTYsMzEwMzMsMzE0MTIsMzE3OTQsMzIxNzksMzI1NjcsMzI5NTcsMzMzNTAsMzM3NDUsMzQxNDMsMzQ1NDQsMzQ5NDgsMzUzNTUsMzU3NjQsMzYxNzYsMzY1OTEsMzcwMDgsMzc0MjksMzc4NTIsMzgyNzgsMzg3MDYsMzkxMzgsMzk1NzIsNDAwMDksNDA0NDksNDA4OTEsNDEzMzcsNDE3ODUsNDIyMzYsNDI2OTAsNDMxNDcsNDM2MDYsNDQwNjksNDQ1MzQsNDUwMDIsNDU0NzMsNDU5NDcsNDY0MjMsNDY5MDMsNDczODUsNDc4NzEsNDgzNTksNDg4NTAsNDkzNDQsNDk4NDEsNTAzNDEsNTA4NDQsNTEzNDksNTE4NTgsNTIzNjksNTI4ODQsNTM0MDEsNTM5MjEsNTQ0NDUsNTQ5NzEsNTU1MDAsNTYwMzIsNTY1NjcsNTcxMDUsNTc2NDYsNTgxOTAsNTg3MzcsNTkyODcsNTk4NDAsNjAzOTYsNjA5NTUsNjE1MTcsNjIwODIsNjI2NTAsNjMyMjEsNjM3OTUsNjQzNzIsNjQ5NTIsNjU1MzVdLEc9WzAsNiwxMywxOCwyMiwyNSwyOCwzMSwzNCwzNiwzOCw0MCw0Miw0NCw0Niw0OCw1MCw1MSw1Myw1NCw1Niw1Nyw1OSw2MCw2MSw2Miw2NCw2NSw2Niw2Nyw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Niw4Nyw4OCw4OSw5MCw5MSw5MSw5Miw5Myw5NCw5NSw5NSw5Niw5Nyw5OCw5OCw5OSwxMDAsMTAxLDEwMSwxMDIsMTAzLDEwMywxMDQsMTA1LDEwNiwxMDYsMTA3LDEwOCwxMDgsMTA5LDExMCwxMTAsMTExLDExMSwxMTIsMTEzLDExMywxMTQsMTE1LDExNSwxMTYsMTE2LDExNywxMTgsMTE4LDExOSwxMTksMTIwLDEyMSwxMjEsMTIyLDEyMiwxMjMsMTIzLDEyNCwxMjUsMTI1LDEyNiwxMjYsMTI3LDEyNywxMjgsMTI4LDEyOSwxMjksMTMwLDEzMCwxMzEsMTMyLDEzMiwxMzMsMTMzLDEzNCwxMzQsMTM1LDEzNSwxMzYsMTM2LDEzNywxMzcsMTM4LDEzOCwxMzksMTM5LDE0MCwxNDAsMTQwLDE0MSwxNDEsMTQyLDE0MiwxNDMsMTQzLDE0NCwxNDQsMTQ1LDE0NSwxNDYsMTQ2LDE0NywxNDcsMTQ3LDE0OCwxNDgsMTQ5LDE0OSwxNTAsMTUwLDE1MSwxNTEsMTUxLDE1MiwxNTIsMTUzLDE1MywxNTQsMTU0LDE1NCwxNTUsMTU1LDE1NiwxNTYsMTU2LDE1NywxNTcsMTU4LDE1OCwxNTksMTU5LDE1OSwxNjAsMTYwLDE2MSwxNjEsMTYxLDE2MiwxNjIsMTYzLDE2MywxNjMsMTY0LDE2NCwxNjUsMTY1LDE2NSwxNjYsMTY2LDE2NiwxNjcsMTY3LDE2OCwxNjgsMTY4LDE2OSwxNjksMTY5LDE3MCwxNzAsMTcxLDE3MSwxNzEsMTcyLDE3MiwxNzIsMTczLDE3MywxNzQsMTc0LDE3NCwxNzUsMTc1LDE3NSwxNzYsMTc2LDE3NiwxNzcsMTc3LDE3NywxNzgsMTc4LDE3OSwxNzksMTc5LDE4MCwxODAsMTgwLDE4MSwxODEsMTgxLDE4MiwxODIsMTgyLDE4MywxODMsMTgzLDE4NCwxODQsMTg0LDE4NSwxODUsMTg1LDE4NiwxODYsMTg2LDE4NywxODcsMTg3LDE4OCwxODgsMTg4LDE4OSwxODksMTg5LDE5MCwxOTAsMTkwLDE5MSwxOTEsMTkxLDE5MiwxOTIsMTkyLDE5MywxOTMsMTkzLDE5MywxOTQsMTk0LDE5NCwxOTUsMTk1LDE5NSwxOTYsMTk2LDE5NiwxOTcsMTk3LDE5NywxOTgsMTk4LDE5OCwxOTgsMTk5LDE5OSwxOTksMjAwLDIwMCwyMDAsMjAxLDIwMSwyMDEsMjAxLDIwMiwyMDIsMjAyLDIwMywyMDMsMjAzLDIwNCwyMDQsMjA0LDIwNCwyMDUsMjA1LDIwNSwyMDYsMjA2LDIwNiwyMDYsMjA3LDIwNywyMDcsMjA4LDIwOCwyMDgsMjA4LDIwOSwyMDksMjA5LDIxMCwyMTAsMjEwLDIxMCwyMTEsMjExLDIxMSwyMTIsMjEyLDIxMiwyMTIsMjEzLDIxMywyMTMsMjE0LDIxNCwyMTQsMjE0LDIxNSwyMTUsMjE1LDIxNSwyMTYsMjE2LDIxNiwyMTcsMjE3LDIxNywyMTcsMjE4LDIxOCwyMTgsMjE4LDIxOSwyMTksMjE5LDIyMCwyMjAsMjIwLDIyMCwyMjEsMjIxLDIyMSwyMjEsMjIyLDIyMiwyMjIsMjIyLDIyMywyMjMsMjIzLDIyNCwyMjQsMjI0LDIyNCwyMjUsMjI1LDIyNSwyMjUsMjI2LDIyNiwyMjYsMjI2LDIyNywyMjcsMjI3LDIyNywyMjgsMjI4LDIyOCwyMjgsMjI5LDIyOSwyMjksMjI5LDIzMCwyMzAsMjMwLDIzMCwyMzEsMjMxLDIzMSwyMzEsMjMyLDIzMiwyMzIsMjMyLDIzMywyMzMsMjMzLDIzMywyMzQsMjM0LDIzNCwyMzQsMjM1LDIzNSwyMzUsMjM1LDIzNiwyMzYsMjM2LDIzNiwyMzcsMjM3LDIzNywyMzcsMjM4LDIzOCwyMzgsMjM4LDIzOSwyMzksMjM5LDIzOSwyMzksMjQwLDI0MCwyNDAsMjQwLDI0MSwyNDEsMjQxLDI0MSwyNDIsMjQyLDI0MiwyNDIsMjQzLDI0MywyNDMsMjQzLDI0MywyNDQsMjQ0LDI0NCwyNDQsMjQ1LDI0NSwyNDUsMjQ1LDI0NiwyNDYsMjQ2LDI0NiwyNDYsMjQ3LDI0NywyNDcsMjQ3LDI0OCwyNDgsMjQ4LDI0OCwyNDksMjQ5LDI0OSwyNDksMjQ5LDI1MCwyNTAsMjUwLDI1MCwyNTEsMjUxLDI1MSwyNTEsMjUxLDI1MiwyNTIsMjUyLDI1MiwyNTMsMjUzLDI1MywyNTMsMjUzLDI1NCwyNTQsMjU0LDI1NCwyNTUsMjU1LDI1NV07ZnVuY3Rpb24gUihuKXtsZXQgZTtpZihuPD0wKXJldHVybiAwO2lmKG4+PXgpcmV0dXJuIHg7ZT1uKihuKihuKy0xNDQxMDcpL3grMTMyMTE0KS94KzE0Mzc5O2ZvcihsZXQgbz0wO288MjtvKyspe2NvbnN0IGk9ZSplKmUsbD1uKygyKmkray8yKS9rO2U9KGUqKDIqbisoaStrLzIpL2spK2wvMikvbH1yZXR1cm4gZX1mdW5jdGlvbiBfKG4sZSl7cmV0dXJuKG5eZSk8MD8obi1lLzIpL2U6KG4rZS8yKS9lfWZ1bmN0aW9uIEgobil7Y29uc3QgZT1MW24+PjE2JjI1NV0sbz1MW24+PjgmMjU1XSxpPUxbbiYyNTVdLGw9KDI3MDE1KmUrMzUxNDkqbyszMzcyKmkreC8yKS94LGM9KDEzODg3KmUrNDQ2MTAqbys3MDM4KmkreC8yKS94LGE9KDU3ODcqZSsxODQ2MipvKzQxMjg2KmkreC8yKS94LHQ9UihsKSxyPVIoYykscz1SKGEpO3JldHVybltfKDEzNzkyKnQrNTIwMTAqci0yNjcqcyx4KSxfKDEyOTYyOCp0LTE1OTE1OCpyKzI5NTMwKnMseCksXygxNjk4KnQrNTEyOTkqci01Mjk5NypzLHgpXX1mdW5jdGlvbiB6KG4pe2lmKG48PTApcmV0dXJuIDA7aWYobj49eClyZXR1cm4gMjU1O3tjb25zdCBlPW4qY2Usbz1+fihlL3gpLGk9ZSV4LGw9R1tvXSxjPUdbbysxXTtyZXR1cm4oaSooYy1sKSt4LzIpL3grbH19ZnVuY3Rpb24gZmUobil7Y29uc3QgZT1uWzBdK18oMjU5NzQqblsxXSx4KStfKDE0MTQzKm5bMl0seCksbz1uWzBdK18oLTY5MTgqblsxXSx4KStfKC00MTg1Km5bMl0seCksaT1uWzBdK18oLTU4NjQqblsxXSx4KStfKC04NDYzOCpuWzJdLHgpLGw9QShlLDIpKmUvayxjPUEobywyKSpvL2ssYT1BKGksMikqaS9rLHQ9eigoMjY3MTY5KmwrLTIxNjc3MSpjKzE1MTM3KmEreC8yKS94KSxyPXooKC04MzEyNypsKzE3MTAzMCpjKy0yMjM2OCphK3gvMikveCkscz16KCgtMjc1KmwrLTQ2MDk5KmMrMTExOTA5KmEreC8yKS94KTtyZXR1cm4gdDw8MTZ8cjw8OHxzfWZ1bmN0aW9uIGRlKG4pe2NvbnN0IGU9e2w6MCxhOjEsYjoyfSxvPW5bMF0saT1uWzFdLGw9blsyXSxjPWVbb10sYT1lW2ldLHQ9ZVtsXTtyZXR1cm4ocixzKT0+ci5va2xhYltjXS1zLm9rbGFiW2NdfHxyLm9rbGFiW2FdLXMub2tsYWJbYV18fHIub2tsYWJbdF0tcy5va2xhYlt0XX1mdW5jdGlvbiB1ZShuLGUsbyl7cmV0dXJuIG4+PWU/ZT49bz8ibGFiIjpuPj1vPyJsYmEiOiJibGEiOm4+PW8/ImFsYiI6ZT49bz8iYWJsIjoiYmFsIn1mdW5jdGlvbiBoZShuKXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2NvbnN0IG89bmV3IEltYWdlO28uZGVjb2Rpbmc9InN5bmMiLG8ubG9hZGluZz0iZWFnZXIiLG8uY3Jvc3NPcmlnaW49ImFub255bW91cyIsby5vbmxvYWQ9KCk9PmUobyksby5vbmVycm9yPSgpPT5lKG8pLG8uc3JjPW59KX1mdW5jdGlvbiBxKG4pe3JldHVybiBuJiZ0eXBlb2Ygbj09Im9iamVjdCImJiJfX0NPTlRFWFRfXyJpbiBufWZ1bmN0aW9uIGdlKG4pe3JldHVybiBxKG4pP246cGUobil9ZnVuY3Rpb24gcGUobj17fSl7Y29uc3R7bWF4Q29sb3JzOmU9MjU2LHN0YXRzTW9kZTpvPSJmdWxsIixzYW1wbGVzOmk9W10sc2tpcFRyYW5zcGFyZW50Omw9ITB9PW47cmV0dXJue19fQ09OVEVYVF9fOiEwLHNhbXBsZXM6aSxtYXhDb2xvcnM6ZSxzdGF0c01vZGU6byxza2lwVHJhbnNwYXJlbnQ6bCxjb2xvclNhbXBsZXM6W10sY29sb3JTYW1wbGVzQ2FjaGU6bmV3IE1hcCxjb2xvckJveGVzOltdLGNvbG9yQm94ZXNJbmRleFRyZWU6W10sZmluZGVyQ2FjaGU6bmV3IE1hcH19ZnVuY3Rpb24gWShuKXtjb25zdCBlPXEobik/bjpuLmNvbnRleHQse2NvbG9yQm94ZXNJbmRleFRyZWU6byxmaW5kZXJDYWNoZTppfT1lO2Z1bmN0aW9uIGwoYSx0LHIpe2NvbnN0e2xlZnQ6cyxyaWdodDp1LGxvbmdlc3Q6ZCxva2xhYjpoLGNvbG9yQm94SW5kZXg6Yn09b1thXSxwPU1hdGgubWluKEEodFswXS1oWzBdLDIpK0EodFsxXS1oWzFdLDIpK0EodFsyXS1oWzJdLDIpLDQyOTQ5NjcyOTUtMSk7cDxyLmRpc3QmJihyLmNvbG9yQm94SW5kZXg9YixyLmRpc3Q9cCk7bGV0IGYsZztpZihzIT09LTF8fHUhPT0tMSl7Y29uc3QgQz10W2RdLWhbZF07Qzw9MD8oZj1zLGc9dSk6KGY9dSxnPXMpLGYhPT0tMSYmbChmLHQsciksZyE9PS0xJiZBKEMsMik8ci5kaXN0JiZsKGcsdCxyKX19ZnVuY3Rpb24gYyhhKXtjb25zdCB0PXtkaXN0Ok51bWJlci5NQVhfU0FGRV9JTlRFR0VSLGNvbG9yQm94SW5kZXg6LTF9O3JldHVybiBsKDAsYSx0KSx0LmNvbG9yQm94SW5kZXh9cmV0dXJuIGE9Pntjb25zdCB0PWElMzI3Njg7bGV0IHI9aS5nZXQodCk7cnx8KHI9bmV3IE1hcCxpLnNldCh0LHIpKTtsZXQgcz1yLmdldChhKTtyZXR1cm4gcyE9PXZvaWQgMHx8KHM9YyhIKGEpKSxyLnNldChhLHMpKSxzfX1mdW5jdGlvbiBtZShuLGUpe2NvbnN0e2NvbG9yQm94ZXM6b309bixpPW8ucmVkdWNlKChhLHQpPT5hK3Qud2VpZ2h0LDApO2lmKCFlKXJldHVybiBuLmNvbG9yQm94ZXMubWFwKGE9Pntjb25zdHtzcmdiOnQsd2VpZ2h0OnJ9PWE7cmV0dXJue3ZhbHVlOnQscGVyY2VudGFnZTpyL2l9fSk7Y29uc3QgbD1bXTtmb3IobGV0IGE9by5sZW5ndGgsdD0wO3Q8YTt0Kyspe2NvbnN0e3NyZ2I6cix3ZWlnaHQ6c309b1t0XTtsLnB1c2goe3ZhbHVlOltyPj4xNiYyNTUscj4+OCYyNTUsciYyNTVdLHBlcmNlbnRhZ2U6cy9pfSl9bGV0IGM7aWYoZT09PSJidWZmZXIiKXtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsLmxlbmd0aCo0KTtmb3IobGV0IGE9bC5sZW5ndGgsdD0wO3Q8YTt0Kyspe2NvbnN0IHI9dCo0LHM9bFt0XS52YWx1ZTtjW3JdPXNbMF0sY1tyKzFdPXNbMV0sY1tyKzJdPXNbMl0sY1tyKzNdPTI1NX19ZWxzZSBpZihlPT09ImhleCIpe2M9W107Zm9yKGxldCBhPWwubGVuZ3RoLHQ9MDt0PGE7dCsrKXtjb25zdHt2YWx1ZTpyLHBlcmNlbnRhZ2U6c309bFt0XSx1PXJbMF0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSxkPXJbMV0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSxoPXJbMl0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKTtjLnB1c2goe3ZhbHVlOmAjJHt1fSR7ZH0ke2h9YCxwZXJjZW50YWdlOnN9KX19ZWxzZSBjPWw7cmV0dXJuIGN9ZnVuY3Rpb24gRihuLGUsbyl7dmFyIHUsZCxoLGI7Y29uc3R7Z2V0Q29udGV4dDJkOmkscHJldmlvdXNTYW1wbGU6bCxza2lwVHJhbnNwYXJlbnQ6Y309byx7c3RhdHNNb2RlOmEsY29sb3JTYW1wbGVzOnQsY29sb3JTYW1wbGVzQ2FjaGU6cn09bjtsZXQgcztpZihBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZS5idWZmZXIpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGUpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSlpZihBcnJheS5pc0FycmF5KGVbMF0pKXtjb25zdCBwPVtdO2ZvcihsZXQgZj1lLmxlbmd0aCxnPTA7ZzxmO2crKylwLnB1c2goKHU9ZVtnXVswXSkhPW51bGw/dTowLChkPWVbZ11bMV0pIT1udWxsP2Q6MCwoaD1lW2ddWzJdKSE9bnVsbD9oOjAsKGI9ZVtnXVszXSkhPW51bGw/YjoyNTUpO3M9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHApfWVsc2Ugcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7ZWxzZSBpZih0eXBlb2YgZT09InN0cmluZyIpe2NvbnN0IHA9aT09bnVsbD92b2lkIDA6aSgpO2lmKCFwKXJldHVybjtjb25zdCBmPXAuY2FudmFzO3JldHVybiBoZShlKS50aGVuKGc9PihwLmNsZWFyUmVjdCgwLDAsZi53aWR0aCxmLmhlaWdodCksZi53aWR0aD1nLndpZHRoLGYuaGVpZ2h0PWcuaGVpZ2h0LHAuZHJhd0ltYWdlKGcsMCwwLGYud2lkdGgsZi5oZWlnaHQpLEYobixwLmdldEltYWdlRGF0YSgwLDAsZi53aWR0aCxmLmhlaWdodCkuZGF0YSxvKSkpfWVsc2V7Y29uc3QgcD1pPT1udWxsP3ZvaWQgMDppKCk7aWYoIXApcmV0dXJuO2NvbnN0IGY9cC5jYW52YXM7cmV0dXJuIHAuY2xlYXJSZWN0KDAsMCxmLndpZHRoLGYuaGVpZ2h0KSxmLndpZHRoPXR5cGVvZiBlLndpZHRoPT0ibnVtYmVyIj9lLndpZHRoOmUud2lkdGguYmFzZVZhbC52YWx1ZSxmLmhlaWdodD10eXBlb2YgZS5oZWlnaHQ9PSJudW1iZXIiP2UuaGVpZ2h0OmUuaGVpZ2h0LmJhc2VWYWwudmFsdWUscC5kcmF3SW1hZ2UoZSwwLDAsZi53aWR0aCxmLmhlaWdodCksRihuLHAuZ2V0SW1hZ2VEYXRhKDAsMCxmLndpZHRoLGYuaGVpZ2h0KS5kYXRhLG8pfWZvcihsZXQgcD1zLmxlbmd0aCxmPTA7ZjxwO2YrPTQpe2NvbnN0IGc9c1tmXSxDPXNbZisxXSx5PXNbZisyXSx3PXNbZiszXTtpZihjJiZ3PT09MHx8YT09PSJkaWZmIiYmbCYmZz09PWxbZl0mJkM9PT1sW2YrMV0mJnk9PT1sW2YrMl0mJnc9PT1sW2YrM10pY29udGludWU7Y29uc3QgbT1nPDwxNnxDPDw4fHksUz13KjFlOCttLEk9UyUzMjc2ODtsZXQgVD1yLmdldChJKTtUfHwoVD1uZXcgTWFwLHIuc2V0KEksVCkpO2xldCBFPVQuZ2V0KFMpO2lmKEUhPT12b2lkIDApe3RbRV0uY291bnQrKztjb250aW51ZX1FPXQucHVzaCh7YWxwaGE6dyxzcmdiOm0sb2tsYWI6SChtKSxjb3VudDoxfSktMSxULnNldChTLEUpfXJldHVybiBzfWZ1bmN0aW9uIEoobixlKXtjb25zdHtjb2xvclNhbXBsZXM6b309ZSx7c3RhcnQ6aSxlbmQ6bH09bjtuLmxlbmd0aD1sLWksbi53ZWlnaHQ9MDtjb25zdCBjPVswLDAsMF07Zm9yKGxldCB0PWk7dDxsO3QrKyl7Y29uc3Qgcj1vW3RdO2NbMF0rPXIub2tsYWJbMF0qci5jb3VudCxjWzFdKz1yLm9rbGFiWzFdKnIuY291bnQsY1syXSs9ci5va2xhYlsyXSpyLmNvdW50LG4ud2VpZ2h0Kz1yLmNvdW50fW4ub2tsYWI9W2NbMF0vbi53ZWlnaHQsY1sxXS9uLndlaWdodCxjWzJdL24ud2VpZ2h0XTtjb25zdCBhPVswLDAsMF07Zm9yKGxldCB0PWk7dDxsO3QrKyl7Y29uc3Qgcj1vW3RdO2FbMF0rPUEoci5va2xhYlswXS1uLm9rbGFiWzBdLDIpKnIuY291bnQsYVsxXSs9QShyLm9rbGFiWzFdLW4ub2tsYWJbMV0sMikqci5jb3VudCxhWzJdKz1BKHIub2tsYWJbMl0tbi5va2xhYlsyXSwyKSpyLmNvdW50fW4uc29ydD11ZShhWzBdLGFbMV0sYVsyXSksbi5zY29yZT1NYXRoLm1heChhWzBdLGFbMV0sYVsyXSl9ZnVuY3Rpb24gUShuLGUpe2NvbnN0IG89Wih7c3RhcnQ6MCxlbmQ6MCxsZW5ndGg6MCxzY29yZTowLHdlaWdodDowLHNvcnQ6ImxhYiIsc29ydGVkOm51bGwsc3JnYjowLG9rbGFiOlswLDAsMF19LG4pO3JldHVybiBKKG8sZSksb31mdW5jdGlvbiB3ZShuKXtjb25zdHtjb2xvckJveGVzOmV9PW4sbz1bXSxpPW5ldyBNYXA7Zm9yKGxldCBhPS0xLHQ9ZS5sZW5ndGgscj0wO3I8dDtyKyspe2NvbnN0e3NyZ2I6c309ZVtyXTtpZihzPT09YSl7aS5zZXQociwhMCk7Y29udGludWV9YT1zfWMoe21pbjpbLTY1NTM1LC02NTUzNSwtNjU1MzVdLG1heDpbNjU1MzUsNjU1MzUsNjU1MzVdfSk7ZnVuY3Rpb24gbChhKXtjb25zdCB0PXttaW46WzY1NTM1LDY1NTM1LDY1NTM1XSxtYXg6Wy02NTUzNSwtNjU1MzUsLTY1NTM1XX07bGV0IHI9MDtjb25zdCBzPVtdO2ZvcihsZXQgcD1lLmxlbmd0aCxmPTA7ZjxwO2YrKyl7Y29uc3R7b2tsYWI6Z309ZVtmXTtpLmhhcyhmKXx8Z1swXTxhLm1pblswXXx8Z1sxXTxhLm1pblsxXXx8Z1syXTxhLm1pblsyXXx8Z1swXT5hLm1heFswXXx8Z1sxXT5hLm1heFsxXXx8Z1syXT5hLm1heFsyXXx8KGdbMF08dC5taW5bMF0mJih0Lm1pblswXT1nWzBdKSxnWzFdPHQubWluWzFdJiYodC5taW5bMV09Z1sxXSksZ1syXTx0Lm1pblsyXSYmKHQubWluWzJdPWdbMl0pLGdbMF0+dC5tYXhbMF0mJih0Lm1heFswXT1nWzBdKSxnWzFdPnQubWF4WzFdJiYodC5tYXhbMV09Z1sxXSksZ1syXT50Lm1heFsyXSYmKHQubWF4WzJdPWdbMl0pLHNbcisrXT17b2tsYWI6Zyxjb2xvckJveEluZGV4OmZ9KX1sZXQgdT0wO2lmKCFyKXJldHVybntjb2xvckJveEluZGV4Oi0xLGxvbmdlc3Q6dX07Y29uc3QgZD10Lm1heFswXS10Lm1pblswXSxoPXQubWF4WzFdLXQubWluWzFdLGI9dC5tYXhbMl0tdC5taW5bMl07cmV0dXJuIGQ+PWgmJmQ+PWI/dT0wOmI+PWQmJmI+PWg/dT0yOmg+PWQmJmg+PWImJih1PTEpLHtjb2xvckJveEluZGV4OnMuc29ydCgocCxmKT0+cC5va2xhYlt1XS1mLm9rbGFiW3VdKVtyPj4xXS5jb2xvckJveEluZGV4LGxvbmdlc3Q6dX19ZnVuY3Rpb24gYyhhKXtjb25zdHtjb2xvckJveEluZGV4OnQsbG9uZ2VzdDpyfT1sKGEpO2lmKHQ8MClyZXR1cm4tMTtjb25zdHtva2xhYjpzfT1lW3RdLHU9e2xvbmdlc3Q6cixva2xhYjpzLGNvbG9yQm94SW5kZXg6dH0sZD1vLnB1c2godSktMTtpLnNldCh0LCEwKTtjb25zdCBoPXttYXg6Wy4uLmEubWF4XSxtaW46Wy4uLmEubWluXX0sYj17bWF4OlsuLi5hLm1heF0sbWluOlsuLi5hLm1pbl19O2gubWF4W3JdPXNbcl0sYi5taW5bcl09TWF0aC5taW4oc1tyXSsxLDY1NTM1KTtjb25zdCBwPWMoaCk7bGV0IGY9LTE7cmV0dXJuIGIubWluW3JdPD1iLm1heFtyXSYmKGY9YyhiKSksdS5sZWZ0PXAsdS5yaWdodD1mLGR9cmV0dXJuIG99ZnVuY3Rpb24gYmUobixlPXt9KXtjb25zdHttYXhDb2xvcnM6byxjb2xvclNhbXBsZXM6aX09bjtpZighaS5sZW5ndGgpcmV0dXJuO2NvbnN0e21heENvbG9yczpsPW8sY2xlYXJTYW1wbGVzOmM9ITB9PWU7bGV0IGE9USh7ZW5kOmkubGVuZ3RofSxuKSx0PTE7Y29uc3Qgcj1bYV07ZnVuY3Rpb24gcygpe2xldCBkPS0xLGg9LTE7aWYodD09PWwpcmV0dXJuLTE7Zm9yKGxldCBiPTA7Yjx0O2IrKyl7Y29uc3QgcD1yW2JdO3AubGVuZ3RoPj0yJiZwLnNjb3JlPmgmJihkPWIsaD1wLnNjb3JlKX1yZXR1cm4gZH1mdW5jdGlvbiB1KGQsaCl7Y29uc3QgYj1RKHtzdGFydDpoKzEsZW5kOmQuZW5kLHNvcnRlZDpkLnNvcnRlZH0sbik7ZC5lbmQtPWIubGVuZ3RoLEooZCxuKSxyLnB1c2goYiksdCsrfWZvcig7YSYmYS5sZW5ndGg+MTspe2NvbnN0e3N0YXJ0OmQsZW5kOmgsc29ydDpiLHNvcnRlZDpwfT1hO2lmKGIhPT1wKXtjb25zdCB3PWkuc2xpY2UoZCxoKS5zb3J0KGRlKGIpKTtmb3IobGV0IG09dy5sZW5ndGgsUz0wO1M8bTtTKyspaVtkK1NdPXdbU107YS5zb3J0ZWQ9Yn1jb25zdCBmPWEud2VpZ2h0KzE+PjE7bGV0IGc9ZCxDPTA7Zm9yKGxldCB3PWgtMjtnPHcmJihDKz1pW2ddLmNvdW50LCEoQz5mKSk7ZysrKTt1KGEsZyk7Y29uc3QgeT1zKCk7YT15Pj0wP3JbeV06bnVsbH1mb3IobGV0IGQ9ci5sZW5ndGgsaD0wO2g8ZDtoKyspcltoXS5zcmdiPWZlKHJbaF0ub2tsYWIpO24uY29sb3JCb3hlcz1yLnNvcnQoKGQsaCk9PmQuc3JnYi1oLnNyZ2IpLG4uY29sb3JCb3hlc0luZGV4VHJlZT13ZShuKSxjJiYobi5jb2xvclNhbXBsZXM9W10sbi5jb2xvclNhbXBsZXNDYWNoZS5jbGVhcigpKSxuLmZpbmRlckNhY2hlLmNsZWFyKCl9ZnVuY3Rpb24geGUobixlLG8pe2NvbnN0e2NvbG9yQm94ZXM6aX09bjtpZighZSlyZXR1cm47bGV0IGw7aWYodHlwZW9mIG89PSJudW1iZXIiKWw9bztlbHNlIGlmKHR5cGVvZiBvPT0ic3RyaW5nIil7Y29uc3Qgcj1vLnJlcGxhY2UoL14jLywiIikscz1bYCR7clswXX0ke3JbMV19YCxgJHtyWzJdfSR7clszXX1gLGAke3JbNF19JHtyWzVdfWBdLm1hcCh1PT5wYXJzZUludCh1LDE2KSk7bD1zWzBdPDwxNnxzWzFdPDw4fHNbMl19ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKWw9b1swXTw8MTZ8b1sxXTw8OHxvWzJdO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5zdXBwb3J0ZWQgY29sb3IgZm9ybWF0Iik7Y29uc3QgYz1lKGwpO2lmKGM9PT12b2lkIDApcmV0dXJuO2NvbnN0IGE9aVtjXTtpZighYSlyZXR1cm47Y29uc3R7c3JnYjp0fT1hO2lmKHR5cGVvZiBvPT0ic3RyaW5nIil7Y29uc3Qgcj0odD4+MTYmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHM9KHQ+PjgmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHU9KHQmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpO3JldHVybnt2YWx1ZTpgIyR7cn0ke3N9JHt1fWAsaW5kZXg6Y319ZWxzZSBpZih0eXBlb2Ygbz09Im9iamVjdCImJkFycmF5LmlzQXJyYXkobykpcmV0dXJue3ZhbHVlOlt0Pj4xNiYyNTUsdD4+OCYyNTUsdCYyNTVdLGluZGV4OmN9O3JldHVybnt2YWx1ZTp0LGluZGV4OmN9fWZ1bmN0aW9uIFNlKG4pe24uY29sb3JTYW1wbGVzPVtdLG4uY29sb3JTYW1wbGVzQ2FjaGUuY2xlYXIoKSxuLmNvbG9yQm94ZXM9W10sbi5jb2xvckJveGVzSW5kZXhUcmVlPVtdLG4uZmluZGVyQ2FjaGUuY2xlYXIoKX1mdW5jdGlvbiBDZShuKXtjb25zdCBlPWdlKG4pLHtzdGF0c01vZGU6byxzYW1wbGVzOmksc2tpcFRyYW5zcGFyZW50Omx9PWUsYz1mdW5jdGlvbigpe2xldCBzO3JldHVybigpPT4oIXMmJkImJihzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkpLHMpfSgpO2xldCBhPW51bGwsdD1udWxsO2NvbnN0IHI9e2NvbnRleHQ6ZSxhZGRTYW1wbGU6cz0+e2UuY29sb3JTYW1wbGVzLmxlbmd0aD09PTAmJihhPW51bGwpO2NvbnN0IHU9RihlLHMse2dldENvbnRleHQyZDpjLHByZXZpb3VzU2FtcGxlOmEsc2tpcFRyYW5zcGFyZW50Omx9KTtyZXR1cm4odSBpbnN0YW5jZW9mIFByb21pc2U/dTpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT51KSkudGhlbihkPT57ZCYmbz09PSJkaWZmIiYmKGE9ZCl9KSx1fSxnZW5lcmF0ZShzPXt9KXtjb25zdHtjbGVhclNhbXBsZXM6dT0hMH09cztyZXR1cm4gdSYmKGE9bnVsbCksYmUoZSxzKSx0aGlzfSxnZXRDb2xvcnM6cz0+bWUoZSxzKSxmaW5kTmVhcmVzdENvbG9yOnM9Pih0fHwodD1ZKGUpKSx4ZShlLHQscykpLHJlc2V0OigpPT5TZShlKX07cmV0dXJuIGkubGVuZ3RoJiYoaS5mb3JFYWNoKHM9PnIuYWRkU2FtcGxlKHMpKSxlLnNhbXBsZXM9W10pLHJ9Y29uc3QgeWU9Ilttb2Rlcm4tZ2lmXSIsSWU9IkdJRiIsa2U9WyI4N2EiLCI4OWEiXSxlZT00NCx0ZT0zMyxUZT0yNTUsQWU9MTEsRWU9MjU0LG5lPTI0OSxyZT00LEJlPTEsX2U9MSxNZT01OSxvZT0oLi4ubik9PmNvbnNvbGUud2Fybih5ZSwuLi5uKTtmdW5jdGlvbiB2ZShuKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4ucmVkdWNlKChvLGkpPT5vK2kuYnl0ZUxlbmd0aCwwKSk7cmV0dXJuIG4ucmVkdWNlKChvLGkpPT4oZS5zZXQoaSxvKSxvK2kuYnl0ZUxlbmd0aCksMCksZX1mdW5jdGlvbiBhZShuLGUsbyl7bGV0IGk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KG4pKWk9bi5idWZmZXI7ZWxzZSBpZihuIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpaT1uO2Vsc2V7Y29uc3QgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx7d2lkdGg6YyxoZWlnaHQ6YX09b3x8e30sdD1sLmdldENvbnRleHQoIjJkIik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIGNhbnZhcyBjb250ZXh0MmQiKTtsLndpZHRoPWMhPW51bGw/Yzp0eXBlb2Ygbi53aWR0aD09Im51bWJlciI/bi53aWR0aDpuLndpZHRoLmJhc2VWYWwudmFsdWUsbC5oZWlnaHQ9YSE9bnVsbD9hOnR5cGVvZiBuLmhlaWdodD09Im51bWJlciI/bi5oZWlnaHQ6bi5oZWlnaHQuYmFzZVZhbC52YWx1ZSx0LmRyYXdJbWFnZShuLDAsMCxsLndpZHRoLGwuaGVpZ2h0KSxpPXQuZ2V0SW1hZ2VEYXRhKDAsMCxsLndpZHRoLGwuaGVpZ2h0KS5kYXRhLmJ1ZmZlcn1zd2l0Y2goZSl7Y2FzZSJ1aW50OEFycmF5IjpyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoaSk7Y2FzZSJ1aW50OENsYW1wZWRBcnJheSI6cmV0dXJuIG5ldyBVaW50OENsYW1wZWRBcnJheShpKTtjYXNlImRhdGFWaWV3IjpyZXR1cm4gbmV3IERhdGFWaWV3KGkpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgZm9ybWF0Iil9fWZ1bmN0aW9uIE5lKG4sZSl7dmFyIHA7Y29uc3R7dG9wOm89MCxsZWZ0Omk9MCx3aWR0aDpsLGhlaWdodDpjLHJhd1dpZHRoOmEscmF0ZTp0PTQsY2FsbGJhY2s6cn09ZSxzPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmMqdCksdT1pKnQsZD1vKnQsaD1sKnQsYj1hKnQ7Zm9yKGxldCBmPTA7ZjxjO2YrKylmb3IobGV0IGc9MDtnPGg7ZysrKXtjb25zdCBDPShkK2YpKmIrKHUrZyk7c1tmKmgrZ109KHA9cj09bnVsbD92b2lkIDA6cihDKSkhPW51bGw/cDpuW0NdfXJldHVybiBzfWZ1bmN0aW9uIFVlKG4pe2NvbnN0IGU9YWUobiwiZGF0YVZpZXciKTtsZXQgbz0wO2NvbnN0IGk9KCk9PmUuZ2V0VWludDgobysrKSxsPWM9PkFycmF5LmZyb20oe2xlbmd0aDpjfSkubWFwKGkpO3JldHVybntnZXRDdXJzb3I6KCk9Pm8sc2V0Q3Vyc29yOmM9Pm89YyxyZWFkQnl0ZTppLHJlYWRCeXRlczpsLHJlYWRTdHJpbmc6Yz0+U3RyaW5nLmZyb21DaGFyQ29kZSguLi5sKGMpKSxyZWFkVW5zaWduZWQ6KCk9PltlLmdldFVpbnQxNihvLCEwKSxvKz0yXVswXSxyZWFkQml0czooKT0+ZS5nZXRVaW50OChvKyspLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDgsIjAiKS5zcGxpdCgiIikubWFwKE51bWJlcikscmVhZENvbG9yVGFibGU6Yz0+QXJyYXkuZnJvbSh7bGVuZ3RoOmN9LCgpPT5BcnJheS5mcm9tKGwoMykpKSxyZWFkU3ViQmxvY2s6KCk9Pntjb25zdCBjPVtdO2Zvcig7Oyl7Y29uc3QgYT1pKCk7aWYoYT09PTAmJmUuZ2V0VWludDgobykhPT0wKWJyZWFrO2MucHVzaChhKX1yZXR1cm4gY319fWZ1bmN0aW9uIE9lKG4pe2NvbnN0IGU9e30se2dldEN1cnNvcjpvLHNldEN1cnNvcjppLHJlYWRCeXRlOmwscmVhZFN0cmluZzpjLHJlYWRVbnNpZ25lZDphLHJlYWRCaXRzOnQscmVhZENvbG9yVGFibGU6cixyZWFkU3ViQmxvY2s6c309VWUobiksdT0oKT0+KHtpbmRleDowLGRlbGF5OjEwMCxkaXNwb3NhbDowfSksZD1jKDMpLGg9YygzKTtpZihkIT09SWV8fCFrZS5pbmNsdWRlcyhoKSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgaXMgbm90IGEgODdhLzg5YSBHSUYgZGF0YS4iKTtlLnZlcnNpb249aCxlLndpZHRoPWEoKSxlLmhlaWdodD1hKCk7Y29uc3QgYj10KCk7ZS5nbG9iYWxDb2xvclRhYmxlPSEhYlswXSxlLmNvbG9yUmVzb2x1VGlvbj1wYXJzZUludChiLnNsaWNlKDEsNCkuam9pbigiIiksMikrMSxlLmNvbG9yVGFibGVTb3J0ZWQ9ISFiWzRdO2NvbnN0IHA9cGFyc2VJbnQoYi5zbGljZSg1LDgpLmpvaW4oIiIpLDIpO2UuY29sb3JUYWJsZVNpemU9cD9NYXRoLnBvdygyLHArMSk6MCxlLmJhY2tncm91bmRDb2xvckluZGV4PWwoKSxlLnBpeGVsQXNwZWN0UmF0aW89bCgpLGUuZ2xvYmFsQ29sb3JUYWJsZSYmKGUuY29sb3JUYWJsZVNpemU/ZS5jb2xvclRhYmxlPXIoZS5jb2xvclRhYmxlU2l6ZSk6cygpKSxlLmZyYW1lcz1bXTtsZXQgZj11KCk7Y29uc3QgZz1bXSxDPVtdO2Zvcig7Oyl7Y29uc3QgeT1sKCk7aWYoZy5wdXNoKHkpLHk9PT1lZSl7Zi5sZWZ0PWEoKSxmLnRvcD1hKCksZi53aWR0aD1hKCksZi5oZWlnaHQ9YSgpO2NvbnN0IHc9dCgpO2YubG9jYWxDb2xvclRhYmxlPSEhd1swXSxmLmludGVybGFjZWQ9ISF3WzFdLGYuY29sb3JUYWJsZVNvcnRlZD0hIXdbMl0sZi5yZXNlcnZlZD1wYXJzZUludCh3LnNsaWNlKDMsNSkuam9pbigiIiksMik7Y29uc3QgbT1wYXJzZUludCh3LnNsaWNlKDUsOCkuam9pbigiIiksMik7Zm9yKGYuY29sb3JUYWJsZVNpemU9bT9NYXRoLnBvdygyLG0rMSk6MCxmLmxvY2FsQ29sb3JUYWJsZSYmKGYuY29sb3JUYWJsZT1yKGYuY29sb3JUYWJsZVNpemUpKSxmLmx6d01pbkNvZGVTaXplPWwoKSxmLmltYWdlRGF0YVBvc2l0aW9ucz1bXTs7KXtjb25zdCBTPWwoKTtpZihTPT09MClicmVhaztjb25zdCBJPW8oKTtmLmltYWdlRGF0YVBvc2l0aW9ucy5wdXNoKFtJLFNdKSxpKEkrUyl9ZS5mcmFtZXMucHVzaChmKSxmPXUoKSxmLmluZGV4PWUuZnJhbWVzLmxlbmd0aDtjb250aW51ZX1pZih5PT09dGUpe2NvbnN0IHc9bCgpO2lmKEMucHVzaCh3KSx3PT09VGUpe2lmKGwoKSE9PUFlKWNvbnRpbnVlO2NvbnN0IG09e2lkZW50aWZpZXI6Yyg4KSxjb2RlOmMoMyksZGF0YTpbXX07YCR7bS5pZGVudGlmaWVyfSR7bS5jb2RlfWA9PSJORVRTQ0FQRTIuMCImJmwoKT09PTMmJihlLmxvb3BlZD0hIWwoKSxlLmxvb3BDb3VudD1hKCkpLG0uZGF0YT1zKCksZi5hcHBsaWNhdGlvbj1tO2NvbnRpbnVlfWlmKHc9PT1FZSl7Zi5jb21tZW50PXMoKS5tYXAobT0+U3RyaW5nLmZyb21DaGFyQ29kZShtKSkuam9pbigiIik7Y29udGludWV9aWYodz09PW5lKXtpZihsKCkhPT1yZSljb250aW51ZTtjb25zdCBtPXQoKSxTPXtyZXNlcnZlZDpwYXJzZUludChtLnNsaWNlKDAsMykuam9pbigiIiksMiksZGlzcG9zYWw6cGFyc2VJbnQobS5zbGljZSgzLDYpLmpvaW4oIiIpLDIpLHVzZXJJbnB1dDohIW1bNl0sdHJhbnNwYXJlbnQ6ISFtWzddLGRlbGF5VGltZTphKCksdHJhbnNwYXJlbnRJbmRleDpsKCl9O3MoKSxmLmdyYXBoaWNDb250cm9sPVMsZi5kaXNwb3NhbD1TLmRpc3Bvc2FsLGYuZGVsYXk9KFMuZGVsYXlUaW1lfHwxMCkqMTA7Y29udGludWV9aWYodz09PUJlKXtpZihsKCkhPT1fZSljb250aW51ZTtmLnBsYWluVGV4dD17bGVmdDphKCksdG9wOmEoKSx3aWR0aDphKCksaGVpZ2h0OmEoKSxjZWxsV2lkdGg6bCgpLGNlbGxIZWlnaHQ6bCgpLGNvbG9ySW5kZXg6bCgpLGJhY2tncm91bmRDb2xvckluZGV4OmwoKSxkYXRhOnMoKX07Y29udGludWV9b2UoYFVua25vd24gZXh0ZW5zaW9uIGJsb2NrOiAweCR7dy50b1N0cmluZygxNil9YCxnLnNsaWNlKDAsZy5sZW5ndGgtMSkubWFwKG09PmAweCR7bS50b1N0cmluZygxNil9YCksQy5zbGljZSgwLEMubGVuZ3RoLTEpLm1hcChtPT5gMHgke20udG9TdHJpbmcoMTYpfWApKTtjb250aW51ZX1pZih5PT09TWUpYnJlYWs7b2UoYFVua25vd24gYmxvY2s6IDB4JHt5LnRvU3RyaW5nKDE2KX1gLGcuc2xpY2UoMCxnLmxlbmd0aC0xKS5tYXAodz0+YDB4JHt3LnRvU3RyaW5nKDE2KX1gKSxDLnNsaWNlKDAsQy5sZW5ndGgtMSkubWFwKHc9PmAweCR7dy50b1N0cmluZygxNil9YCkpfXJldHVybiBlfWZ1bmN0aW9uIFBlKG4sZSxvKXtjb25zdCBjPW87bGV0IGEsdCxyLHMsdSxkLGg7Y29uc3QgYj1uZXcgQXJyYXkobykscD1uZXcgQXJyYXkoNDA5NiksZj1uZXcgQXJyYXkoNDA5NiksZz1uZXcgQXJyYXkoNDA5NisxKSxDPW4seT0xPDxDLHc9eSsxO2ZvcihhPXkrMix1PS0xLHI9QysxLHQ9KDE8PHIpLTEsZD0wO2Q8eTtkKyspcFtkXT0wLGZbZF09ZDtsZXQgbSxTLEksVCxFLFA7Zm9yKG09Uz1JPVQ9RT1QPTAsaD0wO2g8Yzspe2lmKFQ9PT0wKXtpZihTPHIpe20rPWVbUF08PFMsUys9OCxQKys7Y29udGludWV9aWYoZD1tJnQsbT4+PXIsUy09cixkPmF8fGQ9PT13KWJyZWFrO2lmKGQ9PT15KXtyPUMrMSx0PSgxPDxyKS0xLGE9eSsyLHU9LTE7Y29udGludWV9aWYodT09PS0xKXtnW1QrK109ZltkXSx1PWQsST1kO2NvbnRpbnVlfWZvcihzPWQsZD09PWEmJihnW1QrK109SSxkPXUpO2Q+eTspZ1tUKytdPWZbZF0sZD1wW2RdO0k9ZltkXSYyNTUsZ1tUKytdPUksYTw0MDk2JiYocFthXT11LGZbYV09SSxhKyssIShhJnQpJiZhPDQwOTYmJihyKyssdCs9YSkpLHU9c31ULS0sYltFKytdPWdbVF0saCsrfWZvcihoPUU7aDxjO2grKyliW2hdPTA7cmV0dXJuIGJ9ZnVuY3Rpb24gJGUobixlKXtjb25zdCBvPW5ldyBBcnJheShuLmxlbmd0aCksaT1uLmxlbmd0aC9lLGw9WzAsNCwyLDFdLGM9WzgsOCw0LDJdO2xldCBhPTA7Zm9yKGxldCB0PTA7dDw0O3QrKylmb3IobGV0IHI9bFt0XTtyPGk7cis9Y1t0XSlvLnNwbGljZS5hcHBseShvLFtyKmUsZV0uY29uY2F0KG4uc2xpY2UoYSplLChhKzEpKmUpKSksYSsrO3JldHVybiBvfWZ1bmN0aW9uIERlKG4pe2NvbnN0IGU9bmV3IE1hcCx7d29ya2VyVXJsOm99PW47bGV0e3dvcmtlck51bWJlcjppPTF9PW47Y29uc3QgbD1bLi4ubmV3IEFycmF5KG8/aTowKV0ubWFwKCgpPT57dHJ5e2NvbnN0IHI9bmV3IFdvcmtlcihvKTtyZXR1cm4gci5vbm1lc3NhZ2U9YyxyfWNhdGNoKHIpe3JldHVybiBudWxsfX0pLmZpbHRlcihCb29sZWFuKTtpPWwubGVuZ3RoO2Z1bmN0aW9uIGMocil7dmFyIGQ7Y29uc3R7aWQ6cyxkYXRhOnV9PXIuZGF0YTsoZD1lLmdldChzKSk9PW51bGx8fGQodSksZS5kZWxldGUocyl9Y29uc3QgYT1mdW5jdGlvbigpe2xldCByPTA7cmV0dXJuIHM9PmxbKHMhPW51bGw/czpyKyspJWldfSgpO3JldHVybntjYWxsOmZ1bmN0aW9uKCl7bGV0IHI9MDtyZXR1cm4ocyx1LGQsaCk9Pm5ldyBQcm9taXNlKGI9Pntjb25zdCBwPWEoaCk7aWYoIXApcmV0dXJuIGIodm9pZCAwKTtlLnNldChyLGIpLHAucG9zdE1lc3NhZ2Uoe2lkOnIrKyx0eXBlOnMsZGF0YTp1fSx7dHJhbnNmZXI6ZH0pfSl9KCl9fWZ1bmN0aW9uIFhlKG4sZSl7Y29uc3Qgbz1hZShuLCJ1aW50OEFycmF5Iik7aWYoZSE9bnVsbCYmZS53b3JrZXJVcmwpcmV0dXJuIERlKHt3b3JrZXJVcmw6ZS53b3JrZXJVcmx9KS5jYWxsKCJmcmFtZXM6ZGVjb2RlIixvLFtvLmJ1ZmZlcl0pO2NvbnN0e2dpZjppPU9lKG4pLHJhbmdlOmx9PWUhPW51bGw/ZTp7fSx7d2lkdGg6YyxoZWlnaHQ6YSxjb2xvclRhYmxlOnQsZnJhbWVzOnJ9PWkscz1sP3Iuc2xpY2UobFswXSxsWzFdKzEpOnIsdT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYyphKjQpO2xldCBkO3JldHVybiBzLm1hcChoPT57dmFyIGxlO2NvbnN0e2xlZnQ6Yix0b3A6cCx3aWR0aDpmLGhlaWdodDpnLGludGVybGFjZWQ6Qyxsb2NhbENvbG9yVGFibGU6eSxjb2xvclRhYmxlOncsbHp3TWluQ29kZVNpemU6bSxpbWFnZURhdGFQb3NpdGlvbnM6UyxncmFwaGljQ29udHJvbDpJLGRpc3Bvc2FsOlQsZGVsYXk6RX09aCxQPXArZyx7dHJhbnNwYXJlbnQ6S2UsdHJhbnNwYXJlbnRJbmRleDpWZX09SSE9bnVsbD9JOnt9LFc9eT93OnQsamU9S2U/VmU6LTEsWmU9dmUoUy5tYXAoKFtNLFVdKT0+by5zdWJhcnJheShNLE0rVSkpKTtsZXQgSz1QZShtLFplLGYqZyk7aWYoQyYmKEs9JGUoSyxmKSksKGQ9PW51bGw/dm9pZCAwOmQuZGlzcG9zYWwpIT09MSl7Y29uc3R7bGVmdDpNPTAsdG9wOlU9MCx3aWR0aDpWPWMsaGVpZ2h0Ok89YX09ZCE9bnVsbD9kOnt9LFg9VStPO2ZvcihsZXQgJD1VOyQ8WDskKyspe2NvbnN0IGo9JCpjK007Zm9yKGxldCBEPTA7RDxWO0QrKyl7Y29uc3Qgdj0oaitEKSo0O3Vbdl09dVt2KzFdPXVbdisyXT11W3YrM109MH19fWZvcihsZXQgTT1wO008UDtNKyspe2NvbnN0IFU9TSpjK2IsVj0oTS1wKSpmO2ZvcihsZXQgTz0wO088ZjtPKyspe2NvbnN0IFg9S1tWK09dO2lmKFg9PT1qZSljb250aW51ZTtjb25zdFskLGosRF09KGxlPVc9PW51bGw/dm9pZCAwOldbWF0pIT1udWxsP2xlOlswLDAsMF0sdj0oVStPKSo0O3Vbdl09JCx1W3YrMV09aix1W3YrMl09RCx1W3YrM109MjU1fX1yZXR1cm4gVCE9PTMmJihkPWgpLHt3aWR0aDpjLGhlaWdodDphLGRlbGF5OkUsaW1hZ2VEYXRhOnUuc2xpY2UoMCl9fSl9ZnVuY3Rpb24gTGUobixlLG8pe2NvbnN0e3dyaXRlQnl0ZTppLGdldEN1cnNvcjpsLGNhbGN1bGF0ZURpc3RhbmNlOmN9PW87aShuKTtsZXQgYT1sKCk7aSgwKTtjb25zdCB0PTE8PG4scj10LTEscz10KzE7bGV0IHU9cysxLGQ9bisxLGg9MCxiPTA7ZnVuY3Rpb24gcChTKXtmb3IoO2g+PVM7KWkoYiYyNTUpLGI+Pj04LGgtPTgsYyhhKT09PTI1NiYmKGkoMjU1LGEpLGE9bCgpLGkoMCkpfWZ1bmN0aW9uIGYoUyl7Ynw9Uzw8aCxoKz1kLHAoOCl9bGV0IGc9ZVswXSZyLEM9e30seSx3LG07Zih0KTtmb3IobGV0IFM9ZS5sZW5ndGgsST0xO0k8UzsrK0kpaWYobT1lW0ldJnIseT1nPDw4fG0sdz1DW3ldLHc9PT12b2lkIDApe2ZvcihifD1nPDxoLGgrPWQ7aD49ODspaShiJjI1NSksYj4+PTgsaC09OCxjKGEpPT09MjU2JiYoaSgyNTUsYSksYT1sKCksaSgwKSk7dT09PTQwOTY/KGYodCksdT1zKzEsZD1uKzEsQz17fSk6KHU+PTE8PGQmJisrZCxDW3ldPXUrKyksZz1tfWVsc2UgZz13O2YoZyksZihzKSxwKDEpLGMoYSk9PT0xP2koMCxhKTooaShjKGEpLTEsYSksaSgwKSl9ZnVuY3Rpb24gUmUobj17fSl7Y29uc3R7Y2h1bmtTaXplOmU9NDA5Nn09bjtsZXQgbz1bbmV3IFVpbnQ4QXJyYXkoZSldLGk9MCxsPTA7Y29uc3QgYz0odCxyKT0+e3I/b1tyWzBdXVtyWzFdXT10OihsPj1lJiYob1srK2ldPW5ldyBVaW50OEFycmF5KGUpLGw9MCksb1tpXVtsKytdPXQpfSxhPXQ9PnQuZm9yRWFjaChyPT5jKHIpKTtyZXR1cm57Z2V0Q3Vyc29yOigpPT5baSxsXSxzZXRDdXJzb3I6dD0+e2k9dFswXSxsPXRbMV19LGNhbGN1bGF0ZURpc3RhbmNlOnQ9PmkqZStsLSh0WzBdKmUrdFsxXSksd3JpdGVCeXRlOmMsd3JpdGVCeXRlczphLHdyaXRlU3RyaW5nOnQ9PnQuc3BsaXQoIiIpLmZvckVhY2goKHIscyk9PmModC5jaGFyQ29kZUF0KHMpKSksd3JpdGVVbnNpZ25lZDp0PT5hKFt0JjI1NSx0Pj44JjI1NV0pLGZsdXNoOigpPT57b1tpXT1vW2ldLnNsaWNlKDAsbCk7Y29uc3QgdD1uZXcgVWludDhBcnJheShvLnJlZHVjZSgocyx1KT0+cyt1LmJ5dGVMZW5ndGgsMCkpO2xldCByPTA7cmV0dXJuIG8uZm9yRWFjaChzPT57dC5zZXQocyxyKSxyKz1zLmJ5dGVMZW5ndGh9KSxvPVtuZXcgVWludDhBcnJheShlKV0saT0wLGw9MCx0fX19ZnVuY3Rpb24gemUobil7dmFyIEMseSx3O2NvbnN0IGU9UmUoKSx7d3JpdGVCeXRlOm8sd3JpdGVCeXRlczppLHdyaXRlVW5zaWduZWQ6bCxmbHVzaDpjfT1lLHtsZWZ0OmE9MCx0b3A6dD0wLHdpZHRoOnI9MCxoZWlnaHQ6cz0wLGRlbGF5OnU9MTAwLGNvbG9yVGFibGU6ZH09bjtsZXR7ZGlzcG9zYWw6aD0wfT1uO2NvbnN0IGI9KEM9bi5ncmFwaGljQ29udHJvbCk9PW51bGw/dm9pZCAwOkMudHJhbnNwYXJlbnQ7bGV0IHA9KHc9KHk9bi5ncmFwaGljQ29udHJvbCk9PW51bGw/dm9pZCAwOnkudHJhbnNwYXJlbnRJbmRleCkhPW51bGw/dzoyNTU7aWYoYTwwfHxhPjY1NTM1KXRocm93IG5ldyBFcnJvcigiTGVmdCBpbnZhbGlkLiIpO2lmKHQ8MHx8dD42NTUzNSl0aHJvdyBuZXcgRXJyb3IoIlRvcCBpbnZhbGlkLiIpO2lmKHI8PTB8fHI+NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJXaWR0aCBpbnZhbGlkLiIpO2lmKHM8PTB8fHM+NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJIZWlnaHQgaW52YWxpZC4iKTtsZXQgZj04LGc9ZD9kLmxlbmd0aDowO2lmKGcpe2lmKGc8Mnx8Zz4yNTZ8fGcmZy0xKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2xvciB0YWJsZSBsZW5ndGgsIG11c3QgYmUgcG93ZXIgb2YgMiBhbmQgMiAuLiAyNTYuIik7Zm9yKDtnPj49MTspKytmfXJldHVybiBvKHRlKSxvKG5lKSxvKHJlKSxiP2h8fChoPTIpOnA9MCxvKHBhcnNlSW50KGAwMDAke051bWJlcihoJjcpLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDMsIjAiKX0wJHtiPzE6MH1gLDIpKSxsKHUvMTApLG8ocCksbygwKSxvKGVlKSxsKGEpLGwodCksbChyKSxsKHMpLGQhPW51bGwmJmQubGVuZ3RoPyhvKHBhcnNlSW50KGAxMDAwMCR7KGYtMSkudG9TdHJpbmcoMikucGFkU3RhcnQoMywiMCIpfWAsMikpLGkoZC5mbGF0KCkpKTpvKDApLExlKGYsbi5pbWFnZURhdGEsZSksYygpfWZ1bmN0aW9uIEZlKG4pe2NvbnN0e2ZyYW1lczplLHBhbGV0dGU6byx0cmFuc3BhcmVudEluZGV4Oml9PW4sbD1ZKG8pO3JldHVybiBlLm1hcCgoe2ltYWdlRGF0YTpjfSk9PntsZXQgYT0hMTtjb25zdCB0PW5ldyBVaW50OENsYW1wZWRBcnJheShjLmxlbmd0aC80KTtmb3IobGV0IHI9Yy5sZW5ndGgscz0wO3M8cjtzKz00KWNbcyszXT09PTA/KHRbcy80XT1pLGE9ITApOnRbcy80XT1sKGNbc108PDE2fGNbcysxXTw8OHxjW3MrMl0pO3JldHVybntpbWFnZURhdGE6dCx0cmFuc3BhcmVudDphfX0pfWZ1bmN0aW9uIFdlKG4pe2NvbnN0e2ZyYW1lczplLHRyYW5zcGFyZW50SW5kZXg6b309bjtsZXQgaTtjb25zdCBsPWUubGVuZ3RoO3JldHVybiBlLm1hcCgoYyxhKT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OnIsdHJhbnNwYXJlbnQ6cyxpbWFnZURhdGE6dX09YztsZXQgZD0wLGg9MCxiPXQtMSxwPXItMSxmO2lmKHMpe2Zvcig7aDxwOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKylpZih1W3QqaCttXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7aCsrfWZvcig7cD5oOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKylpZih1W3QqcCttXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7cC0tfWZvcig7ZDxiOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTxwO20rKylpZih1W3QqbStkXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7ZCsrfWZvcig7Yj5kOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTxwO20rKylpZih1W3QqbStiXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7Yi0tfX1lbHNle2lmKGkpe2Zvcig7aDxwOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKyl7Y29uc3QgUz10KmgrbTtpZih1W1NdIT09aVtTXSl7dz0hMTticmVha319aWYoIXcpYnJlYWs7aCsrfWZvcig7cD5oOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKyl7Y29uc3QgUz10KnArbTtpZih1W1NdIT09aVtTXSl7dz0hMTticmVha319aWYoIXcpYnJlYWs7cC0tfWlmKGg9PT1wKWQ9YjtlbHNle2Zvcig7ZDxiOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTw9cDttKyspe2NvbnN0IFM9bSp0K2Q7aWYodVtTXSE9PWlbU10pe3c9ITE7YnJlYWt9fWlmKCF3KWJyZWFrO2QrK31mb3IoO2I+ZDspe2xldCB3PSEwO2ZvcihsZXQgbT1oO208PXA7bSsrKXtjb25zdCBTPW0qdCtiO2lmKHVbU10hPT1pW1NdKXt3PSExO2JyZWFrfX1pZighdylicmVhaztiLS19fX1mPWksaT11fWNvbnN0IGc9YisxLWQsQz1wKzEtaCx5PU5lKHUse2xlZnQ6ZCx0b3A6aCx3aWR0aDpnLGhlaWdodDpDLHJhd1dpZHRoOnQscmF0ZToxLGNhbGxiYWNrOnc9PntpZighcyYmZiYmdVt3XT09PWZbd10pcmV0dXJuIG99fSk7cmV0dXJue2xlZnQ6ZCx0b3A6aCx3aWR0aDpnLGhlaWdodDpDLGRpc3Bvc2FsOnMmJmEhPT1sLTE/MjoxLGltYWdlRGF0YTp5fX0pfWNvbnN0IE49Q2Uoe3NraXBUcmFuc3BhcmVudDohMX0pO3NlbGYub25tZXNzYWdlPW49Pntjb25zdHtpZDplLHR5cGU6byxkYXRhOml9PW4uZGF0YTtpZihvPT09InBhbGV0dGU6YWRkU2FtcGxlIiYmTilyZXR1cm4gTi5hZGRTYW1wbGUoaSksc2VsZi5wb3N0TWVzc2FnZSh7aWQ6ZSx0eXBlOm8sZGF0YTohMH0pO2lmKG89PT0icGFsZXR0ZTpnZW5lcmF0ZSImJk4pe04uZ2VuZXJhdGUoaSk7Y29uc3QgbD1aKHt9LE4uY29udGV4dCk7cmV0dXJuIE4ucmVzZXQoKSxzZWxmLnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6byxkYXRhOmx9KX1pZihvPT09ImZyYW1lczppbmRleCIpe2NvbnN0IGw9RmUoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9aWYobz09PSJmcmFtZXM6Y3JvcCIpe2NvbnN0IGw9V2UoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9aWYobz09PSJmcmFtZTplbmNvZGUiKXtjb25zdCBsPXplKGkpO3JldHVybiBzZWxmLnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6byxkYXRhOmx9LFtsLmJ1ZmZlcl0pfWlmKG89PT0iZnJhbWVzOmRlY29kZSIpe2NvbnN0IGw9WGUoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9fX0pKCk7Cg==",fe=e=>V(exports,null,function*(){const{perFrameTime:t=1e3/24,gif:l,images:s,autoSize:r=!0}=e,c=C({},l),a=[];if(r){const i=(l==null?void 0:l.width)||Math.min(...s.map(p=>p.width)),d=(l==null?void 0:l.height)||Math.min(...s.map(p=>p.height));c.width=i,c.height=d}s.forEach(i=>{a.push({imageData:i,delay:t})});const n=yield Ot({workerUrl:vt,width:c.width||200,height:c.height||200,maxColors:255,frames:a});return new Blob([n],{type:"image/gif"})});function Pt(e){const{attributes:t,data:l}=e;let s=l.remainingTime;switch(l.unit){case"minute":s=60*s;break;case"hour":s=60*60*s;break;case"day":s=60*60*24*s}const{day:r,hour:c,minute:a,second:n}=Se(s),o=[{unit:"days",value:r},{unit:"hrs",value:c},{unit:"mins",value:a},{unit:"secs",value:n}];return m.createElement("div",{style:{color:t.color}},m.createElement("div",null,m.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",paddingBottom:15}},o.map((i,d)=>m.createElement("div",{key:i.unit,style:{display:"flex",alignItems:"center",justifyContent:"center"}},m.createElement("div",{style:{width:50,height:50,lineHeight:"50px",backgroundColor:t["grid-color"],borderRadius:8,display:"flex",alignItems:"center",justifyContent:"center",boxShadow:`0px 4px 13px 4px ${t["shadow-color"]}`,fontSize:24}},m.createElement("div",{style:{height:"100%",overflow:"hidden"}},m.createElement("div",{className:i.unit},i.value))),d!==o.length-1&&m.createElement("div",{key:i.unit,style:{margin:"0px 10px",fontWeight:"bold"}},":")))),m.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",paddingBottom:10}},o.map((i,d)=>m.createElement("div",{key:i.unit,style:{display:"flex",alignItems:"center",justifyContent:"center"}},m.createElement("div",{key:i.unit,style:{width:50,display:"flex",alignItems:"center",justifyContent:"center",textTransform:"uppercase",fontSize:14,textAlign:"center"}},i.unit),d!==o.length-1&&m.createElement("div",{style:{margin:"0px 10px",fontWeight:"bold",visibility:"hidden"}},":"))))))}const J={MARKETING_SHOPWINDOW:"marketing-shopwindow",MARKETING_COUNTDOWN:"marketing-countdown"},{Image:Qt,Raw:Ut,Spacer:Jt,ContentEditableBlock:Ft,HtmlDomNode:We}=x.components,ie={attributes:{color:"#ffffff","padding-top":"20px","padding-bottom":"20px","padding-left":"0px","padding-right":"0px","background-color":"#1A1F25","grid-color":"#12304b","shadow-color":"#000000",src:"https://d3k81ch9hvuctc.cloudfront.net/company/S7EvMw/images/29140463-2f83-49ea-922d-ac65063642cd.gif"},data:{remainingTime:24,unit:"hour"}},ae=x.createCustomBlock({get name(){return x.t("Countdown")},defaultData:ie,void:!0,type:J.MARKETING_COUNTDOWN,create:e=>{const t={type:J.MARKETING_COUNTDOWN,data:C({},ie.data),attributes:C({},ie.attributes),children:[{type:"text",data:{},attributes:{color:"#ffffff","font-size":"32px",align:"center"},children:[{text:"SUMMER SALE"}]},{type:"text",data:{},attributes:{color:"#ffffff","font-size":"64px",align:"center"},children:[{text:"50% OFF",italic:!0}]}]};return x.mergeBlock(t,e)},category:x.ElementCategory.UNKNOWN_CONTENT,render(e){const{node:t,mode:l}=e,{attributes:s,children:r}=t;if(l==="testing"){const c=Oe.renderToString(m.createElement(Pt,{attributes:t.attributes,data:t.data}));return m.createElement(We,{tagName:"div",style:{backgroundColor:s["background-color"],paddingBottom:s["padding-bottom"],paddingTop:s["padding-top"],paddingLeft:s["padding-left"],paddingRight:s["padding-right"],fontSize:"0px",lineHeight:1}},m.createElement(We,{tagName:"div",style:{width:"100%",textAlign:"center",display:"table"}},r.map((a,n)=>x.NodeUtils.isTextElement(a)?m.createElement(Ft,{key:n,node:a}):null),m.createElement(Jt,{height:"20px"}),m.createElement(Ut,null,c)))}return m.createElement(Qt,z(C({idx:e.idx},e.node.attributes),{children:t.children}))}}),Rt=({nodePath:e})=>m.createElement(w.AttributesPanelWrapper,null,m.createElement(w.ResponsiveTabs,{desktop:m.createElement(Ye,{mode:I.ActiveTabKeys.DESKTOP,nodePath:e}),mobile:m.createElement(Ye,{mode:I.ActiveTabKeys.MOBILE,nodePath:e})}));function Ye({nodePath:e,mode:t}){const l=ye.useSlate(),{onUpload:s}=I.useEditorProps(),{setFieldValue:r}=w.useEditorForm(),{selectedNode:c}=I.useSelectedNode(),{setLock:a}=I.useEditorState(),[n,o]=m.useState(!1),i=m.useRef();i.current||(i.current=L.cloneDeep(c)),m.useEffect(()=>{L.isEqual(i.current,c)?a(!1):a(!0)},[c,a]);const d=()=>V(this,null,function*(){if(c)try{o(!0);const p=ye.ReactEditor.toDOMNode(l,c),u=[],y=c.data;let M=y.remainingTime;switch(y.unit){case"minute":M=60*M;break;case"hour":M=60*60*M;break;case"day":M=60*60*24*M}const b=60*2;for(let g=0;g<b;g++){const{day:Z,hour:N,minute:G,second:S}=Se(M-=1),E=yield qe(p,{wrapper(_){const K=document.createElement("table");return K.style.width="100%",K.border="0",K.cellPadding="0",K.cellSpacing="0",K.role="presentation",K.style.verticalAlign="top",K.appendChild(_),K},styleText:"td {padding: 0px};",overwrite:[{selector:".days",innerText:Z},{selector:".hrs",innerText:N},{selector:".mins",innerText:G},{selector:".secs",innerText:S}]}),$=yield Re(E);u.push($)}const h=yield fe({images:u,perFrameTime:1e3}),T=yield s==null?void 0:s(new File([h],"countdown.gif"));r(e,t===I.ActiveTabKeys.DESKTOP?"attributes.src":"mobileAttributes.src",T);const Y=L.cloneDeep(c);L.set(Y,t===I.ActiveTabKeys.DESKTOP?"attributes.src":"mobileAttributes.src",T),i.current=Y}catch(p){console.error(p),D.Message.error(String(p))}finally{o(!1)}});return c?m.createElement(w.CollapseWrapper,{defaultActiveKey:["0","1","2","3"]},m.createElement(D.Collapse.Item,{name:"0",header:x.t("Image"),extra:m.createElement(D.Button,{loading:n,type:"primary",onClick:d},x.t("Save as gif"))},m.createElement(w.ResponsiveField,{component:w.AttributeField.ImageUrl,path:e,name:"src",formItem:{layout:"vertical"},hideInput:!0})),m.createElement(D.Collapse.Item,{name:"3",header:x.t("Settings")},m.createElement(D.Grid.Row,null,m.createElement(D.Grid.Col,{span:14,style:{textAlign:"right"}},m.createElement(w.AttributeField.NumberField,{name:"data.remainingTime",path:e,label:x.t("Remaining Time"),formItem:{labelCol:{span:14,offset:0},wrapperCol:{span:10}}})),m.createElement(D.Grid.Col,{span:10},m.createElement(w.AttributeField.SelectField,{name:"data.unit",path:e,label:"",options:[{label:x.t("Day"),value:"day"},{label:x.t("Hour"),value:"hour"},{label:x.t("Minute"),value:"minute"},{label:x.t("Second"),value:"second"}]})))),m.createElement(D.Collapse.Item,{name:"1",header:x.t("Colors")},m.createElement(w.ResponsiveField,{component:w.AttributeField.ColorPickerField,path:e,name:"color",label:x.t("Text color")}),m.createElement(w.AttributeField.SyncChildrenField,{path:e,mode:t,name:"color",childrenFieldName:"color"}),m.createElement(w.ResponsiveField,{component:w.AttributeField.ColorPickerField,path:e,name:"shadow-color",label:x.t("Shadow color")}),m.createElement(w.ResponsiveField,{component:w.AttributeField.ColorPickerField,path:e,name:"grid-color",label:x.t("Grid color")}),m.createElement(w.ResponsiveField,{component:w.AttributeField.ColorPickerField,path:e,name:"background-color",label:x.t("Background color")})),m.createElement(D.Collapse.Item,{contentStyle:{padding:"28px 13px 8px 13px"},name:"2",header:x.t("Dimension")},m.createElement(w.ResponsiveField,{component:w.AttributeField.Padding,path:e,name:""}))):null}class Ht extends x.ElementPlugin{generateElement(){x.BlockManager.registerBlocks([ae]),L.set(w.ConfigPanelsMap,ae.type,Rt)}}const{Image:At}=x.components,Le={attributes:{align:"center",border:"0",height:"auto","padding-top":"0px","padding-bottom":"0px","padding-left":"0px","padding-right":"0px","border-width":"1px","border-style":"solid","border-color":"#AAAAAA","border-radius":"0px",target:"_blank"},data:{list:[{src:"https://res.cloudinary.com/djnkpbshx/image/upload/v1688116393/easy-email-pro/jwfkjrlq8izkekcx7ad9.png"},{src:"https://res.cloudinary.com/djnkpbshx/image/upload/v1688116371/easy-email-pro/as41p2ahhff377y8c9s8.png"},{src:"https://res.cloudinary.com/djnkpbshx/image/upload/v1688116331/easy-email-pro/mrzhiom54uhmxu5fqfs8.png"}]}},de=x.createCustomBlock({get name(){return x.t("Shopwindow")},defaultData:Le,void:!0,type:J.MARKETING_SHOPWINDOW,create:e=>{const t={type:J.MARKETING_SHOPWINDOW,data:C({},Le.data),attributes:{src:"https://res.cloudinary.com/djnkpbshx/image/upload/v1688116417/easy-email-pro/gsdrahrenerqzrdnihsv.gif"},children:[]};return x.mergeBlock(t,e)},category:x.ElementCategory.IMAGE,render(e){const{node:t}=e,o=t.attributes,{"border-enabled":l,"border-width":s,"border-style":r,"border-color":c}=o,a=pe(o,["border-enabled","border-width","border-style","border-color"]),n=l?`${s||"1px"} ${r||"solid"} ${c||"#AAAAAA"}`:"";return m.createElement(At,z(C({idx:e.idx},a),{data:t.data,border:n,children:t.children}))}}),Bt={formatter(e){return!!e},normalize(e){return e?"true":void 0}},qt=({nodePath:e})=>m.createElement(w.AttributesPanelWrapper,null,m.createElement(w.ResponsiveTabs,{desktop:m.createElement(Ge,{mode:I.ActiveTabKeys.DESKTOP,nodePath:e}),mobile:m.createElement(Ge,{mode:I.ActiveTabKeys.MOBILE,nodePath:e})}));function Ge({nodePath:e,mode:t}){const{onUpload:l}=I.useEditorProps(),{setFieldValue:s}=w.useEditorForm(),{selectedNode:r}=I.useSelectedNode(),{setLock:c}=I.useEditorState(),[a,n]=m.useState(!1),o=m.useRef();o.current||(o.current=L.cloneDeep(r)),m.useEffect(()=>{var d;L.isEqual((d=o.current)==null?void 0:d.data.list,r==null?void 0:r.data.list)?c(!1):c(!0)},[r,c]);const i=()=>V(this,null,function*(){if(r)try{n(!0);const d=yield Promise.all(r.data.list.filter(M=>M.src).map(M=>w.previewLoadImage(M.src))),p=yield fe({images:d,perFrameTime:1e3}),u=yield l==null?void 0:l(new File([p],"shopwindow.gif"));s(e,t===I.ActiveTabKeys.DESKTOP?"attributes.src":"mobileAttributes.src",u);const y=L.cloneDeep(r);L.set(y,t===I.ActiveTabKeys.DESKTOP?"attributes.src":"mobileAttributes.src",u),o.current=y}catch(d){console.error(d),D.Message.error(String(d))}finally{n(!1)}});return r?m.createElement(w.CollapseWrapper,{defaultActiveKey:["0","1","2","3"]},m.createElement(D.Collapse.Item,{name:"3",header:x.t("Image"),extra:m.createElement(D.Button,{loading:a,type:"primary",onClick:i},x.t("Save as gif"))},m.createElement(w.AttributeField.EditPanelTabsField,{path:e,tabPosition:"top",name:"data.list",label:"",renderItem:(d,p)=>m.createElement($t,{index:p,path:e}),renderHeader:(d,p)=>d.content||x.t("Image")+" "+(p+1)})),m.createElement(D.Collapse.Item,{name:"1",header:x.t("Image settings")},m.createElement(w.ResponsiveField,{component:w.AttributeField.TextField,path:e,name:"href",label:x.t("Link address")}),m.createElement(w.ResponsiveField,{component:w.AttributeField.TextField,path:e,name:"alt",label:x.t("Alt text"),placeholder:x.t("Brief description of your image")}),m.createElement(w.ResponsiveField,{component:w.AttributeField.SwitchField,path:e,name:"fluid-on-mobile",label:x.t("Full width on mobile"),formItem:Bt})),m.createElement(D.Collapse.Item,{name:"0",header:x.t("Dimension")},m.createElement(w.ResponsiveField,{component:w.AttributeField.ImageWidth,path:e,name:"width"}),m.createElement(w.ResponsiveField,{component:w.AttributeField.Height,path:e,name:"height"}),m.createElement(w.ResponsiveField,{component:w.AttributeField.Padding,path:e,name:""})),m.createElement(D.Collapse.Item,{name:"2",header:x.t("Border")},m.createElement(w.ResponsiveField,{component:w.AttributeField.Border,path:e,name:""})),m.createElement(D.Collapse.Item,{name:"4",header:x.t("Block")},m.createElement(w.ResponsiveField,{component:w.AttributeField.BackgroundColor,path:e,name:"container-background-color"}),m.createElement(w.ResponsiveField,{component:w.AttributeField.TextAlign,path:e,name:"align",label:x.t("Align")}))):null}function $t({index:e,path:t}){return m.createElement("div",{style:{paddingTop:20}},m.createElement(w.AttributeField.ImageUrl,{path:t,name:`data.list.[${e}].src`}))}class _t extends x.ElementPlugin{generateElement(){x.BlockManager.registerBlocks([de]),L.set(w.ConfigPanelsMap,de.type,qt)}}exports.Countdown=Ht;exports.MarketingCountdown=ae;exports.MarketingShopwindow=de;exports.MarketingType=J;exports.Responsive=Fe;exports.Shopwindow=_t;
|