@spiffcommerce/core 26.7.4 → 26.7.6

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/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Q=require("@apollo/client/core"),Un=require("@apollo/client/link/context"),Gn=require("@apollo/client/link/error"),Tn=require("preact-render-to-string"),Jn=require("@apollo/client/link/remove-typename"),Ln=require("exifr/dist/mini.umd.cjs"),na=require("css"),On=require("fuse.js"),cA=require("pith"),xt=require("lodash.clonedeep"),ia=require("qrcode"),lA=require("svg-path-bbox"),je=require("opentype.js"),S=require("preact/jsx-runtime"),zn=require("data-uri-to-buffer"),JA=require("lodash.chunk"),sa=require("lodash.isequal"),Ve=require("unicode-default-word-boundary"),oa=require("lodash.debounce");var Kt=(n=>(n.Data="Data",n.Font="Font",n.Frame="Frame",n.Illustration="Illustration",n.Image="Image",n.Model="Model",n.Material="Material",n.Color="Color",n.QuestionnaireCollateral="QuestionnaireCollateral",n.RequestCollateral="RequestCollateral",n.SignupCollateral="SignupCollateral",n.Video="Video",n.ColorProfile="ColorProfile",n.Environment="Environment",n))(Kt||{}),et=(n=>(n.FileUpload="FileUpload",n.Option="Option",n.ColorOption="ColorOption",n.Text="Text",n))(et||{}),M=(n=>(n.Information="Information",n.Bulk="Bulk",n.DigitalContent="DigitalContent",n.Finish="Finish",n.Frame="Frame",n.Illustration="Illustration",n.Introduction="Introduction",n.Material="Material",n.Model="Model",n.Module="Module",n.Picture="Picture",n.Photo="Photo",n.ProductOverlay="ProductOverlay",n.Question="Question",n.Shape="Shape",n.SilentIllustration="SilentIllustration",n.Text="Text",n))(M||{}),ra=(n=>(n.Color="Color",n.Colors="Colors",n.Selection="Selection",n.Selections="Selections",n.Text="Text",n.Upload="Upload",n))(ra||{}),Pt=(n=>(n.ThreeD="ThreeD",n.FreeDesign="FreeDesign",n.Print="Print",n))(Pt||{}),N=(n=>(n.Frame="frame",n.Group="group",n.Image="image",n.Pattern="pattern",n.Illustration="illustration",n.Textbox="textbox",n))(N||{}),ca=(n=>(n.Hyperlink="Hyperlink",n.Edit="Edit",n.Approve="Approve",n))(ca||{}),la=(n=>(n.Hub="Hub",n.Shopify="Shopify",n))(la||{}),Qe=(n=>(n.BackgroundRemover="BackgroundRemover",n.ConversionAccelerator="Conversion Accelerator",n.ProcessBuilder="ProcessBuilder",n))(Qe||{}),ga=(n=>(n[n.Orbit=0]="Orbit",n[n.Pan=1]="Pan",n))(ga||{}),da=(n=>(n.Manual="Manual",n.OnStart="OnStart",n.OnQuit="OnQuit",n.OnEnd="OnEnd",n))(da||{}),Ba=(n=>(n.Email="Email",n.FirstName="FirstName",n.LastName="LastName",n.Phone="Phone",n))(Ba||{}),Wt=(n=>(n.Owner="Owner",n.Approver="Approver",n.Editor="Editor",n.Viewer="Viewer",n))(Wt||{}),pt=(n=>(n.Autosize="Autosize",n.Traditional="Traditional",n))(pt||{}),K=(n=>(n[n.North=0]="North",n[n.Northeast=1]="Northeast",n[n.East=2]="East",n[n.Southeast=3]="Southeast",n[n.South=4]="South",n[n.Southwest=5]="Southwest",n[n.West=6]="West",n[n.Northwest=7]="Northwest",n))(K||{}),ha=(n=>(n.Pixel="px",n.Millimeter="mm",n.Centimeter="cm",n))(ha||{});class Ca extends Error{constructor(t){super(t),this.name=this.constructor.name}}class _t extends Ca{constructor(t){super(`ConfigurationError - ${t}`)}}class Xt extends _t{constructor(t){super(`Option not Configured: ${t.stepTitle}`),this.optionId=(t==null?void 0:t.optionId)||"N/A"}}class X extends _t{constructor(t){super(`Panel not Found: ${t.panelId}`),this.panelId=(t==null?void 0:t.panelId)||"N/A"}}class Bt extends _t{constructor(t){super(`Asset not found for variant: ${t.name}`),this.variant=t}}class vt extends _t{constructor(t){super(`Resource not found for asset: ${t.name}`),this.asset=t}}class qt extends _t{constructor(t,e){super(`Workflow Misconfiguration: ${t.stepName} - ${e}`),this.step=t}}class pe extends Ca{constructor(t){super(`ImplementationError - ${t}`)}}class L extends pe{constructor(t){super(`Unhandled Behavior Encountered: ${t}`)}}class mt extends pe{constructor(t){super(`Parsing Error: ${t}`)}}class lt extends pe{constructor(t){super(`Client Error: ${t}`)}}class Ie extends pe{constructor(t){super(`Resource Generation Failed: ${t}`)}}class jn{get(t){return localStorage.getItem(t)||void 0}set(t,e){localStorage.setItem(t,e)}remove(t){localStorage.removeItem(t)}getMap(t){const e=this.get(t);if(e)return new Map(JSON.parse(e))}setMap(t,e){const A=JSON.stringify([...e.entries()]);this.set(t,A)}}class LA{constructor(){this.storage=new Map}get(t){return this.storage.get(t)||void 0}set(t,e){this.storage.set(t,e)}remove(t){this.storage.delete(t)}getMap(t){const e=this.get(t);if(e)return new Map(JSON.parse(e))}setMap(t,e){const A=JSON.stringify([...e.entries()]);this.set(t,A)}}const Vn=()=>{try{return localStorage?new jn:new LA}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new LA}},k=Vn();class Kn{constructor(){this.defaultServerUrl="https://api.au.spiffcommerce.com",this.defaultServicesApiUrl="https://services.au.spiffcommerce.com",this.defaultHubUrl="https://hub.au.spiffcommerce.com",this.serverUrl=this.defaultServerUrl,this.servicesApiUrl=this.defaultServicesApiUrl,this.hubUrl=this.defaultHubUrl,this.serverUrlCallbacks=[]}getServerUrl(){return this.serverUrl}getServicesApiUrl(){return this.servicesApiUrl}getHubUrl(){return this.hubUrl}setServerUrl(t){this.serverUrl=t,this.serverUrlCallbacks.forEach(e=>e())}setServicesApiUrl(t){this.servicesApiUrl=t}setHubUrl(t){this.hubUrl=t}addServerUrlCallback(t){this.serverUrlCallbacks.push(t)}}const dt=new Kn;let Ke,We;function Wn(n){Ke=n}function Xn(n){We=n}function te(){return Ke?new Ke().window:(console.log("DOM constructor is not registered. Assuming browser environment. If not, please register DOM constructor before calling this function."),window)}function ot(n,t){if(!We){if(typeof window<"u"&&window.fetch)return window.fetch(n,t);if(typeof global<"u"&&global.fetch)return global.fetch(n,t);throw new Error("Fetch implementation is not registered. Please register it before calling this function.")}return We(n,t)}const ua=new Map,OA=new Map,zA=new Map,wa=async n=>{const t=OA.get(n);if(t)return t;const A=(async()=>{var i;const a=await ot(n);return ua.set(n,((i=a.headers)==null?void 0:i.get("content-type"))||""),await a.arrayBuffer()})();return OA.set(n,A),A},qn=async n=>{const t=zA.get(n);if(t)return t;const A=(async()=>await(await ot(n)).text())();return zA.set(n,A),A},Rt=n=>n.every(t=>t!=="undefined"),ce=n=>Rt([typeof document])?document.createElement(n):te().document.createElement(n),Zn=(n,t)=>{if(Rt([typeof document]))return document.createElementNS(n,t);const A=te().document.createElement(t);return A.setAttribute("xmlns",n),A},it=()=>{if(Rt([typeof DOMParser]))return new DOMParser;const n=te();return new n.DOMParser},$n=()=>Rt([typeof DOMParser])?DOMParser:te().DOMParser,De=(n,t)=>new Promise((e,A)=>{t?wa(n).then(e).catch(A):ot(n).then(a=>{a.arrayBuffer().then(e).catch(A)}).catch(a=>{A(a)})}),_=(n,t)=>new Promise((e,A)=>{t?qn(n).then(e).catch(A):ot(n).then(a=>{a.text().then(e).catch(A)}).catch(A)}),Ea=n=>Tn.renderToStaticMarkup(n),ke=new Map,_n=async(n,t)=>{if(Rt([typeof FontFace])){if(ke.has(t))return ke.get(t);const e=n.names.fullName.en,A=new FontFace(e,`url(${t})`);document.fonts.add(A);const a=A.load();return ke.set(t,a),a}},wt=()=>{if(Rt([typeof XMLSerializer]))return new XMLSerializer;const n=te();return new n.XMLSerializer},jA=n=>btoa(n),ee=n=>{function t(){const A=new Uint8Array(n),a=4;if(A.length>=a){const i=new Array(a);for(let r=0;r<a;r++)i[r]=new Uint8Array(n)[r].toString(16);const s=i.join("").toUpperCase();switch(s){case"89504E47":return"image/png";case"47494638":return"image/gif";case"25504446":return"application/pdf";case"504B0304":return"application/zip"}switch(s.slice(0,4)){case"FFD8":return"image/jpeg"}}return null}const e=t();return e||"image/svg+xml"},ti=async n=>{const t=await wa(n),e=ua.get(n)||ee(t);return await ai(new Blob([t],{type:e}))},ei=n=>{let t="";const e=n.byteLength;for(let A=0;A<e;A++)t+=String.fromCharCode(n[A]);return t},Ai=async n=>{const t=ee(n),e=new Uint8Array(n),A=ei(e),a=btoa(A);return`data:${t};base64,${a}`},gA=n=>`data:image/svg+xml;base64,${btoa(n)}`,ma=n=>{const t=n.replace(/\r?\n/g,""),e=t.indexOf(",");if(e===-1||e<=4)throw new TypeError("malformed data: URI");const A=t.substring(5,e).split(";");let a=!1;for(let s=1;s<A.length;s++)A[s]==="base64"&&(a=!0);const i=decodeURI(t.substring(e+1));return a?new Uint8Array(atob(i).split("").map(o=>o.charCodeAt(0))).buffer:new Uint8Array(i.split("").map(o=>o.charCodeAt(0))).buffer},ai=n=>new Promise((t,e)=>{const A=new FileReader;A.onload=function(a){const i=a.target;!i||!i.result?e():t(i.result.toString())},A.readAsDataURL(n)});let fa;const VA=n=>{fa=n};let dA;const ni=n=>{dA=n},ii=()=>dA;let Qa;const pa=n=>{Qa=n},si=()=>new Promise(n=>{const t=dt.getHubUrl(),e=A=>{A.origin===t&&(window.removeEventListener("message",e),n(A.data))};window.parent!==window&&(window.addEventListener("message",e,!1),window.parent.postMessage("ready",t))}),oi=async()=>{const n={applicationKey:dA,customerToken:fa,bearer:Qa};return typeof window<"u"&&(window.location.href.includes("/workflows/product/")||window.location.href.includes("hub=true"))?{...await si(),...n}:n};class ri{constructor(){this.shadowGraphqlClient=this.constructShadowGraphqlClient(),dt.addServerUrlCallback(()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()})}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const t=Q.createHttpLink({uri:`${dt.getServerUrl()}/graphql`,fetch:ot}),e=Un.setContext(async(i,s)=>{const{headers:o}=s,r=o||{},c=await oi(),l=s.bearer??c.bearer,g=s.partnerId??c.partnerId,d=s.activeIntegration??c.activeIntegration,B=s.transactionOwnerId,h=s.customerToken??c.customerToken,C=s.applicationKey??c.applicationKey,u=s.bundleOwnerId;try{if(window&&window.__SENTRY__){const w=window.__SENTRY__.hub;if(w){const E=w.traceHeaders();Object.entries(E).forEach(([m,f])=>{r[m]=f})}}}catch{}return l&&(r.Authorization=`Bearer ${l}`),g&&(r.partnerId=g),d&&(r.activeIntegration=d),B&&(r.transactionOwnerId=B),h&&(r.customerToken=h),C&&(r["X-Application-Key"]=C),u&&(r.bundleOwnerId=u),{headers:r}}),A=Gn.onError(({operation:i,graphQLErrors:s,networkError:o})=>{const r=s||[];o&&console.log("GraphQL Network error"),r.forEach(()=>console.log("GraphQL Error: "+i.operationName))}),a=Jn.removeTypenameFromVariables();return new Q.ApolloClient({link:Q.from([a,A,e,t]),cache:new Q.InMemoryCache,name:"Core"})}}const y=new ri;let Xe,qe;const ht=(n,t,e)=>{if(Xe!==void 0)return Xe(n,t,e);try{const A=Ia(!0);return BA(A),A.createCanvas(n,t,e)}catch{throw new Error("Canvas module not set")}},Ae=(n,t)=>{if(qe!==void 0)return qe(n,t);try{const e=Ia(!0);return BA(e),e.loadImage(n,t)}catch{throw new Error("Canvas module not set")}};function BA(n){Xe=n==null?void 0:n.createCanvas,qe=n==null?void 0:n.loadImage}function Ia(n){try{if(document.createElement("canvas").getContext("2d"))return{createCanvas:(e,A,a)=>{const i=document.createElement("canvas");return e!=null&&(i.width=e),A!=null&&(i.height=A),i},loadImage:(e,A)=>new Promise((a,i)=>{const s=document.createElement("img");A!==!1&&(s.crossOrigin="Anonymous"),s.onload=()=>{a(s)},s.onerror=i,s.src=e})}}catch(t){if(n)throw t}}let Ne;function hA(){return Ne===void 0&&(Ne=$n()),Ne}let le=null;const ci=n=>new Promise(t=>{if(ee(n)!=="image/jpeg")return t(1);Ln.orientation(n).then(A=>t(A||1)).catch(()=>t(1))}),li=async()=>{if(le!==null)return!le;const t=await Ae("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/xABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAAAAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQvoP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXwH/9k=");return le=t.width===2&&t.height===3,!le},gi=n=>{const e=n.naturalWidth/n.naturalHeight;return n.naturalHeight<=8192&&n.naturalWidth<=8192?[n.naturalWidth,n.naturalHeight]:n.naturalHeight>n.naturalWidth?[e*8192,8192]:[8192,8192/e]},di=async n=>{var g;const t=await Ai(n),e=await Ae(t),[A,a]=gi(e);if(!await li()){const d=ht(A,a);return(g=d.getContext("2d"))==null||g.drawImage(e,0,0,A,a),d}const s=await ci(n),[o,r]=s>4?[a,A]:[A,a],c=ht(o,r),l=c.getContext("2d");switch(s){case 2:l.translate(o,0),l.scale(-1,1);break;case 3:l.translate(o,r),l.rotate(Math.PI);break;case 4:l.translate(0,r),l.scale(1,-1);break;case 5:l.rotate(-.5*Math.PI),l.scale(-1,1);break;case 6:l.rotate(-.5*Math.PI),l.translate(-o,0);break;case 7:l.rotate(-.5*Math.PI),l.translate(-o,r),l.scale(1,-1);break;case 8:l.rotate(.5*Math.PI),l.translate(0,-r);break}return l.drawImage(e,0,0,o,r),c},ae=async n=>{const t=await di(n);return ee(n)==="image/jpeg"?{dataUrl:t.toDataURL("image/jpeg",1),height:t.height,width:t.width}:{dataUrl:t.toDataURL(),height:t.height,width:t.width}},Zt=["Yellow C","Yellow 012 C","Orange 021 C","Warm Red C","Red 032 C","Rubine Red C","Rhodamine Red C","Purple C","Violet C","Blue 072 C","Reflex Blue C","Process Blue C","Green C","Black C","Yellow 0131 C","Red 0331 C","Magenta 0521 C","Violet 0631 C","Blue 0821 C","Green 0921 C","Black 0961 C","801 C","802 C","803 C","804 C","805 C","806 C","807 C","871 C","872 C","873 C","874 C","875 C","876 C","877 C","Medium Yellow C","Bright Orange C","Bright Red C","Strong Red C","Pink C","Medium Purple C","Dark Blue C","Medium Blue C","Bright Green C","Neutral Black C","100 C","101 C","102 C","103 C","104 C","105 C","7401 C","7402 C","7403 C","7404 C","7405 C","7406 C","7407 C","106 C","107 C","108 C","109 C","110 C","111 C","112 C","113 C","114 C","115 C","116 C","117 C","118 C","119 C","127 C","128 C","129 C","130 C","131 C","132 C","133 C","1205 C","1215 C","1225 C","1235 C","1245 C","1255 C","1265 C","120 C","121 C","122 C","123 C","124 C","125 C","126 C","7548 C","7549 C","7550 C","7551 C","7552 C","7553 C","7554 C","7555 C","7556 C","7557 C","7558 C","7559 C","7560 C","7561 C","134 C","135 C","136 C","137 C","138 C","139 C","140 C","1345 C","1355 C","1365 C","1375 C","1385 C","1395 C","1405 C","141 C","142 C","143 C","144 C","145 C","146 C","147 C","7408 C","7409 C","7410 C","7411 C","7412 C","7413 C","7414 C","7562 C","7563 C","7564 C","7565 C","7566 C","7567 C","7568 C","7569 C","7570 C","7571 C","7572 C","7573 C","7574 C","7575 C","712 C","713 C","714 C","715 C","716 C","717 C","718 C","148 C","149 C","150 C","151 C","152 C","153 C","154 C","155 C","156 C","157 C","158 C","159 C","160 C","161 C","1485 C","1495 C","1505 C","1525 C","1535 C","1545 C","1555 C","1565 C","1575 C","1585 C","1595 C","1605 C","1615 C","162 C","163 C","164 C","165 C","166 C","167 C","168 C","7576 C","7577 C","7578 C","7579 C","7580 C","7581 C","7582 C","1625 C","1635 C","1645 C","1655 C","1665 C","1675 C","1685 C","169 C","170 C","171 C","172 C","173 C","174 C","175 C","7583 C","7584 C","7585 C","7586 C","7587 C","7588 C","7589 C","7590 C","7591 C","7592 C","7593 C","7594 C","7595 C","7596 C","7597 C","7598 C","7599 C","7600 C","7601 C","7602 C","7603 C","7604 C","7605 C","7606 C","7607 C","7608 C","7609 C","7610 C","7611 C","7612 C","7613 C","7614 C","7615 C","7616 C","7617 C","7520 C","7521 C","7522 C","7523 C","7524 C","7525 C","7526 C","489 C","488 C","487 C","486 C","485 C","484 C","483 C","176 C","177 C","178 C","179 C","180 C","181 C","1765 C","1775 C","1785 C","1788 C","1795 C","1805 C","1815 C","1767 C","1777 C","1787 C","1797 C","1807 C","1817 C","7618 C","7619 C","7620 C","7621 C","7622 C","7623 C","7624 C","7625 C","7626 C","7627 C","7628 C","7629 C","7630 C","7631 C","7415 C","7416 C","7417 C","7418 C","7419 C","7420 C","7421 C","182 C","183 C","184 C","185 C","186 C","187 C","188 C","196 C","197 C","198 C","199 C","200 C","201 C","202 C","189 C","190 C","191 C","192 C","193 C","194 C","195 C","1895 C","1905 C","1915 C","1925 C","1935 C","1945 C","1955 C","705 C","706 C","707 C","708 C","709 C","710 C","711 C","698 C","699 C","700 C","701 C","702 C","703 C","704 C","203 C","204 C","205 C","206 C","207 C","208 C","209 C","210 C","211 C","212 C","213 C","214 C","215 C","216 C","7422 C","7423 C","7424 C","7425 C","7426 C","7427 C","7428 C","7632 C","7633 C","7634 C","7635 C","7636 C","7637 C","7638 C","217 C","218 C","219 C","220 C","221 C","222 C","7639 C","7640 C","7641 C","7642 C","7643 C","7644 C","7645 C","223 C","224 C","225 C","226 C","227 C","228 C","229 C","230 C","231 C","232 C","233 C","234 C","235 C","670 C","671 C","672 C","673 C","674 C","675 C","676 C","677 C","678 C","679 C","680 C","681 C","682 C","683 C","684 C","685 C","686 C","687 C","688 C","689 C","690 C","510 C","509 C","508 C","507 C","506 C","505 C","504 C","7429 C","7430 C","7431 C","7432 C","7433 C","7434 C","7435 C","691 C","692 C","693 C","694 C","695 C","696 C","697 C","496 C","495 C","494 C","493 C","492 C","491 C","490 C","503 C","502 C","501 C","500 C","499 C","498 C","497 C","5035 C","5025 C","5015 C","5005 C","4995 C","4985 C","4975 C","236 C","237 C","238 C","239 C","240 C","241 C","242 C","2365 C","2375 C","2385 C","2395 C","2405 C","2415 C","2425 C","243 C","244 C","245 C","246 C","247 C","248 C","249 C","7646 C","7647 C","7648 C","7649 C","7650 C","7651 C","7652 C","250 C","251 C","252 C","253 C","254 C","255 C","517 C","516 C","515 C","514 C","513 C","512 C","511 C","7436 C","7437 C","7438 C","7439 C","7440 C","7441 C","7442 C","2562 C","2572 C","2582 C","2592 C","2602 C","2612 C","2622 C","7653 C","7654 C","7655 C","7656 C","7657 C","7658 C","7659 C","524 C","523 C","522 C","521 C","520 C","519 C","518 C","5245 C","5235 C","5225 C","5215 C","5205 C","5195 C","5185 C","5175 C","5165 C","5155 C","5145 C","5135 C","5125 C","5115 C","531 C","530 C","529 C","528 C","527 C","526 C","525 C","256 C","257 C","258 C","259 C","260 C","261 C","262 C","2563 C","2573 C","2583 C","2593 C","2603 C","2613 C","2623 C","7660 C","7661 C","7662 C","7663 C","7664 C","7665 C","7666 C","2567 C","2577 C","2587 C","2597 C","2607 C","2617 C","2627 C","263 C","264 C","265 C","266 C","267 C","268 C","269 C","2635 C","2645 C","2655 C","2665 C","2685 C","2695 C","270 C","271 C","272 C","273 C","274 C","275 C","276 C","2705 C","2715 C","2725 C","2735 C","2745 C","2755 C","2765 C","7667 C","7668 C","7669 C","7670 C","7671 C","7672 C","7673 C","7443 C","7444 C","7445 C","7446 C","7447 C","7448 C","7449 C","7674 C","7675 C","7676 C","7677 C","7678 C","7679 C","7680 C","663 C","664 C","665 C","666 C","667 C","668 C","669 C","5315 C","5305 C","5295 C","5285 C","5275 C","5265 C","5255 C","538 C","537 C","536 C","535 C","534 C","533 C","532 C","7541 C","7542 C","7543 C","7544 C","7545 C","7546 C","7547 C","552 C","551 C","550 C","549 C","548 C","547 C","546 C","5455 C","5445 C","5435 C","5425 C","5415 C","5405 C","5395 C","642 C","643 C","644 C","645 C","646 C","647 C","648 C","649 C","650 C","651 C","652 C","653 C","654 C","655 C","656 C","657 C","658 C","659 C","660 C","661 C","662 C","7450 C","7451 C","7452 C","7453 C","7454 C","7455 C","7456 C","2706 C","2716 C","2726 C","2736 C","2746 C","2756 C","2766 C","2708 C","2718 C","2728 C","2738 C","2748 C","2758 C","2768 C","2707 C","2717 C","2727 C","2747 C","2757 C","2767 C","277 C","278 C","279 C","280 C","281 C","282 C","283 C","284 C","285 C","286 C","287 C","288 C","289 C","7681 C","7682 C","7683 C","7684 C","7685 C","7686 C","7687 C","545 C","544 C","543 C","542 C","541 C","540 C","539 C","290 C","291 C","292 C","293 C","294 C","295 C","296 C","2905 C","2915 C","2925 C","2935 C","2945 C","2955 C","2965 C","297 C","298 C","299 C","300 C","301 C","302 C","303 C","7688 C","7689 C","7690 C","7691 C","7692 C","7693 C","7694 C","2975 C","2985 C","2995 C","3005 C","3015 C","3025 C","3035 C","7695 C","7696 C","7697 C","7698 C","7699 C","7700 C","7701 C","7457 C","7458 C","7459 C","7460 C","7461 C","7462 C","7463 C","304 C","305 C","306 C","307 C","308 C","309 C","635 C","636 C","637 C","638 C","639 C","640 C","641 C","7702 C","7703 C","7704 C","7705 C","7706 C","7707 C","7708 C","628 C","629 C","630 C","631 C","632 C","633 C","634 C","310 C","311 C","312 C","313 C","314 C","315 C","316 C","3105 C","3115 C","3125 C","3135 C","3145 C","3155 C","3165 C","7709 C","7710 C","7711 C","7712 C","7713 C","7714 C","7715 C","317 C","318 C","319 C","320 C","321 C","322 C","323 C","7464 C","7465 C","7466 C","7467 C","7468 C","7469 C","7470 C","7471 C","7472 C","7473 C","7474 C","7475 C","7476 C","7477 C","5523 C","5513 C","5503 C","5493 C","5483 C","5473 C","5463 C","7716 C","7717 C","7718 C","7719 C","7720 C","7721 C","7722 C","324 C","325 C","326 C","327 C","328 C","329 C","330 C","3242 C","3252 C","3262 C","3272 C","3282 C","3292 C","3302 C","3245 C","3255 C","3265 C","3275 C","3285 C","3295 C","3305 C","3248 C","3258 C","3268 C","3278 C","3288 C","3298 C","3308 C","566 C","565 C","564 C","563 C","562 C","561 C","560 C","573 C","572 C","571 C","570 C","569 C","568 C","567 C","559 C","558 C","557 C","556 C","555 C","554 C","553 C","5595 C","5585 C","5575 C","5565 C","5555 C","5545 C","5535 C","5665 C","5655 C","5645 C","5635 C","5625 C","5615 C","5605 C","5527 C","5517 C","5507 C","5497 C","5487 C","5477 C","5467 C","621 C","622 C","623 C","624 C","625 C","626 C","627 C","331 C","332 C","333 C","334 C","335 C","336 C","337 C","338 C","339 C","340 C","341 C","342 C","343 C","7723 C","7724 C","7725 C","7726 C","7727 C","7728 C","7729 C","3375 C","3385 C","3395 C","3405 C","3415 C","3425 C","3435 C","344 C","345 C","346 C","347 C","348 C","349 C","350 C","351 C","352 C","353 C","354 C","355 C","356 C","357 C","7478 C","7479 C","7480 C","7481 C","7482 C","7483 C","7484 C","7730 C","7731 C","7732 C","7733 C","7734 C","7735 C","7736 C","7737 C","7738 C","7739 C","7740 C","7741 C","7742 C","7743 C","358 C","359 C","360 C","361 C","362 C","363 C","364 C","7485 C","7486 C","7487 C","7488 C","7489 C","7490 C","7491 C","365 C","366 C","367 C","368 C","369 C","370 C","371 C","372 C","373 C","374 C","375 C","376 C","377 C","378 C","580 C","579 C","578 C","577 C","576 C","575 C","574 C","5807 C","5797 C","5787 C","5777 C","5767 C","5757 C","5747 C","5875 C","5865 C","5855 C","5845 C","5835 C","5825 C","5815 C","5803 C","5793 C","5783 C","5773 C","5763 C","5753 C","5743 C","7492 C","7493 C","7494 C","7495 C","7496 C","7497 C","7498 C","7744 C","7745 C","7746 C","7747 C","7748 C","7749 C","7750 C","379 C","380 C","381 C","382 C","383 C","384 C","385 C","386 C","387 C","388 C","389 C","390 C","391 C","392 C","587 C","586 C","585 C","584 C","583 C","582 C","581 C","393 C","394 C","395 C","396 C","397 C","398 C","399 C","3935 C","3945 C","3955 C","3965 C","3975 C","3985 C","3995 C","600 C","601 C","602 C","603 C","604 C","605 C","606 C","607 C","608 C","609 C","610 C","611 C","612 C","613 C","461 C","460 C","459 C","458 C","457 C","456 C","455 C","614 C","615 C","616 C","617 C","618 C","619 C","620 C","7751 C","7752 C","7753 C","7754 C","7755 C","7756 C","7757 C","7758 C","7759 C","7760 C","7761 C","7762 C","7763 C","7764 C","7765 C","7766 C","7767 C","7768 C","7769 C","7770 C","7771 C","4545 C","4535 C","4525 C","4515 C","4505 C","4495 C","4485 C","454 C","453 C","452 C","451 C","450 C","449 C","448 C","7499 C","7500 C","7501 C","7502 C","7503 C","7504 C","7505 C","468 C","467 C","466 C","465 C","464 C","463 C","462 C","7506 C","7507 C","7508 C","7509 C","7510 C","7511 C","7512 C","719 C","720 C","721 C","722 C","723 C","724 C","725 C","475 C","474 C","473 C","472 C","471 C","470 C","469 C","726 C","727 C","728 C","729 C","730 C","731 C","732 C","4685 C","4675 C","4665 C","4655 C","4645 C","4635 C","4625 C","7513 C","7514 C","7515 C","7516 C","7517 C","7518 C","7519 C","4755 C","4745 C","4735 C","4725 C","4715 C","4705 C","4695 C","482 C","481 C","480 C","479 C","478 C","477 C","476 C","7527 C","7528 C","7529 C","7530 C","7531 C","7532 C","7533 C","7534 C","7535 C","7536 C","7537 C","7538 C","7539 C","7540 C","427 C","428 C","429 C","430 C","431 C","432 C","433 C","420 C","421 C","422 C","423 C","424 C","425 C","426 C","441 C","442 C","443 C","444 C","445 C","446 C","447 C","413 C","414 C","415 C","416 C","417 C","418 C","419 C","400 C","401 C","402 C","403 C","404 C","405 C","406 C","407 C","408 C","409 C","410 C","411 C","412 C","434 C","435 C","436 C","437 C","438 C","439 C","440 C","Warm Gray 1 C","Warm Gray 2 C","Warm Gray 3 C","Warm Gray 4 C","Warm Gray 5 C","Warm Gray 6 C","Warm Gray 7 C","Warm Gray 8 C","Warm Gray 9 C","Warm Gray 10 C","Warm Gray 11 C","Cool Gray 1 C","Cool Gray 2 C","Cool Gray 3 C","Cool Gray 4 C","Cool Gray 5 C","Cool Gray 6 C","Cool Gray 7 C","Cool Gray 8 C","Cool Gray 9 C","Cool Gray 10 C","Cool Gray 11 C","Black 2 C","Black 3 C","Black 4 C","Black 5 C","Black 6 C","Black 7 C"],kt=["FEDD00","FFD700","FE5000","F9423A","EF3340","CE0058","E10098","BB29BB","440099","10069F","001489","0085CA","00AB84","2D2926","F2F0A1","FCAEBB","F1B2DC","BF9BDE","74D1EA","9DE7D7","9E978E","009ACE","44D62C","FFE900","FFAA4D","FF7276","FF3EB5","EA27C2","84754E","85714D","866D4B","8B6F4E","87674F","8B634B","8A8D8F","FFD900","FF5E00","F93822","CE0056","D62598","4E008E","00239C","0084CA","00B08B","222223","F6EB61","F7EA48","FCE300","C5A900","AF9800","897A27","F5E1A4","ECD898","EED484","F4DA40","F2CD00","F1C400","CBA052","F9E547","FBE122","FEDB00","FFD100","DAAA00","AA8A00","9C8412","FAE053","FBDD40","FDDA24","FFCD00","C99700","AC8400","897322","F3DD6D","F3D54E","F3D03E","F2A900","CC8A00","A07400","6C571B","F8E08E","FBD872","FFC845","FFB81C","C69214","AD841F","886B25","FBDB65","FDD757","FED141","FFC72C","EAAA00","B58500","9A7611","FFC600","FFB500","D19000","B47E00","73531D","5A4522","4B3D2A","D29F13","B78B20","9F7D23","967126","8F6A2A","7D622E","6C5D34","FDD26E","FFC658","FFBF3F","FFA300","DE7C00","AF6D04","74531C","FDD086","FFC56E","FFB549","FF9E1B","D57800","996017","6E4C1E","F2C75C","F1BE48","F1B434","ED8B00","CF7F00","A76D11","715C2A","F6BE00","F0B323","FEAD77","E6A65D","D38235","DC8633","C16C18","BD9B60","D69A2D","DB8A06","CD7925","AD6433","89532F","775135","D78825","D3832B","C67D30","B67233","A7662B","9E6A38","835D32","FCC89B","FDBE87","FDAA63","F68D2E","EA7600","D45D00","BE4D00","FECB8B","FFC27B","FFB25B","FF8200","E57200","BE6A14","9B5A1A","EFD19F","EFBE7D","ECA154","E87722","CB6015","A1561C","603D20","FFAE62","FF8F1C","FF6900","B94700","94450B","653819","FFB990","FFA06A","FF7F32","FF6A13","D86018","A65523","8B4720","FFBE9F","FF9D6E","FF7F41","FF671F","E35205","BE531C","73381D","DB864E","E07E3C","DC6B2F","DC582A","C05131","864A33","674736","FFA38B","FF8D6D","FF6A39","FC4C02","DC4405","A9431E","833921","FFB3AB","FF8674","FF5C39","FA4616","CF4520","963821","6B3529","C4622D","BA5826","AF5C37","9E5330","924C2E","7B4D35","5C4738","D4B59E","C07D59","B15533","9D432C","7C3A2D","6B3D2E","5C3D31","D14124","BD472A","B33D26","8D3F2B","83412C","7B4931","674230","E4D5D3","E1BBB4","D6938A","C26E60","A4493D","823B34","683431","DDBCB0","CA9A8E","BC8A7E","A37F74","866761","6B4C4C","583D3E","EABEB0","C09C83","B46A55","AB5C57","A45248","9A6A4F","8A391B","ECC3B2","ECBAA8","EAA794","E8927C","DA291C","9A3324","653024","FFB1BB","FF808B","FF585D","E03C31","BE3A34","81312F","FFA3B5","FF8DA1","F8485E","EE2737","D22630","AF272F","7C2529","FCAFC0","FB637E","F4364C","CB333B","A4343A","643335","C66E4E","C04C36","B7312C","AB2328","93272C","8A2A2B","802F2D","E1523D","C63527","A72B2A","9E2A2B","6D3332","633231","572D2D","E6BAA8","E56A54","E04E39","CD545B","B04A5A","9B2242","651D32","FABBCB","FC9BB3","F65275","E4002B","C8102E","A6192E","76232F","ECC7CD","E89CAE","DF4661","D50032","BA0C2F","9D2235","862633","F8A3BC","F67599","EF426F","E40046","BF0D3E","9B2743","782F40","F5B6CD","F59BBB","EF4A81","E0004D","C5003E","A6093D","8A1538","F5DADF","F7CED7","F9B5C4","F890A5","EF6079","E03E52","CB2C30","F2D4D7","F4C3CC","F2ACB9","E68699","D25B73","B83A4B","9E2A2F","ECB3CB","E782A9","E0457B","CE0037","A50034","861F41","6F263D","F99FC9","F57EB6","F04E98","E31C79","CE0F69","AC145A","7D2248","F4CDD4","E06287","E24585","B52555","A4123F","971B2F","6A2C3E","D6C9CA","C4A4A7","C16784","C63663","BC204B","912F46","7E2D40","EABEDB","E56DB1","DA1884","A50050","910048","6C1D45","936D73","934054","8E2C48","732E4A","672E45","582D40","502B3A","EF95CF","EB6FBD","DF1995","D0006F","AA0061","890C58","672146","F4A6D7","F277C6","E93CAC","C6007E","A20067","840B55","EAD3E2","E6BCD8","DFA0C9","D986BA","C6579A","AE2573","960051","E5CEDB","E3C8D8","DEBED2","C996B6","B06C96","994878","7C2855","E4C6D4","DCB6C9","D0A1BA","BE84A3","A76389","893B67","612141","EBBECB","E8B3C3","E4A9BB","D592AA","84344E","6F2C3F","572932","E2BCCB","DCA9BF","C9809E","B55C80","A73A64","9B3259","872651","E9CDD0","E4BEC3","D7A3AB","C48490","B46B7A","984856","893C47","F2C6CF","F1BDC8","E9A2B2","DC8699","8F3237","7F3035","5D2A2C","E9C4C7","E5BAC1","DAA5AD","C6858F","7A3E3A","6A3735","512F2E","DFC2C3","DBB7BB","CCA1A6","B07C83","9C6169","874B52","3F2021","F1A7DC","EC86D0","E45DBF","DB3EB1","C5299B","AF1685","80225F","EFBAE1","E277CD","D539B5","C800A1","B0008E","9E007E","830065","EAB8E4","E59BDC","DD7FD3","C724B1","BB16A3","A51890","80276C","A56E87","A83D72","991E66","8A1B61","722257","6A2A5B","5E2751","E7BAE4","DD9CDF","C964CF","AD1AAC","981D97","72246C","EBC6DF","E6BEDD","E2ACD7","D48BC8","93328E","833177","612C51","EEDAEA","CCAED0","D59ED7","B288B9","A277A6","9F5CC0","963CBD","D7A9E3","C98BDB","AC4FC6","9B26B6","87189D","772583","653165","948794","A2789C","A15A95","8E3A80","6E2B62","6A3460","5D3754","D5C2D8","C9B1D0","BA9CC5","A57FB2","642F6C","59315F","4B3048","DBCDD3","D0BEC7","C6B0BC","AF95A6","86647A","66435A","4A3041","D8C8D1","D3C0CD","BFA5B8","9B7793","7E5475","693C5E","512A44","DFC8E7","D7B9E4","CAA2DD","B580D1","8031A7","702F8A","572C5F","D6BFDD","C6A1CF","8C4799","6D2077","642667","5D285F","51284F","CBA3D8","B884CB","A05EB5","84329B","702082","671E75","5F2167","9991A4","8D6E97","7A4183","6B3077","653279","5E366E","5C4E63","C1A0DA","A77BCA","8246AF","5C068C","500778","470A68","3C1053","D7C6E6","C1A7E2","9063CD","753BBD","5F259F","582C83","512D6D","C5B4E3","AD96DC","9678D3","7D55C7","330072","2E1A47","B4B5DF","9595D2","7474C1","24135F","211551","201747","221C35","A7A4E0","8B84D7","685BC7","2E008B","280071","250E62","201547","6E7CA0","686E9F","615E9B","565294","514689","4C4184","535486","DDDAE8","B6B8DC","A7A2C3","8986CA","5D4777","4B384C","41273B","878CB4","7C7FAB","7566A0","6F5091","68478D","563D82","523178","E5E1E6","E0DBE3","C6BCD0","A192B2","7C6992","614B79","3F2A56","D8D7DF","C6C4D2","B3B0C4","8D89A5","595478","403A60","1E1A34","C5CFDA","BBC7D6","A2B2C8","8E9FBC","1B365D","1F2A44","1C1F2A","D9E1E2","A4BCC2","98A4AE","768692","425563","253746","131E29","B9D3DC","A3C7D2","8DB9CA","6BA4B8","003D4C","00313C","072B31","BFCED6","B7C9D3","A6BBC8","7A99AC","5B7F95","4F758B","081F2C","D1DDE6","C6D6E3","9BB8D3","7DA1C4","5E8AB4","236192","002E5D","DBE2E9","CED9E5","A7BCD6","7D9BC1","326295","003A70","002554","DDE5ED","C8D8EB","B1C9E8","7BA4DB","407EC9","003594","001A70","BDC5DB","89ABE3","8094DD","7BA6DE","5F8FB4","3A5DAE","606EB2","CBD3EB","9FAEE5","485CC7","1E22AA","171C8F","151F6D","141B4D","B8CCEA","5C88DA","0047BB","06038D","001871","001E62","071D49","C3D7EE","A7C6ED","307FE2","001A72","001E60","13294B","ABCAE9","8BB8E8","418FDE","012169","00205B","041E42","92C1E9","6CACE4","0072CE","0033A0","003087","002D72","0C2340","94A9CB","6787B7","426DA9","385E9D","2C5697","1D4F91","1D428A","C6DAE7","BDD6E6","A4C8E1","7BAFD4","003C71","003057","00263A","B9D9EB","9BCBEB","69B3E7","003DA5","002F6C","002855","041C2C","8DC8E8","62B5E5","009CDE","0057B8","004C97","003865","00263E","71C5E8","41B6E6","00A3E0","005EB8","004B87","003B5C","002A3A","4698CB","298FC2","0076A8","006298","005587","004976","01426A","99D6EA","5BC2E7","00A9E0","0077C8","00629B","004F71","003E51","7BA7BC","6399AE","4E87A0","41748D","34657F","165C7D","005776","BBDDE6","71B2C9","4298B5","0086BF","007DBA","00558C","002B49","9ADBE8","59CBE8","00B5E2","006BA6","00587C","003B49","A4DBE8","8BD3E6","4EC3E0","00AFD7","0095C8","0082BA","0067A0","48A9C5","009CBD","0085AD","007096","006A8E","00617F","005670","B8DDE1","9BD3DD","77C5D5","3EB1C8","0093B2","007396","005F83","6AD1E3","05C3DE","00A9CE","0092BC","007FA3","00677F","004851","68D2DF","00C1D5","00AEC7","008EAA","00778B","006272","004F59","63B1BC","00A7B5","0097A9","00859B","007D8A","007680","006269","B1E4E3","88DBDF","2DCCD3","009CA6","008C95","007377","005F61","A0D1CA","40C1AC","00B0B9","00A3AD","007398","005F86","005A70","7EDDD3","5CB8B2","279989","007681","487A7B","0D5257","244C5A","B6CFD0","ABC7CA","94B7BB","7FA9AE","4F868E","115E67","07272D","00968F","00857D","007672","006D68","00635B","005E5D","005151","9CDBD9","64CCC9","00B2A9","008675","007367","00685E","00534C","71DBD4","2AD2C9","00BFB3","00A499","008578","00594F","004C45","7CE0D3","2CD5C4","00C7B1","00B398","009681","007864","004E42","6DCDB8","49C5B1","00AB8E","009B77","008264","006A52","034638","B9DCD2","A1D6CA","86C8BC","6BBBAE","006F62","00594C","1D3C34","B5E3D8","A5DFD3","98DBCE","6BCABA","00816D","006C5B","173F35","ADCAB8","9ABEAA","85B09A","6FA287","28724F","205C40","284734","BFCEC2","A7BDB1","92ACA0","7F9C90","5C7F71","43695B","183028","BAC5B9","B0BDB0","A3B2A4","94A596","708573","5E7461","22372B","BCC9C5","B1C0BC","9DB0AC","829995","5D7975","3E5D58","18332F","D1E0D7","B7CDC2","9AB9AD","789F90","507F70","285C4D","13322B","A7E6D7","8CE2D0","3CDBC0","009775","007B5F","00664F","8FD6BD","6ECEB2","00B388","00965E","007A53","006747","115740","50A684","00966C","008755","007B4B","006F44","006845","005844","7AE1BF","47D7AC","00C389","00AF66","007749","006341","154734","A0DAB3","91D6AC","71CC98","009A44","00843D","046A38","2C5234","A2E4B8","8FE2B0","80E0A7","00B140","009639","007A33","215732","9BE3BF","26D07C","00BF6F","00B74F","009F4D","275D38","00573F","4B9560","228848","007A3E","007041","286140","36573B","395542","6BA539","48A23F","319B42","3A913F","44883E","4A773C","44693D","ADDC91","A1D884","6CC24A","43B02A","509E2F","4C8C2B","4A7729","D0DEBB","BCE194","8EDD65","78D64B","74AA50","719949","79863C","C2E189","B7DD79","A4D65E","78BE20","64A70B","658D1B","546223","D4EB8E","CDEA80","C5E86C","97D700","84BD00","7A9A01","59621D","C4D6A4","BCD19B","B7CE95","A9C47F","789D4A","67823A","4E5B31","D0D1AB","C6C89B","BABD8B","A2A569","8A8D4A","6D712E","3D441E","D2CE9E","CBC793","C0BB87","AFA96E","A09958","89813D","555025","C3C6A8","B3B995","A3AA83","899064","737B4C","5E6738","3E4827","BFCC80","BBC592","9CAF88","8F993E","76881D","7A7256","5B6236","BABC16","ABAD23","999B30","888D30","7C8034","727337","656635","E2E868","DBE442","CEDC00","C4D600","A8AD00","949300","787121","E9EC6B","E3E935","E0E721","D0DF00","B5BD00","9A9500","827A04","E3E48D","E0E27C","DBDE70","D2D755","B7BF10","8E8C13","625D20","F0EC74","EDE939","ECE81A","E1E000","BFB800","ADA400","A09200","F3EA5D","F3E500","EFDF00","EEDC00","BBA600","9A8700","685C20","F1EB9C","F0E991","F0E87B","EDE04B","EADA24","E1CD00","CFB500","EBE49A","E9E186","E6DE77","E1D555","D7C826","C4B000","B39B00","E9DF97","E4D77E","DECD63","D9C756","B89D18","A28E2A","695B24","DCD59A","D6CF8D","D0C883","C0B561","AC9F3C","9F912A","8A7B19","CAB64B","CFB023","C1A01E","A08629","897630","736635","675E33","D4C304","C4B200","91852C","747136","5D6439","585C3B","535435","BBB323","B4A91F","AA9D2E","8F7E35","716135","635939","4E4934","D5CB9F","CFC493","C5B783","B3A369","998542","8C7732","614F25","CAC7A7","BFBB98","B0AA7E","9B945F","594A25","524727","4A412A","F1E6B2","DFD1A7","D9C89E","CEB888","A89968","94795D","816040","DDCBA4","D3BC8D","C6AA76","B9975B","8B5B29","744F28","5C462B","EFDBB2","FCD299","E1B87F","D6A461","C6893F","B77729","A6631B","EDC8A3","E7B78A","DDA46F","C88242","B36924","934D11","7D3F16","F3CFB3","F1C6A7","F0BF9B","E59E6D","B86125","A45A2A","693F23","E0C09F","D9B48F","CDA077","B58150","9E652E","774212","623412","E0C6AD","DCBFA6","CDA788","BF9474","AD7C59","946037","4F2C1D","E1B7A7","D5A286","C58B68","99552B","85431E","6D4F47","5E4B3C","D7C4B7","CDB5A7","C0A392","AE8A79","956C58","7C4D3A","5B3427","DBC8B6","D3BBA8","C6A992","AA8066","703F2A","623B2A","4E3629","D6D2C4","C5B9AC","B7A99A","A39382","7A6855","63513D","473729","D1CCBD","B7B09C","A69F88","A7ACA2","949A90","8E9089","4B4F54","D0D3D4","C1C6C8","A2AAAD","7C878E","5B6770","333F48","1D252D","C7C9C7","B2B4B2","9EA2A2","898D8D","707372","54585A","25282A","BEC6C4","A2ACAB","919D9D","717C7D","505759","3F4444","373A36","BABBB1","A8A99E","919388","7E7F74","65665C","51534A","212322","C4BFB6","AFA9A0","9D968D","8C857B","776E64","696158","C4BCB7","B2A8A2","978C87","857874","746661","5E514D","382F2D","D0C4C5","C1B2B6","AB989D","7B6469","584446","453536","382E2C","D7D2CB","CBC4BC","BFB8AF","B6ADA5","ACA39A","A59C94","968C83","8C8279","83786F","796E65","6E6259","D9D9D6","D0D0CE","C8C9C7","BBBCBC","B1B3B3","A7A8AA","97999B","888B8D","75787B","63666A","53565A","332F21","212721","31261D","3E2B2E","101820","3D3935"],be=kt.map(n=>[parseInt(n.substring(0,2),16),parseInt(n.substring(2,4),16),parseInt(n.substring(4,6),16)]);function Bi(n){const t=Zt.indexOf(n);return t>=0?kt[t]:""}function Da(n){const t=kt.indexOf(n);return t>=0?Zt[t]:""}function hi(n,t=64){const e=[],A=[],a=Da(n);a&&e.push({pms:a,hex:n,distance:0});const i=parseInt(n.substring(0,2),16),s=parseInt(n.substring(2,4),16),o=parseInt(n.substring(4,6),16);let r,c,l;for(let g=0;g<kt.length;g++){r=be[g][0],c=be[g][1],l=be[g][2];const d=Math.sqrt(Math.pow(i-r,2)+Math.pow(s-c,2)+Math.pow(o-l,2));A.push(d)}for(let g=0;g<A.length;g++)A[g]<=t&&!e.some(d=>d.pms===Zt[g])&&e.push({pms:Zt[g],hex:kt[g],distance:A[g]});return e.sort((g,d)=>g.distance-d.distance)}const Ci=Zt.map((n,t)=>({pms:n,hex:kt[t]})),ui=new On(Ci,{keys:["pms"]});function wi(n,t){return ui.search(n,t?{limit:t}:void 0)}let Ht=null;function ya(n){if(n.startsWith("#"))return KA(n);if(!document)throw new Error("browserColorToHex is only supported on browsers");if(Ht||(Ht=document.createElement("canvas").getContext("2d")),!Ht)throw new Error("Failed to create canvas context required to convert colors");Ht.fillStyle=n;const t=KA(Ht.fillStyle);return t||console.error(`Unknown browser color ${n}`),t}function KA(n){const t=n.substring(1).toUpperCase();return t.length===6?t:t.length===3?`${t[0]}${t[0]}${t[1]}${t[1]}${t[2]}${t[2]}`:""}const ge=n=>{const t=Fa(n.spotColor);return t?`${n.browserValue} ${t}`:n.browserValue},Fa=n=>{if(!n)return"";if(n.profileName.includes("/")&&n.profileName.includes(".icc")){const t=n.profileName.replace(/\s/g,"-"),e=t.lastIndexOf("/");return`icc-named-color(${t.slice(e+1).slice(0,-4)}, ${n.namedColor})`}return`icc-named-color(${n.profileName}, ${n.namedColor})`},Ze=n=>{const t=n.split(/[ ](?=[^)]*?(?:\(|$))/);if(t.length===0)return{browserValue:"#000000"};if(t.length===1)return{browserValue:t[0]};const e=t[1].match(/\(([^)]+)\)/gm);if(!e)throw new Error("Unhandled state of color value in SVG");const A=e[0].replace(/[() ]/g,"").split(",");return{browserValue:t[0],spotColor:{profileName:A[0],namedColor:A[1]}}},Ei=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],mi=["fill","stroke"],Nt=(n,t)=>{t(n),n.children.length>0&&Array.from(n.children).forEach(e=>Nt(e,t))},fi=(n,t)=>{try{return n.matches(t)}catch{return n.classList.contains(t.substring(1))}},ye=(n,t=!1)=>{!t&&n.setAttribute("preserveAspectRatio","none");const e=[];Nt(n,A=>{var i,s,o;if(A.tagName==="script"){A.remove();return}if(A.tagName==="style"){try{(i=na.parse(A.innerHTML).stylesheet)==null||i.rules.forEach(c=>{e.push(c)}),A.remove()}catch(r){console.error(r)}return}const a=(o=(s=A.attributes.getNamedItem("style"))==null?void 0:s.value)==null?void 0:o.trim();if(a){const r=[];a.split(";").forEach(l=>{const g=l.trim();if(g){const[d,B]=g.split(":"),h=d.toLowerCase();mi.indexOf(h)>-1?A.setAttribute(h,B.trim()):r.push(g)}}),r.length>0?A.setAttribute("style",r.join(";")):A.removeAttribute("style")}}),Nt(n,A=>{e.forEach(a=>{var i;(i=a.selectors)==null||i.forEach(s=>{var o;fi(A,s)&&((o=a.declarations)==null||o.forEach(r=>{r.property&&r.value&&A.setAttribute(r.property,r.value)}))})})})},Qi=n=>{const t=/pt|pc|mm|cm|in/gm,e=n.getAttribute("viewBox"),A=n.getAttribute("width"),a=n.getAttribute("height");if(!e)throw new Error("viewBox not specified on SVG!");A&&n.setAttribute("width",A.replace(t,"")),a&&n.setAttribute("height",a.replace(t,""))},Ma=n=>it().parseFromString(n,"image/svg+xml").firstElementChild,pi=(n,t,e)=>{n.setAttribute("height",`${e}px`),n.setAttribute("width",`${t}px`)},Sa=(n,t,e)=>{Nt(n,A=>{const a=A.attributes.getNamedItem("fill");a&&a.value!=="none"&&A.classList.forEach(s=>{if(s.startsWith("spiff-fill")){const o=t[s.replace("spiff-fill-","")];if(o)A.setAttribute("fill",e?ge(o):o.browserValue);else{const r=t[s];r&&A.setAttribute("fill",e?ge(r):r.browserValue)}}});const i=A.attributes.getNamedItem("stroke");i&&i.value!=="none"&&A.classList.forEach(s=>{if(s.startsWith("spiff-stroke")){const o=t[s.replace("spiff-stroke-","")];if(o)A.setAttribute("stroke",e?ge(o):o.browserValue);else{const r=t[s];r&&A.setAttribute("fill",e?ge(r):r.browserValue)}}})})},xa=n=>wt().serializeToString(n),CA=(n,t,e,A,a)=>{const i=Ma(n);if(!i)throw new Error("Failed to read SVG.");return pi(i,t,e),Sa(i,A,a),xa(i)},Ya=(n,t,e)=>{const A=Ma(n);if(!A)throw new Error("Failed to read SVG.");return Sa(A,t,e),xa(A)},Ii=n=>{const t=/<svg.*<\/svg>/s,e=n.match(t)||[],A=(e==null?void 0:e.length)>0?e[0]:"";return it().parseFromString(A,"image/svg+xml")},st=async n=>{const e=Ii(n).firstElementChild;if(!e)throw new Error("Failed to read SVG.");ye(e);const A={};Nt(e,s=>{Ei.includes(s.tagName)&&!s.attributes.getNamedItem("fill")&&s.setAttribute("fill","black");const o=s.attributes.getNamedItem("fill");if(o&&o.value!=="none"&&!o.value.startsWith("url(")){const c=Ze(o.value),l=c.browserValue.replace(/\W/g,""),g=`spiff-fill-${l}`;s.setAttribute("fill",c.browserValue),s.classList.add(g),A[l]=c}const r=s.attributes.getNamedItem("stroke");if(r&&r.value!=="none"&&!r.value.startsWith("url(")){const c=Ze(r.value),l=c.browserValue.replace(/\W/g,""),g=`spiff-stroke-${l}`;s.classList.add(g),s.setAttribute("stroke",c.browserValue),A[l]=c}});const i=wt().serializeToString(e);return{colors:A,svg:i}},Di=Q.gql`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("@apollo/client/core"),xr=require("@apollo/client/link/context"),Pr=require("@apollo/client/link/error"),Fr=require("preact-render-to-string"),kr=require("@apollo/client/link/remove-typename"),Mr=require("exifr/dist/mini.umd.cjs"),Za=require("css"),Tr=require("fuse.js"),ca=require("pith"),Pt=require("lodash.clonedeep"),_a=require("qrcode"),Qr=require("svg-path-bbox"),We=require("opentype.js"),D=require("preact/jsx-runtime"),Nr=require("data-uri-to-buffer"),Na=require("lodash.chunk"),tn=require("lodash.isequal"),qe=require("unicode-default-word-boundary"),en=require("lodash.debounce");var Ht=(r=>(r.Data="Data",r.Font="Font",r.Frame="Frame",r.Illustration="Illustration",r.Image="Image",r.Model="Model",r.Material="Material",r.Color="Color",r.QuestionnaireCollateral="QuestionnaireCollateral",r.RequestCollateral="RequestCollateral",r.SignupCollateral="SignupCollateral",r.Video="Video",r.ColorProfile="ColorProfile",r.Environment="Environment",r))(Ht||{}),tt=(r=>(r.FileUpload="FileUpload",r.Option="Option",r.ColorOption="ColorOption",r.Text="Text",r))(tt||{}),b=(r=>(r.Information="Information",r.Bulk="Bulk",r.DigitalContent="DigitalContent",r.Finish="Finish",r.Frame="Frame",r.Illustration="Illustration",r.Introduction="Introduction",r.Material="Material",r.Model="Model",r.Module="Module",r.Picture="Picture",r.Photo="Photo",r.ProductOverlay="ProductOverlay",r.Question="Question",r.Shape="Shape",r.SilentIllustration="SilentIllustration",r.Text="Text",r))(b||{}),an=(r=>(r.Color="Color",r.Colors="Colors",r.Selection="Selection",r.Selections="Selections",r.Text="Text",r.Upload="Upload",r))(an||{}),kt=(r=>(r.ThreeD="ThreeD",r.FreeDesign="FreeDesign",r.Print="Print",r))(kt||{}),T=(r=>(r.Frame="frame",r.Group="group",r.Image="image",r.Pattern="pattern",r.Illustration="illustration",r.Textbox="textbox",r))(T||{}),nn=(r=>(r.Hyperlink="Hyperlink",r.Edit="Edit",r.Approve="Approve",r))(nn||{}),rn=(r=>(r.Hub="Hub",r.Shopify="Shopify",r))(rn||{}),Se=(r=>(r.BackgroundRemover="BackgroundRemover",r.ConversionAccelerator="Conversion Accelerator",r.ProcessBuilder="ProcessBuilder",r))(Se||{}),sn=(r=>(r[r.Orbit=0]="Orbit",r[r.Pan=1]="Pan",r))(sn||{}),on=(r=>(r.Manual="Manual",r.OnStart="OnStart",r.OnQuit="OnQuit",r.OnEnd="OnEnd",r))(on||{}),ln=(r=>(r.Email="Email",r.FirstName="FirstName",r.LastName="LastName",r.Phone="Phone",r))(ln||{}),Yt=(r=>(r.Owner="Owner",r.Approver="Approver",r.Editor="Editor",r.Viewer="Viewer",r))(Yt||{}),Et=(r=>(r.Autosize="Autosize",r.Traditional="Traditional",r))(Et||{}),q=(r=>(r[r.North=0]="North",r[r.Northeast=1]="Northeast",r[r.East=2]="East",r[r.Southeast=3]="Southeast",r[r.South=4]="South",r[r.Southwest=5]="Southwest",r[r.West=6]="West",r[r.Northwest=7]="Northwest",r))(q||{}),cn=(r=>(r.Pixel="px",r.Millimeter="mm",r.Centimeter="cm",r))(cn||{});class dn extends Error{constructor(t){super(t),this.name=this.constructor.name}}class _t extends dn{constructor(t){super(`ConfigurationError - ${t}`)}}class Jt extends _t{constructor(t){super(`Option not Configured: ${t.stepTitle}`),this.optionId=(t==null?void 0:t.optionId)||"N/A"}}class Y extends _t{constructor(t){super(`Panel not Found: ${t.panelId}`),this.panelId=(t==null?void 0:t.panelId)||"N/A"}}class ht extends _t{constructor(t){super(`Asset not found for variant: ${t.name}`),this.variant=t}}class Mt extends _t{constructor(t){super(`Resource not found for asset: ${t.name}`),this.asset=t}}class Kt extends _t{constructor(t,e){super(`Workflow Misconfiguration: ${t.stepName} - ${e}`),this.step=t}}class Ee extends dn{constructor(t){super(`ImplementationError - ${t}`)}}class $ extends Ee{constructor(t){super(`Unhandled Behavior Encountered: ${t}`)}}class wt extends Ee{constructor(t){super(`Parsing Error: ${t}`)}}class dt extends Ee{constructor(t){super(`Client Error: ${t}`)}}class ve extends Ee{constructor(t){super(`Resource Generation Failed: ${t}`)}}class Rr{get(t){return localStorage.getItem(t)||void 0}set(t,e){localStorage.setItem(t,e)}remove(t){localStorage.removeItem(t)}getMap(t){const e=this.get(t);if(e)return new Map(JSON.parse(e))}setMap(t,e){const a=JSON.stringify([...e.entries()]);this.set(t,a)}}class Ra{constructor(){this.storage=new Map}get(t){return this.storage.get(t)||void 0}set(t,e){this.storage.set(t,e)}remove(t){this.storage.delete(t)}getMap(t){const e=this.get(t);if(e)return new Map(JSON.parse(e))}setMap(t,e){const a=JSON.stringify([...e.entries()]);this.set(t,a)}}const Or=()=>{try{return localStorage?new Rr:new Ra}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new Ra}},k=Or();class Ur{constructor(){this.defaultServerUrl="https://api.au.spiffcommerce.com",this.defaultServicesApiUrl="https://services.au.spiffcommerce.com",this.defaultHubUrl="https://hub.au.spiffcommerce.com",this.serverUrl=this.defaultServerUrl,this.servicesApiUrl=this.defaultServicesApiUrl,this.hubUrl=this.defaultHubUrl,this.serverUrlCallbacks=[]}getServerUrl(){return this.serverUrl}getServicesApiUrl(){return this.servicesApiUrl}getHubUrl(){return this.hubUrl}setServerUrl(t){this.serverUrl=t,this.serverUrlCallbacks.forEach(e=>e())}setServicesApiUrl(t){this.servicesApiUrl=t}setHubUrl(t){this.hubUrl=t}addServerUrlCallback(t){this.serverUrlCallbacks.push(t)}}const ut=new Ur;let He,Ye;function Lr(r){He=r}function $r(r){Ye=r}function te(){return He?new He().window:(console.log("DOM constructor is not registered. Assuming browser environment. If not, please register DOM constructor before calling this function."),window)}function ot(r,t){if(!Ye){if(typeof window<"u"&&window.fetch)return window.fetch(r,t);if(typeof global<"u"&&global.fetch)return global.fetch(r,t);throw new Error("Fetch implementation is not registered. Please register it before calling this function.")}return Ye(r,t)}const An=new Map,Oa=new Map,Ua=new Map,un=async r=>{const t=Oa.get(r);if(t)return t;const a=(async()=>{var i;const n=await ot(r);return An.set(r,((i=n.headers)==null?void 0:i.get("content-type"))||""),await n.arrayBuffer()})();return Oa.set(r,a),a},Vr=async r=>{const t=Ua.get(r);if(t)return t;const a=(async()=>await(await ot(r)).text())();return Ua.set(r,a),a},Rt=r=>r.every(t=>t!=="undefined"),ce=r=>Rt([typeof document])?document.createElement(r):te().document.createElement(r),zr=(r,t)=>{if(Rt([typeof document]))return document.createElementNS(r,t);const a=te().document.createElement(t);return a.setAttribute("xmlns",r),a},it=()=>{if(Rt([typeof DOMParser]))return new DOMParser;const r=te();return new r.DOMParser},Gr=()=>Rt([typeof DOMParser])?DOMParser:te().DOMParser,Be=(r,t)=>new Promise((e,a)=>{t?un(r).then(e).catch(a):ot(r).then(n=>{n.arrayBuffer().then(e).catch(a)}).catch(n=>{a(n)})}),et=(r,t)=>new Promise((e,a)=>{t?Vr(r).then(e).catch(a):ot(r).then(n=>{n.text().then(e).catch(a)}).catch(a)}),hn=r=>Fr.renderToStaticMarkup(r),Te=new Map,jr=async(r,t)=>{if(Rt([typeof FontFace])){if(Te.has(t))return Te.get(t);const e=r.names.fullName.en,a=new FontFace(e,`url(${t})`);document.fonts.add(a);const n=a.load();return Te.set(t,n),n}},pt=()=>{if(Rt([typeof XMLSerializer]))return new XMLSerializer;const r=te();return new r.XMLSerializer},La=r=>btoa(r),ee=r=>{function t(){const a=new Uint8Array(r),n=4;if(a.length>=n){const i=new Array(n);for(let l=0;l<n;l++)i[l]=new Uint8Array(r)[l].toString(16);const s=i.join("").toUpperCase();switch(s){case"89504E47":return"image/png";case"47494638":return"image/gif";case"25504446":return"application/pdf";case"504B0304":return"application/zip"}switch(s.slice(0,4)){case"FFD8":return"image/jpeg"}}return null}const e=t();return e||"image/svg+xml"},Wr=async r=>{const t=await un(r),e=An.get(r)||ee(t);return await Yr(new Blob([t],{type:e}))},qr=r=>{let t="";const e=r.byteLength;for(let a=0;a<e;a++)t+=String.fromCharCode(r[a]);return t},Hr=async r=>{const t=ee(r),e=new Uint8Array(r),a=qr(e),n=btoa(a);return`data:${t};base64,${n}`},da=r=>`data:image/svg+xml;base64,${btoa(r)}`,gn=r=>{const t=r.replace(/\r?\n/g,""),e=t.indexOf(",");if(e===-1||e<=4)throw new TypeError("malformed data: URI");const a=t.substring(5,e).split(";");let n=!1;for(let s=1;s<a.length;s++)a[s]==="base64"&&(n=!0);const i=decodeURI(t.substring(e+1));return n?new Uint8Array(atob(i).split("").map(o=>o.charCodeAt(0))).buffer:new Uint8Array(i.split("").map(o=>o.charCodeAt(0))).buffer},Yr=r=>new Promise((t,e)=>{const a=new FileReader;a.onload=function(n){const i=n.target;!i||!i.result?e():t(i.result.toString())},a.readAsDataURL(r)});let mn;const $a=r=>{mn=r};let Aa;const Jr=r=>{Aa=r},Kr=()=>Aa;let fn;const pn=r=>{fn=r},Xr=()=>new Promise(r=>{const t=ut.getHubUrl(),e=a=>{a.origin===t&&(window.removeEventListener("message",e),r(a.data))};window.parent!==window&&(window.addEventListener("message",e,!1),window.parent.postMessage("ready",t))}),Zr=async()=>{const r={applicationKey:Aa,customerToken:mn,bearer:fn};return typeof window<"u"&&(window.location.href.includes("/workflows/product/")||window.location.href.includes("hub=true"))?{...await Xr(),...r}:r};class _r{constructor(){this.shadowGraphqlClient=this.constructShadowGraphqlClient(),ut.addServerUrlCallback(()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()})}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const t=S.createHttpLink({uri:`${ut.getServerUrl()}/graphql`,fetch:ot}),e=xr.setContext(async(i,s)=>{const{headers:o}=s,l=o||{},c=await Zr(),d=s.bearer??c.bearer,A=s.partnerId??c.partnerId,u=s.activeIntegration??c.activeIntegration,h=s.transactionOwnerId,g=s.customerToken??c.customerToken,m=s.applicationKey??c.applicationKey,f=s.bundleOwnerId;try{if(window&&window.__SENTRY__){const p=window.__SENTRY__.hub;if(p){const C=p.traceHeaders();Object.entries(C).forEach(([w,y])=>{l[w]=y})}}}catch{}return d&&(l.Authorization=`Bearer ${d}`),A&&(l.partnerId=A),u&&(l.activeIntegration=u),h&&(l.transactionOwnerId=h),g&&(l.customerToken=g),m&&(l["X-Application-Key"]=m),f&&(l.bundleOwnerId=f),{headers:l}}),a=Pr.onError(({operation:i,graphQLErrors:s,networkError:o})=>{const l=s||[];o&&console.log("GraphQL Network error"),l.forEach(()=>console.log("GraphQL Error: "+i.operationName))}),n=kr.removeTypenameFromVariables();return new S.ApolloClient({link:S.from([n,a,e,t]),cache:new S.InMemoryCache,name:"Core"})}}const I=new _r;let Je,Ke;const gt=(r,t,e)=>{if(Je!==void 0)return Je(r,t,e);try{const a=Cn(!0);return ua(a),a.createCanvas(r,t,e)}catch{throw new Error("Canvas module not set")}},ae=(r,t)=>{if(Ke!==void 0)return Ke(r,t);try{const e=Cn(!0);return ua(e),e.loadImage(r,t)}catch{throw new Error("Canvas module not set")}};function ua(r){Je=r==null?void 0:r.createCanvas,Ke=r==null?void 0:r.loadImage}function Cn(r){try{if(document.createElement("canvas").getContext("2d"))return{createCanvas:(e,a,n)=>{const i=document.createElement("canvas");return e!=null&&(i.width=e),a!=null&&(i.height=a),i},loadImage:(e,a)=>new Promise((n,i)=>{const s=document.createElement("img");a!==!1&&(s.crossOrigin="Anonymous"),s.onload=()=>{n(s)},s.onerror=i,s.src=e})}}catch(t){if(r)throw t}}let Qe;function ha(){return Qe===void 0&&(Qe=Gr()),Qe}let de=null;const ti=r=>new Promise(t=>{if(ee(r)!=="image/jpeg")return t(1);Mr.orientation(r).then(a=>t(a||1)).catch(()=>t(1))}),ei=async()=>{if(de!==null)return!de;const t=await ae("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/xABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAAAAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQvoP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXwH/9k=");return de=t.width===2&&t.height===3,!de},ai=r=>{const e=r.naturalWidth/r.naturalHeight;return r.naturalHeight<=8192&&r.naturalWidth<=8192?[r.naturalWidth,r.naturalHeight]:r.naturalHeight>r.naturalWidth?[e*8192,8192]:[8192,8192/e]},ni=async r=>{var A;const t=await Hr(r),e=await ae(t),[a,n]=ai(e);if(!await ei()){const u=gt(a,n);return(A=u.getContext("2d"))==null||A.drawImage(e,0,0,a,n),u}const s=await ti(r),[o,l]=s>4?[n,a]:[a,n],c=gt(o,l),d=c.getContext("2d");switch(s){case 2:d.translate(o,0),d.scale(-1,1);break;case 3:d.translate(o,l),d.rotate(Math.PI);break;case 4:d.translate(0,l),d.scale(1,-1);break;case 5:d.rotate(-.5*Math.PI),d.scale(-1,1);break;case 6:d.rotate(-.5*Math.PI),d.translate(-o,0);break;case 7:d.rotate(-.5*Math.PI),d.translate(-o,l),d.scale(1,-1);break;case 8:d.rotate(.5*Math.PI),d.translate(0,-l);break}return d.drawImage(e,0,0,o,l),c},ne=async r=>{const t=await ni(r);return ee(r)==="image/jpeg"?{dataUrl:t.toDataURL("image/jpeg",1),height:t.height,width:t.width}:{dataUrl:t.toDataURL(),height:t.height,width:t.width}},Xt=["Yellow C","Yellow 012 C","Orange 021 C","Warm Red C","Red 032 C","Rubine Red C","Rhodamine Red C","Purple C","Violet C","Blue 072 C","Reflex Blue C","Process Blue C","Green C","Black C","Yellow 0131 C","Red 0331 C","Magenta 0521 C","Violet 0631 C","Blue 0821 C","Green 0921 C","Black 0961 C","801 C","802 C","803 C","804 C","805 C","806 C","807 C","871 C","872 C","873 C","874 C","875 C","876 C","877 C","Medium Yellow C","Bright Orange C","Bright Red C","Strong Red C","Pink C","Medium Purple C","Dark Blue C","Medium Blue C","Bright Green C","Neutral Black C","100 C","101 C","102 C","103 C","104 C","105 C","7401 C","7402 C","7403 C","7404 C","7405 C","7406 C","7407 C","106 C","107 C","108 C","109 C","110 C","111 C","112 C","113 C","114 C","115 C","116 C","117 C","118 C","119 C","127 C","128 C","129 C","130 C","131 C","132 C","133 C","1205 C","1215 C","1225 C","1235 C","1245 C","1255 C","1265 C","120 C","121 C","122 C","123 C","124 C","125 C","126 C","7548 C","7549 C","7550 C","7551 C","7552 C","7553 C","7554 C","7555 C","7556 C","7557 C","7558 C","7559 C","7560 C","7561 C","134 C","135 C","136 C","137 C","138 C","139 C","140 C","1345 C","1355 C","1365 C","1375 C","1385 C","1395 C","1405 C","141 C","142 C","143 C","144 C","145 C","146 C","147 C","7408 C","7409 C","7410 C","7411 C","7412 C","7413 C","7414 C","7562 C","7563 C","7564 C","7565 C","7566 C","7567 C","7568 C","7569 C","7570 C","7571 C","7572 C","7573 C","7574 C","7575 C","712 C","713 C","714 C","715 C","716 C","717 C","718 C","148 C","149 C","150 C","151 C","152 C","153 C","154 C","155 C","156 C","157 C","158 C","159 C","160 C","161 C","1485 C","1495 C","1505 C","1525 C","1535 C","1545 C","1555 C","1565 C","1575 C","1585 C","1595 C","1605 C","1615 C","162 C","163 C","164 C","165 C","166 C","167 C","168 C","7576 C","7577 C","7578 C","7579 C","7580 C","7581 C","7582 C","1625 C","1635 C","1645 C","1655 C","1665 C","1675 C","1685 C","169 C","170 C","171 C","172 C","173 C","174 C","175 C","7583 C","7584 C","7585 C","7586 C","7587 C","7588 C","7589 C","7590 C","7591 C","7592 C","7593 C","7594 C","7595 C","7596 C","7597 C","7598 C","7599 C","7600 C","7601 C","7602 C","7603 C","7604 C","7605 C","7606 C","7607 C","7608 C","7609 C","7610 C","7611 C","7612 C","7613 C","7614 C","7615 C","7616 C","7617 C","7520 C","7521 C","7522 C","7523 C","7524 C","7525 C","7526 C","489 C","488 C","487 C","486 C","485 C","484 C","483 C","176 C","177 C","178 C","179 C","180 C","181 C","1765 C","1775 C","1785 C","1788 C","1795 C","1805 C","1815 C","1767 C","1777 C","1787 C","1797 C","1807 C","1817 C","7618 C","7619 C","7620 C","7621 C","7622 C","7623 C","7624 C","7625 C","7626 C","7627 C","7628 C","7629 C","7630 C","7631 C","7415 C","7416 C","7417 C","7418 C","7419 C","7420 C","7421 C","182 C","183 C","184 C","185 C","186 C","187 C","188 C","196 C","197 C","198 C","199 C","200 C","201 C","202 C","189 C","190 C","191 C","192 C","193 C","194 C","195 C","1895 C","1905 C","1915 C","1925 C","1935 C","1945 C","1955 C","705 C","706 C","707 C","708 C","709 C","710 C","711 C","698 C","699 C","700 C","701 C","702 C","703 C","704 C","203 C","204 C","205 C","206 C","207 C","208 C","209 C","210 C","211 C","212 C","213 C","214 C","215 C","216 C","7422 C","7423 C","7424 C","7425 C","7426 C","7427 C","7428 C","7632 C","7633 C","7634 C","7635 C","7636 C","7637 C","7638 C","217 C","218 C","219 C","220 C","221 C","222 C","7639 C","7640 C","7641 C","7642 C","7643 C","7644 C","7645 C","223 C","224 C","225 C","226 C","227 C","228 C","229 C","230 C","231 C","232 C","233 C","234 C","235 C","670 C","671 C","672 C","673 C","674 C","675 C","676 C","677 C","678 C","679 C","680 C","681 C","682 C","683 C","684 C","685 C","686 C","687 C","688 C","689 C","690 C","510 C","509 C","508 C","507 C","506 C","505 C","504 C","7429 C","7430 C","7431 C","7432 C","7433 C","7434 C","7435 C","691 C","692 C","693 C","694 C","695 C","696 C","697 C","496 C","495 C","494 C","493 C","492 C","491 C","490 C","503 C","502 C","501 C","500 C","499 C","498 C","497 C","5035 C","5025 C","5015 C","5005 C","4995 C","4985 C","4975 C","236 C","237 C","238 C","239 C","240 C","241 C","242 C","2365 C","2375 C","2385 C","2395 C","2405 C","2415 C","2425 C","243 C","244 C","245 C","246 C","247 C","248 C","249 C","7646 C","7647 C","7648 C","7649 C","7650 C","7651 C","7652 C","250 C","251 C","252 C","253 C","254 C","255 C","517 C","516 C","515 C","514 C","513 C","512 C","511 C","7436 C","7437 C","7438 C","7439 C","7440 C","7441 C","7442 C","2562 C","2572 C","2582 C","2592 C","2602 C","2612 C","2622 C","7653 C","7654 C","7655 C","7656 C","7657 C","7658 C","7659 C","524 C","523 C","522 C","521 C","520 C","519 C","518 C","5245 C","5235 C","5225 C","5215 C","5205 C","5195 C","5185 C","5175 C","5165 C","5155 C","5145 C","5135 C","5125 C","5115 C","531 C","530 C","529 C","528 C","527 C","526 C","525 C","256 C","257 C","258 C","259 C","260 C","261 C","262 C","2563 C","2573 C","2583 C","2593 C","2603 C","2613 C","2623 C","7660 C","7661 C","7662 C","7663 C","7664 C","7665 C","7666 C","2567 C","2577 C","2587 C","2597 C","2607 C","2617 C","2627 C","263 C","264 C","265 C","266 C","267 C","268 C","269 C","2635 C","2645 C","2655 C","2665 C","2685 C","2695 C","270 C","271 C","272 C","273 C","274 C","275 C","276 C","2705 C","2715 C","2725 C","2735 C","2745 C","2755 C","2765 C","7667 C","7668 C","7669 C","7670 C","7671 C","7672 C","7673 C","7443 C","7444 C","7445 C","7446 C","7447 C","7448 C","7449 C","7674 C","7675 C","7676 C","7677 C","7678 C","7679 C","7680 C","663 C","664 C","665 C","666 C","667 C","668 C","669 C","5315 C","5305 C","5295 C","5285 C","5275 C","5265 C","5255 C","538 C","537 C","536 C","535 C","534 C","533 C","532 C","7541 C","7542 C","7543 C","7544 C","7545 C","7546 C","7547 C","552 C","551 C","550 C","549 C","548 C","547 C","546 C","5455 C","5445 C","5435 C","5425 C","5415 C","5405 C","5395 C","642 C","643 C","644 C","645 C","646 C","647 C","648 C","649 C","650 C","651 C","652 C","653 C","654 C","655 C","656 C","657 C","658 C","659 C","660 C","661 C","662 C","7450 C","7451 C","7452 C","7453 C","7454 C","7455 C","7456 C","2706 C","2716 C","2726 C","2736 C","2746 C","2756 C","2766 C","2708 C","2718 C","2728 C","2738 C","2748 C","2758 C","2768 C","2707 C","2717 C","2727 C","2747 C","2757 C","2767 C","277 C","278 C","279 C","280 C","281 C","282 C","283 C","284 C","285 C","286 C","287 C","288 C","289 C","7681 C","7682 C","7683 C","7684 C","7685 C","7686 C","7687 C","545 C","544 C","543 C","542 C","541 C","540 C","539 C","290 C","291 C","292 C","293 C","294 C","295 C","296 C","2905 C","2915 C","2925 C","2935 C","2945 C","2955 C","2965 C","297 C","298 C","299 C","300 C","301 C","302 C","303 C","7688 C","7689 C","7690 C","7691 C","7692 C","7693 C","7694 C","2975 C","2985 C","2995 C","3005 C","3015 C","3025 C","3035 C","7695 C","7696 C","7697 C","7698 C","7699 C","7700 C","7701 C","7457 C","7458 C","7459 C","7460 C","7461 C","7462 C","7463 C","304 C","305 C","306 C","307 C","308 C","309 C","635 C","636 C","637 C","638 C","639 C","640 C","641 C","7702 C","7703 C","7704 C","7705 C","7706 C","7707 C","7708 C","628 C","629 C","630 C","631 C","632 C","633 C","634 C","310 C","311 C","312 C","313 C","314 C","315 C","316 C","3105 C","3115 C","3125 C","3135 C","3145 C","3155 C","3165 C","7709 C","7710 C","7711 C","7712 C","7713 C","7714 C","7715 C","317 C","318 C","319 C","320 C","321 C","322 C","323 C","7464 C","7465 C","7466 C","7467 C","7468 C","7469 C","7470 C","7471 C","7472 C","7473 C","7474 C","7475 C","7476 C","7477 C","5523 C","5513 C","5503 C","5493 C","5483 C","5473 C","5463 C","7716 C","7717 C","7718 C","7719 C","7720 C","7721 C","7722 C","324 C","325 C","326 C","327 C","328 C","329 C","330 C","3242 C","3252 C","3262 C","3272 C","3282 C","3292 C","3302 C","3245 C","3255 C","3265 C","3275 C","3285 C","3295 C","3305 C","3248 C","3258 C","3268 C","3278 C","3288 C","3298 C","3308 C","566 C","565 C","564 C","563 C","562 C","561 C","560 C","573 C","572 C","571 C","570 C","569 C","568 C","567 C","559 C","558 C","557 C","556 C","555 C","554 C","553 C","5595 C","5585 C","5575 C","5565 C","5555 C","5545 C","5535 C","5665 C","5655 C","5645 C","5635 C","5625 C","5615 C","5605 C","5527 C","5517 C","5507 C","5497 C","5487 C","5477 C","5467 C","621 C","622 C","623 C","624 C","625 C","626 C","627 C","331 C","332 C","333 C","334 C","335 C","336 C","337 C","338 C","339 C","340 C","341 C","342 C","343 C","7723 C","7724 C","7725 C","7726 C","7727 C","7728 C","7729 C","3375 C","3385 C","3395 C","3405 C","3415 C","3425 C","3435 C","344 C","345 C","346 C","347 C","348 C","349 C","350 C","351 C","352 C","353 C","354 C","355 C","356 C","357 C","7478 C","7479 C","7480 C","7481 C","7482 C","7483 C","7484 C","7730 C","7731 C","7732 C","7733 C","7734 C","7735 C","7736 C","7737 C","7738 C","7739 C","7740 C","7741 C","7742 C","7743 C","358 C","359 C","360 C","361 C","362 C","363 C","364 C","7485 C","7486 C","7487 C","7488 C","7489 C","7490 C","7491 C","365 C","366 C","367 C","368 C","369 C","370 C","371 C","372 C","373 C","374 C","375 C","376 C","377 C","378 C","580 C","579 C","578 C","577 C","576 C","575 C","574 C","5807 C","5797 C","5787 C","5777 C","5767 C","5757 C","5747 C","5875 C","5865 C","5855 C","5845 C","5835 C","5825 C","5815 C","5803 C","5793 C","5783 C","5773 C","5763 C","5753 C","5743 C","7492 C","7493 C","7494 C","7495 C","7496 C","7497 C","7498 C","7744 C","7745 C","7746 C","7747 C","7748 C","7749 C","7750 C","379 C","380 C","381 C","382 C","383 C","384 C","385 C","386 C","387 C","388 C","389 C","390 C","391 C","392 C","587 C","586 C","585 C","584 C","583 C","582 C","581 C","393 C","394 C","395 C","396 C","397 C","398 C","399 C","3935 C","3945 C","3955 C","3965 C","3975 C","3985 C","3995 C","600 C","601 C","602 C","603 C","604 C","605 C","606 C","607 C","608 C","609 C","610 C","611 C","612 C","613 C","461 C","460 C","459 C","458 C","457 C","456 C","455 C","614 C","615 C","616 C","617 C","618 C","619 C","620 C","7751 C","7752 C","7753 C","7754 C","7755 C","7756 C","7757 C","7758 C","7759 C","7760 C","7761 C","7762 C","7763 C","7764 C","7765 C","7766 C","7767 C","7768 C","7769 C","7770 C","7771 C","4545 C","4535 C","4525 C","4515 C","4505 C","4495 C","4485 C","454 C","453 C","452 C","451 C","450 C","449 C","448 C","7499 C","7500 C","7501 C","7502 C","7503 C","7504 C","7505 C","468 C","467 C","466 C","465 C","464 C","463 C","462 C","7506 C","7507 C","7508 C","7509 C","7510 C","7511 C","7512 C","719 C","720 C","721 C","722 C","723 C","724 C","725 C","475 C","474 C","473 C","472 C","471 C","470 C","469 C","726 C","727 C","728 C","729 C","730 C","731 C","732 C","4685 C","4675 C","4665 C","4655 C","4645 C","4635 C","4625 C","7513 C","7514 C","7515 C","7516 C","7517 C","7518 C","7519 C","4755 C","4745 C","4735 C","4725 C","4715 C","4705 C","4695 C","482 C","481 C","480 C","479 C","478 C","477 C","476 C","7527 C","7528 C","7529 C","7530 C","7531 C","7532 C","7533 C","7534 C","7535 C","7536 C","7537 C","7538 C","7539 C","7540 C","427 C","428 C","429 C","430 C","431 C","432 C","433 C","420 C","421 C","422 C","423 C","424 C","425 C","426 C","441 C","442 C","443 C","444 C","445 C","446 C","447 C","413 C","414 C","415 C","416 C","417 C","418 C","419 C","400 C","401 C","402 C","403 C","404 C","405 C","406 C","407 C","408 C","409 C","410 C","411 C","412 C","434 C","435 C","436 C","437 C","438 C","439 C","440 C","Warm Gray 1 C","Warm Gray 2 C","Warm Gray 3 C","Warm Gray 4 C","Warm Gray 5 C","Warm Gray 6 C","Warm Gray 7 C","Warm Gray 8 C","Warm Gray 9 C","Warm Gray 10 C","Warm Gray 11 C","Cool Gray 1 C","Cool Gray 2 C","Cool Gray 3 C","Cool Gray 4 C","Cool Gray 5 C","Cool Gray 6 C","Cool Gray 7 C","Cool Gray 8 C","Cool Gray 9 C","Cool Gray 10 C","Cool Gray 11 C","Black 2 C","Black 3 C","Black 4 C","Black 5 C","Black 6 C","Black 7 C"],Tt=["FEDD00","FFD700","FE5000","F9423A","EF3340","CE0058","E10098","BB29BB","440099","10069F","001489","0085CA","00AB84","2D2926","F2F0A1","FCAEBB","F1B2DC","BF9BDE","74D1EA","9DE7D7","9E978E","009ACE","44D62C","FFE900","FFAA4D","FF7276","FF3EB5","EA27C2","84754E","85714D","866D4B","8B6F4E","87674F","8B634B","8A8D8F","FFD900","FF5E00","F93822","CE0056","D62598","4E008E","00239C","0084CA","00B08B","222223","F6EB61","F7EA48","FCE300","C5A900","AF9800","897A27","F5E1A4","ECD898","EED484","F4DA40","F2CD00","F1C400","CBA052","F9E547","FBE122","FEDB00","FFD100","DAAA00","AA8A00","9C8412","FAE053","FBDD40","FDDA24","FFCD00","C99700","AC8400","897322","F3DD6D","F3D54E","F3D03E","F2A900","CC8A00","A07400","6C571B","F8E08E","FBD872","FFC845","FFB81C","C69214","AD841F","886B25","FBDB65","FDD757","FED141","FFC72C","EAAA00","B58500","9A7611","FFC600","FFB500","D19000","B47E00","73531D","5A4522","4B3D2A","D29F13","B78B20","9F7D23","967126","8F6A2A","7D622E","6C5D34","FDD26E","FFC658","FFBF3F","FFA300","DE7C00","AF6D04","74531C","FDD086","FFC56E","FFB549","FF9E1B","D57800","996017","6E4C1E","F2C75C","F1BE48","F1B434","ED8B00","CF7F00","A76D11","715C2A","F6BE00","F0B323","FEAD77","E6A65D","D38235","DC8633","C16C18","BD9B60","D69A2D","DB8A06","CD7925","AD6433","89532F","775135","D78825","D3832B","C67D30","B67233","A7662B","9E6A38","835D32","FCC89B","FDBE87","FDAA63","F68D2E","EA7600","D45D00","BE4D00","FECB8B","FFC27B","FFB25B","FF8200","E57200","BE6A14","9B5A1A","EFD19F","EFBE7D","ECA154","E87722","CB6015","A1561C","603D20","FFAE62","FF8F1C","FF6900","B94700","94450B","653819","FFB990","FFA06A","FF7F32","FF6A13","D86018","A65523","8B4720","FFBE9F","FF9D6E","FF7F41","FF671F","E35205","BE531C","73381D","DB864E","E07E3C","DC6B2F","DC582A","C05131","864A33","674736","FFA38B","FF8D6D","FF6A39","FC4C02","DC4405","A9431E","833921","FFB3AB","FF8674","FF5C39","FA4616","CF4520","963821","6B3529","C4622D","BA5826","AF5C37","9E5330","924C2E","7B4D35","5C4738","D4B59E","C07D59","B15533","9D432C","7C3A2D","6B3D2E","5C3D31","D14124","BD472A","B33D26","8D3F2B","83412C","7B4931","674230","E4D5D3","E1BBB4","D6938A","C26E60","A4493D","823B34","683431","DDBCB0","CA9A8E","BC8A7E","A37F74","866761","6B4C4C","583D3E","EABEB0","C09C83","B46A55","AB5C57","A45248","9A6A4F","8A391B","ECC3B2","ECBAA8","EAA794","E8927C","DA291C","9A3324","653024","FFB1BB","FF808B","FF585D","E03C31","BE3A34","81312F","FFA3B5","FF8DA1","F8485E","EE2737","D22630","AF272F","7C2529","FCAFC0","FB637E","F4364C","CB333B","A4343A","643335","C66E4E","C04C36","B7312C","AB2328","93272C","8A2A2B","802F2D","E1523D","C63527","A72B2A","9E2A2B","6D3332","633231","572D2D","E6BAA8","E56A54","E04E39","CD545B","B04A5A","9B2242","651D32","FABBCB","FC9BB3","F65275","E4002B","C8102E","A6192E","76232F","ECC7CD","E89CAE","DF4661","D50032","BA0C2F","9D2235","862633","F8A3BC","F67599","EF426F","E40046","BF0D3E","9B2743","782F40","F5B6CD","F59BBB","EF4A81","E0004D","C5003E","A6093D","8A1538","F5DADF","F7CED7","F9B5C4","F890A5","EF6079","E03E52","CB2C30","F2D4D7","F4C3CC","F2ACB9","E68699","D25B73","B83A4B","9E2A2F","ECB3CB","E782A9","E0457B","CE0037","A50034","861F41","6F263D","F99FC9","F57EB6","F04E98","E31C79","CE0F69","AC145A","7D2248","F4CDD4","E06287","E24585","B52555","A4123F","971B2F","6A2C3E","D6C9CA","C4A4A7","C16784","C63663","BC204B","912F46","7E2D40","EABEDB","E56DB1","DA1884","A50050","910048","6C1D45","936D73","934054","8E2C48","732E4A","672E45","582D40","502B3A","EF95CF","EB6FBD","DF1995","D0006F","AA0061","890C58","672146","F4A6D7","F277C6","E93CAC","C6007E","A20067","840B55","EAD3E2","E6BCD8","DFA0C9","D986BA","C6579A","AE2573","960051","E5CEDB","E3C8D8","DEBED2","C996B6","B06C96","994878","7C2855","E4C6D4","DCB6C9","D0A1BA","BE84A3","A76389","893B67","612141","EBBECB","E8B3C3","E4A9BB","D592AA","84344E","6F2C3F","572932","E2BCCB","DCA9BF","C9809E","B55C80","A73A64","9B3259","872651","E9CDD0","E4BEC3","D7A3AB","C48490","B46B7A","984856","893C47","F2C6CF","F1BDC8","E9A2B2","DC8699","8F3237","7F3035","5D2A2C","E9C4C7","E5BAC1","DAA5AD","C6858F","7A3E3A","6A3735","512F2E","DFC2C3","DBB7BB","CCA1A6","B07C83","9C6169","874B52","3F2021","F1A7DC","EC86D0","E45DBF","DB3EB1","C5299B","AF1685","80225F","EFBAE1","E277CD","D539B5","C800A1","B0008E","9E007E","830065","EAB8E4","E59BDC","DD7FD3","C724B1","BB16A3","A51890","80276C","A56E87","A83D72","991E66","8A1B61","722257","6A2A5B","5E2751","E7BAE4","DD9CDF","C964CF","AD1AAC","981D97","72246C","EBC6DF","E6BEDD","E2ACD7","D48BC8","93328E","833177","612C51","EEDAEA","CCAED0","D59ED7","B288B9","A277A6","9F5CC0","963CBD","D7A9E3","C98BDB","AC4FC6","9B26B6","87189D","772583","653165","948794","A2789C","A15A95","8E3A80","6E2B62","6A3460","5D3754","D5C2D8","C9B1D0","BA9CC5","A57FB2","642F6C","59315F","4B3048","DBCDD3","D0BEC7","C6B0BC","AF95A6","86647A","66435A","4A3041","D8C8D1","D3C0CD","BFA5B8","9B7793","7E5475","693C5E","512A44","DFC8E7","D7B9E4","CAA2DD","B580D1","8031A7","702F8A","572C5F","D6BFDD","C6A1CF","8C4799","6D2077","642667","5D285F","51284F","CBA3D8","B884CB","A05EB5","84329B","702082","671E75","5F2167","9991A4","8D6E97","7A4183","6B3077","653279","5E366E","5C4E63","C1A0DA","A77BCA","8246AF","5C068C","500778","470A68","3C1053","D7C6E6","C1A7E2","9063CD","753BBD","5F259F","582C83","512D6D","C5B4E3","AD96DC","9678D3","7D55C7","330072","2E1A47","B4B5DF","9595D2","7474C1","24135F","211551","201747","221C35","A7A4E0","8B84D7","685BC7","2E008B","280071","250E62","201547","6E7CA0","686E9F","615E9B","565294","514689","4C4184","535486","DDDAE8","B6B8DC","A7A2C3","8986CA","5D4777","4B384C","41273B","878CB4","7C7FAB","7566A0","6F5091","68478D","563D82","523178","E5E1E6","E0DBE3","C6BCD0","A192B2","7C6992","614B79","3F2A56","D8D7DF","C6C4D2","B3B0C4","8D89A5","595478","403A60","1E1A34","C5CFDA","BBC7D6","A2B2C8","8E9FBC","1B365D","1F2A44","1C1F2A","D9E1E2","A4BCC2","98A4AE","768692","425563","253746","131E29","B9D3DC","A3C7D2","8DB9CA","6BA4B8","003D4C","00313C","072B31","BFCED6","B7C9D3","A6BBC8","7A99AC","5B7F95","4F758B","081F2C","D1DDE6","C6D6E3","9BB8D3","7DA1C4","5E8AB4","236192","002E5D","DBE2E9","CED9E5","A7BCD6","7D9BC1","326295","003A70","002554","DDE5ED","C8D8EB","B1C9E8","7BA4DB","407EC9","003594","001A70","BDC5DB","89ABE3","8094DD","7BA6DE","5F8FB4","3A5DAE","606EB2","CBD3EB","9FAEE5","485CC7","1E22AA","171C8F","151F6D","141B4D","B8CCEA","5C88DA","0047BB","06038D","001871","001E62","071D49","C3D7EE","A7C6ED","307FE2","001A72","001E60","13294B","ABCAE9","8BB8E8","418FDE","012169","00205B","041E42","92C1E9","6CACE4","0072CE","0033A0","003087","002D72","0C2340","94A9CB","6787B7","426DA9","385E9D","2C5697","1D4F91","1D428A","C6DAE7","BDD6E6","A4C8E1","7BAFD4","003C71","003057","00263A","B9D9EB","9BCBEB","69B3E7","003DA5","002F6C","002855","041C2C","8DC8E8","62B5E5","009CDE","0057B8","004C97","003865","00263E","71C5E8","41B6E6","00A3E0","005EB8","004B87","003B5C","002A3A","4698CB","298FC2","0076A8","006298","005587","004976","01426A","99D6EA","5BC2E7","00A9E0","0077C8","00629B","004F71","003E51","7BA7BC","6399AE","4E87A0","41748D","34657F","165C7D","005776","BBDDE6","71B2C9","4298B5","0086BF","007DBA","00558C","002B49","9ADBE8","59CBE8","00B5E2","006BA6","00587C","003B49","A4DBE8","8BD3E6","4EC3E0","00AFD7","0095C8","0082BA","0067A0","48A9C5","009CBD","0085AD","007096","006A8E","00617F","005670","B8DDE1","9BD3DD","77C5D5","3EB1C8","0093B2","007396","005F83","6AD1E3","05C3DE","00A9CE","0092BC","007FA3","00677F","004851","68D2DF","00C1D5","00AEC7","008EAA","00778B","006272","004F59","63B1BC","00A7B5","0097A9","00859B","007D8A","007680","006269","B1E4E3","88DBDF","2DCCD3","009CA6","008C95","007377","005F61","A0D1CA","40C1AC","00B0B9","00A3AD","007398","005F86","005A70","7EDDD3","5CB8B2","279989","007681","487A7B","0D5257","244C5A","B6CFD0","ABC7CA","94B7BB","7FA9AE","4F868E","115E67","07272D","00968F","00857D","007672","006D68","00635B","005E5D","005151","9CDBD9","64CCC9","00B2A9","008675","007367","00685E","00534C","71DBD4","2AD2C9","00BFB3","00A499","008578","00594F","004C45","7CE0D3","2CD5C4","00C7B1","00B398","009681","007864","004E42","6DCDB8","49C5B1","00AB8E","009B77","008264","006A52","034638","B9DCD2","A1D6CA","86C8BC","6BBBAE","006F62","00594C","1D3C34","B5E3D8","A5DFD3","98DBCE","6BCABA","00816D","006C5B","173F35","ADCAB8","9ABEAA","85B09A","6FA287","28724F","205C40","284734","BFCEC2","A7BDB1","92ACA0","7F9C90","5C7F71","43695B","183028","BAC5B9","B0BDB0","A3B2A4","94A596","708573","5E7461","22372B","BCC9C5","B1C0BC","9DB0AC","829995","5D7975","3E5D58","18332F","D1E0D7","B7CDC2","9AB9AD","789F90","507F70","285C4D","13322B","A7E6D7","8CE2D0","3CDBC0","009775","007B5F","00664F","8FD6BD","6ECEB2","00B388","00965E","007A53","006747","115740","50A684","00966C","008755","007B4B","006F44","006845","005844","7AE1BF","47D7AC","00C389","00AF66","007749","006341","154734","A0DAB3","91D6AC","71CC98","009A44","00843D","046A38","2C5234","A2E4B8","8FE2B0","80E0A7","00B140","009639","007A33","215732","9BE3BF","26D07C","00BF6F","00B74F","009F4D","275D38","00573F","4B9560","228848","007A3E","007041","286140","36573B","395542","6BA539","48A23F","319B42","3A913F","44883E","4A773C","44693D","ADDC91","A1D884","6CC24A","43B02A","509E2F","4C8C2B","4A7729","D0DEBB","BCE194","8EDD65","78D64B","74AA50","719949","79863C","C2E189","B7DD79","A4D65E","78BE20","64A70B","658D1B","546223","D4EB8E","CDEA80","C5E86C","97D700","84BD00","7A9A01","59621D","C4D6A4","BCD19B","B7CE95","A9C47F","789D4A","67823A","4E5B31","D0D1AB","C6C89B","BABD8B","A2A569","8A8D4A","6D712E","3D441E","D2CE9E","CBC793","C0BB87","AFA96E","A09958","89813D","555025","C3C6A8","B3B995","A3AA83","899064","737B4C","5E6738","3E4827","BFCC80","BBC592","9CAF88","8F993E","76881D","7A7256","5B6236","BABC16","ABAD23","999B30","888D30","7C8034","727337","656635","E2E868","DBE442","CEDC00","C4D600","A8AD00","949300","787121","E9EC6B","E3E935","E0E721","D0DF00","B5BD00","9A9500","827A04","E3E48D","E0E27C","DBDE70","D2D755","B7BF10","8E8C13","625D20","F0EC74","EDE939","ECE81A","E1E000","BFB800","ADA400","A09200","F3EA5D","F3E500","EFDF00","EEDC00","BBA600","9A8700","685C20","F1EB9C","F0E991","F0E87B","EDE04B","EADA24","E1CD00","CFB500","EBE49A","E9E186","E6DE77","E1D555","D7C826","C4B000","B39B00","E9DF97","E4D77E","DECD63","D9C756","B89D18","A28E2A","695B24","DCD59A","D6CF8D","D0C883","C0B561","AC9F3C","9F912A","8A7B19","CAB64B","CFB023","C1A01E","A08629","897630","736635","675E33","D4C304","C4B200","91852C","747136","5D6439","585C3B","535435","BBB323","B4A91F","AA9D2E","8F7E35","716135","635939","4E4934","D5CB9F","CFC493","C5B783","B3A369","998542","8C7732","614F25","CAC7A7","BFBB98","B0AA7E","9B945F","594A25","524727","4A412A","F1E6B2","DFD1A7","D9C89E","CEB888","A89968","94795D","816040","DDCBA4","D3BC8D","C6AA76","B9975B","8B5B29","744F28","5C462B","EFDBB2","FCD299","E1B87F","D6A461","C6893F","B77729","A6631B","EDC8A3","E7B78A","DDA46F","C88242","B36924","934D11","7D3F16","F3CFB3","F1C6A7","F0BF9B","E59E6D","B86125","A45A2A","693F23","E0C09F","D9B48F","CDA077","B58150","9E652E","774212","623412","E0C6AD","DCBFA6","CDA788","BF9474","AD7C59","946037","4F2C1D","E1B7A7","D5A286","C58B68","99552B","85431E","6D4F47","5E4B3C","D7C4B7","CDB5A7","C0A392","AE8A79","956C58","7C4D3A","5B3427","DBC8B6","D3BBA8","C6A992","AA8066","703F2A","623B2A","4E3629","D6D2C4","C5B9AC","B7A99A","A39382","7A6855","63513D","473729","D1CCBD","B7B09C","A69F88","A7ACA2","949A90","8E9089","4B4F54","D0D3D4","C1C6C8","A2AAAD","7C878E","5B6770","333F48","1D252D","C7C9C7","B2B4B2","9EA2A2","898D8D","707372","54585A","25282A","BEC6C4","A2ACAB","919D9D","717C7D","505759","3F4444","373A36","BABBB1","A8A99E","919388","7E7F74","65665C","51534A","212322","C4BFB6","AFA9A0","9D968D","8C857B","776E64","696158","C4BCB7","B2A8A2","978C87","857874","746661","5E514D","382F2D","D0C4C5","C1B2B6","AB989D","7B6469","584446","453536","382E2C","D7D2CB","CBC4BC","BFB8AF","B6ADA5","ACA39A","A59C94","968C83","8C8279","83786F","796E65","6E6259","D9D9D6","D0D0CE","C8C9C7","BBBCBC","B1B3B3","A7A8AA","97999B","888B8D","75787B","63666A","53565A","332F21","212721","31261D","3E2B2E","101820","3D3935"],Ne=Tt.map(r=>[parseInt(r.substring(0,2),16),parseInt(r.substring(2,4),16),parseInt(r.substring(4,6),16)]);function ri(r){const t=Xt.indexOf(r);return t>=0?Tt[t]:""}function wn(r){const t=Tt.indexOf(r);return t>=0?Xt[t]:""}function ii(r,t=64){const e=[],a=[],n=wn(r);n&&e.push({pms:n,hex:r,distance:0});const i=parseInt(r.substring(0,2),16),s=parseInt(r.substring(2,4),16),o=parseInt(r.substring(4,6),16);let l,c,d;for(let A=0;A<Tt.length;A++){l=Ne[A][0],c=Ne[A][1],d=Ne[A][2];const u=Math.sqrt(Math.pow(i-l,2)+Math.pow(s-c,2)+Math.pow(o-d,2));a.push(u)}for(let A=0;A<a.length;A++)a[A]<=t&&!e.some(u=>u.pms===Xt[A])&&e.push({pms:Xt[A],hex:Tt[A],distance:a[A]});return e.sort((A,u)=>A.distance-u.distance)}const si=Xt.map((r,t)=>({pms:r,hex:Tt[t]})),oi=new Tr(si,{keys:["pms"]});function li(r,t){return oi.search(r,t?{limit:t}:void 0)}let Ot=null;function yn(r){if(r.startsWith("#"))return Va(r);if(!document)throw new Error("browserColorToHex is only supported on browsers");if(Ot||(Ot=document.createElement("canvas").getContext("2d")),!Ot)throw new Error("Failed to create canvas context required to convert colors");Ot.fillStyle=r;const t=Va(Ot.fillStyle);return t||console.error(`Unknown browser color ${r}`),t}function Va(r){const t=r.substring(1).toUpperCase();return t.length===6?t:t.length===3?`${t[0]}${t[0]}${t[1]}${t[1]}${t[2]}${t[2]}`:""}const Ae=r=>{const t=Sn(r.spotColor);return t?`${r.browserValue} ${t}`:r.browserValue},Sn=r=>{if(!r)return"";if(r.profileName.includes("/")&&r.profileName.includes(".icc")){const t=r.profileName.replace(/\s/g,"-"),e=t.lastIndexOf("/");return`icc-named-color(${t.slice(e+1).slice(0,-4)}, ${r.namedColor})`}return`icc-named-color(${r.profileName}, ${r.namedColor})`},Xe=r=>{const t=r.split(/[ ](?=[^)]*?(?:\(|$))/);if(t.length===0)return{browserValue:"#000000"};if(t.length===1)return{browserValue:t[0]};const e=t[1].match(/\(([^)]+)\)/gm);if(!e)throw new Error("Unhandled state of color value in SVG");const a=e[0].replace(/[() ]/g,"").split(",");return{browserValue:t[0],spotColor:{profileName:a[0],namedColor:a[1]}}},ci=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],di=["fill","stroke"],Qt=(r,t)=>{t(r),r.children.length>0&&Array.from(r.children).forEach(e=>Qt(e,t))},Ai=(r,t)=>{try{return r.matches(t)}catch{return r.classList.contains(t.substring(1))}},Ie=(r,t=!1)=>{!t&&r.setAttribute("preserveAspectRatio","none");const e=[];Qt(r,a=>{var i,s,o;if(a.tagName==="script"){a.remove();return}if(a.tagName==="style"){try{(i=Za.parse(a.innerHTML).stylesheet)==null||i.rules.forEach(c=>{e.push(c)}),a.remove()}catch(l){console.error(l)}return}const n=(o=(s=a.attributes.getNamedItem("style"))==null?void 0:s.value)==null?void 0:o.trim();if(n){const l=[];n.split(";").forEach(d=>{const A=d.trim();if(A){const[u,h]=A.split(":"),g=u.toLowerCase();di.indexOf(g)>-1?a.setAttribute(g,h.trim()):l.push(A)}}),l.length>0?a.setAttribute("style",l.join(";")):a.removeAttribute("style")}}),Qt(r,a=>{e.forEach(n=>{var i;(i=n.selectors)==null||i.forEach(s=>{var o;Ai(a,s)&&((o=n.declarations)==null||o.forEach(l=>{l.property&&l.value&&a.setAttribute(l.property,l.value)}))})})})},ui=r=>{const t=/pt|pc|mm|cm|in/gm,e=r.getAttribute("viewBox"),a=r.getAttribute("width"),n=r.getAttribute("height");if(!e)throw new Error("viewBox not specified on SVG!");a&&r.setAttribute("width",a.replace(t,"")),n&&r.setAttribute("height",n.replace(t,""))},En=r=>it().parseFromString(r,"image/svg+xml").firstElementChild,hi=(r,t,e)=>{r.setAttribute("height",`${e}px`),r.setAttribute("width",`${t}px`)},vn=(r,t,e)=>{Qt(r,a=>{const n=a.attributes.getNamedItem("fill");n&&n.value!=="none"&&a.classList.forEach(s=>{if(s.startsWith("spiff-fill")){const o=t[s.replace("spiff-fill-","")];if(o)a.setAttribute("fill",e?Ae(o):o.browserValue);else{const l=t[s];l&&a.setAttribute("fill",e?Ae(l):l.browserValue)}}});const i=a.attributes.getNamedItem("stroke");i&&i.value!=="none"&&a.classList.forEach(s=>{if(s.startsWith("spiff-stroke")){const o=t[s.replace("spiff-stroke-","")];if(o)a.setAttribute("stroke",e?Ae(o):o.browserValue);else{const l=t[s];l&&a.setAttribute("fill",e?Ae(l):l.browserValue)}}})})},Bn=r=>pt().serializeToString(r),ga=(r,t,e,a,n)=>{const i=En(r);if(!i)throw new Error("Failed to read SVG.");return hi(i,t,e),vn(i,a,n),Bn(i)},In=(r,t,e)=>{const a=En(r);if(!a)throw new Error("Failed to read SVG.");return vn(a,t,e),Bn(a)},gi=r=>{const t=/<svg.*<\/svg>/s,e=r.match(t)||[],a=(e==null?void 0:e.length)>0?e[0]:"";return it().parseFromString(a,"image/svg+xml")},st=async r=>{const e=gi(r).firstElementChild;if(!e)throw new Error("Failed to read SVG.");Ie(e);const a={};Qt(e,s=>{ci.includes(s.tagName)&&!s.attributes.getNamedItem("fill")&&s.setAttribute("fill","black");const o=s.attributes.getNamedItem("fill");if(o&&o.value!=="none"&&!o.value.startsWith("url(")){const c=Xe(o.value),d=c.browserValue.replace(/\W/g,""),A=`spiff-fill-${d}`;s.setAttribute("fill",c.browserValue),s.classList.add(A),a[d]=c}const l=s.attributes.getNamedItem("stroke");if(l&&l.value!=="none"&&!l.value.startsWith("url(")){const c=Xe(l.value),d=c.browserValue.replace(/\W/g,""),A=`spiff-stroke-${d}`;s.classList.add(A),s.setAttribute("stroke",c.browserValue),a[d]=c}});const i=pt().serializeToString(e);return{colors:a,svg:i}},mi=S.gql`
2
2
  fragment AssetMetadataFields on Asset {
3
3
  metadata {
4
4
  key
5
5
  value
6
6
  }
7
7
  }
8
- `,ne=n=>Q.gql`
9
- ${n&&Di||""}
8
+ `,re=r=>S.gql`
9
+ ${r&&mi||""}
10
10
  fragment AssetFields on Asset {
11
11
  name
12
12
  key
@@ -18,16 +18,16 @@
18
18
  name
19
19
  link
20
20
  }
21
- ${n&&"...AssetMetadataFields"||""}
21
+ ${r&&"...AssetMetadataFields"||""}
22
22
  }
23
- `,yi=Q.gql`
24
- ${ne(!1)}
23
+ `,fi=S.gql`
24
+ ${re(!1)}
25
25
  query GetAssets($keys: [String]!) {
26
26
  assets(keys: $keys) {
27
27
  ...AssetFields
28
28
  }
29
29
  }
30
- `,uA=Q.gql`
30
+ `,ma=S.gql`
31
31
  fragment MaterialFields on Material {
32
32
  id
33
33
  name
@@ -74,14 +74,14 @@
74
74
  fileLink
75
75
  }
76
76
  }
77
- `,Fi=Q.gql`
78
- ${uA}
77
+ `,pi=S.gql`
78
+ ${ma}
79
79
  query GetMaterials($ids: [String]) {
80
80
  materials(id: $ids) {
81
81
  ...MaterialFields
82
82
  }
83
83
  }
84
- `,Mi=Q.gql`
84
+ `,Ci=S.gql`
85
85
  mutation CreateAsset($name: String!, $type: String!, $mimeType: String!, $anonymous: Boolean, $temporary: Boolean) {
86
86
  assetCreate(name: $name, type: $type, mimeType: $mimeType, anonymous: $anonymous, temporary: $temporary) {
87
87
  uploadUrl
@@ -95,14 +95,14 @@
95
95
  }
96
96
  }
97
97
  }
98
- `,Si=Q.gql`
99
- ${ne(!1)}
98
+ `,wi=S.gql`
99
+ ${re(!1)}
100
100
  mutation RemoveBackgroundFromAsset($key: String!) {
101
101
  assetRemoveBackground(key: $key) {
102
102
  ...AssetFields
103
103
  }
104
104
  }
105
- `,$e=async n=>(await y.getShadowGraphqlClient().query({query:yi,errorPolicy:"all",fetchPolicy:"no-cache",variables:{keys:n}})).data.assets,xi=async n=>(await y.getShadowGraphqlClient().query({query:Fi,errorPolicy:"all",variables:{ids:n}})).data.materials,Yi=async(n,t,e,A,a)=>{var s;return(s=(await y.getShadowGraphqlClient().mutate({mutation:Mi,errorPolicy:"all",fetchPolicy:"no-cache",variables:{name:n,type:t,mimeType:e,anonymous:A,temporary:a}})).data)==null?void 0:s.assetCreate};class Pi{constructor(){this.cache=new Map,this.bgrmProcessCache=new Map,this.materialCache=new Map,this.loadImageAsFileInfo=async t=>{const e=await t.arrayBuffer(),A=await ae(e),a=(i,s)=>{const o=atob(i.split(",")[1]),r=[];for(let c=0;c<o.length;c++)r.push(o.charCodeAt(c));return new Blob([new Uint8Array(r)],{type:s})};return{name:t.name.substring(t.name.lastIndexOf("/")+1),blob:a(A.dataUrl,t.type)}}}async getLocalOrFromServer(t){if(this.cache.has(t)){const a=this.cache.get(t);if(!a)throw new L("Failed to get asset from cache!");return a}const A=(async()=>(await $e([t]))[0])();return this.cache.set(t,A),A}async getFromServer(t){const A=(async()=>(await $e([t]))[0])();return this.cache.set(t,A),A}keyFromURL(t){let e;try{e=new URL(t).pathname}catch{e=void 0}return e!==void 0&&e.startsWith("/")&&(e=e.replace("/","")),e==null?void 0:e.split("?")[0]}cacheAsset(t){if(!t.key)throw new L("Asset has no key!");this.cache.has(t.key)||this.cache.set(t.key,Promise.resolve(t))}cacheMaterial(t){if(!t.id)throw new L("Material has no id!");this.materialCache.has(t.id)||this.materialCache.set(t.id,Promise.resolve(t))}async getMaterialLocalOrFromServer(t){if(this.materialCache.has(t))return this.materialCache.get(t);const A=(async()=>(await xi([t]))[0])();return this.materialCache.set(t,A),A}async uploadAssetWithProgress(t,e,A,a,i){const s=await this.dispatchCreateAssetRequest(t,e,a,i);if(!s)throw new Error("Failed to create asset.");return await new Promise((o,r)=>{const c=new XMLHttpRequest;c.open("PUT",s.assetResponse.uploadUrl,!0),c.setRequestHeader("Content-Type",s.mimeType),c.setRequestHeader("Cache-Control","public,max-age=31536000,immutable"),c.upload.onprogress=l=>{l.lengthComputable&&A(l.loaded*100/l.total)},c.onload=()=>{const l=s.assetResponse.asset;Dt.add(s.assetResponse.asset),o(l)},c.onerror=r,this.postProcessFileUpload(t,s.mimeType).then(l=>c.send(l.blob)).catch(r)}),this.cacheAsset(s.assetResponse.asset),s.assetResponse.asset}async uploadAsset(t,e,A,a){return this.uploadAssetWithProgress(t,e,()=>{},A,a)}async uploadFile(t,e){const a=this.isRaster(t)?Kt.Image:Kt.Illustration,i=await this.loadImageAsFileInfo(t);return await this.uploadAssetWithProgress(i,a,e,!0)}async removeBackgroundFromAsset(t){const e=t.key;if(this.bgrmProcessCache.has(e))return this.bgrmProcessCache.get(e);if(q.has(e)){const i=this.getLocalOrFromServer(q.get(e));return this.bgrmProcessCache.set(e,i),i}const a=(async()=>{var s,o;const i=await y.getShadowGraphqlClient().mutate({mutation:Si,fetchPolicy:"no-cache",errorPolicy:"all",variables:{key:e}});if(this.bgrmProcessCache.delete(e),!((o=(s=i.data)==null?void 0:s.assetRemoveBackground)!=null&&o.key))throw new Error("Failed to remove background from image");return Dt.add(i.data.assetRemoveBackground),q.add(e,i.data.assetRemoveBackground.key),this.cache.set(i.data.assetRemoveBackground.key,Promise.resolve(i.data.assetRemoveBackground)),i.data.assetRemoveBackground})();return this.bgrmProcessCache.set(e,a),a}removePersistedAsset(t){Dt.remove(t),q.delete(t),q.deleteForBgRemovedKey(t)}getPersistedAssets(){return Dt.list()}registerPersistedAssetListener(t){Dt.addCallback(t)}unRegisterPersistedAssetListener(t){Dt.removeCallback(t)}isRaster(t){return!(t.type==="image/svg+xml"||t.type==="application/pdf"||t.type==="application/postscript")}async postProcessFileUpload(t,e){if(e==="image/svg+xml"){const A=await t.blob.text(),s=new window.DOMParser().parseFromString(A,"image/svg+xml").documentElement;if(!s)throw new mt("Failed to read SVG.");Qi(s);const r=wt().serializeToString(s);return{name:t.name,blob:new Blob([r],{type:"image/svg+xml"})}}return t}async dispatchCreateAssetRequest(t,e,A,a){const i=t.blob.type?t.blob.type:this.guessMIME(t.name),s=await Yi(t.name,e,i,A,a);if(s)return{assetResponse:s,mimeType:i}}guessMIME(t){const e=t.split(".").pop();switch(e){case"glb":return"model/gltf-binary";case"ttf":return"font/ttf";case"mkv":return"video/x-matroska";default:throw new L("Unexpected mimetype: "+e)}}}const Ut="persistentAssets",Pa=class Et{static add(t){if(!t.fileLink){console.error("Failed to find cdn link on asset, cannot persist!");return}const e=new Map;e.set(t.key||"",t.fileLink);const A=k.getMap(Ut);A&&A.forEach((a,i)=>{e.set(i,a)}),k.setMap(Ut,e),Et.executeCallbacks()}static remove(t){const e=k.getMap(Ut);if(!e)return;const A=Array.from(e.entries()).find(a=>a[0]===t);A&&(e.delete(A[0]),k.setMap(Ut,e),Et.executeCallbacks())}static list(){const t=k.getMap(Ut);return t?Array.from(t.entries()).map(e=>({assetKey:e[0],src:e[1]})):[]}static addCallback(t){Et.callbacks.push(t)}static removeCallback(t){Et.callbacks=Et.callbacks.filter(e=>e!==t)}static executeCallbacks(){Et.callbacks.forEach(t=>t())}};Pa.callbacks=[];let Dt=Pa;const WA="bgrmPersistentAssets";class q{static has(t){return q.getMap().has(t)}static get(t){return q.getMap().get(t)}static keys(){return q.getMap().keys()}static values(){return q.getMap().values()}static add(t,e){const A=q.getMap();A.set(t,e),q.setMap(A)}static delete(t){const e=q.getMap();e.delete(t),q.setMap(e)}static deleteForBgRemovedKey(t){const e=q.getMap(),A=Array.from(e.keys()).find(a=>e.get(a)===t);A&&(e.delete(A),q.setMap(e))}static getMap(){return k.getMap(WA)||new Map}static setMap(t){k.setMap(WA,t)}}const T=new Pi;class vi{constructor(){this.cache={},this.disabled=!1}get(t){if(this.disabled)return;const e=JSON.stringify(t);return this.cache[e]}set(t,e){if(this.disabled)return e;const A=JSON.stringify(t);return this.cache[A]=e,e}disable(t){this.disabled=t}}const bt=new vi,va=Q.gql`
105
+ `,Ze=async r=>(await I.getShadowGraphqlClient().query({query:fi,errorPolicy:"all",fetchPolicy:"no-cache",variables:{keys:r}})).data.assets,yi=async r=>(await I.getShadowGraphqlClient().query({query:pi,errorPolicy:"all",variables:{ids:r}})).data.materials,Si=async(r,t,e,a,n)=>{var s;return(s=(await I.getShadowGraphqlClient().mutate({mutation:Ci,errorPolicy:"all",fetchPolicy:"no-cache",variables:{name:r,type:t,mimeType:e,anonymous:a,temporary:n}})).data)==null?void 0:s.assetCreate};class Ei{constructor(){this.cache=new Map,this.bgrmProcessCache=new Map,this.materialCache=new Map,this.loadImageAsFileInfo=async t=>{const e=await t.arrayBuffer(),a=await ne(e),n=(i,s)=>{const o=atob(i.split(",")[1]),l=[];for(let c=0;c<o.length;c++)l.push(o.charCodeAt(c));return new Blob([new Uint8Array(l)],{type:s})};return{name:t.name.substring(t.name.lastIndexOf("/")+1),blob:n(a.dataUrl,t.type)}}}async getLocalOrFromServer(t){if(this.cache.has(t)){const n=this.cache.get(t);if(!n)throw new $("Failed to get asset from cache!");return n}const a=(async()=>(await Ze([t]))[0])();return this.cache.set(t,a),a}async getFromServer(t){const a=(async()=>(await Ze([t]))[0])();return this.cache.set(t,a),a}keyFromURL(t){let e;try{e=new URL(t).pathname}catch{e=void 0}return e!==void 0&&e.startsWith("/")&&(e=e.replace("/","")),e==null?void 0:e.split("?")[0]}cacheAsset(t){if(!t.key)throw new $("Asset has no key!");this.cache.has(t.key)||this.cache.set(t.key,Promise.resolve(t))}cacheMaterial(t){if(!t.id)throw new $("Material has no id!");this.materialCache.has(t.id)||this.materialCache.set(t.id,Promise.resolve(t))}async getMaterialLocalOrFromServer(t){if(this.materialCache.has(t))return this.materialCache.get(t);const a=(async()=>(await yi([t]))[0])();return this.materialCache.set(t,a),a}async uploadAssetWithProgress(t,e,a,n,i){const s=await this.dispatchCreateAssetRequest(t,e,n,i);if(!s)throw new Error("Failed to create asset.");return await new Promise((o,l)=>{const c=new XMLHttpRequest;c.open("PUT",s.assetResponse.uploadUrl,!0),c.setRequestHeader("Content-Type",s.mimeType),c.setRequestHeader("Cache-Control","public,max-age=31536000,immutable"),c.upload.onprogress=d=>{d.lengthComputable&&a(d.loaded*100/d.total)},c.onload=()=>{const d=s.assetResponse.asset;Bt.add(s.assetResponse.asset),o(d)},c.onerror=l,this.postProcessFileUpload(t,s.mimeType).then(d=>c.send(d.blob)).catch(l)}),this.cacheAsset(s.assetResponse.asset),s.assetResponse.asset}async uploadAsset(t,e,a,n){return this.uploadAssetWithProgress(t,e,()=>{},a,n)}async uploadFile(t,e){const n=this.isRaster(t)?Ht.Image:Ht.Illustration,i=await this.loadImageAsFileInfo(t);return await this.uploadAssetWithProgress(i,n,e,!0)}async removeBackgroundFromAsset(t){const e=t.key;if(this.bgrmProcessCache.has(e))return this.bgrmProcessCache.get(e);if(J.has(e)){const i=this.getLocalOrFromServer(J.get(e));return this.bgrmProcessCache.set(e,i),i}const n=(async()=>{var s,o;const i=await I.getShadowGraphqlClient().mutate({mutation:wi,fetchPolicy:"no-cache",errorPolicy:"all",variables:{key:e}});if(this.bgrmProcessCache.delete(e),!((o=(s=i.data)==null?void 0:s.assetRemoveBackground)!=null&&o.key))throw new Error("Failed to remove background from image");return Bt.add(i.data.assetRemoveBackground),J.add(e,i.data.assetRemoveBackground.key),this.cache.set(i.data.assetRemoveBackground.key,Promise.resolve(i.data.assetRemoveBackground)),i.data.assetRemoveBackground})();return this.bgrmProcessCache.set(e,n),n}removePersistedAsset(t){Bt.remove(t),J.delete(t),J.deleteForBgRemovedKey(t)}getPersistedAssets(){return Bt.list()}registerPersistedAssetListener(t){Bt.addCallback(t)}unRegisterPersistedAssetListener(t){Bt.removeCallback(t)}isRaster(t){return!(t.type==="image/svg+xml"||t.type==="application/pdf"||t.type==="application/postscript")}async postProcessFileUpload(t,e){if(e==="image/svg+xml"){const a=await t.blob.text(),s=new window.DOMParser().parseFromString(a,"image/svg+xml").documentElement;if(!s)throw new wt("Failed to read SVG.");ui(s);const l=pt().serializeToString(s);return{name:t.name,blob:new Blob([l],{type:"image/svg+xml"})}}return t}async dispatchCreateAssetRequest(t,e,a,n){const i=t.blob.type?t.blob.type:this.guessMIME(t.name),s=await Si(t.name,e,i,a,n);if(s)return{assetResponse:s,mimeType:i}}guessMIME(t){const e=t.split(".").pop();switch(e){case"glb":return"model/gltf-binary";case"ttf":return"font/ttf";case"mkv":return"video/x-matroska";default:throw new $("Unexpected mimetype: "+e)}}}const Ut="persistentAssets",bn=class Ct{static add(t){if(!t.fileLink){console.error("Failed to find cdn link on asset, cannot persist!");return}const e=new Map;e.set(t.key||"",t.fileLink);const a=k.getMap(Ut);a&&a.forEach((n,i)=>{e.set(i,n)}),k.setMap(Ut,e),Ct.executeCallbacks()}static remove(t){const e=k.getMap(Ut);if(!e)return;const a=Array.from(e.entries()).find(n=>n[0]===t);a&&(e.delete(a[0]),k.setMap(Ut,e),Ct.executeCallbacks())}static list(){const t=k.getMap(Ut);return t?Array.from(t.entries()).map(e=>({assetKey:e[0],src:e[1]})):[]}static addCallback(t){Ct.callbacks.push(t)}static removeCallback(t){Ct.callbacks=Ct.callbacks.filter(e=>e!==t)}static executeCallbacks(){Ct.callbacks.forEach(t=>t())}};bn.callbacks=[];let Bt=bn;const za="bgrmPersistentAssets";class J{static has(t){return J.getMap().has(t)}static get(t){return J.getMap().get(t)}static keys(){return J.getMap().keys()}static values(){return J.getMap().values()}static add(t,e){const a=J.getMap();a.set(t,e),J.setMap(a)}static delete(t){const e=J.getMap();e.delete(t),J.setMap(e)}static deleteForBgRemovedKey(t){const e=J.getMap(),a=Array.from(e.keys()).find(n=>e.get(n)===t);a&&(e.delete(a),J.setMap(e))}static getMap(){return k.getMap(za)||new Map}static setMap(t){k.setMap(za,t)}}const U=new Ei;class vi{constructor(){this.cache={},this.disabled=!1}get(t){if(this.disabled)return;const e=JSON.stringify(t);return this.cache[e]}set(t,e){if(this.disabled)return e;const a=JSON.stringify(t);return this.cache[a]=e,e}disable(t){this.disabled=t}}const Nt=new vi,Dn=S.gql`
106
106
  fragment OptionFields on Option {
107
107
  id
108
108
  name
@@ -139,16 +139,16 @@
139
139
  ...AssetFields
140
140
  }
141
141
  }
142
- `,ki=Q.gql`
143
- ${ne(!1)}
144
- ${uA}
145
- ${va}
142
+ `,Bi=S.gql`
143
+ ${re(!1)}
144
+ ${ma}
145
+ ${Dn}
146
146
  query GetOptions($ids: [String]!) {
147
147
  options(ids: $ids) {
148
148
  ...OptionFields
149
149
  }
150
150
  }
151
- `,Ni=async n=>{const t=await y.getShadowGraphqlClient().query({query:ki,errorPolicy:"all",variables:{ids:n}});return t.data.options.forEach(e=>{var A,a;(A=e.defaultVariant)!=null&&A.asset&&T.cacheAsset(e.defaultVariant.asset),e.colorProfile&&T.cacheAsset(e.colorProfile),(a=e.variants)==null||a.forEach(i=>{i.asset&&T.cacheAsset(i.asset),i.thumbnail&&T.cacheAsset(i.thumbnail),i.material&&T.cacheMaterial(i.material)})}),t.data.options},bi=async(n,t)=>(await t).find(A=>A.id===n),Ri=async n=>{const t=n.map(s=>bt.get({id:s})),e=n.filter((s,o)=>t[o]===void 0);if(e.length===0)return Promise.all(t);const A=Ni(e),a=e.map(s=>bt.set({id:s},bi(s,A))),i=t.filter(s=>s!==void 0);return await Promise.all(i.concat(a))};class Hi{constructor(){this.getSelectedVariant=(t,e)=>{var A;if(!(!t||e.length===0))return(A=t.variants)==null?void 0:A.find(a=>a.id===e[0])}}async getOption(t){return(async()=>{const a=(await Ri([t]))[0];if(a)return a})()}async getAssetTileImageForVariant(t){var a,i;const e=t.thumbnail;if(e){const s=(a=e.versions)==null?void 0:a.find(r=>r.name==="thumbnail"),o=e.fileLink;return(s==null?void 0:s.link)||o}const A=t.asset;if(A){const s=(i=A.versions)==null?void 0:i.find(r=>r.name==="thumbnail"),o=A.fileLink;return(s==null?void 0:s.link)||o}return t.material?t.material.id:""}getDefaultVariant(t){const e=t.variants;if(e){if(e.length===1)return e[0];if(t.defaultVariant!==void 0)return e.find(A=>{var a;return A.id===((a=t.defaultVariant)==null?void 0:a.id)})}}}const $=new Hi,ka=Q.gql`
151
+ `,Ii=async r=>{const t=await I.getShadowGraphqlClient().query({query:Bi,errorPolicy:"all",variables:{ids:r}});return t.data.options.forEach(e=>{var a,n;(a=e.defaultVariant)!=null&&a.asset&&U.cacheAsset(e.defaultVariant.asset),e.colorProfile&&U.cacheAsset(e.colorProfile),(n=e.variants)==null||n.forEach(i=>{i.asset&&U.cacheAsset(i.asset),i.thumbnail&&U.cacheAsset(i.thumbnail),i.material&&U.cacheMaterial(i.material)})}),t.data.options},bi=async(r,t)=>(await t).find(a=>a.id===r),Di=async r=>{const t=r.map(s=>Nt.get({id:s})),e=r.filter((s,o)=>t[o]===void 0);if(e.length===0)return Promise.all(t);const a=Ii(e),n=e.map(s=>Nt.set({id:s},bi(s,a))),i=t.filter(s=>s!==void 0);return await Promise.all(i.concat(n))};class xi{constructor(){this.getSelectedVariant=(t,e)=>{var a;if(!(!t||e.length===0))return(a=t.variants)==null?void 0:a.find(n=>n.id===e[0])}}async getOption(t){return(async()=>{const n=(await Di([t]))[0];if(n)return n})()}async getAssetTileImageForVariant(t){var n,i;const e=t.thumbnail;if(e){const s=(n=e.versions)==null?void 0:n.find(l=>l.name==="thumbnail"),o=e.fileLink;return(s==null?void 0:s.link)||o}const a=t.asset;if(a){const s=(i=a.versions)==null?void 0:i.find(l=>l.name==="thumbnail"),o=a.fileLink;return(s==null?void 0:s.link)||o}return t.material?t.material.id:""}getDefaultVariant(t){const e=t.variants;if(e){if(e.length===1)return e[0];if(t.defaultVariant!==void 0)return e.find(a=>{var n;return a.id===((n=t.defaultVariant)==null?void 0:n.id)})}}}const X=new xi,xn=S.gql`
152
152
  fragment ActiveIntegrationFields on Integration {
153
153
  id
154
154
  logo
@@ -165,7 +165,7 @@
165
165
  activeAddons
166
166
  }
167
167
  }
168
- `,Fe=Q.gql`
168
+ `,be=S.gql`
169
169
  fragment AdditionalIntegrationProductFields on IntegrationProduct {
170
170
  id
171
171
  product {
@@ -183,8 +183,8 @@
183
183
  preloadImageUrl
184
184
  }
185
185
  }
186
- `,Ui=Q.gql`
187
- ${Fe}
186
+ `,Pi=S.gql`
187
+ ${be}
188
188
  mutation CreateTransactions(
189
189
  $inputs: [TransactionCreateInput]!
190
190
  $marketplaceThemeInstallId: String
@@ -269,7 +269,7 @@
269
269
  }
270
270
  }
271
271
  }
272
- `,Na=Q.gql`
272
+ `,Pn=S.gql`
273
273
  fragment StakeholderFields on Stakeholder {
274
274
  id
275
275
  type
@@ -277,7 +277,7 @@
277
277
  authorizationNote
278
278
  authorizationStatus
279
279
  }
280
- `,ba=Q.gql`
280
+ `,Fn=S.gql`
281
281
  fragment TransactionShareActionFields on TransactionShareAction {
282
282
  id
283
283
  title
@@ -286,11 +286,11 @@
286
286
  precedence
287
287
  url
288
288
  }
289
- `,Gi=Q.gql`
290
- ${Fe}
291
- ${Na}
292
- ${ba}
293
- ${ka}
289
+ `,Fi=S.gql`
290
+ ${be}
291
+ ${Pn}
292
+ ${Fn}
293
+ ${xn}
294
294
  query ReadTransactions($ids: [String]!) {
295
295
  transactions(ids: $ids) {
296
296
  customLogoLink
@@ -427,19 +427,19 @@
427
427
  }
428
428
  }
429
429
  }
430
- `,Ti=Q.gql`
430
+ `,ki=S.gql`
431
431
  mutation UpdateTransactionWorkflowState($id: String!, $workflowState: String!) {
432
432
  transactionUpdate(id: $id, workflowState: $workflowState) {
433
433
  id
434
434
  }
435
435
  }
436
- `,Ji=Q.gql`
436
+ `,Mi=S.gql`
437
437
  mutation UpdateTransactionQuantity($id: String!, $quantity: Int) {
438
438
  transactionUpdate(id: $id, quantity: $quantity) {
439
439
  id
440
440
  }
441
441
  }
442
- `,Li=Q.gql`
442
+ `,Ti=S.gql`
443
443
  query ReadTransactionForDesignCreation($id: String!) {
444
444
  transactions(ids: [$id]) {
445
445
  id
@@ -504,8 +504,8 @@
504
504
  workflowViewerReadOnlyLink
505
505
  }
506
506
  }
507
- `,Oi=Q.gql`
508
- ${ba}
507
+ `,Qi=S.gql`
508
+ ${Fn}
509
509
  query ReadTransactionForShareActions($id: String!) {
510
510
  transactions(ids: [$id]) {
511
511
  id
@@ -515,15 +515,15 @@
515
515
  }
516
516
  }
517
517
  }
518
- `,Ra=Q.gql`
518
+ `,kn=S.gql`
519
519
  query ReadWorkflowStates($ids: [String]!) {
520
520
  transactions(ids: $ids) {
521
521
  id
522
522
  workflowState
523
523
  }
524
524
  }
525
- `,Ha=Q.gql`
526
- ${Fe}
525
+ `,Mn=S.gql`
526
+ ${be}
527
527
  fragment IntegrationProductFields on IntegrationProduct {
528
528
  id
529
529
  externalProductId
@@ -584,15 +584,15 @@
584
584
  }
585
585
  }
586
586
  }
587
- `,zi=Q.gql`
588
- ${Ha}
587
+ `,Ni=S.gql`
588
+ ${Mn}
589
589
  query GetIntegrationProducts($ids: [String!]!) {
590
590
  integrationProducts(ids: $ids) {
591
591
  ...IntegrationProductFields
592
592
  }
593
593
  }
594
- `,ji=Q.gql`
595
- ${Ha}
594
+ `,Ri=S.gql`
595
+ ${Mn}
596
596
  query GetIntegrationProductFromExternalIds($externalIntegrationId: String!, $externalProductId: String!) {
597
597
  integrationProductFromExternalIds(
598
598
  externalIntegrationId: $externalIntegrationId
@@ -601,8 +601,8 @@
601
601
  ...IntegrationProductFields
602
602
  }
603
603
  }
604
- `,Vi=Q.gql`
605
- ${Na}
604
+ `,Oi=S.gql`
605
+ ${Pn}
606
606
  query ReadTransactionForStakeholders($id: String!) {
607
607
  transactions(ids: [$id]) {
608
608
  stakeholders {
@@ -613,11 +613,11 @@
613
613
  }
614
614
  }
615
615
  }
616
- `,Ki=Q.gql`
616
+ `,Ui=S.gql`
617
617
  mutation FinalizeUpdateTransaction($transactionId: String!) {
618
618
  transactionFinalizeUpdate(transactionId: $transactionId)
619
619
  }
620
- `,Wi=Q.gql`
620
+ `,Li=S.gql`
621
621
  fragment RegionFields on Region {
622
622
  width
623
623
  top
@@ -635,7 +635,7 @@
635
635
  height
636
636
  }
637
637
  }
638
- `,Xi=Q.gql`
638
+ `,$i=S.gql`
639
639
  fragment LookAtAnimationFields on LookAtAnimation {
640
640
  latDeg
641
641
  lonDeg
@@ -646,7 +646,7 @@
646
646
  z
647
647
  }
648
648
  }
649
- `,qi=Q.gql`
649
+ `,Vi=S.gql`
650
650
  fragment RenderingPipelineConfigurationFields on RenderingPipelineConfiguration {
651
651
  antiAliasing {
652
652
  samples
@@ -730,21 +730,21 @@
730
730
  weight
731
731
  }
732
732
  }
733
- `,Zi=Q.gql`
733
+ `,zi=S.gql`
734
734
  fragment ModelAnimationFields on ModelAnimation {
735
735
  from
736
736
  to
737
737
  loop
738
738
  name
739
739
  }
740
- `,$i=n=>Q.gql`
741
- ${ne(n)}
742
- ${uA}
743
- ${va}
744
- ${Wi}
745
- ${Xi}
746
- ${qi}
747
- ${Zi}
740
+ `,Gi=r=>S.gql`
741
+ ${re(r)}
742
+ ${ma}
743
+ ${Dn}
744
+ ${Li}
745
+ ${$i}
746
+ ${Vi}
747
+ ${zi}
748
748
  query GetWorkflows($ids: [String!]!) {
749
749
  workflows(ids: $ids) {
750
750
  partner {
@@ -1137,7 +1137,7 @@
1137
1137
  }
1138
1138
  }
1139
1139
  }
1140
- `,_i=Q.gql`
1140
+ `,ji=S.gql`
1141
1141
  query GetTransactionForPartner($id: String!) {
1142
1142
  transactions(ids: [$id]) {
1143
1143
  id
@@ -1155,8 +1155,8 @@
1155
1155
  }
1156
1156
  }
1157
1157
  }
1158
- `,ts=Q.gql`
1159
- ${ne(!1)}
1158
+ `,Wi=S.gql`
1159
+ ${re(!1)}
1160
1160
  query GetWorkflowForTheme($id: String!) {
1161
1161
  workflow(id: $id) {
1162
1162
  id
@@ -1177,7 +1177,7 @@
1177
1177
  }
1178
1178
  }
1179
1179
  }
1180
- `,Me=Q.gql`
1180
+ `,De=S.gql`
1181
1181
  fragment MarketplaceThemeInstallConfigurationFields on MarketplaceThemeInstallConfiguration {
1182
1182
  id
1183
1183
  themeInstallId
@@ -1240,16 +1240,16 @@
1240
1240
  }
1241
1241
  }
1242
1242
  }
1243
- `,es=Q.gql`
1244
- ${Me}
1243
+ `,qi=S.gql`
1244
+ ${De}
1245
1245
  query GetMarketplaceThemeInstallConfiguration($themeConfigurationId: String!, $themeInstallId: String!) {
1246
1246
  marketplaceThemeInstallConfiguration(id: $themeConfigurationId, themeInstallId: $themeInstallId, raw: false) {
1247
1247
  ...MarketplaceThemeInstallConfigurationFields
1248
1248
  }
1249
1249
  }
1250
- `,As=Q.gql`
1251
- ${ka}
1252
- ${Me}
1250
+ `,Hi=S.gql`
1251
+ ${xn}
1252
+ ${De}
1253
1253
  query GetCurrentIntegration {
1254
1254
  currentIntegration {
1255
1255
  id
@@ -1260,8 +1260,8 @@
1260
1260
  ...ActiveIntegrationFields
1261
1261
  }
1262
1262
  }
1263
- `,as=Q.gql`
1264
- ${Me}
1263
+ `,Yi=S.gql`
1264
+ ${De}
1265
1265
  query ReadTransactionForMarketplaceTheme($id: String!) {
1266
1266
  transactions(ids: [$id]) {
1267
1267
  marketplaceThemeInstallConfiguration(raw: false) {
@@ -1269,8 +1269,8 @@
1269
1269
  }
1270
1270
  }
1271
1271
  }
1272
- `,ns=Q.gql`
1273
- ${Me}
1272
+ `,Ji=S.gql`
1273
+ ${De}
1274
1274
  query ReadBundleForMarketplaceTheme($id: String!) {
1275
1275
  bundles(ids: [$id]) {
1276
1276
  marketplaceThemeInstallConfiguration(raw: false) {
@@ -1278,56 +1278,56 @@
1278
1278
  }
1279
1279
  }
1280
1280
  }
1281
- `,is=Q.gql`
1281
+ `,Ki=S.gql`
1282
1282
  mutation CreateOrder($orderItems: [OrderItemInput]!) {
1283
1283
  orderCreate(orderItems: $orderItems, paid: false, generateInternalId: true) {
1284
1284
  id
1285
1285
  internalId
1286
1286
  }
1287
1287
  }
1288
- `,Gt=[M.SilentIllustration,M.ProductOverlay],ss=async n=>{const t=[];n.introduction&&t.push({name:"Introduction",title:n.name,renderableSteps:[{type:M.Introduction,stepName:"Introduction",stepTitle:n.name,helpText:n.introduction,data:{},conditions:[]}],silentSteps:[]});for(const A of n.steps){const a=os(A.stepName,n.stepGroups);if(!a)t.push({name:A.stepName,title:A.stepTitle,renderableSteps:Gt.includes(A.type)?[]:[A],silentSteps:Gt.includes(A.type)?[A]:[]});else{const i=t.find(s=>s.name===a.name);i?Gt.includes(A.type)?i.silentSteps.push(A):i.renderableSteps.push(A):t.push({name:a.name,title:a.name,renderableSteps:Gt.includes(A.type)?[]:[A],silentSteps:Gt.includes(A.type)?[A]:[]})}}const e="workflow.steps.finish.confirmDesign";return t.push({name:"Finish",title:e,renderableSteps:[{type:M.Finish,stepName:"Finish",stepTitle:e,helpText:"",data:{modelAnimation:n.finalizeStepConfig?n.finalizeStepConfig.modelAnimation:void 0,lookAtAnimation:n.finalizeStepConfig?n.finalizeStepConfig.lookAtAnimation:void 0},conditions:[]}],silentSteps:[]}),t},os=(n,t)=>t.find(e=>e.stepNames.includes(n)),ft=(n,t)=>(n.conditions||[]).every(e=>{const A=t[e.targetStepName];if(A&&A.selectedVariants){const a=A.selectedVariants;return e.requiredVariantSelections.some(i=>a.find(s=>s.id===i)!==void 0)}return!1}),rs=(n,t)=>{const e={name:n.name,title:n.title,renderableSteps:n.renderableSteps.filter(A=>ft(A,t)),silentSteps:n.silentSteps.filter(A=>ft(A,t))};return e.silentSteps.length===0&&e.renderableSteps.length===0?null:e},Ft=(n,t)=>n.map(e=>rs(e,t)).filter(e=>e!==null),cs=async(n,t,e=!1)=>{var s;const A=Ft(n,t),a=[];for(const o of A)for(const r of o.renderableSteps){const c=(((s=r.option)==null?void 0:s.variants)||[]).length;r.silent||(r.type===M.Model||r.type===M.Material||r.type===M.Picture||r.type===M.Shape?(c>1||e)&&a.push(r.stepName):a.push(r.stepName))}const i=A.filter(o=>o.renderableSteps.filter(c=>a.includes(c.stepName)).length>0);for(const o of i)o.renderableSteps=o.renderableSteps.filter(r=>a.includes(r.stepName));return i};class wA{constructor(){this.timestamp=Date.now()}}class EA{constructor(t,e=!0){this.queue=[],this.activePromise=void 0,this.queueMaxSize=void 0,this.queueMaxSize=t,this.isEnabled=e}enqueue(t){if(this.queue.push(t),this.queueMaxSize!==void 0&&this.queue.length>this.queueMaxSize){const e=this.queue.length-1;for(let A=0;A<e;++A)this.queue.shift()}this.isEnabled&&(this.activePromise||(this.activePromise=this.dequeue()))}get enabled(){return this.isEnabled}set enabled(t){!this.isEnabled&&t&&!this.activePromise&&this.getRemainingQueueSize()>0&&(this.activePromise=this.dequeue()),this.isEnabled=t}hasActivePromise(){return!!this.activePromise}getRemainingQueueSize(){return this.queue.length}async finalize(){return this.activePromise?this.activePromise:Promise.resolve()}async dequeue(){const t=this.queue.shift();if(!t){this.activePromise=void 0;return}try{await t.execute()}catch(e){console.log(e)}finally{await this.dequeue()}}}const b=()=>{const n=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return n()+n()+"-"+n()+"-"+n()+"-"+n()+"-"+n()+n()+n()},ls=({backgroundColor:n,outlineColor:t,borderRadius:e,configuration:A,elements:a,height:i,maxHeight:s,maxWidth:o,outlineArea:r,position:c,preserveAspectRatio:l,viewBox:g,width:d})=>{var I;const B=e||0,h=2*((r==null?void 0:r.scale)||1),C=g||{x:0,y:0,width:d,height:i},u=`${C.x} ${C.y} ${C.width} ${C.height}`,w=b(),E=A.purpose===Pt.FreeDesign&&S.jsx("defs",{children:S.jsx("clipPath",{id:"viewboxClip",children:S.jsx("rect",{width:C.width,height:C.height,rx:B})})}),m=(I=A.colorProfiles)==null?void 0:I.map((D,F)=>S.jsx("color-profile",{name:D.name,xlinkHref:D.key,children:" "},F)),f=a.map(D=>({...D,_renderingConfiguration:A,mask:r?`url(#viewmask-${w})`:void 0})),p=QA(f);return S.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",preserveAspectRatio:l,width:d,height:i,style:{gridColumn:1,gridRow:1,maxWidth:o,maxHeight:s,position:c},viewBox:u,children:[m,E,!!n&&S.jsx("rect",{id:"layout-background",width:C.width,height:C.height,fill:n,rx:B}),S.jsx("g",{id:"element-group",clipPath:A.purpose===Pt.FreeDesign?"url(#viewboxClip)":void 0,children:p.map(D=>za(D)).filter(D=>!!D)}),r&&S.jsx("rect",{x:r.x,y:r.y,width:r.width,height:r.height,fill:"none",stroke:r.hidden?"none":t||"#aaaaaa",strokeWidth:h/2,strokeDasharray:`${h*2} ${h}`}),r&&S.jsxs("mask",{id:`viewmask-${w}`,children:[S.jsx("rect",{x:C.x,y:C.y,width:C.width,height:C.height,fill:"black"}),S.jsx("rect",{x:r.x,y:r.y,width:r.width,height:r.height,fill:"white"})]})]})},gs=(n,t,e,A,a)=>{const i=Ct(a),s=e/2,o=A/2,r=n+s,c=t+o,l=Math.sin(i),g=Math.cos(i),d=s,B=s,h=-o,C=o,u=d*g-h*l,w=B*g-C*l,E=d*l+h*g,m=B*l+C*g,f=Math.max(Math.abs(u),Math.abs(w)),p=Math.max(Math.abs(E),Math.abs(m));return{minX:r-f,maxX:r+f,minY:c-p,maxY:c+p}},ds=(n,t,e)=>{const A=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),a=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((a*a+A*A-i*i)/(2*a*A))*(180/Math.PI)},Ct=n=>n*(Math.PI/180),Bs=(n,t,e)=>Math.abs(n-t)<e,hs=(n,t,e)=>{const A=Math.sin(Ct(e)),a=Math.cos(Ct(e));return{x:(n.x-t.x)*a-(n.y-t.y)*A+t.x,y:(n.x-t.x)*A+(n.y-t.y)*a+t.y}},Cs=(n,t)=>({x:(n.x+t.x)/2,y:(n.y+t.y)/2}),us=(n,t,e,A)=>({x:n.x+(t==null?void 0:t.x)*e,y:n.y+(t==null?void 0:t.y)*A}),ws=(n,t,e,A)=>({x:n.x+((t==null?void 0:t.x)+(t==null?void 0:t.width))*e,y:n.y+(t==null?void 0:t.y)*A}),Es=(n,t,e,A)=>({x:n.x+((t==null?void 0:t.x)+(t==null?void 0:t.width))*e,y:n.y+((t==null?void 0:t.y)+(t==null?void 0:t.height))*A}),yt=n=>{switch(n){case K.North:return K.East;case K.East:return K.South;case K.South:return K.West;case K.West:return K.North;case K.Northwest:return K.Northeast;case K.Northeast:return K.Southeast;case K.Southeast:return K.Southwest;case K.Southwest:return K.Northwest}},ms=(n,t)=>t>45&&t<=135?yt(n):t>135&&t<=225?yt(yt(n)):t>225&&t<=315?yt(yt(yt(n))):n,fs=(n,t={x:0,y:0},e={x:1,y:1})=>{const A=Ct(n.rotation),a={x:t.x+n.x*e.x,y:t.x+n.y*e.y},i={x:n.x+n.width,y:n.y},s={x:t.x+(n.x+n.width)*e.x,y:t.y+(n.height+n.y)*e.y},o={x:t.x+n.x*e.x,y:t.y+(n.height+n.y)*e.y},r={x:(o.x+s.x)/2,y:o.y-n.height*e.y/2};return{a:Lt(a,r,A),b:Lt(i,r,A),c:Lt(s,r,A),d:Lt(o,r,A),center:r}},Lt=(n,t,e)=>{const A=Math.sin(e),a=Math.cos(e);return{x:(n.x-t.x)*a-(n.y-t.y)*A+t.x,y:(n.x-t.x)*A+(n.y-t.y)*a+t.y}},Qs=.352778,ps=.035277,Ua=n=>{const t=n.rotation||0,e=Ct(t),A=Math.cos(e),a=-Math.sin(e);return S.jsx("g",{mask:n.stepName||n.productOverlay?void 0:n.mask,children:S.jsx("g",{transform:`
1289
- matrix(1, 0, 0, 1, ${n.x}, ${n.y})
1290
- matrix(1, 0, 0, 1, ${n.width/2}, ${n.height/2})
1291
- matrix(${A}, ${-a}, ${a}, ${A}, 0, 0)
1292
- matrix(1, 0, 0, 1, ${-n.width/2}, ${-n.height/2})
1293
- `,children:S.jsx("image",{xlinkHref:n.src,preserveAspectRatio:n.preserveAspectRatio,width:n.width,height:n.height})})})},Ga=n=>{var r;const t=`spiff-group-clip-${n.id}`,e=n.rotation||0,A=Ct(e),a=Math.cos(A),i=-Math.sin(A),s=QA(n.children),o=()=>S.jsx("clipPath",{id:t,preserveAspectRatio:"none",children:n.clipPath?S.jsx("path",{d:n.clipPath}):S.jsx("rect",{x:0,y:0,width:n.width,height:n.height})});return S.jsxs(S.Fragment,{children:[S.jsx("defs",{children:o()}),S.jsxs("g",{transform:`
1294
- matrix(1, 0, 0, 1, ${n.x}, ${n.y})
1295
- matrix(1, 0, 0, 1, ${n.width/2}, ${n.height/2})
1296
- matrix(${a}, ${-i}, ${i}, ${a}, 0, 0)
1297
- matrix(1, 0, 0, 1, ${-n.width/2}, ${-n.height/2})
1298
- `,children:[(r=n._renderingConfiguration)!=null&&r.debug?S.jsx("rect",{stroke:"red",opacity:.3,fill:"none",x:0,y:0,width:n.width,height:n.height}):void 0,s.map(c=>za(c)).filter(c=>!!c).map(c=>S.jsx("g",{clipPath:`url(#${t})`,children:c}))]})]})},Is=n=>{const t=`spiff-frame-${n.id}`,e=`spiff-frame-threshold-${n.id}`,A=()=>{if(!n.pattern)return"";if(n.pattern.svg){const g=Ya(n.pattern.svg,n.pattern.colors||{},!1);return gA(g)}return n.pattern.src};if(!A())return S.jsx(S.Fragment,{});const a=()=>n.threshold?n.invertThreshold?"1 ".repeat(n.threshold)+"0 ".repeat(256-n.threshold):"0 ".repeat(n.threshold)+"1 ".repeat(256-n.threshold):"",i=()=>S.jsx(S.Fragment,{children:n.useThreshold&&S.jsx("defs",{children:S.jsxs("filter",{id:e,"color-interpolation-filters":"sRGB",children:[S.jsx("feColorMatrix",{type:"matrix",values:`
1299
- ${n.thresholdSaturation} ${n.thresholdSaturation} ${n.thresholdSaturation} 0 0
1300
- ${n.thresholdSaturation} ${n.thresholdSaturation} ${n.thresholdSaturation} 0 0
1301
- ${n.thresholdSaturation} ${n.thresholdSaturation} ${n.thresholdSaturation} 0 0
1288
+ `,Lt=[b.SilentIllustration,b.ProductOverlay],Xi=async r=>{const t=[];r.introduction&&t.push({name:"Introduction",title:r.name,renderableSteps:[{type:b.Introduction,stepName:"Introduction",stepTitle:r.name,helpText:r.introduction,data:{},conditions:[]}],silentSteps:[]});for(const a of r.steps){const n=Zi(a.stepName,r.stepGroups);if(!n)t.push({name:a.stepName,title:a.stepTitle,renderableSteps:Lt.includes(a.type)?[]:[a],silentSteps:Lt.includes(a.type)?[a]:[]});else{const i=t.find(s=>s.name===n.name);i?Lt.includes(a.type)?i.silentSteps.push(a):i.renderableSteps.push(a):t.push({name:n.name,title:n.name,renderableSteps:Lt.includes(a.type)?[]:[a],silentSteps:Lt.includes(a.type)?[a]:[]})}}const e="workflow.steps.finish.confirmDesign";return t.push({name:"Finish",title:e,renderableSteps:[{type:b.Finish,stepName:"Finish",stepTitle:e,helpText:"",data:{modelAnimation:r.finalizeStepConfig?r.finalizeStepConfig.modelAnimation:void 0,lookAtAnimation:r.finalizeStepConfig?r.finalizeStepConfig.lookAtAnimation:void 0},conditions:[]}],silentSteps:[]}),t},Zi=(r,t)=>t.find(e=>e.stepNames.includes(r)),yt=(r,t)=>(r.conditions||[]).every(e=>{const a=t[e.targetStepName];if(a&&a.selectedVariants){const n=a.selectedVariants;return e.requiredVariantSelections.some(i=>n.find(s=>s.id===i)!==void 0)}return!1}),_i=(r,t)=>{const e={name:r.name,title:r.title,renderableSteps:r.renderableSteps.filter(a=>yt(a,t)),silentSteps:r.silentSteps.filter(a=>yt(a,t))};return e.silentSteps.length===0&&e.renderableSteps.length===0?null:e},bt=(r,t)=>r.map(e=>_i(e,t)).filter(e=>e!==null),ts=async(r,t,e=!1)=>{var s;const a=bt(r,t),n=[];for(const o of a)for(const l of o.renderableSteps){const c=(((s=l.option)==null?void 0:s.variants)||[]).length;l.silent||(l.type===b.Model||l.type===b.Material||l.type===b.Picture||l.type===b.Shape?(c>1||e)&&n.push(l.stepName):n.push(l.stepName))}const i=a.filter(o=>o.renderableSteps.filter(c=>n.includes(c.stepName)).length>0);for(const o of i)o.renderableSteps=o.renderableSteps.filter(l=>n.includes(l.stepName));return i};class fa{constructor(){this.timestamp=Date.now()}}class pa{constructor(t,e=!0){this.queue=[],this.activePromise=void 0,this.queueMaxSize=void 0,this.queueMaxSize=t,this.isEnabled=e}enqueue(t){if(this.queue.push(t),this.queueMaxSize!==void 0&&this.queue.length>this.queueMaxSize){const e=this.queue.length-1;for(let a=0;a<e;++a)this.queue.shift()}this.isEnabled&&(this.activePromise||(this.activePromise=this.dequeue()))}get enabled(){return this.isEnabled}set enabled(t){!this.isEnabled&&t&&!this.activePromise&&this.getRemainingQueueSize()>0&&(this.activePromise=this.dequeue()),this.isEnabled=t}hasActivePromise(){return!!this.activePromise}getRemainingQueueSize(){return this.queue.length}async finalize(){return this.activePromise?this.activePromise:Promise.resolve()}async dequeue(){const t=this.queue.shift();if(!t){this.activePromise=void 0;return}try{await t.execute()}catch(e){console.log(e)}finally{await this.dequeue()}}}const Q=()=>{const r=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return r()+r()+"-"+r()+"-"+r()+"-"+r()+"-"+r()+r()+r()},es=({backgroundColor:r,outlineColor:t,borderRadius:e,configuration:a,elements:n,height:i,maxHeight:s,maxWidth:o,outlineArea:l,position:c,preserveAspectRatio:d,viewBox:A,width:u})=>{var E;const h=e||0,g=2*((l==null?void 0:l.scale)||1),m=A||{x:0,y:0,width:u,height:i},f=`${m.x} ${m.y} ${m.width} ${m.height}`,p=Q(),C=a.purpose===kt.FreeDesign&&D.jsx("defs",{children:D.jsx("clipPath",{id:"viewboxClip",children:D.jsx("rect",{width:m.width,height:m.height,rx:h})})}),w=(E=a.colorProfiles)==null?void 0:E.map((B,x)=>D.jsx("color-profile",{name:B.name,xlinkHref:B.key,children:" "},x)),y=n.map(B=>({...B,_renderingConfiguration:a,mask:l?`url(#viewmask-${p})`:void 0})),v=wa(y);return D.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",preserveAspectRatio:d,width:u,height:i,style:{gridColumn:1,gridRow:1,maxWidth:o,maxHeight:s,position:c},viewBox:f,children:[w,C,!!r&&D.jsx("rect",{id:"layout-background",width:m.width,height:m.height,fill:r,rx:h}),D.jsx("g",{id:"element-group",clipPath:a.purpose===kt.FreeDesign?"url(#viewboxClip)":void 0,children:v.map(B=>Ln(B)).filter(B=>!!B)}),l&&D.jsx("rect",{x:l.x,y:l.y,width:l.width,height:l.height,fill:"none",stroke:l.hidden?"none":t||"#aaaaaa",strokeWidth:g/2,strokeDasharray:`${g*2} ${g}`}),l&&D.jsxs("mask",{id:`viewmask-${p}`,children:[D.jsx("rect",{x:m.x,y:m.y,width:m.width,height:m.height,fill:"black"}),D.jsx("rect",{x:l.x,y:l.y,width:l.width,height:l.height,fill:"white"})]})]})},as=(r,t,e,a,n)=>{const i=mt(n),s=e/2,o=a/2,l=r+s,c=t+o,d=Math.sin(i),A=Math.cos(i),u=s,h=s,g=-o,m=o,f=u*A-g*d,p=h*A-m*d,C=u*d+g*A,w=h*d+m*A,y=Math.max(Math.abs(f),Math.abs(p)),v=Math.max(Math.abs(C),Math.abs(w));return{minX:l-y,maxX:l+y,minY:c-v,maxY:c+v}},ns=(r,t,e)=>{const a=Math.sqrt(Math.pow(t.x-r.x,2)+Math.pow(t.y-r.y,2)),n=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2));return Math.acos((n*n+a*a-i*i)/(2*n*a))*(180/Math.PI)},mt=r=>r*(Math.PI/180),rs=(r,t,e)=>Math.abs(r-t)<e,is=(r,t,e)=>{const a=Math.sin(mt(e)),n=Math.cos(mt(e));return{x:(r.x-t.x)*n-(r.y-t.y)*a+t.x,y:(r.x-t.x)*a+(r.y-t.y)*n+t.y}},ss=(r,t)=>({x:(r.x+t.x)/2,y:(r.y+t.y)/2}),os=(r,t,e,a)=>({x:r.x+(t==null?void 0:t.x)*e,y:r.y+(t==null?void 0:t.y)*a}),ls=(r,t,e,a)=>({x:r.x+((t==null?void 0:t.x)+(t==null?void 0:t.width))*e,y:r.y+(t==null?void 0:t.y)*a}),cs=(r,t,e,a)=>({x:r.x+((t==null?void 0:t.x)+(t==null?void 0:t.width))*e,y:r.y+((t==null?void 0:t.y)+(t==null?void 0:t.height))*a}),It=r=>{switch(r){case q.North:return q.East;case q.East:return q.South;case q.South:return q.West;case q.West:return q.North;case q.Northwest:return q.Northeast;case q.Northeast:return q.Southeast;case q.Southeast:return q.Southwest;case q.Southwest:return q.Northwest}},ds=(r,t)=>t>45&&t<=135?It(r):t>135&&t<=225?It(It(r)):t>225&&t<=315?It(It(It(r))):r,As=(r,t={x:0,y:0},e={x:1,y:1})=>{const a=mt(r.rotation),n={x:t.x+r.x*e.x,y:t.x+r.y*e.y},i={x:r.x+r.width,y:r.y},s={x:t.x+(r.x+r.width)*e.x,y:t.y+(r.height+r.y)*e.y},o={x:t.x+r.x*e.x,y:t.y+(r.height+r.y)*e.y},l={x:(o.x+s.x)/2,y:o.y-r.height*e.y/2};return{a:zt(n,l,a),b:zt(i,l,a),c:zt(s,l,a),d:zt(o,l,a),center:l}},zt=(r,t,e)=>{const a=Math.sin(e),n=Math.cos(e);return{x:(r.x-t.x)*n-(r.y-t.y)*a+t.x,y:(r.x-t.x)*a+(r.y-t.y)*n+t.y}},us=.352778,hs=.035277,Tn=r=>{const t=r.rotation||0,e=mt(t),a=Math.cos(e),n=-Math.sin(e);return D.jsx("g",{mask:r.stepName||r.productOverlay?void 0:r.mask,children:D.jsx("g",{transform:`
1289
+ matrix(1, 0, 0, 1, ${r.x}, ${r.y})
1290
+ matrix(1, 0, 0, 1, ${r.width/2}, ${r.height/2})
1291
+ matrix(${a}, ${-n}, ${n}, ${a}, 0, 0)
1292
+ matrix(1, 0, 0, 1, ${-r.width/2}, ${-r.height/2})
1293
+ `,children:D.jsx("image",{xlinkHref:r.src,preserveAspectRatio:r.preserveAspectRatio,width:r.width,height:r.height})})})},Qn=r=>{var l;const t=`spiff-group-clip-${r.id}`,e=r.rotation||0,a=mt(e),n=Math.cos(a),i=-Math.sin(a),s=wa(r.children),o=()=>D.jsx("clipPath",{id:t,preserveAspectRatio:"none",children:r.clipPath?D.jsx("path",{d:r.clipPath}):D.jsx("rect",{x:0,y:0,width:r.width,height:r.height})});return D.jsxs(D.Fragment,{children:[D.jsx("defs",{children:o()}),D.jsxs("g",{transform:`
1294
+ matrix(1, 0, 0, 1, ${r.x}, ${r.y})
1295
+ matrix(1, 0, 0, 1, ${r.width/2}, ${r.height/2})
1296
+ matrix(${n}, ${-i}, ${i}, ${n}, 0, 0)
1297
+ matrix(1, 0, 0, 1, ${-r.width/2}, ${-r.height/2})
1298
+ `,children:[(l=r._renderingConfiguration)!=null&&l.debug?D.jsx("rect",{stroke:"red",opacity:.3,fill:"none",x:0,y:0,width:r.width,height:r.height}):void 0,s.map(c=>Ln(c)).filter(c=>!!c).map(c=>D.jsx("g",{clipPath:`url(#${t})`,children:c}))]})]})},gs=r=>{const t=`spiff-frame-${r.id}`,e=`spiff-frame-threshold-${r.id}`,a=()=>{if(!r.pattern)return"";if(r.pattern.svg){const A=In(r.pattern.svg,r.pattern.colors||{},!1);return da(A)}return r.pattern.src};if(!a())return D.jsx(D.Fragment,{});const n=()=>r.threshold?r.invertThreshold?"1 ".repeat(r.threshold)+"0 ".repeat(256-r.threshold):"0 ".repeat(r.threshold)+"1 ".repeat(256-r.threshold):"",i=()=>D.jsx(D.Fragment,{children:r.useThreshold&&D.jsx("defs",{children:D.jsxs("filter",{id:e,"color-interpolation-filters":"sRGB",children:[D.jsx("feColorMatrix",{type:"matrix",values:`
1299
+ ${r.thresholdSaturation} ${r.thresholdSaturation} ${r.thresholdSaturation} 0 0
1300
+ ${r.thresholdSaturation} ${r.thresholdSaturation} ${r.thresholdSaturation} 0 0
1301
+ ${r.thresholdSaturation} ${r.thresholdSaturation} ${r.thresholdSaturation} 0 0
1302
1302
  0 0 0 1 0
1303
- `,result:"greyscale"}),S.jsxs("feComponentTransfer",{in:"greyscale",children:[S.jsx("feFuncR",{type:"discrete",tableValues:a()}),S.jsx("feFuncG",{type:"discrete",tableValues:a()}),S.jsx("feFuncB",{type:"discrete",tableValues:a()})]})]})})}),s=n.rotation||0,o=Ct(s),r=Math.cos(o),c=-Math.sin(o),l=()=>{var m,f,p,I,D,F,x,Y,P,v;const g=((m=n.pattern)==null?void 0:m.x)||0,d=((f=n.pattern)==null?void 0:f.y)||0,B=((p=n.pattern)==null?void 0:p.width)||0,h=((I=n.pattern)==null?void 0:I.height)||0,C=((D=n.pattern)==null?void 0:D.scaleX)||1,u=((F=n.pattern)==null?void 0:F.scaleY)||1,w=((x=n.pattern)==null?void 0:x.rotation)||0;return[(Y=n.pattern)!=null&&Y.svg?{id:`${t}-contents`,type:N.Illustration,x:g,y:d,rotation:w,width:B*C,height:h*u,src:A(),svg:(P=n.pattern)==null?void 0:P.svg,colors:(v=n.pattern)==null?void 0:v.colors}:{id:`${t}-contents`,type:N.Image,x:g,y:d,rotation:w,width:B*C,height:h*u,src:A()}]};return S.jsxs(S.Fragment,{children:[i(),S.jsx("g",{opacity:n.opacity,mask:n.stepName?void 0:n.mask,filter:n.useThreshold?`url(#${e})`:void 0,children:S.jsx("g",{transform:`
1304
- matrix(1, 0, 0, 1, ${n.x}, ${n.y})
1305
- matrix(1, 0, 0, 1, ${n.width/2}, ${n.height/2})
1306
- matrix(${r}, ${-c}, ${c}, ${r}, 0, 0)
1307
- matrix(1, 0, 0, 1, ${-n.width/2}, ${-n.height/2})
1308
- matrix(${n.scaleX}, 0, 0, ${n.scaleY}, 0, 0)
1309
- `,children:S.jsx(Ga,{id:t,x:0,y:0,rotation:0,width:n.width,height:n.height,clipPath:n.path,children:l()})})})]})},Ta=new Map;class Ds{constructor(t){this.font=t,this.glyphsFromText=new Map,this.kerningValues=new Map,this.height=this.calculateApproximateHeight()}getFont(){return this.font}getGlyphs(t){const e=this.glyphsFromText.get(t);if(e)return e;const A=this.font.stringToGlyphs(t);return this.glyphsFromText.set(t,A),A}getApproximateHeight(){return this.height}getExactHeight(t){const e=this.font.stringToGlyphs(t);let A=0,a=0;return e.forEach(i=>{const s=i.getMetrics();A=Math.max(A,s.yMax),a=Math.min(a,s.yMin)}),A-a}getKerningValue(t,e){if(!t.name||!e.name)return;let A=this.kerningValues.get(t.name);A||(A=new Map,this.kerningValues.set(t.name,A));let a=A.get(e.name);return a||(a=this.font.getKerningValue(t,e),A.set(e.name,a)),a}calculateApproximateHeight(){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",e=this.font.stringToGlyphs(t);let A=0,a=0;return e.forEach(i=>{const s=i.getMetrics();A=Math.max(A,s.yMax),a=Math.min(a,s.yMin)}),A-a}}const ys=n=>n.substring(0,5).toLowerCase().trim()==="data:",Re=new Map,It=async n=>{if(Re.has(n))return Re.get(n);const e=(async()=>{try{return Qt(n).getFont()}catch{if(ys(n)){const A=ma(n),a=je.parse(A);return _e(n,a),a}else{const A=await De(n,!0),a=je.parse(A);return _e(n,a),await _n(a,n),a}}})();return Re.set(n,e),e},mA=n=>{const t=ma(n),e=je.parse(t);return _e(n,e),e},Qt=n=>{const t=Ta.get(n);if(t)return t;throw new Error("Font metrics unavailable for font")},_e=(n,t)=>{const e=new Ds(t);return Ta.set(n,e),e},Fs=async n=>{const t=it(),e=t.parseFromString(n,"image/svg+xml"),A=e.firstElementChild,a=new Map;A.querySelectorAll("style").forEach(l=>{var d;(d=na.parse(l.innerHTML).stylesheet)==null||d.rules.forEach(B=>{var h,C,u;if(B.type==="font-face"&&B.declarations){const w=(h=B.declarations.find(f=>f.property==="font-family"))==null?void 0:h.value,E=(C=B.declarations.find(f=>f.property==="src"))==null?void 0:C.value,m=(u=E==null?void 0:E.match(/'(https.*?)'/))==null?void 0:u[1];w&&m&&a.set(w,m)}})});const s=e.querySelectorAll("tspan");for(let l=0;l<s.length;l++){const g=s.item(l),d=g.closest("text"),B=g.closest("g"),h=d.getAttribute("font-family"),C=await It(a.get(h)),u=d.getAttribute("fill"),w=C.getPath(g.innerHTML,0,0,parseInt(d.getAttribute("font-size")??"72")),E=w.getBoundingBox().x2-w.getBoundingBox().x1;let m=0;const f=g.getAttribute("text-anchor");f==="middle"?m=E/2:f==="end"&&(m=E);const I=C.getPath(g.innerHTML,parseFloat(g.getAttribute("x")??"0")-m,parseFloat(g.getAttribute("y")??"0"),parseInt(d.getAttribute("font-size")??"72"),{fill:u}).toSVG(2),F=t.parseFromString(I,"image/svg+xml").firstElementChild;B.appendChild(F)}return e.querySelectorAll("text").forEach(l=>l.remove()),wt().serializeToString(A)},ue=(n,t,e,A)=>Math.max(Ys(n.join(`
1310
- `),e,A),t),XA=(n,t,e,A,a,i)=>{const s=(i||fA)*a.getApproximateHeight(),o=t.split(`
1311
- `);try{const r=o.flatMap(l=>he(l,n.width,A,a)),c=r.flatMap(l=>l.lines);return{lines:c,requiredHeight:r.flatMap(l=>l.lines).length*(A*s),fontSize:e,requiredWidth:ue(c,n.width,A,a)}}catch{const c=t.split("");return{lines:c,requiredHeight:c.length*(A*s),fontSize:e,requiredWidth:ue(c,n.width,A,a)}}},he=(n,t,e,A)=>{const a=gt(n,e,A);if(a<=t)return{lines:[n],width:a};if(!(n.indexOf(" ")>-1)){if(n.length<=1)throw new Error(`Character ${n} is wider than region`);const l=Math.floor(n.length/2),g=he(n.slice(0,l),t,e,A),d=he(n.slice(l),t,e,A);return{lines:[...g.lines,...d.lines],width:Math.max(g.width,d.width)}}const s=n.split(" "),o=[];let r=-1/0,c=0;for(;c<s.length;){const l=s[c];if(gt(l,e,A)>t){const g=he(l,t,e,A);o.push(...g.lines),r=Math.max(r,g.width),c++}else{const g=[l];r=Math.max(r,gt(l,e,A));let d=c+1,B=!0;for(;d<s.length&&B;){const h=s[d],C=gt(`${g.join(" ")} ${h}`,e,A);C<=t?(g.push(h),r=Math.max(r,C),d++):B=!1}o.push(g.join(" ")),c=d}}if(r<0)throw new Error(`No max width calculated for text: ${o}.`);return{lines:o,width:r}},Ms=(n,t,e,A,a,i)=>{const s=(i??fA)*t.getApproximateHeight(),o=1/e.unitsPerEm,r=Ja(n,o,t),c=n.length*s*o,l=A/r,g=a/c;return Math.min(g,l)},Ss=(n,t,e,A)=>{var c;const a=Qt(t.fontData.assetUrl),i=a.getFont(),s=t.fontSize/i.unitsPerEm;if(!e)return XA(t,n,t.fontSize,s,a,A);let o;if(t.text?o=t.text.split(`
1303
+ `,result:"greyscale"}),D.jsxs("feComponentTransfer",{in:"greyscale",children:[D.jsx("feFuncR",{type:"discrete",tableValues:n()}),D.jsx("feFuncG",{type:"discrete",tableValues:n()}),D.jsx("feFuncB",{type:"discrete",tableValues:n()})]})]})})}),s=r.rotation||0,o=mt(s),l=Math.cos(o),c=-Math.sin(o),d=()=>{var w,y,v,E,B,x,P,F,M,N;const A=((w=r.pattern)==null?void 0:w.x)||0,u=((y=r.pattern)==null?void 0:y.y)||0,h=((v=r.pattern)==null?void 0:v.width)||0,g=((E=r.pattern)==null?void 0:E.height)||0,m=((B=r.pattern)==null?void 0:B.scaleX)||1,f=((x=r.pattern)==null?void 0:x.scaleY)||1,p=((P=r.pattern)==null?void 0:P.rotation)||0;return[(F=r.pattern)!=null&&F.svg?{id:`${t}-contents`,type:T.Illustration,x:A,y:u,rotation:p,width:h*m,height:g*f,src:a(),svg:(M=r.pattern)==null?void 0:M.svg,colors:(N=r.pattern)==null?void 0:N.colors}:{id:`${t}-contents`,type:T.Image,x:A,y:u,rotation:p,width:h*m,height:g*f,src:a()}]};return D.jsxs(D.Fragment,{children:[i(),D.jsx("g",{opacity:r.opacity,mask:r.stepName?void 0:r.mask,filter:r.useThreshold?`url(#${e})`:void 0,children:D.jsx("g",{transform:`
1304
+ matrix(1, 0, 0, 1, ${r.x}, ${r.y})
1305
+ matrix(1, 0, 0, 1, ${r.width/2}, ${r.height/2})
1306
+ matrix(${l}, ${-c}, ${c}, ${l}, 0, 0)
1307
+ matrix(1, 0, 0, 1, ${-r.width/2}, ${-r.height/2})
1308
+ matrix(${r.scaleX}, 0, 0, ${r.scaleY}, 0, 0)
1309
+ `,children:D.jsx(Qn,{id:t,x:0,y:0,rotation:0,width:r.width,height:r.height,clipPath:r.path,children:d()})})})]})},Nn=new Map;class ms{constructor(t){this.font=t,this.glyphsFromText=new Map,this.kerningValues=new Map,this.height=this.calculateApproximateHeight()}getFont(){return this.font}getGlyphs(t){const e=this.glyphsFromText.get(t);if(e)return e;const a=this.font.stringToGlyphs(t);return this.glyphsFromText.set(t,a),a}getApproximateHeight(){return this.height}getExactHeight(t){const e=this.font.stringToGlyphs(t);let a=0,n=0;return e.forEach(i=>{const s=i.getMetrics();a=Math.max(a,s.yMax),n=Math.min(n,s.yMin)}),a-n}getKerningValue(t,e){if(!t.name||!e.name)return;let a=this.kerningValues.get(t.name);a||(a=new Map,this.kerningValues.set(t.name,a));let n=a.get(e.name);return n||(n=this.font.getKerningValue(t,e),a.set(e.name,n)),n}calculateApproximateHeight(){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",e=this.font.stringToGlyphs(t);let a=0,n=0;return e.forEach(i=>{const s=i.getMetrics();a=Math.max(a,s.yMax),n=Math.min(n,s.yMin)}),a-n}}const fs=r=>r.substring(0,5).toLowerCase().trim()==="data:",Re=new Map,vt=async r=>{if(Re.has(r))return Re.get(r);const e=(async()=>{try{return St(r).getFont()}catch{if(fs(r)){const a=gn(r),n=We.parse(a);return _e(r,n),n}else{const a=await Be(r,!0),n=We.parse(a);return _e(r,n),await jr(n,r),n}}})();return Re.set(r,e),e},ps=r=>{const t=gn(r),e=We.parse(t);return _e(r,e),e},St=r=>{const t=Nn.get(r);if(t)return t;throw new Error("Font metrics unavailable for font")},_e=(r,t)=>{const e=new ms(t);return Nn.set(r,e),e},Cs=async r=>{const t=it(),e=t.parseFromString(r,"image/svg+xml"),a=e.firstElementChild,n=new Map;a.querySelectorAll("style").forEach(d=>{var u;(u=Za.parse(d.innerHTML).stylesheet)==null||u.rules.forEach(h=>{var g,m,f;if(h.type==="font-face"&&h.declarations){const p=(g=h.declarations.find(y=>y.property==="font-family"))==null?void 0:g.value,C=(m=h.declarations.find(y=>y.property==="src"))==null?void 0:m.value,w=(f=C==null?void 0:C.match(/'(https.*?)'/))==null?void 0:f[1];p&&w&&n.set(p,w)}})});const s=e.querySelectorAll("tspan");for(let d=0;d<s.length;d++){const A=s.item(d),u=A.closest("text"),h=A.closest("g"),g=u.getAttribute("font-family"),m=await vt(n.get(g)),f=u.getAttribute("fill"),p=u.getAttribute("stroke"),C=u.getAttribute("stroke-width"),w=m.getPath(A.innerHTML,0,0,parseInt(u.getAttribute("font-size")??"72")),y=w.getBoundingBox().x2-w.getBoundingBox().x1;let v=0;const E=A.getAttribute("text-anchor");E==="middle"?v=y/2:E==="end"&&(v=y);const B=m.getPath(A.innerHTML,parseFloat(A.getAttribute("x")??"0")-v,parseFloat(A.getAttribute("y")??"0"),parseInt(u.getAttribute("font-size")??"72"));B.fill=f,B.stroke=p,B.strokeWidth=parseFloat(C??"0");const x=B.toSVG(2),F=t.parseFromString(x,"image/svg+xml").firstElementChild;h.appendChild(F)}return e.querySelectorAll("text").forEach(d=>d.remove()),pt().serializeToString(a)},fe=(r,t,e,a)=>Math.max(Es(r.join(`
1310
+ `),e,a),t),Ga=(r,t,e,a,n,i)=>{const s=(i||Ca)*n.getApproximateHeight(),o=t.split(`
1311
+ `);try{const l=o.flatMap(d=>ge(d,r.width,a,n)),c=l.flatMap(d=>d.lines);return{lines:c,requiredHeight:l.flatMap(d=>d.lines).length*(a*s),fontSize:e,requiredWidth:fe(c,r.width,a,n)}}catch{const c=t.split("");return{lines:c,requiredHeight:c.length*(a*s),fontSize:e,requiredWidth:fe(c,r.width,a,n)}}},ge=(r,t,e,a)=>{const n=At(r,e,a);if(n<=t)return{lines:[r],width:n};if(!(r.indexOf(" ")>-1)){if(r.length<=1)throw new Error(`Character ${r} is wider than region`);const d=Math.floor(r.length/2),A=ge(r.slice(0,d),t,e,a),u=ge(r.slice(d),t,e,a);return{lines:[...A.lines,...u.lines],width:Math.max(A.width,u.width)}}const s=r.split(" "),o=[];let l=-1/0,c=0;for(;c<s.length;){const d=s[c];if(At(d,e,a)>t){const A=ge(d,t,e,a);o.push(...A.lines),l=Math.max(l,A.width),c++}else{const A=[d];l=Math.max(l,At(d,e,a));let u=c+1,h=!0;for(;u<s.length&&h;){const g=s[u],m=At(`${A.join(" ")} ${g}`,e,a);m<=t?(A.push(g),l=Math.max(l,m),u++):h=!1}o.push(A.join(" ")),c=u}}if(l<0)throw new Error(`No max width calculated for text: ${o}.`);return{lines:o,width:l}},ws=(r,t,e,a,n,i)=>{const s=(i??Ca)*t.getApproximateHeight(),o=1/e.unitsPerEm,l=Rn(r,o,t),c=r.length*s*o,d=a/l,A=n/c;return Math.min(A,d)},ys=(r,t,e,a)=>{var c;const n=St(t.fontData.assetUrl),i=n.getFont(),s=t.fontSize/i.unitsPerEm;if(!e)return Ga(t,r,t.fontSize,s,n,a);let o;if(t.text?o=t.text.split(`
1312
1312
  `):o=((c=t.input)==null?void 0:c.split(`
1313
- `))??[""],e.input===n&&t.width===e.width&&t.height===e.height&&t.lineHeight===e.lineHeight)return{lines:o,requiredHeight:t.height,requiredWidth:ue(o,t.width,s,a),fontSize:t.fontSize};const r=t.width!==e.width!=(t.height!==e.height);return t.lineHeight===e.lineHeight&&!r&&e.input===n?{lines:o,requiredHeight:t.height,requiredWidth:ue(o,t.width,s,a),fontSize:Ms(o,a,i,t.width,t.height,A)}:XA(t,n,t.fontSize,s,a,A)},xs=(n,t,e,A,a)=>{const s=Qt(t.assetUrl).getFont();let o={...n};const r={...n},c=Ja(A,e/s.unitsPerEm,Qt(t.assetUrl));return c&&c<o.width&&(r.width=c,a==="left"?(r.left+=Math.sin(o.rotation*Math.PI/360)*(o.width-c),r.top+=Math.sin(o.rotation*Math.PI/180)*(c-o.width)/2):a==="right"?r.left+=o.width-c:r.left+=(o.width-c)/2,A&&Ps(A,A).every(([l,g])=>l===g)&&(o=r)),o},He=1,gt=(n,t,e)=>{let A=0;const a=e.getGlyphs(n);return a.forEach((i,s)=>{if(i.advanceWidth&&(A+=i.advanceWidth),s<a.length-1){const o=e.getKerningValue(i,a[s+1]);A+=o||0}}),A*=t,A},Ys=(n,t,e)=>{let A=0;const a=e.getGlyphs(n);return a.forEach((i,s)=>{if(i.advanceWidth&&(A=Math.max(A,i.advanceWidth)),s<a.length-1){const o=e.getKerningValue(i,a[s+1]);A=Math.max(A,o||0)}}),A*=t,A},Ja=(n,t,e)=>{let A=0;return n.forEach(a=>{A=Math.max(A,gt(a,t,e))}),A},qA={stripControlCharacters:!0,vertical:!1,uppercase:!1},we=(n,t=qA)=>{const e={...qA,...t};let A=n||"";return e.stripControlCharacters&&(A=A.replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,"")),e.uppercase&&(A=A.toUpperCase()),e.vertical&&(A=A.split("").join(`
1314
- `)),A},Ps=(n,t)=>n.map((e,A)=>[e,t[A]]),vs=(n="center",t=!1)=>t?"center":n,La=n=>n==="left"?"start":n==="right"?"end":"middle",ie=(n,t,e)=>n.fontData?{...n,...(()=>{if(n.algorithm===pt.Traditional){const a=Ss(t,n,e,n.lineHeight);return{text:a.lines.join(`
1315
- `),height:a.requiredHeight,width:a.requiredWidth,fontSize:a.fontSize,input:t}}else return{text:t}})()}:n,fA=1.1,ks=n=>{var B,h,C,u;const e=(n.rotation||0)*Math.PI/180,A=Math.cos(e),a=-Math.sin(e),i=`text-path-${n.id}`,s=`text-fill-${n.id}`,o=n.x+(n.curved?0:n.width/2),r=n.y+(n.curved?0:n.height/2),c=(n.text||"").split(`
1316
- `),l=(B=n.strokeColor)!=null&&B.browserValue&&n.strokeThickness?(h=n.strokeColor)==null?void 0:h.browserValue:void 0,g=(C=n.strokeColor)!=null&&C.browserValue&&n.strokeThickness?n.strokeThickness:void 0;if(n.curved&&!n.paths||!n.fontData)return null;const d=()=>{var w;return n.textFillImage?`url("#${s}")`:(w=n._renderingConfiguration)!=null&&w.spotColors&&n.fillSpotColorDefinition?`${n.fill} ${Fa(n.fillSpotColorDefinition)}`:n.fill};return S.jsxs(S.Fragment,{children:[S.jsxs("defs",{children:[n.textFillImage&&S.jsx("pattern",{id:s,patternUnits:"userSpaceOnUse",width:n.textFillImage.scale*n.textFillImage.width,height:n.textFillImage.scale*n.textFillImage.height,x:0,y:0,children:S.jsx("image",{href:n.textFillImage.src,xlinkHref:n.textFillImage.src,width:n.textFillImage.scale*n.textFillImage.width,height:n.textFillImage.scale*n.textFillImage.height})}),S.jsx("style",{type:"text/css",dangerouslySetInnerHTML:{__html:`
1313
+ `))??[""],e.input===r&&t.width===e.width&&t.height===e.height&&t.lineHeight===e.lineHeight)return{lines:o,requiredHeight:t.height,requiredWidth:fe(o,t.width,s,n),fontSize:t.fontSize};const l=t.width!==e.width!=(t.height!==e.height);return t.lineHeight===e.lineHeight&&!l&&e.input===r?{lines:o,requiredHeight:t.height,requiredWidth:fe(o,t.width,s,n),fontSize:ws(o,n,i,t.width,t.height,a)}:Ga(t,r,t.fontSize,s,n,a)},Ss=(r,t,e,a,n)=>{const s=St(t.assetUrl).getFont();let o={...r};const l={...r},c=Rn(a,e/s.unitsPerEm,St(t.assetUrl));return c&&c<o.width&&(l.width=c,n==="left"?(l.left+=Math.sin(o.rotation*Math.PI/360)*(o.width-c),l.top+=Math.sin(o.rotation*Math.PI/180)*(c-o.width)/2):n==="right"?l.left+=o.width-c:l.left+=(o.width-c)/2,a&&vs(a,a).every(([d,A])=>d===A)&&(o=l)),o},Oe=1,At=(r,t,e)=>{let a=0;const n=e.getGlyphs(r);return n.forEach((i,s)=>{if(i.advanceWidth&&(a+=i.advanceWidth),s<n.length-1){const o=e.getKerningValue(i,n[s+1]);a+=o||0}}),a*=t,a},Es=(r,t,e)=>{let a=0;const n=e.getGlyphs(r);return n.forEach((i,s)=>{if(i.advanceWidth&&(a=Math.max(a,i.advanceWidth)),s<n.length-1){const o=e.getKerningValue(i,n[s+1]);a=Math.max(a,o||0)}}),a*=t,a},Rn=(r,t,e)=>{let a=0;return r.forEach(n=>{a=Math.max(a,At(n,t,e))}),a},ja={stripControlCharacters:!0,vertical:!1,uppercase:!1},pe=(r,t=ja)=>{const e={...ja,...t};let a=r||"";return e.stripControlCharacters&&(a=a.replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,"")),e.uppercase&&(a=a.toUpperCase()),e.vertical&&(a=a.split("").join(`
1314
+ `)),a},vs=(r,t)=>r.map((e,a)=>[e,t[a]]),Bs=(r="center",t=!1)=>t?"center":r,On=r=>r==="left"?"start":r==="right"?"end":"middle",ie=(r,t,e)=>r.fontData?{...r,...(()=>{if(r.algorithm===Et.Traditional){const n=ys(t,r,e,r.lineHeight);return{text:n.lines.join(`
1315
+ `),height:n.requiredHeight,width:n.requiredWidth,fontSize:n.fontSize,input:t}}else return{text:t}})()}:r,Ca=1.1,Is=r=>{var h,g,m,f;const e=(r.rotation||0)*Math.PI/180,a=Math.cos(e),n=-Math.sin(e),i=`text-path-${r.id}`,s=`text-fill-${r.id}`,o=r.x+(r.curved?0:r.width/2),l=r.y+(r.curved?0:r.height/2),c=(r.text||"").split(`
1316
+ `),d=(h=r.strokeColor)!=null&&h.browserValue&&r.strokeThickness?(g=r.strokeColor)==null?void 0:g.browserValue:void 0,A=(m=r.strokeColor)!=null&&m.browserValue&&r.strokeThickness?r.strokeThickness:void 0;if(r.curved&&!r.paths||!r.fontData)return null;const u=()=>{var p;return r.textFillImage?`url("#${s}")`:(p=r._renderingConfiguration)!=null&&p.spotColors&&r.fillSpotColorDefinition?`${r.fill} ${Sn(r.fillSpotColorDefinition)}`:r.fill};return D.jsxs(D.Fragment,{children:[D.jsxs("defs",{children:[r.textFillImage&&D.jsx("pattern",{id:s,patternUnits:"userSpaceOnUse",width:r.textFillImage.scale*r.textFillImage.width,height:r.textFillImage.scale*r.textFillImage.height,x:0,y:0,children:D.jsx("image",{href:r.textFillImage.src,xlinkHref:r.textFillImage.src,width:r.textFillImage.scale*r.textFillImage.width,height:r.textFillImage.scale*r.textFillImage.height})}),D.jsx("style",{type:"text/css",dangerouslySetInnerHTML:{__html:`
1317
1317
  @font-face {
1318
- font-family: '${n.fontData.name}';
1319
- src: url('${n.fontData.assetUrl}') format('truetype');
1318
+ font-family: '${r.fontData.name}';
1319
+ src: url('${r.fontData.assetUrl}') format('truetype');
1320
1320
  }
1321
- `}}),n.curved&&n.paths?S.jsx("path",{id:i,d:n.paths[0]}):void 0]}),(u=n._renderingConfiguration)!=null&&u.debug?S.jsx("rect",{stroke:"blue",fill:"none",x:n.x,y:n.y,width:n.width,height:n.height}):void 0,S.jsx("g",{mask:n.stepName?void 0:n.mask,children:S.jsx("g",{transform:`matrix(${A}, ${-a}, ${a}, ${A}, ${o}, ${r})`,children:S.jsx("text",{xmlSpace:"preserve",fontFamily:`'${n.fontData.name}'`,fontSize:n.fontSize,fontStyle:"normal",fontWeight:"normal",fill:d(),style:{whiteSpace:"pre",userSelect:"none"},stroke:l,strokeWidth:g,children:n.curved?S.jsx(bs,{text:n.text||"",curvedPathId:i,align:n.align}):c.map((w,E)=>S.jsx(Ns,{align:n.vertical?"center":n.align,fontSize:n.fontSize,thisLineIdx:E,amountLines:c.length,text:w,textboxHeight:n.height,textboxWidth:n.width,lineHeight:n.lineHeight,vertical:n.vertical,verticalAlign:n.verticalAlign},E))})})})]})},Ns=n=>{const t=()=>n.lineHeight!==void 0?n.lineHeight:fA,e=()=>n.align==="left"?-n.textboxWidth/2:n.align==="right"?n.textboxWidth/2:0,A=()=>{const a=n.fontSize*t(),i=n.textboxHeight/2;if(n.verticalAlign==="top")return-i+n.fontSize*3/4+n.thisLineIdx*a;if(n.verticalAlign==="bottom"){const o=n.amountLines-1-n.thisLineIdx;return i-n.fontSize/4-o*a}const s=(n.amountLines-1)/2;return(n.thisLineIdx-s)*a+n.fontSize/4};return S.jsx("tspan",{textAnchor:La(n.align),x:e(),y:`${A()}px`,children:n.text})},bs=n=>{const t=`#${n.curvedPathId}`,e=()=>n.align==="left"?"0%":n.align==="right"?"100%":"50%";return S.jsx("textPath",{startOffset:e(),textAnchor:La(n.align),href:t,xlinkHref:t,children:n.text})},Rs=n=>{var s,o;if(n.cachedObjectURL&&!((s=n._renderingConfiguration)!=null&&s.omitCachedFields))return S.jsx(Ua,{id:n.id,src:n.cachedObjectURL,x:n.x,y:n.y,width:n.width,height:n.height,rotation:n.rotation,preserveAspectRatio:"none",immutable:n.immutable,mask:n.stepName?void 0:n.mask});const t=n.rotation||0,e=Ct(t),A=Math.cos(e),a=-Math.sin(e),i=`
1322
- matrix(1, 0, 0, 1, ${n.x}, ${n.y})
1323
- matrix(1, 0, 0, 1, ${n.width/2}, ${n.height/2})
1324
- matrix(${A}, ${-a}, ${a}, ${A}, 0, 0)
1325
- matrix(1, 0, 0, 1, ${-n.width/2}, ${-n.height/2})
1326
- `;if(!n.svg)throw new Error(`Illustration element ${n.id} (stepName ${n.stepName}) lacked svg from src ${n.src} at render time.`);return S.jsx("g",{mask:n.stepName?void 0:n.mask,children:S.jsx("g",{transform:i,dangerouslySetInnerHTML:{__html:CA(n.svg,n.width,n.height,n.colors,(o=n._renderingConfiguration)==null?void 0:o.spotColors)}})})};class Oa{constructor(){this.id=b(),this.stateCallbacks=[],this.prevCommands=[],this.nextCommands=[]}registerStateCallback(t){this.stateCallbacks.push(t)}unregisterStateCallback(t){this.stateCallbacks.filter(e=>e!==t)}getState(){return this.state}runStateCallbacks(){this.stateCallbacks.forEach(t=>t())}apply(t,e){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);this.state=this.commandReducer(this.state,t),this.runStateCallbacks(),this.nextCommands=[],e||this.prevCommands.push(t)}undo(){if(!this.state)return;const t=this.prevCommands.pop();if(!t)return;const e=t.undo();this.state={...this.state,transaction:e},this.nextCommands.push(t),this.runStateCallbacks()}redo(){if(!this.state)return;const t=this.nextCommands.pop();t&&(this.state=this.commandReducer(this.state,t),this.runStateCallbacks(),this.prevCommands.push(t))}flattenSequence(t,e){const a=this.prevCommands.filter(i=>i.sequenceId===t).pop();a&&(this.prevCommands=this.prevCommands.filter(i=>i.sequenceId!==t),a==null||a.overrideOldState(e),this.prevCommands.push(a))}getLayoutById(t){var i,s;if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const e=(s=(i=this.state.transaction)==null?void 0:i.layouts)==null?void 0:s[t],A=e==null?void 0:e.layout;if(!A)throw new Error(`No layout: ${t}`);const a=[...(e==null?void 0:e.elements)||[]];return this.getLayoutDataWithState(A,a)}getAllLayouts(){var A;if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const t=[...Object.keys((A=this.state.transaction)==null?void 0:A.layouts)];return[...new Set(t)].map(a=>this.getLayoutById(a))}getLayoutDataWithState(t,e){return{layoutState:{layout:t,elements:e},getComponentWithProps:A=>Se(t,e,A)}}initialize(t,e){if(e){this.state={transaction:e};return}let A={serializableWorkflow:{steps:[]},layouts:{}};t.forEach(a=>{A=new DA(a).apply(A)}),this.runStateCallbacks(),this.state={transaction:A}}commandReducer(t,e){const A=t.transaction||{layouts:{},serializableWorkflow:{steps:[]}};return{...t,transaction:e.apply(A)}}}const za=n=>n.type===N.Image?S.jsx(Ua,{...n},n.id):n.type===N.Frame?S.jsx(Is,{...n},n.id):n.type===N.Illustration?S.jsx(Rs,{...n},n.id):n.type===N.Textbox?S.jsx(ks,{...n},n.id):n.type===N.Group?S.jsx(Ga,{...n},n.id):null,Se=(n,t,e)=>{const A=e.renderingConfiguration,a=A!=null&&A.removeExcludedElements?t.filter(i=>!i.excludeFromExport):t;return S.jsx(ls,{preserveAspectRatio:void 0,elements:a,backgroundColor:n.transparentBackground?void 0:e.backgroundColor?e.backgroundColor:"white",width:e.width||n.width,height:e.height||n.height,viewBox:A!=null&&A.region?{x:A.region.left,y:A.region.top,width:A.region.width,height:A.region.height}:{x:0,y:0,width:n.width,height:n.height},configuration:A,outlineArea:e.outlineArea,maxHeight:e.maxHeight,maxWidth:e.maxWidth,position:e.position,borderRadius:e.borderRadius,outlineColor:e.outlineColor})};function QA(n){return n.sort((t,e)=>{const A=t.layer||0,a=e.layer||0;if(A<a)return-1;if(A>a)return 1;const i=t.layerIndex||0,s=e.layerIndex||0;return i<s?-1:i>s?1:0})}const se=n=>{const t=n.variants;if(t){if(t.length===1)return t[0];if(n.defaultVariant!==void 0)return t.find(e=>e.id===n.defaultVariant)}},ct=new Map,Mt=new Map,Ue=new Map,ja=async(n,t)=>{if(!t){if(!n)throw new Error("No region or src supplied. Cannot construct frame!");return tA(n)}return _(t)},tA=n=>{const t=n.width,e=n.height;return`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 ${t} ${e}'>
1321
+ `}}),r.curved&&r.paths?D.jsx("path",{id:i,d:r.paths[0]}):void 0]}),(f=r._renderingConfiguration)!=null&&f.debug?D.jsx("rect",{stroke:"blue",fill:"none",x:r.x,y:r.y,width:r.width,height:r.height}):void 0,D.jsx("g",{mask:r.stepName?void 0:r.mask,children:D.jsx("g",{transform:`matrix(${a}, ${-n}, ${n}, ${a}, ${o}, ${l})`,children:D.jsx("text",{xmlSpace:"preserve",fontFamily:`'${r.fontData.name}'`,fontSize:r.fontSize,fontStyle:"normal",fontWeight:"normal",fill:u(),style:{whiteSpace:"pre",userSelect:"none"},stroke:d,strokeWidth:A,children:r.curved?D.jsx(Ds,{text:r.text||"",curvedPathId:i,align:r.align}):c.map((p,C)=>D.jsx(bs,{align:r.vertical?"center":r.align,fontSize:r.fontSize,thisLineIdx:C,amountLines:c.length,text:p,textboxHeight:r.height,textboxWidth:r.width,lineHeight:r.lineHeight,vertical:r.vertical,verticalAlign:r.verticalAlign},C))})})})]})},bs=r=>{const t=()=>r.lineHeight!==void 0?r.lineHeight:Ca,e=()=>r.align==="left"?-r.textboxWidth/2:r.align==="right"?r.textboxWidth/2:0,a=()=>{const n=r.fontSize*t(),i=r.textboxHeight/2;if(r.verticalAlign==="top")return-i+r.fontSize*3/4+r.thisLineIdx*n;if(r.verticalAlign==="bottom"){const o=r.amountLines-1-r.thisLineIdx;return i-r.fontSize/4-o*n}const s=(r.amountLines-1)/2;return(r.thisLineIdx-s)*n+r.fontSize/4};return D.jsx("tspan",{textAnchor:On(r.align),x:e(),y:`${a()}px`,children:r.text})},Ds=r=>{const t=`#${r.curvedPathId}`,e=()=>r.align==="left"?"0%":r.align==="right"?"100%":"50%";return D.jsx("textPath",{startOffset:e(),textAnchor:On(r.align),href:t,xlinkHref:t,children:r.text})},xs=r=>{var s,o;if(r.cachedObjectURL&&!((s=r._renderingConfiguration)!=null&&s.omitCachedFields))return D.jsx(Tn,{id:r.id,src:r.cachedObjectURL,x:r.x,y:r.y,width:r.width,height:r.height,rotation:r.rotation,preserveAspectRatio:"none",immutable:r.immutable,mask:r.stepName?void 0:r.mask});const t=r.rotation||0,e=mt(t),a=Math.cos(e),n=-Math.sin(e),i=`
1322
+ matrix(1, 0, 0, 1, ${r.x}, ${r.y})
1323
+ matrix(1, 0, 0, 1, ${r.width/2}, ${r.height/2})
1324
+ matrix(${a}, ${-n}, ${n}, ${a}, 0, 0)
1325
+ matrix(1, 0, 0, 1, ${-r.width/2}, ${-r.height/2})
1326
+ `;if(!r.svg)throw new Error(`Illustration element ${r.id} (stepName ${r.stepName}) lacked svg from src ${r.src} at render time.`);return D.jsx("g",{mask:r.stepName?void 0:r.mask,children:D.jsx("g",{transform:i,dangerouslySetInnerHTML:{__html:ga(r.svg,r.width,r.height,r.colors,(o=r._renderingConfiguration)==null?void 0:o.spotColors)}})})};class Un{constructor(){this.id=Q(),this.stateCallbacks=[],this.prevCommands=[],this.nextCommands=[]}registerStateCallback(t){this.stateCallbacks.push(t)}unregisterStateCallback(t){this.stateCallbacks.filter(e=>e!==t)}getState(){return this.state}runStateCallbacks(){this.stateCallbacks.forEach(t=>t())}apply(t,e){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);this.state=this.commandReducer(this.state,t),this.runStateCallbacks(),this.nextCommands=[],e||this.prevCommands.push(t)}undo(){if(!this.state)return;const t=this.prevCommands.pop();if(!t)return;const e=t.undo();this.state={...this.state,transaction:e},this.nextCommands.push(t),this.runStateCallbacks()}redo(){if(!this.state)return;const t=this.nextCommands.pop();t&&(this.state=this.commandReducer(this.state,t),this.runStateCallbacks(),this.prevCommands.push(t))}flattenSequence(t,e){const n=this.prevCommands.filter(i=>i.sequenceId===t).pop();n&&(this.prevCommands=this.prevCommands.filter(i=>i.sequenceId!==t),n==null||n.overrideOldState(e),this.prevCommands.push(n))}getLayoutById(t){var i,s;if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const e=(s=(i=this.state.transaction)==null?void 0:i.layouts)==null?void 0:s[t],a=e==null?void 0:e.layout;if(!a)throw new Error(`No layout: ${t}`);const n=[...(e==null?void 0:e.elements)||[]];return this.getLayoutDataWithState(a,n)}getAllLayouts(){var a;if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const t=[...Object.keys((a=this.state.transaction)==null?void 0:a.layouts)];return[...new Set(t)].map(n=>this.getLayoutById(n))}getLayoutDataWithState(t,e){return{layoutState:{layout:t,elements:e},getComponentWithProps:a=>xe(t,e,a)}}initialize(t,e){if(e){this.state={transaction:e};return}let a={serializableWorkflow:{steps:[]},layouts:{}};t.forEach(n=>{a=new Ea(n).apply(a)}),this.runStateCallbacks(),this.state={transaction:a}}commandReducer(t,e){const a=t.transaction||{layouts:{},serializableWorkflow:{steps:[]}};return{...t,transaction:e.apply(a)}}}const Ln=r=>r.type===T.Image?D.jsx(Tn,{...r},r.id):r.type===T.Frame?D.jsx(gs,{...r},r.id):r.type===T.Illustration?D.jsx(xs,{...r},r.id):r.type===T.Textbox?D.jsx(Is,{...r},r.id):r.type===T.Group?D.jsx(Qn,{...r},r.id):null,xe=(r,t,e)=>{const a=e.renderingConfiguration,n=a!=null&&a.removeExcludedElements?t.filter(i=>!i.excludeFromExport):t;return D.jsx(es,{preserveAspectRatio:void 0,elements:n,backgroundColor:r.transparentBackground?void 0:e.backgroundColor?e.backgroundColor:"white",width:e.width||r.width,height:e.height||r.height,viewBox:a!=null&&a.region?{x:a.region.left,y:a.region.top,width:a.region.width,height:a.region.height}:{x:0,y:0,width:r.width,height:r.height},configuration:a,outlineArea:e.outlineArea,maxHeight:e.maxHeight,maxWidth:e.maxWidth,position:e.position,borderRadius:e.borderRadius,outlineColor:e.outlineColor})};function wa(r){return r.sort((t,e)=>{const a=t.layer||0,n=e.layer||0;if(a<n)return-1;if(a>n)return 1;const i=t.layerIndex||0,s=e.layerIndex||0;return i<s?-1:i>s?1:0})}const se=r=>{const t=r.variants;if(t){if(t.length===1)return t[0];if(r.defaultVariant!==void 0)return t.find(e=>e.id===r.defaultVariant)}},ct=new Map,Dt=new Map,Ue=new Map,$n=async(r,t)=>{if(!t){if(!r)throw new Error("No region or src supplied. Cannot construct frame!");return ta(r)}return et(t)},ta=r=>{const t=r.width,e=r.height;return`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 ${t} ${e}'>
1327
1327
  <path id="target-path" d='M0 0 h ${t} v ${e} h ${-t} Z' />
1328
1328
  </svg>
1329
- `},Hs=(n,t)=>{var A;if(!t)return;const e=((A=t.variants)==null?void 0:A.find(a=>a.id===n.frameVariantId))||se(t);if(!e)throw new Error(`No variant with ID: ${n.frameVariantId}`);if(!e.asset)throw new Error(`No asset for variant with ID: ${n.frameVariantId}`);return e},oe=async n=>{if(Ue.has(n))return Ue.get(n);const e=(async()=>{if(Mt.has(n))return Mt.get(n);await new Promise(d=>setTimeout(d,0));const a=it().parseFromString(n,"image/svg+xml"),i=a.querySelector("svg");if(!i)throw new Error("Malformed frame SVG: <svg> tag not found");const s=i.getAttribute("viewBox");if(!s)throw new Error("SVG missing viewBox.");const o=s.split(" "),r=parseFloat(o[3])||1,c=parseFloat(o[2])||1,l=a.getElementById("target-path"),g=a.getElementsByClassName("st0").item(0);if(l){const d=l.getAttribute("d");if(!d)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const B={path:d,width:c,height:r};return Mt.set(d,B),B}if(g){const d=g.getAttribute("d");if(!d)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const B={path:d,width:c,height:r};return Mt.set(d,B),B}throw new Error("Malformed frame SVG")})();return Ue.set(n,e),e},pA=(n,t,e,A)=>{const a=t.width/t.height,i=n.width/n.height;let s;A?i>a?s=t.height/n.height:s=t.width/n.width:i>a?s=t.width/n.width:s=t.height/n.height,(e==null?void 0:e.scale)!==void 0&&(s*=e==null?void 0:e.scale);const o=t.width/2,r=t.height/2,c=o-n.width/2*s,l=(e==null?void 0:e.left)||c,g=r-n.height/2*s,d=(e==null?void 0:e.top)||g;return{x:l,y:d,zoom:s}},eA=async n=>{var e;if(ct.has(n))return ct.get(n);if(n.startsWith("data:image/svg+xml")){const A=zn.dataUriToBuffer(n),a=new TextDecoder().decode(A.buffer),i=IA(a),s={src:n,width:i.width,height:i.height,aspect:i.width/i.height};return ct.set(n,s),s}const t=((e=n.split(".").pop())==null?void 0:e.toLowerCase())??"";if(t==="svg"){const A=await Va(n),a=A.width,i=A.height,s={src:n,width:a,height:i,aspect:a/i};return ct.set(n,s),s}else{const A=await De(n,!0),a=ee(A),i=t==="jpg"||t==="jpeg";if(!a.endsWith(t)&&a==="image/jpeg"&&!i)throw Error(`File ${n} has wrong extension for mime type ${a}`);const s=await ae(A),o={src:n,width:s.width,height:s.height,aspect:s.width/s.height};return ct.set(n,o),o}},Va=async n=>{const t=await _(n);return IA(t)},ZA=n=>n.endsWith("mm")?Number(n.replace("mm",""))*3.7795275591:n.endsWith("px")?Number(n.replace("px","")):Number(n),IA=n=>{const A=it().parseFromString(n,"image/svg+xml").querySelector("svg");if(!A)throw new Error("No svg tag found, this svg must be malformed!");const a=A.getAttribute("viewBox"),i=A.getAttribute("width"),s=A.getAttribute("height"),o=s&&i?[0,0,ZA(i),ZA(s)]:a==null?void 0:a.split(" ").map(r=>Number(r));if(!o)throw new Error("No viewbox or width/height values detected on SVG file!");return{width:o[2],height:o[3]}},Tt=(n,t)=>{const e=n.layoutState.elements.filter(a=>a.layer===t),A=Math.max(...e.map(a=>a.layerIndex).filter(a=>a!==void 0));return Math.max(A,0)+1},Ka=async n=>new Promise(t=>{_(n).then(e=>{t(e)}).catch(e=>console.error(e))}),Ge=new Map,$t=async n=>{if(Ge.has(n))return Ge.get(n);const t=async a=>new Promise((i,s)=>{try{if(!(!!URL&&!!URL.createObjectURL))throw new Error("Environment incapable of generating ObjectURL");a.toBlob(r=>{if(!r)throw a.width===0||a.height===0?new Error(`Canvas dimensions are invalid (${a.width},${a.height})`):a.width*a.height>=268435456?new Error(`Canvas dimensions exceed device limit (${a.width},${a.height})`):new Error("Couldn't generate object URL for Illustration, the blob was undefined!");i(URL.createObjectURL(r))})}catch(o){s(o)}}),A=(async()=>{const s=it().parseFromString(n,"image/svg+xml").firstElementChild;if(!s)throw new Error("Failed to read SVG");const r=wt().serializeToString(s),c=ht(),l=c.getContext("2d"),g=await cA.Pith.from(l,r,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:ht,createImage:Ae,DOMParser:hA(),fetch:ot}),d=s.getAttribute("width"),B=s.getAttribute("height"),h=2048;if(B&&d){const C=parseFloat(B),w=parseFloat(d)/C;w>1?g.resize(h,h/w):g.resize(h*w,h)}else g.resize(h,h);return await g.render(),await t(c)})();return Ge.set(n,A),A},Jt=async(n,t,e,A)=>{const a=n.layoutState.layout.useEditableArea&&n.layoutState.layout.editableArea||{width:n.layoutState.layout.width,height:n.layoutState.layout.height,x:0,y:0},i=a.width<a.height?a.width:a.height,s=n.layoutState.layout.useEditableArea?i/1.3:i/2,o={top:a.y+a.height/2-s/2,left:a.x+a.width/2-s/2,width:s,height:s,rotation:0,panelId:n.layoutState.layout.panelId};if(e&&t===N.Illustration){const r=await st(await Ka(e)),d=it().parseFromString(r.svg,"image/svg+xml").firstElementChild.getAttribute("viewBox");if(!d)throw new Error("SVG missing viewBox.");const B=o.height,h=d.split(" "),C=parseFloat(h[2])||1,u=parseFloat(h[3])||1,w=C/u;o.height=o.width/w,o.top+=(B-o.height)/2}if(e&&t===N.Image){const r=o.height,c=await De(e),l=await ae(c),g=l.width/l.height;o.height=o.width/g,o.top+=(r-o.height)/2}if(e&&t===N.Textbox&&(A!=null&&A.text)&&(A!=null&&A.fontScale)){await It(e);const r=Qt(e),c=gt(A.text,A==null?void 0:A.fontScale,r);o.width=Math.min(c,a.width*.85),o.left=a.x+a.width/2-o.width/2}return o};class Us{static async getFrame(t,e){const A=await ja(e.region,e.src),a=await oe(A),i=e.region||await Jt(t,N.Frame);return{id:b(),x:i.left,y:i.top,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||Tt(t,i.layer||0),rotation:i.rotation,scaleX:i.width/a.width,scaleY:i.height/a.height,path:a.path,dataWidth:a.width,dataHeight:a.height,type:N.Frame,disablePlaceholder:e.configuration.disablePlaceholder,focalBlur:e.configuration.focalBlur,focalBlurStrength:e.configuration.focalBlurStrength,focalBlurRadius:e.configuration.focalBlurRadius,forceImageCover:e.configuration.forceImageCover,pattern:void 0,immutable:i.immutable}}static async getImage(t,e){const A=e.region||await Jt(t,N.Image,e.src);return{id:b(),src:e.src,type:N.Image,y:A.top,x:A.left,rotation:A.rotation,width:A.width,height:A.height,layer:A.layer||0,layerIndex:A.layerIndex||Tt(t,A.layer||0),immutable:A.immutable,preserveAspectRatio:"none"}}static async getTextbox(t,e){var h;const{configuration:A,fontSrc:a,designInputStep:i}=e,s=await It(a),o={assetUrl:a,name:s.names.fullName.en},r=(i==null?void 0:i.text)||A.defaultText||"",c=A.replaceableText?A.replaceableText.replace("{{}}",r):r,l=we(c,{vertical:A.vertical,uppercase:A.uppercase}),g=e.region||await Jt(t,N.Textbox,a,{text:l,fontScale:A.size?A.size/s.unitsPerEm:void 0}),d=ie({id:b(),type:N.Textbox,x:g.left,y:g.top,width:g.width,height:g.height,align:vs(A.textAlign,A.vertical),curved:A.curved,fill:(i==null?void 0:i.color)||A.colour||"#000000",fontData:o,layer:g.layer||0,layerIndex:g.layerIndex||Tt(t,g.layer||0),paths:A.paths,rotation:g.rotation,vertical:A.vertical,verticalAlign:A.verticalAlign||"middle",algorithm:pt.Traditional,fontSize:A.size||Math.max(Math.round(g.height*.025),1),text:l,input:r},l),B=xs({...g,height:d.height},o,d.fontSize,((h=d==null?void 0:d.text)==null?void 0:h.split(`
1330
- `))||[],d.align);return{...d,x:B.left,y:B.top+(g.height-B.height)/2,width:B.width,height:B.height}}static async getShape(t,e){const A=`
1329
+ `},Ps=(r,t)=>{var a;if(!t)return;const e=((a=t.variants)==null?void 0:a.find(n=>n.id===r.frameVariantId))||se(t);if(!e)throw new Error(`No variant with ID: ${r.frameVariantId}`);if(!e.asset)throw new Error(`No asset for variant with ID: ${r.frameVariantId}`);return e},oe=async r=>{if(Ue.has(r))return Ue.get(r);const e=(async()=>{if(Dt.has(r))return Dt.get(r);await new Promise(u=>setTimeout(u,0));const n=it().parseFromString(r,"image/svg+xml"),i=n.querySelector("svg");if(!i)throw new Error("Malformed frame SVG: <svg> tag not found");const s=i.getAttribute("viewBox");if(!s)throw new Error("SVG missing viewBox.");const o=s.split(" "),l=parseFloat(o[3])||1,c=parseFloat(o[2])||1,d=n.getElementById("target-path"),A=n.getElementsByClassName("st0").item(0);if(d){const u=d.getAttribute("d");if(!u)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const h={path:u,width:c,height:l};return Dt.set(u,h),h}if(A){const u=A.getAttribute("d");if(!u)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const h={path:u,width:c,height:l};return Dt.set(u,h),h}throw new Error("Malformed frame SVG")})();return Ue.set(r,e),e},ya=(r,t,e,a)=>{const n=t.width/t.height,i=r.width/r.height;let s;a?i>n?s=t.height/r.height:s=t.width/r.width:i>n?s=t.width/r.width:s=t.height/r.height,(e==null?void 0:e.scale)!==void 0&&(s*=e==null?void 0:e.scale);const o=t.width/2,l=t.height/2,c=o-r.width/2*s,d=(e==null?void 0:e.left)||c,A=l-r.height/2*s,u=(e==null?void 0:e.top)||A;return{x:d,y:u,zoom:s}},ea=async r=>{var e;if(ct.has(r))return ct.get(r);if(r.startsWith("data:image/svg+xml")){const a=Nr.dataUriToBuffer(r),n=new TextDecoder().decode(a.buffer),i=Sa(n),s={src:r,width:i.width,height:i.height,aspect:i.width/i.height};return ct.set(r,s),s}const t=((e=r.split(".").pop())==null?void 0:e.toLowerCase())??"";if(t==="svg"){const a=await Vn(r),n=a.width,i=a.height,s={src:r,width:n,height:i,aspect:n/i};return ct.set(r,s),s}else{const a=await Be(r,!0),n=ee(a),i=t==="jpg"||t==="jpeg";if(!n.endsWith(t)&&n==="image/jpeg"&&!i)throw Error(`File ${r} has wrong extension for mime type ${n}`);const s=await ne(a),o={src:r,width:s.width,height:s.height,aspect:s.width/s.height};return ct.set(r,o),o}},Vn=async r=>{const t=await et(r);return Sa(t)},Wa=r=>r.endsWith("mm")?Number(r.replace("mm",""))*3.7795275591:r.endsWith("px")?Number(r.replace("px","")):Number(r),Sa=r=>{const a=it().parseFromString(r,"image/svg+xml").querySelector("svg");if(!a)throw new Error("No svg tag found, this svg must be malformed!");const n=a.getAttribute("viewBox"),i=a.getAttribute("width"),s=a.getAttribute("height"),o=s&&i?[0,0,Wa(i),Wa(s)]:n==null?void 0:n.split(" ").map(l=>Number(l));if(!o)throw new Error("No viewbox or width/height values detected on SVG file!");return{width:o[2],height:o[3]}},$t=(r,t)=>{const e=r.layoutState.elements.filter(n=>n.layer===t),a=Math.max(...e.map(n=>n.layerIndex).filter(n=>n!==void 0));return Math.max(a,0)+1},zn=async r=>new Promise(t=>{et(r).then(e=>{t(e)}).catch(e=>console.error(e))}),Le=new Map,Zt=async r=>{if(Le.has(r))return Le.get(r);const t=async n=>new Promise((i,s)=>{try{if(!(!!URL&&!!URL.createObjectURL))throw new Error("Environment incapable of generating ObjectURL");n.toBlob(l=>{if(!l)throw n.width===0||n.height===0?new Error(`Canvas dimensions are invalid (${n.width},${n.height})`):n.width*n.height>=268435456?new Error(`Canvas dimensions exceed device limit (${n.width},${n.height})`):new Error("Couldn't generate object URL for Illustration, the blob was undefined!");i(URL.createObjectURL(l))})}catch(o){s(o)}}),a=(async()=>{const s=it().parseFromString(r,"image/svg+xml").firstElementChild;if(!s)throw new Error("Failed to read SVG");const l=pt().serializeToString(s),c=gt(),d=c.getContext("2d"),A=await ca.Pith.from(d,l,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:gt,createImage:ae,DOMParser:ha(),fetch:ot}),u=s.getAttribute("width"),h=s.getAttribute("height"),g=2048;if(h&&u){const m=parseFloat(h),p=parseFloat(u)/m;p>1?A.resize(g,g/p):A.resize(g*p,g)}else A.resize(g,g);return await A.render(),await t(c)})();return Le.set(r,a),a},Vt=async(r,t,e,a)=>{const n=r.layoutState.layout.useEditableArea&&r.layoutState.layout.editableArea||{width:r.layoutState.layout.width,height:r.layoutState.layout.height,x:0,y:0},i=n.width<n.height?n.width:n.height,s=r.layoutState.layout.useEditableArea?i/1.3:i/2,o={top:n.y+n.height/2-s/2,left:n.x+n.width/2-s/2,width:s,height:s,rotation:0,panelId:r.layoutState.layout.panelId};if(e&&t===T.Illustration){const l=await st(await zn(e)),u=it().parseFromString(l.svg,"image/svg+xml").firstElementChild.getAttribute("viewBox");if(!u)throw new Error("SVG missing viewBox.");const h=o.height,g=u.split(" "),m=parseFloat(g[2])||1,f=parseFloat(g[3])||1,p=m/f;o.height=o.width/p,o.top+=(h-o.height)/2}if(e&&t===T.Image){const l=o.height,c=await Be(e),d=await ne(c),A=d.width/d.height;o.height=o.width/A,o.top+=(l-o.height)/2}if(e&&t===T.Textbox&&(a!=null&&a.text)&&(a!=null&&a.fontScale)){await vt(e);const l=St(e),c=At(a.text,a==null?void 0:a.fontScale,l);o.width=Math.min(c,n.width*.85),o.left=n.x+n.width/2-o.width/2}return o};class Fs{static async getFrame(t,e){const a=await $n(e.region,e.src),n=await oe(a),i=e.region||await Vt(t,T.Frame);return{id:Q(),x:i.left,y:i.top,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||$t(t,i.layer||0),rotation:i.rotation,scaleX:i.width/n.width,scaleY:i.height/n.height,path:n.path,dataWidth:n.width,dataHeight:n.height,type:T.Frame,disablePlaceholder:e.configuration.disablePlaceholder,focalBlur:e.configuration.focalBlur,focalBlurStrength:e.configuration.focalBlurStrength,focalBlurRadius:e.configuration.focalBlurRadius,forceImageCover:e.configuration.forceImageCover,pattern:void 0,immutable:i.immutable}}static async getImage(t,e){const a=e.region||await Vt(t,T.Image,e.src);return{id:Q(),src:e.src,type:T.Image,y:a.top,x:a.left,rotation:a.rotation,width:a.width,height:a.height,layer:a.layer||0,layerIndex:a.layerIndex||$t(t,a.layer||0),immutable:a.immutable,preserveAspectRatio:"none"}}static async getTextbox(t,e){var g;const{configuration:a,fontSrc:n,designInputStep:i}=e,s=await vt(n),o={assetUrl:n,name:s.names.fullName.en},l=(i==null?void 0:i.text)||a.defaultText||"",c=a.replaceableText?a.replaceableText.replace("{{}}",l):l,d=pe(c,{vertical:a.vertical,uppercase:a.uppercase}),A=e.region||await Vt(t,T.Textbox,n,{text:d,fontScale:a.size?a.size/s.unitsPerEm:void 0}),u=ie({id:Q(),type:T.Textbox,x:A.left,y:A.top,width:A.width,height:A.height,align:Bs(a.textAlign,a.vertical),curved:a.curved,fill:(i==null?void 0:i.color)||a.colour||"#000000",fontData:o,layer:A.layer||0,layerIndex:A.layerIndex||$t(t,A.layer||0),paths:a.paths,rotation:A.rotation,vertical:a.vertical,verticalAlign:a.verticalAlign||"middle",algorithm:Et.Traditional,fontSize:a.size||Math.max(Math.round(A.height*.025),1),text:d,input:l},d),h=Ss({...A,height:u.height},o,u.fontSize,((g=u==null?void 0:u.text)==null?void 0:g.split(`
1330
+ `))||[],u.align);return{...u,x:h.left,y:h.top+(A.height-h.height)/2,width:h.width,height:h.height}}static async getShape(t,e){const a=`
1331
1331
  <svg
1332
1332
  xmlns="http://www.w3.org/2000/svg"
1333
1333
  xmlnsXlink="http://www.w3.org/1999/xlink"
@@ -1347,7 +1347,7 @@
1347
1347
  fill="${e.color}"
1348
1348
  />
1349
1349
  </svg>
1350
- `,a={};a["spiff-fill-shape"]={browserValue:e.color};const i=e.region||await Jt(t,N.Illustration),s=b();return{stepRegion:e.region,colors:a,id:s,svg:A,type:N.Illustration,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||Tt(t,i.layer||0),immutable:i.immutable}}static async getIllustration(t,e){const A=e.region||await Jt(t,N.Illustration,e.src),a=await st(await Ka(e.src)),i=await $t(a.svg),s=b();return{cachedObjectURL:i,stepRegion:e.region,colors:a.colors,id:s,src:e.src,svg:a.svg,type:N.Illustration,y:A.top,x:A.left,rotation:A.rotation,width:A.width,height:A.height,layer:A.layer||0,layerIndex:A.layerIndex||Tt(t,A.layer||0),immutable:A.immutable}}}class O extends Error{constructor(){super("Element not found!"),Object.setPrototypeOf(this,O.prototype)}}const J=(n,t)=>Z(n,t).elements.find(a=>a.id===n),Z=(n,t)=>{const e=Object.values(t).find(A=>A.elements.some(a=>a.id===n));if(!e)throw new O;return e},tt=(n,t)=>{const e=[...t.elements.filter(a=>a.id!==n.id),n],A=QA(e);return{layout:t.layout,elements:A,modificationID:b()}},AA=async n=>{var A;const t=[...Object.keys(n.layouts)],e=[...new Set(t)];for(let a=0;a<e.length;a++){const i=e[a],s=n.layouts[i];await Promise.all(s.elements.map(async o=>{var r,c,l;if(o.type==="illustration"){const g=o;if(g.src&&!g.svg){const d=await _(g.src),B=await st(d);g.svg=CA(B.svg,g.width,g.height,g.colors)}}else if(o.type==="frame"){const g=o;if((r=g.pattern)!=null&&r.colors&&((c=g.pattern)!=null&&c.src)){const d=await _((l=g.pattern)==null?void 0:l.src),B=await st(d);g.pattern.svg=B.svg}}isNaN(o.x)&&(o.x=0),isNaN(o.y)&&(o.y=0),isNaN(o.width)&&(o.width=0),isNaN(o.height)&&(o.height=0),isNaN(o.rotation)&&(o.rotation=0)}))}for(const a in n.layouts){const i=n.layouts[a].elements.filter(o=>o.type===N.Illustration);for(let o=0;o<i.length;++o){const r=i[o];if(r.src&&r.svg)try{r.cachedObjectURL=await $t(r.svg)}catch(c){console.log(c)}}const s=n.layouts[a].elements.filter(o=>o.type===N.Textbox);for(let o=0;o<s.length;++o){const r=s[o];(A=r.fontData)!=null&&A.assetUrl&&await It(r.fontData.assetUrl)}}};class U{undo(){if(!this.oldState)throw new Error("Cannot undo.");return this.oldState}overrideOldState(t){this.oldState=t}}class $A extends U{constructor(t){super(),this.serializableWorkflow=t}apply(t){return this.oldState=t,{...t,serializableWorkflow:this.serializableWorkflow}}}class Gs extends U{constructor(t,e,A){super(),this.id=t,this.x=e,this.y=A}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A={...e,x:this.x,y:this.y},a=Z(e.id,Object.values(t.layouts)),i=tt(A,a);return{...t,layouts:{...t.layouts,[a.layout.id]:i}}}}class Ts extends U{constructor(t,e){super(),this.id=t,this.angle=e}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A={...e,rotation:this.angle},a=Z(e.id,Object.values(t.layouts)),i=tt(A,a);return{...t,layouts:{...t.layouts,[a.layout.id]:i}}}}class Js extends U{constructor(t,e,A){super(),this.id=t,this.width=Math.abs(e),this.height=Math.abs(A)}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;let A={...e,width:this.width,height:this.height};if(e.type==="frame"){const s=A;s.scaleX=s.scaleX*this.width/e.width,s.scaleY=s.scaleY*this.height/e.height}else if(e.type==="textbox"){const s=A,o=(!s.algorithm||s.algorithm===pt.Autosize?s.text:s.input)??"";A=ie(s,o,e)}const a=Z(e.id,Object.values(t.layouts)),i=tt(A,a);return{...t,layouts:{...t.layouts,[a.layout.id]:i}}}}class G extends U{constructor(t){super(),this.commands=t}apply(t){return this.oldState=t,this.commands.reduce((e,A)=>A.apply(e),t)}}class DA extends U{constructor(t){super(),this.layout=t}apply(t){return this.oldState=t,{...t,layouts:{...t.layouts,[this.layout.id]:{elements:[],layout:{...this.layout},modificationID:b()}}}}}class z extends U{constructor(t,e){super(),this.element=t,this.layout=e}apply(t){this.oldState=t,t.layouts[this.layout.id]||(t.layouts[this.layout.id]={layout:this.layout,elements:[],modificationID:""});const e=t.layouts[this.layout.id].elements;if(e.find(o=>o.id===this.element.id))throw new Error(`Failed to apply new ${this.element.type} element because ID ${this.element.id} already taken`);if(this.element.productOverlay||e.length===0){const o=[...e,this.element];return this.element.layerIndex===void 0&&(this.element.layerIndex=this.assignIndex(this.element,o)),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:o,modificationID:b()}}}}const a=e[e.length-1],i=a.productOverlay?a:null;i&&e.pop();let s;if(this.element.layerIndex!==null&&this.element.layerIndex!==void 0)s=[...e,this.element].sort((o,r)=>o.layerIndex!==void 0&&r.layerIndex!==void 0?o.layerIndex-r.layerIndex:0);else{const o=this.assignIndex(this.element,e);this.element.layerIndex=o!==void 0?o:0,s=[...e,this.element]}return i&&s.push(i),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:s,modificationID:b()}}}}assignIndex(t,e){var a;if(e.length===0)return 0;const A=(a=e.filter(i=>(i.layer||0)===(t.layer||0)).sort((i,s)=>(i.layerIndex||0)-(s.layerIndex||0))[e.length-1])==null?void 0:a.layerIndex;return A!==void 0?A+1:0}}class ut extends U{constructor(t){super(),this.id=t}apply(t){this.oldState=t;let e=!1;const A=Object.values(t.layouts).map(i=>(i.elements.filter(o=>o.id!==this.id).length!==i.elements.length&&(e=!0),{...i,elements:i.elements.filter(o=>o.id!==this.id),modificationID:b()}));e||console.log(`Failed to delete element ${this.id}`);const a={};return A.forEach(i=>{a[i.layout.id]=i}),{...t,layouts:a}}}class Wa extends U{constructor(t,e,A){super(),this.id=t,this.color=e,this.textFillSpotColor=A}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A={...e,fill:this.color,fillSpotColorDefinition:this.textFillSpotColor,textFillImage:void 0},a=Z(e.id,Object.values(t.layouts)),i=tt(A,a);return{...t,layouts:{...t.layouts,[a.layout.id]:i}}}}class Te extends U{constructor(t,e){super(),this.id=t,this.imageFill=e}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A={...e,textFillImage:this.imageFill},a=Z(e.id,Object.values(t.layouts)),i=tt(A,a);return{...t,layouts:{...t.layouts,[a.layout.id]:i}}}}class Xa extends U{constructor(t,e){super(),this.id=t,this.size=e}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A={...e,fontSize:this.size},a=Z(e.id,Object.values(t.layouts)),i=(!e.algorithm||e.algorithm===pt.Autosize?e.text:e.input)??"",s=tt(ie(A,i),a);return{...t,layouts:{...t.layouts,[a.layout.id]:s}}}}class aA extends U{constructor(t,e){super(),this.id=t,this.fontData=e}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A={...e,fontData:this.fontData},a=Z(e.id,Object.values(t.layouts)),i=(!e.algorithm||e.algorithm===pt.Autosize?e.text:e.input)??"",s=tt(ie(A,i),a);return{...t,layouts:{...t.layouts,[a.layout.id]:s}}}}class qa extends U{constructor(t,e){super(),this.id=t,this.align=e}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A={...e,align:this.align},a=Z(e.id,Object.values(t.layouts)),i=tt(A,a);return{...t,layouts:{...t.layouts,[a.layout.id]:i}}}}class Ls extends U{constructor(t,e,A){super(),this.id=t,this.imageData=e,this.offsets=A}apply(t){this.oldState=t;const e=Z(this.id,Object.values(t.layouts)),A=e.elements.findIndex(o=>o.id===this.id),a=e.elements[A].pattern,i=[...e.elements];i.splice(A,1,{...e.elements[A],pattern:{...a,src:this.imageData.src,x:this.offsets.x,y:this.offsets.y,width:this.imageData.width,height:this.imageData.height,scaleX:this.offsets.zoom,scaleY:this.offsets.zoom,svg:this.imageData.svg,colors:this.imageData.colors}});const s={...e,elements:i,modificationID:b()};return{...t,layouts:{...t.layouts,[e.layout.id]:s}}}}class Os extends U{constructor(t,e,A,a,i){super(),this.id=t,this.useThreshold=e,this.invertThreshold=A,this.threshold=a,this.thresholdSaturation=i}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A={...e,useThreshold:this.useThreshold,invertThreshold:this.invertThreshold,threshold:this.threshold,thresholdSaturation:this.thresholdSaturation},a=Z(e.id,Object.values(t.layouts)),i=tt(A,a);return{...t,layouts:{...t.layouts,[a.layout.id]:i}}}}class zs extends U{constructor(t,e){super(),this.id=t,this.src=e}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A={...e,src:this.src},a=Z(e.id,Object.values(t.layouts)),i=tt(A,a);return{...t,layouts:{...t.layouts,[a.layout.id]:i}}}}class Za extends U{constructor(t,e){super(),this.id=t,this.text=e}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A=Z(e.id,Object.values(t.layouts)),a=tt(ie(e,this.text,e),A);return{...t,layouts:{...t.layouts,[A.layout.id]:a}}}}class Je extends U{constructor(t,e,A){super(),this.id=t,this.strokeColor=e,this.strokeThickness=A}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A={...e,strokeColor:this.strokeColor,strokeThickness:this.strokeThickness},a=Z(e.id,Object.values(t.layouts)),i=tt(A,a);return{...t,layouts:{...t.layouts,[a.layout.id]:i}}}}class nA extends U{constructor(t,e,A){super(),this.id=t,this.className=e,this.fill=A}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A=e.colors||{},a=A[this.className];typeof this.fill=="string"?A[this.className]={browserValue:this.fill,spotColor:a==null?void 0:a.spotColor,pmsValue:a==null?void 0:a.pmsValue}:A[this.className]={browserValue:this.fill.browserValue,spotColor:a==null?void 0:a.spotColor,pmsValue:this.fill.pmsValue};const i={...e,colors:A},s=Z(e.id,Object.values(t.layouts)),o=tt(i,s);return{...t,layouts:{...t.layouts,[s.layout.id]:o}}}}class js extends U{constructor(t,e,A){super(),this.id=t,this.svgBody=e,this.objectURL=A}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A={...e,svg:this.svgBody,cachedObjectURL:this.objectURL},a=Z(e.id,Object.values(t.layouts)),i=tt(A,a);return{...t,layouts:{...t.layouts,[a.layout.id]:i}}}}class Vs extends U{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!J(this.id,Object.values(t.layouts)).id)throw new O;const A=Object.values(t.layouts).find(s=>s.elements.find(o=>o.id===this.id));if(!A)throw new Error("Layout missing from state!");const a=A.elements.findIndex(s=>s.id===this.id);A.elements.push(A.elements.splice(a,1)[0]);const i=[...A.elements];return i.forEach((s,o)=>s.layerIndex=o),{...t,layouts:{...t.layouts,[A.layout.id]:{...t.layouts[A.layout.id],elements:i,modificationID:b()}}}}}class Ks extends U{constructor(t){super(),this.id=t}apply(t){this.oldState=t;const e=J(this.id,Object.values(t.layouts));if(!e.id)throw new O;const A=Object.values(t.layouts).find(o=>o.elements.find(r=>r.id===this.id));if(!A)throw new Error("Layout missing from state!");const a=A.elements.findIndex(o=>o.id===this.id);A.elements.splice(a,1),A.elements.unshift(e);const i=[...A.elements],s=i.splice(a,1)[0];return i.splice(a,0,s),i.forEach((o,r)=>o.layerIndex=r),{...t,layouts:{...t.layouts,[A.layout.id]:{...t.layouts[A.layout.id],elements:i,modificationID:b()}}}}}class Ws extends U{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!J(this.id,Object.values(t.layouts)).id)throw new O;const A=Object.values(t.layouts).find(r=>r.elements.find(c=>c.id===this.id));if(!A)throw new Error("Layout missing from state!");const a=A.elements.findIndex(r=>r.id===this.id),i=a+1,s=[...A.elements],o=s.splice(a,1)[0];return s.splice(i,0,o),s.forEach((r,c)=>r.layerIndex=c),{...t,layouts:{...t.layouts,[A.layout.id]:{...t.layouts[A.layout.id],elements:s,modificationID:b()}}}}}class Xs extends U{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!J(this.id,Object.values(t.layouts)).id)throw new O;const A=Object.values(t.layouts).find(r=>r.elements.find(c=>c.id===this.id));if(!A)throw new Error("Layout missing from state!");const a=A.elements.findIndex(r=>r.id===this.id),i=a-1,s=[...A.elements],o=s.splice(a,1)[0];return s.splice(i,0,o),s.forEach((r,c)=>r.layerIndex=c),{...t,layouts:{...t.layouts,[A.layout.id]:{...t.layouts[A.layout.id],elements:s,modificationID:b()}}}}}class _A{constructor(t,e,A){this.processRegion=async a=>{var r,c,l,g;const i=this.layouts.find(d=>d.panelId===a.panelId);if(!i)throw new X(a);let s="";if(this.configuration.type===M.ProductOverlay){let d="";if((r=this.product)!=null&&r.overlayImageUrl&&(d=this.product.overlayImageUrl),s=d,!d)throw new qt(this.configuration,"Couldn't find an asset for product overlay step")}const o=this.evaluateAssetType();if(o===N.Image){const d=this.configuration.type===M.SilentIllustration?(c=this.configuration.data.asset)==null?void 0:c.fileLink:(l=this.product)==null?void 0:l.overlayImageUrl;if(!d)throw new Error("Undefined raster silent step source");const B={stepName:this.configuration.stepName,id:b(),src:d,type:o,y:a.top,x:a.left,width:a.width,height:a.height,layer:a.layer,layerIndex:a.layerIndex,immutable:a.immutable,productOverlay:this.configuration.type===M.ProductOverlay?!0:void 0,rotation:a.rotation,excludeFromExport:this.configuration.data.excludeFromPrint,preserveAspectRatio:"none"};return{regionElement:{id:B.id,region:a},command:new z(B,i)}}else{const d=this.configuration.type===M.SilentIllustration?(g=this.configuration.data.asset)==null?void 0:g.fileLink:s,h=await st(await(async()=>new Promise((u,w)=>{if(!d){w("Undefined vector silent step source");return}_(d,!0).then(E=>{u(E)}).catch(E=>console.error(E))}))()),C={stepName:this.configuration.stepName,id:b(),cachedObjectURL:await $t(h.svg),src:d,svg:h.svg,colors:h.colors,type:o,y:a.top,x:a.left,width:a.width,height:a.height,layer:a.layer,layerIndex:a.layerIndex,rotation:a.rotation,immutable:a.immutable,productOverlay:this.configuration.type===M.ProductOverlay?!0:void 0,excludeFromExport:this.configuration.data.excludeFromPrint};return{regionElement:{id:C.id,region:a},command:new z(C,i)}}},this.configuration=t,this.layouts=e,this.product=A||void 0}async trigger(){if(!this.configuration.data.regions)throw new qt(this.configuration,"Missing regions.");if(this.configuration.type===M.SilentIllustration){const t=this.configuration.data.regions.map(this.processRegion);return Promise.all(t)}else return this.configuration.type===M.ProductOverlay?Promise.all(this.configuration.data.regions.map(t=>{if(!this.layouts.find(A=>t.panelId===A.panelId))throw new X(t);return this.processRegion(t)})):Promise.reject("Unknown silent step. This is a bug")}evaluateAssetType(){var e,A,a;const t=this.configuration.type===M.ProductOverlay&&((e=this.product)!=null&&e.overlayImageUrl)?this.product.overlayImageUrl.toLowerCase():(a=(A=this.configuration.data.asset)==null?void 0:A.fileLink)==null?void 0:a.toLowerCase().split("?")[0];return t!=null&&t.startsWith("data:image/png")||t!=null&&t.endsWith(".jpeg")||t!=null&&t.endsWith(".jpg")||t!=null&&t.endsWith(".png")?N.Image:(t!=null&&t.endsWith(".svg")||t!=null&&t.startsWith("image/svg+xml"),N.Illustration)}}const $a=async n=>{const t=`${dt.getServicesApiUrl()}/shortener`;try{return(await(await ot(t,{method:"POST",body:JSON.stringify({longUrl:n}),headers:{"Content-Type":"application/json"}})).json()).shortUrl}catch(e){throw console.error(e),new Ie("Failed to shorten URL, see console.")}};class _a{async poll(){try{if(await this.predicate()){this.onSuccess(),this.pollingId>-1&&window.clearInterval(this.pollingId);return}}catch{}this.attempts+=1,this.attempts<this.maxAttempts?this.pollingId=window.setTimeout(this.poll.bind(this),this.interval):this.onFailure()}constructor(t,e,A,a=3e3,i=10){this.onSuccess=e,this.onFailure=A,this.predicate=t,this.attempts=0,this.pollingId=-1,this.interval=a,this.maxAttempts=i,this.poll()}}class qs{async init(t,e,A){return A&&await this.reload(t,e,A),null}async reload(t,e,A){const a=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),r=Object.values(A.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName).map(c=>({id:c.id,region:c.stepRegion}));await e.setSelectionsAndElements(t.stepName,[],r,async()=>{var g,d;const c=(g=a==null?void 0:a.storage)==null?void 0:g.videoShortUrl,l=(d=a==null?void 0:a.storage)==null?void 0:d.videoUrl;e.updateStorage(t.stepName,{videoShortUrl:c,videoUrl:l})})}async regenerateQRCode(t,e,A,a){const i=async()=>{var C,u;const B=(await $e([e]))[0],h=(u=(C=B==null?void 0:B.versions)==null?void 0:C.find(w=>w.name==="mpeg4"))==null?void 0:u.link;return{asset:B,link:h}},s=await new Promise((B,h)=>{new _a(async()=>!!(await i()).link,async()=>{const C=await i();if(!C.link||!C.link)throw new vt(C.asset);B({rel:"mpeg4",href:C.link})},()=>{h("Poller timed out with 40 attempts @ 3 second interval")},3e3,40)});t.forEach(B=>A.getCommandDispatcher()(new ut(B.id)));const o=a.data.baseUrl.slice(0,4)==="http"?"":"https://",r=new URL(o+a.data.baseUrl);r.searchParams.append("video",btoa(JSON.stringify([s]))),r.pathname=r.pathname+(r.pathname.slice(-1)==="/"?"":"/");const c=r.toString();if(c.length>=2e3)throw new Ie("Cannot create QR code, URL too long.");const l=await $a(c);if(!a.data||!a.data.regions)throw new qt(a,"Missing regions.");const g=await this.regionElements(a),d=await this.command(l,g,A,a.stepName);return d&&(d.command&&A.getCommandDispatcher()(d.command),d.followup&&await d.followup()),await A.setSelectionsAndElements(a.stepName,[],g,async()=>{A.updateStorage(a.stepName,{videoShortUrl:l,videoUrl:s.href})}),l}async regionElements(t){const e=A=>({id:b(),region:A});return t.data.regions.map(e)}async command(t,e,A,a){const i=A.getLayouts(),o=`data:image/svg+xml;base64,${btoa(await ia.toString(t,{type:"svg"}))}`,r=e.map(c=>{const l=c.region,g=i.find(d=>d.panelId===(l==null?void 0:l.panelId));if(!g&&l)throw new X(l);if(g&&!l)throw new Error("Region not found");if(!g||!l)throw new Error("Neither a region or layout found!");return new z({stepRegion:l,stepName:a,id:c.id,src:o,type:N.Image,y:l.top,x:l.left,width:l.width,height:l.height,rotation:0},g)});return{command:new G(r),followup:async()=>{}}}}const yA=new qs;class Zs{constructor(){this.frameSourceSvg=async(t,e)=>{if(!t)return tA(e);const A=t.asset;if(!A)throw new Bt(t);const a=A.fileLink;if(a)return _(a,!0);throw new vt(A)}}async init(t,e,A){const a=A==null?void 0:A.serializableWorkflow.steps.find(o=>o.stepName===t.stepName);if(a!=null&&a.storage&&Object.keys(a.storage).length!==0||a!=null&&a.selectedVariants&&a.selectedVariants.length!==0)return await this.reload(t,e,A),null;t.mandatory&&e.setMandatoryFulfilled(t.stepName,!1),e.markStepsAsInitialised([t.stepName]);let i;const s=e.getWorkflowExperience().getBundle();if(s&&t.globalPropertyAspectConfigurations){const o=s.getGlobalPropertyStateManager(),r=t.globalPropertyAspectConfigurations[0],c=o.getAspectStorage(r.aspectName);c&&c.originalAssetKey&&(i=(await T.getLocalOrFromServer(c.originalAssetKey)).fileLink)}if(t.option&&t.option.variants&&t.option.variants.length>0){const o=t.option,r=$.getDefaultVariant(o);return r?this.selectVariantCommand(t,r,[],e,void 0,i||t.data.placeholderImageUrl):null}return this.selectVariantCommand(t,void 0,[],e,void 0,i||t.data.placeholderImageUrl)}async reload(t,e,A){var c;const a=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),r=Object.values(A.layouts).map(l=>l.elements).flat().filter(l=>l.stepName===t.stepName).map(l=>({id:l.id,region:l.stepRegion}));if(!t.option||(t.option.variants||[]).length===0){const l=t.data.regions.map(g=>tA(g));e.updateStorage(t.stepName,{currentFrameSources:l})}if(a){const l=async()=>{var h,C,u,w,E;const g=(h=a.storage)==null?void 0:h.colors,d=(C=a.storage)==null?void 0:C.framePatternSrc,B=(u=a.storage)==null?void 0:u.frameOffsetsList;if(e.updateMetadata(t.stepName,{frameOffsetsList:B,framePatternSrc:d}),d){const m=(w=e.getWorkflowExperience().getStepById(t.stepName))==null?void 0:w.frameService;if(!m)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(d,m,!0,g),e.updateMetadata(t.stepName,{image:d}),e.updateStorage(t.stepName,{framePatternSrc:d}),this.validateColorCount(t,e)}if(B!=null&&B.some(m=>m.zoom)){const m=(E=e.getWorkflowExperience().getStepById(t.stepName))==null?void 0:E.frameService;if(!m)throw new Error("Frame service unavailable, cannot load pattern!");m.updateOffsets(B)}e.setMandatoryFulfilled(t.stepName,!0)};if(a.selectedVariants&&a.selectedVariants.length>0){const g=a.selectedVariants[0].id;if(t.option&&g){const d=(c=t.option.variants)==null?void 0:c.find(B=>B.id===g);d&&await e.setSelectionsAndElements(t.stepName,[d],r,async()=>{const B=await Promise.all(t.data.regions.map(h=>this.frameSourceSvg(d,h)));e.updateStorage(t.stepName,{currentFrameSources:B}),await l()})}}else await e.setSelectionsAndElements(t.stepName,[],r,l)}}async availableColors(t,e){var a;const A=t.data.colorOption;return((a=A==null?void 0:A.variants)==null?void 0:a.map(i=>({fill:i.color,stroke:i.color,variant:i,pmsValue:i.name})))??[]}selectImage(t,e,A,a=!0){var r;const i=this.patternSource(e),s=(r=A.getStepStorage(t.stepName))==null?void 0:r.framePatternSrc;if(s&&s===i)return Promise.resolve();A.setEditedStatus(t.stepName,!0);const o=e.fileLink||"";return o.endsWith(".pdf")||o.endsWith(".eps")||o.endsWith(".ai")?new Promise(c=>{A.addPoller(new _a(async()=>{var B;const g=(B=(await T.getFromServer(e.key||"")).versions)==null?void 0:B.find(h=>h.name==="svg");return g?(await ot(g.link)).status===200:!1},()=>{T.getLocalOrFromServer(e.key||"").then(l=>{this.loadPatternFromAsset(l,t,A,a).then(c)})},()=>{throw new Ie("Failed to resolve transcoded PDF")}))}):this.loadPatternFromAsset(e,t,A,a)}async selectVariant(t,e,A,a,i){const s=await this.selectVariantCommand(t,e,A,a,i);s&&(s.command&&a.getCommandDispatcher()(s.command),s.followup&&await s.followup())}getCreateElementCommand(t,e,A,a){return new z({id:t,type:N.Frame,x:e.left,y:e.top,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,rotation:e.rotation,scaleX:e.width/a.frameData.width,scaleY:e.height/a.frameData.height,path:a.frameData.path,dataWidth:a.frameData.width,dataHeight:a.frameData.height,stepRegion:e,stepName:a.stepName,disablePlaceholder:a.disablePlaceholder,pattern:a.pattern,immutable:e.immutable},A)}async loadPatternFromString(t,e,A=!0,a=void 0,i){if(t.endsWith("svg")){const s=await Va(t),o=s.width,r=s.height,c=await _(t);if(i){const d=c.match(/<(image|linearGradient|radialGradient)(\s|>|\/>)/gim);if(d&&d.length>0)throw new Error("Vector files may not include images or gradients when a color limit is specified.")}const l=await st(c),g={src:t,width:o,height:r,aspect:o/r,svg:l.svg,colors:a??l.colors};ct.set(t,g),e.setPatternData(g,A)}else{const s=await De(t,!0),o=await ae(s),r={src:t,width:o.width,height:o.height,aspect:o.width/o.height,svg:void 0,colors:void 0};ct.set(t,r),e.setPatternData(r,A)}}changeColors(t,e,A){var s,o;const a=(s=e.getWorkflowExperience().getStepById(t.stepName))==null?void 0:s.frameService;if(!a||!((o=a.getImageData())!=null&&o.svg)){console.warn("changeColors was called without an SVG being assigned to a frame step");return}const i=this.calculateColorMetadata(a,t,A);e.updateMetadata(t.stepName,{colors:i.metadataColors}),e.updateStorage(t.stepName,{colors:i.storageColors}),a.setPatternData({...a.getImageData(),colors:i.newColors},!1),this.validateColorCount(t,e)}getUniqueColorCount(t,e){var s,o;const A=(s=e.getWorkflowExperience().getStepById(t.stepName))==null?void 0:s.frameService;if(!A)return 0;const a=((o=A.getImageData())==null?void 0:o.colors)??{},i=[];for(const r in a){const c=a[r];if(c.pmsValue){const l=c.pmsValue.trim().toLocaleLowerCase();i.includes(l)||i.push(l)}else if(c.browserValue){const l=ya(c.browserValue);i.includes(l)||i.push(l)}}return i.length}calculateColorMetadata(t,e,A){var r,c;if(!((r=t.getImageData())!=null&&r.svg))return{newColors:void 0,metadataColors:void 0,storageColors:void 0};const a={...t.getImageData().colors??{}},i={};Object.entries(a).forEach(([l,g])=>{const d={browserValue:g.browserValue};i[l]=d});for(const[l,g]of A.entries())a[l]={browserValue:g.browserValue,pmsValue:g.pmsValue},i[l]=g;let s=Array.from(Object.values(a)).map(l=>l.browserValue);const o=e.data.colorOption;return o&&((c=o.variants)==null||c.forEach(l=>{s=s.map(g=>{var d;return g.toLowerCase()===((d=l.color)==null?void 0:d.toLowerCase())?l.name:g})})),{newColors:a,metadataColors:s,storageColors:i}}validateColorCount(t,e){const A=t.data.colorPickerEnabled?t.data.maxColors??0:0;e.setStepError(t.stepName,"colors",A>0&&this.getUniqueColorCount(t,e)>A?"workflow.steps.frame.tooManyColors":void 0)}async selectVariantCommand(t,e,A,a,i,s){var B;const o=(B=a.getWorkflowExperience().getStepById(t.stepName))==null?void 0:B.frameService;if(!o)throw new Error("Frame service unavailable, cannot load pattern!");const r=await Promise.all(t.data.regions.map(h=>this.frameSourceSvg(e,h)));i&&i(!0);const c=t.data.initialZoomLevel,l=await Promise.all(t.data.regions.map(async(h,C)=>{const u=await oe(r[C]),w=o.getImageData(),E=A.map(F=>new ut(F.id)),m=w?pA(w,u,c&&!t.data.forceImageCover?{scale:c}:void 0,t.data.forceImageCover):void 0,f=w?{id:b(),src:w.src,x:(m==null?void 0:m.x)||0,y:(m==null?void 0:m.y)||0,width:w.width,height:w.height,scaleX:(m==null?void 0:m.zoom)||1,scaleY:(m==null?void 0:m.zoom)||1,rotation:0}:void 0,p=b(),D=a.getLayouts().find(F=>F.panelId===h.panelId);if(!D)throw new X(h);return{command:this.getCreateElementCommand(p,h,D,{frameData:u,pattern:f,disablePlaceholder:t.data.disablePlaceholder,stepName:t.stepName}),regionEl:{id:p,region:h},removeExistingCommands:E}})),g=l.map(h=>h.command),d=l.map(h=>h.removeExistingCommands).flat();return{command:new G([...g,...d]),followup:async()=>{i&&i(!1),await a.setSelectionsAndElements(t.stepName,e?[e]:[],[...l.map(h=>h.regionEl)],async()=>{var h;if(a.updateStorage(t.stepName,{currentFrameSources:r}),s){const C=(h=a.getWorkflowExperience().getStepById(t.stepName))==null?void 0:h.frameService;if(!C)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(s,C,!0)}})}}}patternSource(t){var a;const e=(a=t.versions)==null?void 0:a.find(i=>i.name==="svg");if(e!=null&&e.link)return e.link;const A=t.fileLink;if(A)return A;throw new vt(t)}async loadPatternFromAsset(t,e,A,a){var c,l;const i=this.patternSource(t),s=A.markUpdatePending(),o=(c=A.getWorkflowExperience().getStepById(e.stepName))==null?void 0:c.frameService;if(!o)throw A.markUpdateCompleted(s),new Error("Frame service unavailable, cannot load pattern!");try{await this.loadPatternFromString(i,o,a,void 0,e.data.colorPickerEnabled&&!!e.data.maxColors&&e.data.maxColors>0)}catch(g){throw A.markUpdateCompleted(s),g}const r=this.calculateColorMetadata(o,e,new Map(Object.entries(((l=o.getImageData())==null?void 0:l.colors)??{})));A.updateMetadata(e.stepName,{image:i,colors:r.metadataColors}),A.updateStorage(e.stepName,{framePatternSrc:i,colors:r.storageColors}),A.markUpdateCompleted(s),A.setMandatoryFulfilled(e.stepName,!0),A.setInformationResults(A.getInformationResults().filter(g=>g.stepID===e.stepName)),this.validateColorCount(e,A)}}const rt=new Zs;class $s{async getIllustrationBody(t){return new Promise(e=>{_(t,!0).then(A=>{e(A)}).catch(A=>console.error(A))})}getCreateElementCommand(t,e,A,a){return new z({stepRegion:e,stepName:a.stepName,colors:a.svg.colors,id:t,src:a.src,svg:a.svg.svg,cachedObjectURL:a.objectURL,type:N.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable},A)}getColors(t,e){const A=e.getRegionElements(t.stepName)||[];if(A.length===0)return[];try{return J(A[0].id,e.getAllLayoutData()).colors}catch{return[]}}async init(t,e,A){const a=t.option;if(!a)return null;if(A)return this.reload(t,e,A);{const i=$.getDefaultVariant(a);if(i)return await this.selectVariantCommand(t,i,[],()=>{},e)}return null}async reload(t,e,A){var c;const a=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),o=Object.values(A.layouts).map(l=>l.elements).flat().filter(l=>l.stepName===t.stepName),r=t.option;if(a!=null&&a.selectedVariants){const l=a.selectedVariants[0].id;if(r&&l){const g=(c=r.variants)==null?void 0:c.find(d=>d.id===l);if(g){const d=o.map(B=>({id:B.id,region:B.stepRegion}));await e.setSelectionsAndElements(t.stepName,[g],d,async()=>{var B;e.updateMetadata(t.stepName,{colors:(B=a.storage)==null?void 0:B.colors}),e.setMandatoryFulfilled(t.stepName,!0)})}}else throw new Error("Required illustration variant no longer available")}return null}async availableColors(t,e){var a;const A=t.data.colorOption;return A?A?(a=A.variants)==null?void 0:a.map(i=>({fill:i.color,stroke:i.color,variant:i,pmsValue:i.name})):[]:[]}async changeColorsCommand(t,e,A,a,i){const s={};for(const[l,g]of i.entries())typeof g=="string"?s[l]={browserValue:g,spotColor:void 0,pmsValue:void 0}:s[l]={browserValue:g.browserValue,spotColor:g.spotColor,pmsValue:g.pmsValue};const o=CA(t,e,A,s),r=await $t(o),c=[];for(const l of a){for(const[g,d]of i.entries())c.push(new nA(l,g,d));c.push(new js(l,o,r))}return new G(c)}async changeColors(t,e,A,a,i){var B,h;if(e.length===0)return;const s=J(e[0].id,a().map(C=>C.layoutState)),o={...s.colors},r={};Object.entries(o).forEach(([C,u])=>{const w={browserValue:u.browserValue,pmsValue:u.pmsValue},E=u.spotColor;E&&(w.spotColor={profileName:E.profileName,namedColor:E.namedColor}),r[C]=w});for(const[C,u]of i.entries()){const w=typeof u=="string"?u:u.browserValue,E=typeof u=="string"?void 0:u.pmsValue;o[C]={browserValue:w,spotColor:(B=o[C])==null?void 0:B.spotColor,pmsValue:E},r[C]={browserValue:w}}let c=Array.from(Object.values(o)).map(C=>C.browserValue);const l=t.data.colorOption;l&&((h=l.variants)==null||h.forEach(C=>{c=c.map(u=>{var w;return u.toLowerCase()===((w=C.color)==null?void 0:w.toLowerCase())?C.name:u})})),A.updateMetadata(t.stepName,{colors:c});const g=new Map;if(Object.entries(o).forEach(([C,u])=>{g.set(C,u)}),!s.svg)throw new Error("Colors changed before SVG loaded. This should never happen!");const d=await this.changeColorsCommand(s.svg,s.width,s.height,e.map(C=>C.id),g);A.updateStorage(t.stepName,{colors:r}),A.getCommandDispatcher()(d)}async selectVariant(t,e,A,a,i){const s=await this.selectVariantCommand(t,e,A,a,i);s&&(s.command&&i.getCommandDispatcher()(s.command),s.followup&&await s.followup())}async selectVariantCommand(t,e,A,a,i){var w;if(!t.data||!t.data.regions)throw new qt(t,"Missing regions.");a(!0);const s=A.map(E=>new ut(E.id));t.mandatory&&i.setMandatoryFulfilled(t.stepName,!1);const o=e.asset;if(!o)throw new Bt(e);const r=o.fileLink;if(!r)throw new vt(o);const c=await st(await this.getIllustrationBody(r)),l=await $t(c.svg),g=E=>{const m=i.getLayouts().find(p=>p.panelId===E.panelId);if(!m)throw new X(E);const f=b();return{regionElement:{id:f,region:E},command:this.getCreateElementCommand(f,E,m,{stepName:t.stepName,src:r,objectURL:l,svg:c})}},d=t.data.regions.map(g),h=[...d.map(E=>E.command),...s];let C=Array.from(Object.values(c.colors)).map(E=>E.browserValue);const u=t.data.colorOption;return u&&((w=u.variants)==null||w.forEach(E=>{C=C.map(m=>{var f;return m.toLowerCase()===((f=E.color)==null?void 0:f.toLowerCase())?E.name:m})})),i.updateMetadata(t.stepName,{colors:C}),{command:new G(h),followup:async()=>{await i.setSelectionsAndElements(t.stepName,[e],d.map(f=>f.regionElement),async()=>{i.setMandatoryFulfilled(t.stepName,!0),a(!1)});const E=await this.availableColors(t,i)||[],m=Object.keys(c.colors);if(t.data.colorPickerEnabled&&E.length===1&&m.length===1){const f=E[0],p=m[0];await this.changeColors(t,d.map(I=>I.regionElement),i,()=>i.getCommandContext().getAllLayouts(),new Map([[p,f.variant.color]]))}else t.data.colorPickerEnabled&&await this.changeColors(t,d.map(f=>f.regionElement),i,()=>i.getCommandContext().getAllLayouts(),new Map)}}}}const jt=new $s;class _s{async init(t,e,A){const a=t.option;if(!a)throw new Xt(t);if(A)await this.reload(t,e,A);else{const i=$.getDefaultVariant(a);if(i)return await this.selectVariantLambda(t,i,e,()=>{})}return null}async reload(t,e,A){var c;const a=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),o=Object.values(A.layouts).map(l=>l.elements).flat().filter(l=>l.stepName===t.stepName),r=t.option;if(!r)throw new Xt(t);if(a!=null&&a.selectedVariants){const l=a.selectedVariants[0].id;if(l){const g=(c=r.variants)==null?void 0:c.find(d=>d.id===l);if(g){const d=g.material,B=o.map(h=>({id:h.id,region:h.stepRegion}));await e.setSelectionsAndElements(t.stepName,[g],B,async()=>{const h=e.getModelContainer();if(h){const C=t.data.targetMaterials.map(u=>h.applyMaterialVariant(u,r.id||"",d||{}));Promise.all(C).then(()=>e.setMandatoryFulfilled(t.stepName,!0))}})}}}}async selectVariant(t,e,A,a){const i=await this.selectVariantLambda(t,e,A,a);i&&(i.command&&A.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantLambda(t,e,A,a){const i=A.getModelContainer();a(!0);const s=e.material;if(!s)throw a(!1),new Bt(e);return{command:void 0,followup:async()=>{await A.setSelectionsAndElements(t.stepName,[e],[],async()=>{try{i&&t.data.targetMaterials.forEach(o=>{t.option&&i.applyMaterialVariant(o,t.option.id||"",s)}),A.setMandatoryFulfilled(t.stepName,!0)}finally{a(!1)}})}}}}const FA=new _s;class to{async init(t,e,A){const a=t.option;if(!a)throw new Xt(t);if(A)await this.reload(t,e,A);else{const i=$.getDefaultVariant(a);if(i)return await this.selectVariantLambda(t,i,e,()=>{})}return null}async reload(t,e,A){var c;const a=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),o=Object.values(A.layouts).map(l=>l.elements).flat().filter(l=>l.stepName===t.stepName),r=t.option;if(a!=null&&a.selectedVariants){const l=a.selectedVariants[0].id;if(r&&l){const g=(c=r.variants)==null?void 0:c.find(d=>d.id===l);if(g){const d=o.map(B=>({id:B.id,region:B.stepRegion}));await e.setSelectionsAndElements(t.stepName,[g],d,async()=>{var h;const B=e.getModelContainer();if(B&&t.option){const C=(h=g.asset)==null?void 0:h.fileLink;if(!C)throw new Bt(g);await B.applyModelVariant(t.stepName||"",{model:C,contextService:e.getLayoutPreviewService()},t.data.replaceProductModel||!1),e.setMandatoryFulfilled(t.stepName,!0)}})}}}}async selectVariant(t,e,A,a){const i=await this.selectVariantLambda(t,e,A,a);i&&(i.command&&A.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantLambda(t,e,A,a){var s;a(!0);const i=(s=e.asset)==null?void 0:s.fileLink;if(!i)throw new Bt(e);return{command:void 0,followup:async()=>{await A.setSelectionsAndElements(t.stepName,[e],[],async()=>{try{const o=A.getModelContainer();o&&await o.applyModelVariant(t.stepName,{model:i,contextService:A.getLayoutPreviewService()},t.data.replaceProductModel||!1),A.setMandatoryFulfilled(t.stepName,!0)}finally{a(!1)}})}}}}const MA=new to;class eo{async init(t,e,A){if(A)await this.reload(t,e,A);else return e.updateMetadata(t.stepName,{text:""}),this.changeTextCommand(t,"",e,"",()=>{});return null}async reload(t,e,A){const a=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),r=Object.values(A.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName).map(c=>({id:c.id,region:c.stepRegion}));await e.setSelectionsAndElements(t.stepName,[],r,async()=>{var c,l;e.updateStorage(t.stepName,{text:(c=a==null?void 0:a.storage)==null?void 0:c.text}),e.setMandatoryFulfilled(t.stepName,((l=a==null?void 0:a.storage)==null?void 0:l.text)!=="")})}async changeText(t,e,A,a,i){const s=await this.changeTextCommand(t,e,A,a,i);s&&(s.command&&A.getCommandDispatcher()(s.command),s.followup&&await s.followup())}async changeTextCommand(t,e,A,a,i){var l;const s=A.getRegionElements(t.stepName),o=(l=A.getStepSpecificServices(t.stepName))==null?void 0:l.module;if(!o)return console.error("Missing module."),null;const r=A.getProfanities();if(!this.validateInput(t,e,r,i))return A.setMandatoryFulfilled(t.stepName,!1),console.error(a),null;if(A.setMandatoryFulfilled(t.stepName,e!==""),!t.data||!t.data.regions||t.data.regions.length<=0)return console.error("Missing configuration."),null;A.updateStorage(t.stepName,{text:e}),A.updateMetadata(t.stepName,{text:e});const c=(g,d,B)=>{const h=B||b(),u=A.getLayouts().find(E=>E.panelId===d.panelId);if(!u)return console.error(`Can not find layout for region: ${d.panelId}`),null;const w=[];return B&&w.push(new ut(h)),w.push(new z({stepRegion:d,stepName:t.stepName,colors:{},id:h,svg:g,type:N.Illustration,y:d.top,x:d.left,rotation:d.rotation,width:d.width,height:d.height,layer:d.layer,layerIndex:d.layerIndex,immutable:d.immutable},u)),{id:h,region:d,command:new G(w)}};if(s.length>0){const d=s.map(B=>{if(!B.region)return null;const h=o.svgPrint(e,B.region);return c(h,B.region,B.id)}).filter(B=>!!B).filter(B=>!!B).map(B=>B&&B.command);return{command:new G(d),followup:async()=>{}}}else{const g=t.data.regions.map(B=>c(o.svgPrint(e,B),B)),d=g.filter(B=>!!B).map(B=>B&&B.command);return{command:new G(d),followup:async()=>{const B=g.filter(h=>h).map(h=>h&&{id:h.id,region:h.region});await A.setSelectionsAndElements(t.stepName,[],B)}}}}validateInput(t,e,A,a){if(t.data&&t.data.maxLength){const s=t.data.maxLength;if(e.length>s)return a("Too many characters."),!1}if(!/^$|^[a-zA-Z0-9 ]+$/.test(e))return a("Unsupported characters."),!1;const i=Ve.split(e.toLowerCase());for(const s of i)for(const o in A){const r=A[o].toLowerCase().replace(/\s/g,"");if(s===r)return a("Blocked profanity."),!1}return a(""),!0}}const SA=new eo;class Ao{async init(t,e,A){const a=t.option;if(!a)return null;if(A)await this.reload(t,e,A);else if(a.defaultVariant)return e.markStepsAsInitialised([t.stepName]),this.selectVariantCommand(t,a.defaultVariant,e,()=>{});return e.markStepsAsInitialised([t.stepName]),null}async reload(t,e,A){var c;const a=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),o=Object.values(A.layouts).map(l=>l.elements).flat().filter(l=>l.stepName===t.stepName),r=t.option;if(a!=null&&a.selectedVariants){const l=a.selectedVariants[0].id;if(r&&l){const g=(c=r.variants)==null?void 0:c.find(d=>d.id===l);if(g){const d=o.map(B=>({id:B.id,region:B.stepRegion}));await e.setSelectionsAndElements(t.stepName,[g],d,async()=>{e.setMandatoryFulfilled(t.stepName,!0)})}}}}async selectVariant(t,e,A,a){const i=await this.selectVariantCommand(t,e,A,a);i&&(i.command&&A.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantCommand(t,e,A,a){const i=e.asset;if(!i)throw new Bt(e);const s=i==null?void 0:i.fileLink;if(!s)return console.error("No URL for picture!"),null;a(!0),t.mandatory&&A.setMandatoryFulfilled(t.stepName,!1);const r=A.getRegionElements(t.stepName).map(g=>new ut(g.id)),c=g=>{const B=A.getLayouts().find(C=>C.panelId===g.panelId);if(!B)throw new X(g);const h=b();return{regionElement:{id:h,region:g},command:new z({stepName:t.stepName,stepRegion:g,id:h,src:s,type:N.Image,y:g.top,x:g.left,rotation:g.rotation,width:g.width,height:g.height,layer:g.layer,layerIndex:g.layerIndex,immutable:g.immutable,preserveAspectRatio:"none"},B)}},l=t.data.regions.map(c);return{command:new G([...r,...l.map(g=>g.command)]),followup:async()=>{await A.setSelectionsAndElements(t.stepName,[e],l.map(g=>g.regionElement),async()=>{A.setMandatoryFulfilled(t.stepName,!0),a(!1)})}}}}const xA=new Ao;class ao{async init(t,e,A){const a=t.option;if(!a)return null;if(A)await this.reload(t,e,A);else{const i=a.variants;if($.getDefaultVariant(a)){const o=i==null?void 0:i.find(r=>{var c;return r.id===((c=a.defaultVariant)==null?void 0:c.id)});return this.selectVariantLambda(t,(o==null?void 0:o.id)||"",e)}}return null}async reload(t,e,A){var s;const a=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),i=t.option;if(a!=null&&a.selectedVariants){const o=a.selectedVariants[0].id;if(i&&o){const r=(s=i.variants)==null?void 0:s.find(c=>c.id===o);r&&await e.setSelectionsAndElements(t.stepName,[r],[])}}}async selectVariant(t,e,A){await A.getInitializationPromise();const a=await this.selectVariantLambda(t,e,A);a&&(a.command&&A.getCommandDispatcher()(a.command),a.followup&&await a.followup())}async selectVariantLambda(t,e,A){const a=t.option;if(!a)return null;const i=a.variants;if(!i)return null;const s=i.length>1?i.find(o=>o.id===e):i[0];if(!s)throw new Error(`Failed to find selected variant ${e} in option ${a.id} of step ${t.stepName} (${t.stepTitle})`);return{command:void 0,followup:async()=>{await A.setSelectionsAndElements(t.stepName,[s],[],async()=>{A.setMandatoryFulfilled(t.stepName,!0)})}}}}const YA=new ao;class no{constructor(){this.shapeFillId="spiff-fill-shape"}async availableColours(t){var A;const e=t.option;return e?((A=e.variants)==null?void 0:A.map(a=>({fill:a.color,stroke:a.color,variant:a})))||[]:[]}setCustomColor(t,e,A){const a=A.getLayouts(),s=(A.getRegionElements(e.stepName)||[]).map(o=>{const r=o.region;if(!a.find(l=>l.panelId===(r==null?void 0:r.panelId)))throw new X(r);return new nA(o.id,this.shapeFillId,t)}).filter(o=>!!o);A.getCommandDispatcher()(new G(s)),A.updateStorage(e.stepName,{colour:t})}async init(t,e,A){const a=t.option;if(!a)throw new Xt(t);if(A)await this.reload(t,e,A);else{const i=$.getDefaultVariant(a);return i?this.selectVariantCommand(t,{fill:i.color,stroke:i.color,variant:i},[],e):null}return null}async selectVariant(t,e,A,a){const i=await this.selectVariantCommand(t,e,A,a);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async reload(t,e,A){var c;const a=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),o=Object.values(A.layouts).map(l=>l.elements).flat().filter(l=>l.stepName===t.stepName),r=t.option;if(a!=null&&a.selectedVariants){const l=a.selectedVariants[0].id;if(r&&l){const g=(c=r.variants)==null?void 0:c.find(d=>d.id===l);if(g){const d=o.map(B=>({id:B.id,region:B.stepRegion}));await e.setSelectionsAndElements(t.stepName,[g],d,async()=>{var B;e.updateStorage(t.stepName,{colour:((B=a==null?void 0:a.storage)==null?void 0:B.colour)||""}),e.setMandatoryFulfilled(t.stepName,!0)})}}}}async selectVariantCommand(t,e,A,a){var r;const i=a.getLayouts(),s=(r=a.getStepStorage(t.stepName))==null?void 0:r.colour,o=()=>{var c,l;if(((c=e.variant)==null?void 0:c.color)==="#custom")return s||"#FFFFFF";if((l=e.variant)!=null&&l.color)return e.variant.color;throw new Error("Failed to resolve color for shape step.")};if(A.length>0){const c=g=>{const d=g.region;if(!i.find(C=>C.panelId===(d==null?void 0:d.panelId)))throw new X(d);const h=o();return new nA(g.id,this.shapeFillId,h)},l=A.map(c).filter(g=>!!g);return{command:new G(l),followup:async()=>{await a.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],A),a.updateStorage(t.stepName,{colour:o()})}}}else{const c=B=>{const h=i.find(m=>m.panelId===B.panelId);if(!h)throw new X(B);const C=o(),u=`
1350
+ `,n={};n["spiff-fill-shape"]={browserValue:e.color};const i=e.region||await Vt(t,T.Illustration),s=Q();return{stepRegion:e.region,colors:n,id:s,svg:a,type:T.Illustration,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||$t(t,i.layer||0),immutable:i.immutable}}static async getIllustration(t,e){const a=e.region||await Vt(t,T.Illustration,e.src),n=await st(await zn(e.src)),i=await Zt(n.svg),s=Q();return{cachedObjectURL:i,stepRegion:e.region,colors:n.colors,id:s,src:e.src,svg:n.svg,type:T.Illustration,y:a.top,x:a.left,rotation:a.rotation,width:a.width,height:a.height,layer:a.layer||0,layerIndex:a.layerIndex||$t(t,a.layer||0),immutable:a.immutable}}}class V extends Error{constructor(){super("Element not found!"),Object.setPrototypeOf(this,V.prototype)}}const L=(r,t)=>K(r,t).elements.find(n=>n.id===r),K=(r,t)=>{const e=Object.values(t).find(a=>a.elements.some(n=>n.id===r));if(!e)throw new V;return e},Z=(r,t)=>{const e=[...t.elements.filter(n=>n.id!==r.id),r],a=wa(e);return{layout:t.layout,elements:a,modificationID:Q()}},aa=async r=>{var a;const t=[...Object.keys(r.layouts)],e=[...new Set(t)];for(let n=0;n<e.length;n++){const i=e[n],s=r.layouts[i];await Promise.all(s.elements.map(async o=>{var l,c,d;if(o.type==="illustration"){const A=o;if(A.src&&!A.svg){const u=await et(A.src),h=await st(u);A.svg=ga(h.svg,A.width,A.height,A.colors)}}else if(o.type==="frame"){const A=o;if((l=A.pattern)!=null&&l.colors&&((c=A.pattern)!=null&&c.src)){const u=await et((d=A.pattern)==null?void 0:d.src),h=await st(u);A.pattern.svg=h.svg}}isNaN(o.x)&&(o.x=0),isNaN(o.y)&&(o.y=0),isNaN(o.width)&&(o.width=0),isNaN(o.height)&&(o.height=0),isNaN(o.rotation)&&(o.rotation=0)}))}for(const n in r.layouts){const i=r.layouts[n].elements.filter(o=>o.type===T.Illustration);for(let o=0;o<i.length;++o){const l=i[o];if(l.src&&l.svg)try{l.cachedObjectURL=await Zt(l.svg)}catch(c){console.log(c)}}const s=r.layouts[n].elements.filter(o=>o.type===T.Textbox);for(let o=0;o<s.length;++o){const l=s[o];(a=l.fontData)!=null&&a.assetUrl&&await vt(l.fontData.assetUrl)}}};class R{undo(){if(!this.oldState)throw new Error("Cannot undo.");return this.oldState}overrideOldState(t){this.oldState=t}}class qa extends R{constructor(t){super(),this.serializableWorkflow=t}apply(t){return this.oldState=t,{...t,serializableWorkflow:this.serializableWorkflow}}}class ks extends R{constructor(t,e,a){super(),this.id=t,this.x=e,this.y=a}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,x:this.x,y:this.y},n=K(e.id,Object.values(t.layouts)),i=Z(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class Ms extends R{constructor(t,e){super(),this.id=t,this.angle=e}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,rotation:this.angle},n=K(e.id,Object.values(t.layouts)),i=Z(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class Ts extends R{constructor(t,e,a){super(),this.id=t,this.width=Math.abs(e),this.height=Math.abs(a)}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;let a={...e,width:this.width,height:this.height};if(e.type==="frame"){const s=a;s.scaleX=s.scaleX*this.width/e.width,s.scaleY=s.scaleY*this.height/e.height}else if(e.type==="textbox"){const s=a,o=(!s.algorithm||s.algorithm===Et.Autosize?s.text:s.input)??"";a=ie(s,o,e)}const n=K(e.id,Object.values(t.layouts)),i=Z(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class O extends R{constructor(t){super(),this.commands=t}apply(t){return this.oldState=t,this.commands.reduce((e,a)=>a.apply(e),t)}}class Ea extends R{constructor(t){super(),this.layout=t}apply(t){return this.oldState=t,{...t,layouts:{...t.layouts,[this.layout.id]:{elements:[],layout:{...this.layout},modificationID:Q()}}}}}class G extends R{constructor(t,e){super(),this.element=t,this.layout=e}apply(t){this.oldState=t,t.layouts[this.layout.id]||(t.layouts[this.layout.id]={layout:this.layout,elements:[],modificationID:""});const e=t.layouts[this.layout.id].elements;if(e.find(o=>o.id===this.element.id))throw new Error(`Failed to apply new ${this.element.type} element because ID ${this.element.id} already taken`);if(this.element.productOverlay||e.length===0){const o=[...e,this.element];return this.element.layerIndex===void 0&&(this.element.layerIndex=this.assignIndex(this.element,o)),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:o,modificationID:Q()}}}}const n=e[e.length-1],i=n.productOverlay?n:null;i&&e.pop();let s;if(this.element.layerIndex!==null&&this.element.layerIndex!==void 0)s=[...e,this.element].sort((o,l)=>o.layerIndex!==void 0&&l.layerIndex!==void 0?o.layerIndex-l.layerIndex:0);else{const o=this.assignIndex(this.element,e);this.element.layerIndex=o!==void 0?o:0,s=[...e,this.element]}return i&&s.push(i),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:s,modificationID:Q()}}}}assignIndex(t,e){var n;if(e.length===0)return 0;const a=(n=e.filter(i=>(i.layer||0)===(t.layer||0)).sort((i,s)=>(i.layerIndex||0)-(s.layerIndex||0))[e.length-1])==null?void 0:n.layerIndex;return a!==void 0?a+1:0}}class ft extends R{constructor(t){super(),this.id=t}apply(t){this.oldState=t;let e=!1;const a=Object.values(t.layouts).map(i=>(i.elements.filter(o=>o.id!==this.id).length!==i.elements.length&&(e=!0),{...i,elements:i.elements.filter(o=>o.id!==this.id),modificationID:Q()}));e||console.log(`Failed to delete element ${this.id}`);const n={};return a.forEach(i=>{n[i.layout.id]=i}),{...t,layouts:n}}}class Gn extends R{constructor(t,e,a){super(),this.id=t,this.color=e,this.textFillSpotColor=a}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,fill:this.color,fillSpotColorDefinition:this.textFillSpotColor,textFillImage:void 0},n=K(e.id,Object.values(t.layouts)),i=Z(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class $e extends R{constructor(t,e){super(),this.id=t,this.imageFill=e}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,textFillImage:this.imageFill},n=K(e.id,Object.values(t.layouts)),i=Z(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class jn extends R{constructor(t,e){super(),this.id=t,this.size=e}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,fontSize:this.size},n=K(e.id,Object.values(t.layouts)),i=(!e.algorithm||e.algorithm===Et.Autosize?e.text:e.input)??"",s=Z(ie(a,i),n);return{...t,layouts:{...t.layouts,[n.layout.id]:s}}}}class na extends R{constructor(t,e){super(),this.id=t,this.fontData=e}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,fontData:this.fontData},n=K(e.id,Object.values(t.layouts)),i=(!e.algorithm||e.algorithm===Et.Autosize?e.text:e.input)??"",s=Z(ie(a,i),n);return{...t,layouts:{...t.layouts,[n.layout.id]:s}}}}class Wn extends R{constructor(t,e){super(),this.id=t,this.align=e}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,align:this.align},n=K(e.id,Object.values(t.layouts)),i=Z(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class Qs extends R{constructor(t,e,a){super(),this.id=t,this.imageData=e,this.offsets=a}apply(t){this.oldState=t;const e=K(this.id,Object.values(t.layouts)),a=e.elements.findIndex(o=>o.id===this.id),n=e.elements[a].pattern,i=[...e.elements];i.splice(a,1,{...e.elements[a],pattern:{...n,src:this.imageData.src,x:this.offsets.x,y:this.offsets.y,width:this.imageData.width,height:this.imageData.height,scaleX:this.offsets.zoom,scaleY:this.offsets.zoom,svg:this.imageData.svg,colors:this.imageData.colors}});const s={...e,elements:i,modificationID:Q()};return{...t,layouts:{...t.layouts,[e.layout.id]:s}}}}class Ns extends R{constructor(t,e,a,n,i){super(),this.id=t,this.useThreshold=e,this.invertThreshold=a,this.threshold=n,this.thresholdSaturation=i}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,useThreshold:this.useThreshold,invertThreshold:this.invertThreshold,threshold:this.threshold,thresholdSaturation:this.thresholdSaturation},n=K(e.id,Object.values(t.layouts)),i=Z(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class Rs extends R{constructor(t,e){super(),this.id=t,this.src=e}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,src:this.src},n=K(e.id,Object.values(t.layouts)),i=Z(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class qn extends R{constructor(t,e){super(),this.id=t,this.text=e}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a=K(e.id,Object.values(t.layouts)),n=Z(ie(e,this.text,e),a);return{...t,layouts:{...t.layouts,[a.layout.id]:n}}}}class Ve extends R{constructor(t,e,a){super(),this.id=t,this.strokeColor=e,this.strokeThickness=a}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,strokeColor:this.strokeColor,strokeThickness:this.strokeThickness},n=K(e.id,Object.values(t.layouts)),i=Z(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class ra extends R{constructor(t,e,a){super(),this.id=t,this.className=e,this.fill=a}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a=e.colors||{},n=a[this.className];typeof this.fill=="string"?a[this.className]={browserValue:this.fill,spotColor:n==null?void 0:n.spotColor,pmsValue:n==null?void 0:n.pmsValue}:a[this.className]={browserValue:this.fill.browserValue,spotColor:n==null?void 0:n.spotColor,pmsValue:this.fill.pmsValue};const i={...e,colors:a},s=K(e.id,Object.values(t.layouts)),o=Z(i,s);return{...t,layouts:{...t.layouts,[s.layout.id]:o}}}}class Os extends R{constructor(t,e,a){super(),this.id=t,this.svgBody=e,this.objectURL=a}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,svg:this.svgBody,cachedObjectURL:this.objectURL},n=K(e.id,Object.values(t.layouts)),i=Z(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class Us extends R{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!L(this.id,Object.values(t.layouts)).id)throw new V;const a=Object.values(t.layouts).find(s=>s.elements.find(o=>o.id===this.id));if(!a)throw new Error("Layout missing from state!");const n=a.elements.findIndex(s=>s.id===this.id);a.elements.push(a.elements.splice(n,1)[0]);const i=[...a.elements];return i.forEach((s,o)=>s.layerIndex=o),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:i,modificationID:Q()}}}}}class Ls extends R{constructor(t){super(),this.id=t}apply(t){this.oldState=t;const e=L(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a=Object.values(t.layouts).find(o=>o.elements.find(l=>l.id===this.id));if(!a)throw new Error("Layout missing from state!");const n=a.elements.findIndex(o=>o.id===this.id);a.elements.splice(n,1),a.elements.unshift(e);const i=[...a.elements],s=i.splice(n,1)[0];return i.splice(n,0,s),i.forEach((o,l)=>o.layerIndex=l),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:i,modificationID:Q()}}}}}class $s extends R{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!L(this.id,Object.values(t.layouts)).id)throw new V;const a=Object.values(t.layouts).find(l=>l.elements.find(c=>c.id===this.id));if(!a)throw new Error("Layout missing from state!");const n=a.elements.findIndex(l=>l.id===this.id),i=n+1,s=[...a.elements],o=s.splice(n,1)[0];return s.splice(i,0,o),s.forEach((l,c)=>l.layerIndex=c),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:s,modificationID:Q()}}}}}class Vs extends R{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!L(this.id,Object.values(t.layouts)).id)throw new V;const a=Object.values(t.layouts).find(l=>l.elements.find(c=>c.id===this.id));if(!a)throw new Error("Layout missing from state!");const n=a.elements.findIndex(l=>l.id===this.id),i=n-1,s=[...a.elements],o=s.splice(n,1)[0];return s.splice(i,0,o),s.forEach((l,c)=>l.layerIndex=c),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:s,modificationID:Q()}}}}}class Ha{constructor(t,e,a){this.processRegion=async n=>{var l,c,d,A;const i=this.layouts.find(u=>u.panelId===n.panelId);if(!i)throw new Y(n);let s="";if(this.configuration.type===b.ProductOverlay){let u="";if((l=this.product)!=null&&l.overlayImageUrl&&(u=this.product.overlayImageUrl),s=u,!u)throw new Kt(this.configuration,"Couldn't find an asset for product overlay step")}const o=this.evaluateAssetType();if(o===T.Image){const u=this.configuration.type===b.SilentIllustration?(c=this.configuration.data.asset)==null?void 0:c.fileLink:(d=this.product)==null?void 0:d.overlayImageUrl;if(!u)throw new Error("Undefined raster silent step source");const h={stepName:this.configuration.stepName,id:Q(),src:u,type:o,y:n.top,x:n.left,width:n.width,height:n.height,layer:n.layer,layerIndex:n.layerIndex,immutable:n.immutable,productOverlay:this.configuration.type===b.ProductOverlay?!0:void 0,rotation:n.rotation,excludeFromExport:this.configuration.data.excludeFromPrint,preserveAspectRatio:"none"};return{regionElement:{id:h.id,region:n},command:new G(h,i)}}else{const u=this.configuration.type===b.SilentIllustration?(A=this.configuration.data.asset)==null?void 0:A.fileLink:s,g=await st(await(async()=>new Promise((f,p)=>{if(!u){p("Undefined vector silent step source");return}et(u,!0).then(C=>{f(C)}).catch(C=>console.error(C))}))()),m={stepName:this.configuration.stepName,id:Q(),cachedObjectURL:await Zt(g.svg),src:u,svg:g.svg,colors:g.colors,type:o,y:n.top,x:n.left,width:n.width,height:n.height,layer:n.layer,layerIndex:n.layerIndex,rotation:n.rotation,immutable:n.immutable,productOverlay:this.configuration.type===b.ProductOverlay?!0:void 0,excludeFromExport:this.configuration.data.excludeFromPrint};return{regionElement:{id:m.id,region:n},command:new G(m,i)}}},this.configuration=t,this.layouts=e,this.product=a||void 0}async trigger(){if(!this.configuration.data.regions)throw new Kt(this.configuration,"Missing regions.");if(this.configuration.type===b.SilentIllustration){const t=this.configuration.data.regions.map(this.processRegion);return Promise.all(t)}else return this.configuration.type===b.ProductOverlay?Promise.all(this.configuration.data.regions.map(t=>{if(!this.layouts.find(a=>t.panelId===a.panelId))throw new Y(t);return this.processRegion(t)})):Promise.reject("Unknown silent step. This is a bug")}evaluateAssetType(){var e,a,n;const t=this.configuration.type===b.ProductOverlay&&((e=this.product)!=null&&e.overlayImageUrl)?this.product.overlayImageUrl.toLowerCase():(n=(a=this.configuration.data.asset)==null?void 0:a.fileLink)==null?void 0:n.toLowerCase().split("?")[0];return t!=null&&t.startsWith("data:image/png")||t!=null&&t.endsWith(".jpeg")||t!=null&&t.endsWith(".jpg")||t!=null&&t.endsWith(".png")?T.Image:(t!=null&&t.endsWith(".svg")||t!=null&&t.startsWith("image/svg+xml"),T.Illustration)}}const Hn=async r=>{const t=`${ut.getServicesApiUrl()}/shortener`;try{return(await(await ot(t,{method:"POST",body:JSON.stringify({longUrl:r}),headers:{"Content-Type":"application/json"}})).json()).shortUrl}catch(e){throw console.error(e),new ve("Failed to shorten URL, see console.")}};class Yn{async poll(){try{if(await this.predicate()){this.onSuccess(),this.pollingId>-1&&window.clearInterval(this.pollingId);return}}catch{}this.attempts+=1,this.attempts<this.maxAttempts?this.pollingId=window.setTimeout(this.poll.bind(this),this.interval):this.onFailure()}constructor(t,e,a,n=3e3,i=10){this.onSuccess=e,this.onFailure=a,this.predicate=t,this.attempts=0,this.pollingId=-1,this.interval=n,this.maxAttempts=i,this.poll()}}class zs{async init(t,e,a){return a&&await this.reload(t,e,a),null}async reload(t,e,a){const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),l=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName).map(c=>({id:c.id,region:c.stepRegion}));await e.setSelectionsAndElements(t.stepName,[],l,async()=>{var A,u;const c=(A=n==null?void 0:n.storage)==null?void 0:A.videoShortUrl,d=(u=n==null?void 0:n.storage)==null?void 0:u.videoUrl;e.updateStorage(t.stepName,{videoShortUrl:c,videoUrl:d})})}async regenerateQRCode(t,e,a,n){const i=async()=>{var m,f;const h=(await Ze([e]))[0],g=(f=(m=h==null?void 0:h.versions)==null?void 0:m.find(p=>p.name==="mpeg4"))==null?void 0:f.link;return{asset:h,link:g}},s=await new Promise((h,g)=>{new Yn(async()=>!!(await i()).link,async()=>{const m=await i();if(!m.link||!m.link)throw new Mt(m.asset);h({rel:"mpeg4",href:m.link})},()=>{g("Poller timed out with 40 attempts @ 3 second interval")},3e3,40)});t.forEach(h=>a.getCommandDispatcher()(new ft(h.id)));const o=n.data.baseUrl.slice(0,4)==="http"?"":"https://",l=new URL(o+n.data.baseUrl);l.searchParams.append("video",btoa(JSON.stringify([s]))),l.pathname=l.pathname+(l.pathname.slice(-1)==="/"?"":"/");const c=l.toString();if(c.length>=2e3)throw new ve("Cannot create QR code, URL too long.");const d=await Hn(c);if(!n.data||!n.data.regions)throw new Kt(n,"Missing regions.");const A=await this.regionElements(n),u=await this.command(d,A,a,n.stepName);return u&&(u.command&&a.getCommandDispatcher()(u.command),u.followup&&await u.followup()),await a.setSelectionsAndElements(n.stepName,[],A,async()=>{a.updateStorage(n.stepName,{videoShortUrl:d,videoUrl:s.href})}),d}async regionElements(t){const e=a=>({id:Q(),region:a});return t.data.regions.map(e)}async command(t,e,a,n){const i=a.getLayouts(),o=`data:image/svg+xml;base64,${btoa(await _a.toString(t,{type:"svg"}))}`,l=e.map(c=>{const d=c.region,A=i.find(u=>u.panelId===(d==null?void 0:d.panelId));if(!A&&d)throw new Y(d);if(A&&!d)throw new Error("Region not found");if(!A||!d)throw new Error("Neither a region or layout found!");return new G({stepRegion:d,stepName:n,id:c.id,src:o,type:T.Image,y:d.top,x:d.left,width:d.width,height:d.height,rotation:0},A)});return{command:new O(l),followup:async()=>{}}}}const va=new zs;class Gs{constructor(){this.frameSourceSvg=async(t,e)=>{if(!t)return ta(e);const a=t.asset;if(!a)throw new ht(t);const n=a.fileLink;if(n)return et(n,!0);throw new Mt(a)}}async init(t,e,a){const n=a==null?void 0:a.serializableWorkflow.steps.find(o=>o.stepName===t.stepName);if(n!=null&&n.storage&&Object.keys(n.storage).length!==0||n!=null&&n.selectedVariants&&n.selectedVariants.length!==0)return await this.reload(t,e,a),null;t.mandatory&&e.setMandatoryFulfilled(t.stepName,!1),e.markStepsAsInitialised([t.stepName]);let i;const s=e.getWorkflowExperience().getBundle();if(s&&t.globalPropertyAspectConfigurations){const o=s.getGlobalPropertyStateManager(),l=t.globalPropertyAspectConfigurations[0],c=o.getAspectStorage(l.aspectName);c&&c.originalAssetKey&&(i=(await U.getLocalOrFromServer(c.originalAssetKey)).fileLink)}if(t.option&&t.option.variants&&t.option.variants.length>0){const o=t.option,l=X.getDefaultVariant(o);return l?this.selectVariantCommand(t,l,[],e,void 0,i||t.data.placeholderImageUrl):null}return this.selectVariantCommand(t,void 0,[],e,void 0,i||t.data.placeholderImageUrl)}async reload(t,e,a){var c;const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),l=Object.values(a.layouts).map(d=>d.elements).flat().filter(d=>d.stepName===t.stepName).map(d=>({id:d.id,region:d.stepRegion}));if(!t.option||(t.option.variants||[]).length===0){const d=t.data.regions.map(A=>ta(A));e.updateStorage(t.stepName,{currentFrameSources:d})}if(n){const d=async()=>{var g,m,f,p,C;const A=(g=n.storage)==null?void 0:g.colors,u=(m=n.storage)==null?void 0:m.framePatternSrc,h=(f=n.storage)==null?void 0:f.frameOffsetsList;if(e.updateMetadata(t.stepName,{frameOffsetsList:h,framePatternSrc:u}),u){const w=(p=e.getWorkflowExperience().getStepById(t.stepName))==null?void 0:p.frameService;if(!w)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(u,w,!0,A),e.updateMetadata(t.stepName,{image:u}),e.updateStorage(t.stepName,{framePatternSrc:u}),this.validateColorCount(t,e)}if(h!=null&&h.some(w=>w.zoom)){const w=(C=e.getWorkflowExperience().getStepById(t.stepName))==null?void 0:C.frameService;if(!w)throw new Error("Frame service unavailable, cannot load pattern!");w.updateOffsets(h)}e.setMandatoryFulfilled(t.stepName,!0)};if(n.selectedVariants&&n.selectedVariants.length>0){const A=n.selectedVariants[0].id;if(t.option&&A){const u=(c=t.option.variants)==null?void 0:c.find(h=>h.id===A);u&&await e.setSelectionsAndElements(t.stepName,[u],l,async()=>{const h=await Promise.all(t.data.regions.map(g=>this.frameSourceSvg(u,g)));e.updateStorage(t.stepName,{currentFrameSources:h}),await d()})}}else await e.setSelectionsAndElements(t.stepName,[],l,d)}}async availableColors(t,e){var n;const a=t.data.colorOption;return((n=a==null?void 0:a.variants)==null?void 0:n.map(i=>({fill:i.color,stroke:i.color,variant:i,pmsValue:i.name})))??[]}selectImage(t,e,a,n=!0){var l;const i=this.patternSource(e),s=(l=a.getStepStorage(t.stepName))==null?void 0:l.framePatternSrc;if(s&&s===i)return Promise.resolve();a.setEditedStatus(t.stepName,!0);const o=e.fileLink||"";return o.endsWith(".pdf")||o.endsWith(".eps")||o.endsWith(".ai")?new Promise(c=>{a.addPoller(new Yn(async()=>{var h;const A=(h=(await U.getFromServer(e.key||"")).versions)==null?void 0:h.find(g=>g.name==="svg");return A?(await ot(A.link)).status===200:!1},()=>{U.getLocalOrFromServer(e.key||"").then(d=>{this.loadPatternFromAsset(d,t,a,n).then(c)})},()=>{throw new ve("Failed to resolve transcoded PDF")}))}):this.loadPatternFromAsset(e,t,a,n)}async selectVariant(t,e,a,n,i){const s=await this.selectVariantCommand(t,e,a,n,i);s&&(s.command&&n.getCommandDispatcher()(s.command),s.followup&&await s.followup())}getCreateElementCommand(t,e,a,n){return new G({id:t,type:T.Frame,x:e.left,y:e.top,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,rotation:e.rotation,scaleX:e.width/n.frameData.width,scaleY:e.height/n.frameData.height,path:n.frameData.path,dataWidth:n.frameData.width,dataHeight:n.frameData.height,stepRegion:e,stepName:n.stepName,disablePlaceholder:n.disablePlaceholder,pattern:n.pattern,immutable:e.immutable},a)}async loadPatternFromString(t,e,a=!0,n=void 0,i){if(t.endsWith("svg")){const s=await Vn(t),o=s.width,l=s.height,c=await et(t);if(i){const u=c.match(/<(image|linearGradient|radialGradient)(\s|>|\/>)/gim);if(u&&u.length>0)throw new Error("Vector files may not include images or gradients when a color limit is specified.")}const d=await st(c),A={src:t,width:o,height:l,aspect:o/l,svg:d.svg,colors:n??d.colors};ct.set(t,A),e.setPatternData(A,a)}else{const s=await Be(t,!0),o=await ne(s),l={src:t,width:o.width,height:o.height,aspect:o.width/o.height,svg:void 0,colors:void 0};ct.set(t,l),e.setPatternData(l,a)}}changeColors(t,e,a){var s,o;const n=(s=e.getWorkflowExperience().getStepById(t.stepName))==null?void 0:s.frameService;if(!n||!((o=n.getImageData())!=null&&o.svg)){console.warn("changeColors was called without an SVG being assigned to a frame step");return}const i=this.calculateColorMetadata(n,t,a);e.updateMetadata(t.stepName,{colors:i.metadataColors}),e.updateStorage(t.stepName,{colors:i.storageColors}),n.setPatternData({...n.getImageData(),colors:i.newColors},!1),this.validateColorCount(t,e)}getUniqueColorCount(t,e){var s,o;const a=(s=e.getWorkflowExperience().getStepById(t.stepName))==null?void 0:s.frameService;if(!a)return 0;const n=((o=a.getImageData())==null?void 0:o.colors)??{},i=[];for(const l in n){const c=n[l];if(c.pmsValue){const d=c.pmsValue.trim().toLocaleLowerCase();i.includes(d)||i.push(d)}else if(c.browserValue){const d=yn(c.browserValue);i.includes(d)||i.push(d)}}return i.length}calculateColorMetadata(t,e,a){var l,c;if(!((l=t.getImageData())!=null&&l.svg))return{newColors:void 0,metadataColors:void 0,storageColors:void 0};const n={...t.getImageData().colors??{}},i={};Object.entries(n).forEach(([d,A])=>{const u={browserValue:A.browserValue};i[d]=u});for(const[d,A]of a.entries())n[d]={browserValue:A.browserValue,pmsValue:A.pmsValue},i[d]=A;let s=Array.from(Object.values(n)).map(d=>d.browserValue);const o=e.data.colorOption;return o&&((c=o.variants)==null||c.forEach(d=>{s=s.map(A=>{var u;return A.toLowerCase()===((u=d.color)==null?void 0:u.toLowerCase())?d.name:A})})),{newColors:n,metadataColors:s,storageColors:i}}validateColorCount(t,e){const a=t.data.colorPickerEnabled?t.data.maxColors??0:0;e.setStepError(t.stepName,"colors",a>0&&this.getUniqueColorCount(t,e)>a?"workflow.steps.frame.tooManyColors":void 0)}async selectVariantCommand(t,e,a,n,i,s){var h;const o=(h=n.getWorkflowExperience().getStepById(t.stepName))==null?void 0:h.frameService;if(!o)throw new Error("Frame service unavailable, cannot load pattern!");const l=await Promise.all(t.data.regions.map(g=>this.frameSourceSvg(e,g)));i&&i(!0);const c=t.data.initialZoomLevel,d=await Promise.all(t.data.regions.map(async(g,m)=>{const f=await oe(l[m]),p=o.getImageData(),C=a.map(x=>new ft(x.id)),w=p?ya(p,f,c&&!t.data.forceImageCover?{scale:c}:void 0,t.data.forceImageCover):void 0,y=p?{id:Q(),src:p.src,x:(w==null?void 0:w.x)||0,y:(w==null?void 0:w.y)||0,width:p.width,height:p.height,scaleX:(w==null?void 0:w.zoom)||1,scaleY:(w==null?void 0:w.zoom)||1,rotation:0}:void 0,v=Q(),B=n.getLayouts().find(x=>x.panelId===g.panelId);if(!B)throw new Y(g);return{command:this.getCreateElementCommand(v,g,B,{frameData:f,pattern:y,disablePlaceholder:t.data.disablePlaceholder,stepName:t.stepName}),regionEl:{id:v,region:g},removeExistingCommands:C}})),A=d.map(g=>g.command),u=d.map(g=>g.removeExistingCommands).flat();return{command:new O([...A,...u]),followup:async()=>{i&&i(!1),await n.setSelectionsAndElements(t.stepName,e?[e]:[],[...d.map(g=>g.regionEl)],async()=>{var g;if(n.updateStorage(t.stepName,{currentFrameSources:l}),s){const m=(g=n.getWorkflowExperience().getStepById(t.stepName))==null?void 0:g.frameService;if(!m)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(s,m,!0)}})}}}patternSource(t){var n;const e=(n=t.versions)==null?void 0:n.find(i=>i.name==="svg");if(e!=null&&e.link)return e.link;const a=t.fileLink;if(a)return a;throw new Mt(t)}async loadPatternFromAsset(t,e,a,n){var c,d;const i=this.patternSource(t),s=a.markUpdatePending(),o=(c=a.getWorkflowExperience().getStepById(e.stepName))==null?void 0:c.frameService;if(!o)throw a.markUpdateCompleted(s),new Error("Frame service unavailable, cannot load pattern!");try{await this.loadPatternFromString(i,o,n,void 0,e.data.colorPickerEnabled&&!!e.data.maxColors&&e.data.maxColors>0)}catch(A){throw a.markUpdateCompleted(s),A}const l=this.calculateColorMetadata(o,e,new Map(Object.entries(((d=o.getImageData())==null?void 0:d.colors)??{})));a.updateMetadata(e.stepName,{image:i,colors:l.metadataColors}),a.updateStorage(e.stepName,{framePatternSrc:i,colors:l.storageColors}),a.markUpdateCompleted(s),a.setMandatoryFulfilled(e.stepName,!0),a.setInformationResults(a.getInformationResults().filter(A=>A.stepID===e.stepName)),this.validateColorCount(e,a)}}const lt=new Gs;class js{async getIllustrationBody(t){return new Promise(e=>{et(t,!0).then(a=>{e(a)}).catch(a=>console.error(a))})}getCreateElementCommand(t,e,a,n){return new G({stepRegion:e,stepName:n.stepName,colors:n.svg.colors,id:t,src:n.src,svg:n.svg.svg,cachedObjectURL:n.objectURL,type:T.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable},a)}getColors(t,e){const a=e.getRegionElements(t.stepName)||[];if(a.length===0)return[];try{return L(a[0].id,e.getAllLayoutData()).colors}catch{return[]}}async init(t,e,a){const n=t.option;if(!n)return null;if(a)return this.reload(t,e,a);{const i=X.getDefaultVariant(n);if(i)return await this.selectVariantCommand(t,i,[],()=>{},e)}return null}async reload(t,e,a){var c;const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),o=Object.values(a.layouts).map(d=>d.elements).flat().filter(d=>d.stepName===t.stepName),l=t.option;if(n!=null&&n.selectedVariants){const d=n.selectedVariants[0].id;if(l&&d){const A=(c=l.variants)==null?void 0:c.find(u=>u.id===d);if(A){const u=o.map(h=>({id:h.id,region:h.stepRegion}));await e.setSelectionsAndElements(t.stepName,[A],u,async()=>{var h;e.updateMetadata(t.stepName,{colors:(h=n.storage)==null?void 0:h.colors}),e.setMandatoryFulfilled(t.stepName,!0)})}}else throw new Error("Required illustration variant no longer available")}return null}async availableColors(t,e){var n;const a=t.data.colorOption;return a?a?(n=a.variants)==null?void 0:n.map(i=>({fill:i.color,stroke:i.color,variant:i,pmsValue:i.name})):[]:[]}async changeColorsCommand(t,e,a,n,i){const s={};for(const[d,A]of i.entries())typeof A=="string"?s[d]={browserValue:A,spotColor:void 0,pmsValue:void 0}:s[d]={browserValue:A.browserValue,spotColor:A.spotColor,pmsValue:A.pmsValue};const o=ga(t,e,a,s),l=await Zt(o),c=[];for(const d of n){for(const[A,u]of i.entries())c.push(new ra(d,A,u));c.push(new Os(d,o,l))}return new O(c)}async changeColors(t,e,a,n,i){var h,g;if(e.length===0)return;const s=L(e[0].id,n().map(m=>m.layoutState)),o={...s.colors},l={};Object.entries(o).forEach(([m,f])=>{const p={browserValue:f.browserValue,pmsValue:f.pmsValue},C=f.spotColor;C&&(p.spotColor={profileName:C.profileName,namedColor:C.namedColor}),l[m]=p});for(const[m,f]of i.entries()){const p=typeof f=="string"?f:f.browserValue,C=typeof f=="string"?void 0:f.pmsValue;o[m]={browserValue:p,spotColor:(h=o[m])==null?void 0:h.spotColor,pmsValue:C},l[m]={browserValue:p}}let c=Array.from(Object.values(o)).map(m=>m.browserValue);const d=t.data.colorOption;d&&((g=d.variants)==null||g.forEach(m=>{c=c.map(f=>{var p;return f.toLowerCase()===((p=m.color)==null?void 0:p.toLowerCase())?m.name:f})})),a.updateMetadata(t.stepName,{colors:c});const A=new Map;if(Object.entries(o).forEach(([m,f])=>{A.set(m,f)}),!s.svg)throw new Error("Colors changed before SVG loaded. This should never happen!");const u=await this.changeColorsCommand(s.svg,s.width,s.height,e.map(m=>m.id),A);a.updateStorage(t.stepName,{colors:l}),a.getCommandDispatcher()(u)}async selectVariant(t,e,a,n,i){const s=await this.selectVariantCommand(t,e,a,n,i);s&&(s.command&&i.getCommandDispatcher()(s.command),s.followup&&await s.followup())}async selectVariantCommand(t,e,a,n,i){var p;if(!t.data||!t.data.regions)throw new Kt(t,"Missing regions.");n(!0);const s=a.map(C=>new ft(C.id));t.mandatory&&i.setMandatoryFulfilled(t.stepName,!1);const o=e.asset;if(!o)throw new ht(e);const l=o.fileLink;if(!l)throw new Mt(o);const c=await st(await this.getIllustrationBody(l)),d=await Zt(c.svg),A=C=>{const w=i.getLayouts().find(v=>v.panelId===C.panelId);if(!w)throw new Y(C);const y=Q();return{regionElement:{id:y,region:C},command:this.getCreateElementCommand(y,C,w,{stepName:t.stepName,src:l,objectURL:d,svg:c})}},u=t.data.regions.map(A),g=[...u.map(C=>C.command),...s];let m=Array.from(Object.values(c.colors)).map(C=>C.browserValue);const f=t.data.colorOption;return f&&((p=f.variants)==null||p.forEach(C=>{m=m.map(w=>{var y;return w.toLowerCase()===((y=C.color)==null?void 0:y.toLowerCase())?C.name:w})})),i.updateMetadata(t.stepName,{colors:m}),{command:new O(g),followup:async()=>{await i.setSelectionsAndElements(t.stepName,[e],u.map(y=>y.regionElement),async()=>{i.setMandatoryFulfilled(t.stepName,!0),n(!1)});const C=await this.availableColors(t,i)||[],w=Object.keys(c.colors);if(t.data.colorPickerEnabled&&C.length===1&&w.length===1){const y=C[0],v=w[0];await this.changeColors(t,u.map(E=>E.regionElement),i,()=>i.getCommandContext().getAllLayouts(),new Map([[v,y.variant.color]]))}else t.data.colorPickerEnabled&&await this.changeColors(t,u.map(y=>y.regionElement),i,()=>i.getCommandContext().getAllLayouts(),new Map)}}}}const Wt=new js;class Ws{async init(t,e,a){const n=t.option;if(!n)throw new Jt(t);if(a)await this.reload(t,e,a);else{const i=X.getDefaultVariant(n);if(i)return await this.selectVariantLambda(t,i,e,()=>{})}return null}async reload(t,e,a){var c;const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),o=Object.values(a.layouts).map(d=>d.elements).flat().filter(d=>d.stepName===t.stepName),l=t.option;if(!l)throw new Jt(t);if(n!=null&&n.selectedVariants){const d=n.selectedVariants[0].id;if(d){const A=(c=l.variants)==null?void 0:c.find(u=>u.id===d);if(A){const u=A.material,h=o.map(g=>({id:g.id,region:g.stepRegion}));await e.setSelectionsAndElements(t.stepName,[A],h,async()=>{const g=e.getModelContainer();if(g){const m=t.data.targetMaterials.map(f=>g.applyMaterialVariant(f,l.id||"",u||{}));Promise.all(m).then(()=>e.setMandatoryFulfilled(t.stepName,!0))}})}}}}async selectVariant(t,e,a,n){const i=await this.selectVariantLambda(t,e,a,n);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantLambda(t,e,a,n){const i=a.getModelContainer();n(!0);const s=e.material;if(!s)throw n(!1),new ht(e);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[e],[],async()=>{try{i&&t.data.targetMaterials.forEach(o=>{t.option&&i.applyMaterialVariant(o,t.option.id||"",s)}),a.setMandatoryFulfilled(t.stepName,!0)}finally{n(!1)}})}}}}const Ba=new Ws;class qs{async init(t,e,a){const n=t.option;if(!n)throw new Jt(t);if(a)await this.reload(t,e,a);else{const i=X.getDefaultVariant(n);if(i)return await this.selectVariantLambda(t,i,e,()=>{})}return null}async reload(t,e,a){var c;const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),o=Object.values(a.layouts).map(d=>d.elements).flat().filter(d=>d.stepName===t.stepName),l=t.option;if(n!=null&&n.selectedVariants){const d=n.selectedVariants[0].id;if(l&&d){const A=(c=l.variants)==null?void 0:c.find(u=>u.id===d);if(A){const u=o.map(h=>({id:h.id,region:h.stepRegion}));await e.setSelectionsAndElements(t.stepName,[A],u,async()=>{var g;const h=e.getModelContainer();if(h&&t.option){const m=(g=A.asset)==null?void 0:g.fileLink;if(!m)throw new ht(A);await h.applyModelVariant(t.stepName||"",{model:m,contextService:e.getLayoutPreviewService()},t.data.replaceProductModel||!1),e.setMandatoryFulfilled(t.stepName,!0)}})}}}}async selectVariant(t,e,a,n){const i=await this.selectVariantLambda(t,e,a,n);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantLambda(t,e,a,n){var s;n(!0);const i=(s=e.asset)==null?void 0:s.fileLink;if(!i)throw new ht(e);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[e],[],async()=>{try{const o=a.getModelContainer();o&&await o.applyModelVariant(t.stepName,{model:i,contextService:a.getLayoutPreviewService()},t.data.replaceProductModel||!1),a.setMandatoryFulfilled(t.stepName,!0)}finally{n(!1)}})}}}}const Ia=new qs;class Hs{async init(t,e,a){if(a)await this.reload(t,e,a);else return e.updateMetadata(t.stepName,{text:""}),this.changeTextCommand(t,"",e,"",()=>{});return null}async reload(t,e,a){const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),l=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName).map(c=>({id:c.id,region:c.stepRegion}));await e.setSelectionsAndElements(t.stepName,[],l,async()=>{var c,d;e.updateStorage(t.stepName,{text:(c=n==null?void 0:n.storage)==null?void 0:c.text}),e.setMandatoryFulfilled(t.stepName,((d=n==null?void 0:n.storage)==null?void 0:d.text)!=="")})}async changeText(t,e,a,n,i){const s=await this.changeTextCommand(t,e,a,n,i);s&&(s.command&&a.getCommandDispatcher()(s.command),s.followup&&await s.followup())}async changeTextCommand(t,e,a,n,i){var d;const s=a.getRegionElements(t.stepName),o=(d=a.getStepSpecificServices(t.stepName))==null?void 0:d.module;if(!o)return console.error("Missing module."),null;const l=a.getProfanities();if(!this.validateInput(t,e,l,i))return a.setMandatoryFulfilled(t.stepName,!1),console.error(n),null;if(a.setMandatoryFulfilled(t.stepName,e!==""),!t.data||!t.data.regions||t.data.regions.length<=0)return console.error("Missing configuration."),null;a.updateStorage(t.stepName,{text:e}),a.updateMetadata(t.stepName,{text:e});const c=(A,u,h)=>{const g=h||Q(),f=a.getLayouts().find(C=>C.panelId===u.panelId);if(!f)return console.error(`Can not find layout for region: ${u.panelId}`),null;const p=[];return h&&p.push(new ft(g)),p.push(new G({stepRegion:u,stepName:t.stepName,colors:{},id:g,svg:A,type:T.Illustration,y:u.top,x:u.left,rotation:u.rotation,width:u.width,height:u.height,layer:u.layer,layerIndex:u.layerIndex,immutable:u.immutable},f)),{id:g,region:u,command:new O(p)}};if(s.length>0){const u=s.map(h=>{if(!h.region)return null;const g=o.svgPrint(e,h.region);return c(g,h.region,h.id)}).filter(h=>!!h).filter(h=>!!h).map(h=>h&&h.command);return{command:new O(u),followup:async()=>{}}}else{const A=t.data.regions.map(h=>c(o.svgPrint(e,h),h)),u=A.filter(h=>!!h).map(h=>h&&h.command);return{command:new O(u),followup:async()=>{const h=A.filter(g=>g).map(g=>g&&{id:g.id,region:g.region});await a.setSelectionsAndElements(t.stepName,[],h)}}}}validateInput(t,e,a,n){if(t.data&&t.data.maxLength){const s=t.data.maxLength;if(e.length>s)return n("Too many characters."),!1}if(!/^$|^[a-zA-Z0-9 ]+$/.test(e))return n("Unsupported characters."),!1;const i=qe.split(e.toLowerCase());for(const s of i)for(const o in a){const l=a[o].toLowerCase().replace(/\s/g,"");if(s===l)return n("Blocked profanity."),!1}return n(""),!0}}const ba=new Hs;class Ys{async init(t,e,a){const n=t.option;if(!n)return null;if(a)await this.reload(t,e,a);else if(n.defaultVariant)return e.markStepsAsInitialised([t.stepName]),this.selectVariantCommand(t,n.defaultVariant,e,()=>{});return e.markStepsAsInitialised([t.stepName]),null}async reload(t,e,a){var c;const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),o=Object.values(a.layouts).map(d=>d.elements).flat().filter(d=>d.stepName===t.stepName),l=t.option;if(n!=null&&n.selectedVariants){const d=n.selectedVariants[0].id;if(l&&d){const A=(c=l.variants)==null?void 0:c.find(u=>u.id===d);if(A){const u=o.map(h=>({id:h.id,region:h.stepRegion}));await e.setSelectionsAndElements(t.stepName,[A],u,async()=>{e.setMandatoryFulfilled(t.stepName,!0)})}}}}async selectVariant(t,e,a,n){const i=await this.selectVariantCommand(t,e,a,n);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantCommand(t,e,a,n){const i=e.asset;if(!i)throw new ht(e);const s=i==null?void 0:i.fileLink;if(!s)return console.error("No URL for picture!"),null;n(!0),t.mandatory&&a.setMandatoryFulfilled(t.stepName,!1);const l=a.getRegionElements(t.stepName).map(A=>new ft(A.id)),c=A=>{const h=a.getLayouts().find(m=>m.panelId===A.panelId);if(!h)throw new Y(A);const g=Q();return{regionElement:{id:g,region:A},command:new G({stepName:t.stepName,stepRegion:A,id:g,src:s,type:T.Image,y:A.top,x:A.left,rotation:A.rotation,width:A.width,height:A.height,layer:A.layer,layerIndex:A.layerIndex,immutable:A.immutable,preserveAspectRatio:"none"},h)}},d=t.data.regions.map(c);return{command:new O([...l,...d.map(A=>A.command)]),followup:async()=>{await a.setSelectionsAndElements(t.stepName,[e],d.map(A=>A.regionElement),async()=>{a.setMandatoryFulfilled(t.stepName,!0),n(!1)})}}}}const Da=new Ys;class Js{async init(t,e,a){const n=t.option;if(!n)return null;if(a)await this.reload(t,e,a);else{const i=n.variants;if(X.getDefaultVariant(n)){const o=i==null?void 0:i.find(l=>{var c;return l.id===((c=n.defaultVariant)==null?void 0:c.id)});return this.selectVariantLambda(t,(o==null?void 0:o.id)||"",e)}}return null}async reload(t,e,a){var s;const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),i=t.option;if(n!=null&&n.selectedVariants){const o=n.selectedVariants[0].id;if(i&&o){const l=(s=i.variants)==null?void 0:s.find(c=>c.id===o);l&&await e.setSelectionsAndElements(t.stepName,[l],[])}}}async selectVariant(t,e,a){await a.getInitializationPromise();const n=await this.selectVariantLambda(t,e,a);n&&(n.command&&a.getCommandDispatcher()(n.command),n.followup&&await n.followup())}async selectVariantLambda(t,e,a){const n=t.option;if(!n)return null;const i=n.variants;if(!i)return null;const s=i.length>1?i.find(o=>o.id===e):i[0];if(!s)throw new Error(`Failed to find selected variant ${e} in option ${n.id} of step ${t.stepName} (${t.stepTitle})`);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[s],[],async()=>{a.setMandatoryFulfilled(t.stepName,!0)})}}}}const xa=new Js;class Ks{constructor(){this.shapeFillId="spiff-fill-shape"}async availableColours(t){var a;const e=t.option;return e?((a=e.variants)==null?void 0:a.map(n=>({fill:n.color,stroke:n.color,variant:n})))||[]:[]}setCustomColor(t,e,a){const n=a.getLayouts(),s=(a.getRegionElements(e.stepName)||[]).map(o=>{const l=o.region;if(!n.find(d=>d.panelId===(l==null?void 0:l.panelId)))throw new Y(l);return new ra(o.id,this.shapeFillId,t)}).filter(o=>!!o);a.getCommandDispatcher()(new O(s)),a.updateStorage(e.stepName,{colour:t})}async init(t,e,a){const n=t.option;if(!n)throw new Jt(t);if(a)await this.reload(t,e,a);else{const i=X.getDefaultVariant(n);return i?this.selectVariantCommand(t,{fill:i.color,stroke:i.color,variant:i},[],e):null}return null}async selectVariant(t,e,a,n){const i=await this.selectVariantCommand(t,e,a,n);i&&(i.command&&n.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async reload(t,e,a){var c;const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),o=Object.values(a.layouts).map(d=>d.elements).flat().filter(d=>d.stepName===t.stepName),l=t.option;if(n!=null&&n.selectedVariants){const d=n.selectedVariants[0].id;if(l&&d){const A=(c=l.variants)==null?void 0:c.find(u=>u.id===d);if(A){const u=o.map(h=>({id:h.id,region:h.stepRegion}));await e.setSelectionsAndElements(t.stepName,[A],u,async()=>{var h;e.updateStorage(t.stepName,{colour:((h=n==null?void 0:n.storage)==null?void 0:h.colour)||""}),e.setMandatoryFulfilled(t.stepName,!0)})}}}}async selectVariantCommand(t,e,a,n){var l;const i=n.getLayouts(),s=(l=n.getStepStorage(t.stepName))==null?void 0:l.colour,o=()=>{var c,d;if(((c=e.variant)==null?void 0:c.color)==="#custom")return s||"#FFFFFF";if((d=e.variant)!=null&&d.color)return e.variant.color;throw new Error("Failed to resolve color for shape step.")};if(a.length>0){const c=A=>{const u=A.region;if(!i.find(m=>m.panelId===(u==null?void 0:u.panelId)))throw new Y(u);const g=o();return new ra(A.id,this.shapeFillId,g)},d=a.map(c).filter(A=>!!A);return{command:new O(d),followup:async()=>{await n.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],a),n.updateStorage(t.stepName,{colour:o()})}}}else{const c=h=>{const g=i.find(w=>w.panelId===h.panelId);if(!g)throw new Y(h);const m=o(),f=`
1351
1351
  <svg
1352
1352
  xmlns="http://www.w3.org/2000/svg"
1353
1353
  xmlnsXlink="http://www.w3.org/1999/xlink"
@@ -1364,1278 +1364,17 @@
1364
1364
  width="1"
1365
1365
  height="1"
1366
1366
  class="${this.shapeFillId}"
1367
- fill="${C}"
1367
+ fill="${m}"
1368
1368
  />
1369
1369
  </svg>
1370
- `,w={};w[this.shapeFillId]={browserValue:C};const E=b();return{id:E,region:B,command:new z({stepRegion:B,stepName:t.stepName,colors:w,id:E,svg:u,type:N.Illustration,y:B.top,x:B.left,rotation:B.rotation,width:B.width,height:B.height,layer:B.layer,layerIndex:B.layerIndex,immutable:B.immutable,excludeFromExport:t.data.excludeFromPrint},h)}},l=t.data.regions.map(c),g=l.filter(B=>!!B).map(B=>B==null?void 0:B.command),d=l.filter(B=>!!B).map(B=>({id:B.id,region:B.region}));return{command:new G(g),followup:async()=>{await a.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],d,async()=>{a.updateStorage(t.stepName,{colour:o()})})}}}}}const St=new no;class io{constructor(){this.latestToast=null,this.toastType=null,this.toastCallbacks=[]}addToastCallback(t){t({toastMessage:this.latestToast,toastType:this.toastType}),this.toastCallbacks.push(t)}removeToastCallback(t){this.toastCallbacks=this.toastCallbacks.filter(e=>e!==t)}setLatestToast(t,e){this.latestToast=t,this.toastType=e,this.onToastChange()}onToastChange(){this.toastCallbacks.forEach(t=>t({toastMessage:this.latestToast,toastType:this.toastType}))}}const tn=new io,Le=(n,t,e,A,a)=>{if(t.some(l=>l==null))throw new Error(`Failed to autosize lines: ${t.join(", ")}`);let i=t.map(l=>l.split(`
1371
- `)).flat(),s=i.length,o=i.map(l=>gt(l,A,a));const r=a.getApproximateHeight()*A;let c=!0;for(;c;){if(r+(s-1)*e>n.height)return[null,null];const g=Math.max(...o);if(g<=n.width)return[i,g];const d=o.reduce((u,w,E,m)=>w>m[u]?E:u,0),B=i[d];let h=!1,C=B.length;for(;!h&&C>-1;){C=B.lastIndexOf(" ",C-1);const u=[B.slice(0,C),B.slice(C+1)],w=u.map(m=>gt(m,A,a));w[0]<=n.width&&(i=[...i.slice(0,d),...u,...i.slice(d+1)],o=[...o.slice(0,d),...w,...o.slice(d+1)],s+=1,h=!0)}h||(c=!1)}return[null,null]},Vt=(n,t,e,A,a)=>{let i,s;const o=Qt(t.assetUrl),r=o.getFont();if(a.size){const d=n/r.unitsPerEm;return[i,s]=Le(e,A,n,d,o),[a.size,i,s]}const c=6;let l=c-He;if(A.length>0){let d=A,B=0;for(;(!a.maxSize||l<=a.maxSize)&&d;)l+=He,B=l/r.unitsPerEm,[d,s]=Le(e,A,l,B,o)}l>c&&(l-=He),a.minSize&&l<a.minSize&&(l=a.minSize);const g=l/r.unitsPerEm;return[i,s]=Le(e,A,l,g,o),[l,i,s]},Oe=30;class Ee extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=Ee.name}}const so=["‘","’","“","”",`
1372
- `];class me extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=me.name}}class oo{constructor(){this.cachedColors=new Map,this.cachedStrokeColors=new Map,this.filterUnsupportedCharacters=(t,e)=>{let A=t.replace(/(\r\n|\r|(\u2665|\u00a9|\u00ae|[\u2000-\u2017]|[\u201E-\u3300]]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]))/gm,"");const a=[],i=e?Qt(e.assetUrl):void 0;if(i){const s=A.split("").filter(r=>!so.includes(r)).join(""),o=s.split("").map(r=>i.getFont().charToGlyph(r));for(let r=0;r<o.length;r++)o[r].name===".notdef"&&a.push(String.fromCharCode(s.charCodeAt(r)))}for(let s=0;s<a.length;s++)A=A.replaceAll(a[s],"");return A},this.textAlign=t=>t.vertical?"center":t.textAlign||"center",this.getErrorsForText=(t,e,A)=>{let a;e.data&&e.data.maxLength&&t.length>e.data.maxLength&&(a||(a={}),a.hitCharacterLimit=!0);const i=A.getProfanities(),s=Ve.split(t.toLowerCase());for(const r of s)for(const c in i){const l=i[c].toLowerCase().replace(/\s/g,"");if(r===l){a||(a={}),a.blockedProfanity=!0;break}}return!e.data.allowNewlines&&(t.includes(`
1373
- `)||t.includes("\r"))&&(a||(a={}),a.illegalMultipleLines=!0),a}}async init(t,e,A){var i,s,o;const a=t.option;if(!a)return null;if(A)await this.reload(t,e,A);else{const r=this.getDefaultImageFillVariant(t.data),c=(i=r==null?void 0:r.asset)==null?void 0:i.fileLink,l=c?await eA(c):void 0,g=l?{src:l.src,height:l.height,width:l.width,scale:t.data.imageFillScale||1}:void 0,d=this.getDefaultStrokeColorVariant(t.data),B=t.data.strokeEnabled&&(d!=null&&d.color)?{browserValue:d.color,pmsValue:d.name}:void 0;e.updateStorage(t.stepName,{text:t.data.defaultText||"",inputText:t.data.defaultText||"",color:((s=this.getDefaultColorVariant(t.data))==null?void 0:s.color)||this.getDefaultColor(t.data),fillImage:g,strokeColor:B}),e.updateMetadata(t.stepName,{text:t.data.defaultText||"",color:((o=this.getDefaultColorVariant(t.data))==null?void 0:o.name)||this.getDefaultColor(t.data),fillImage:r==null?void 0:r.name,strokeColor:t.data.strokeEnabled?d==null?void 0:d.color:void 0});const h=$.getDefaultVariant(a);if(h)return this.selectVariantCommand(t,h,{},[],e,()=>{},()=>{},g,B)}return null}findLayoutElements(t,e){return t.getRegionElements(e.stepName).map(i=>J(i.id,t.getAllLayoutData()))}availableFillColors(t){var a;const e=this.cachedColors.get(t.stepName);if(e)return e;const A=t.data.colorOption;if(A){const i=((a=A.variants)==null?void 0:a.map(s=>({fill:s.color,stroke:s.color,variant:s})))||[];return this.cachedColors.set(t.stepName,i),i}return[]}changeAlignment(t,e,A,a){if(!t.data||!t.data.regions)return;const i=a.getCommandDispatcher();for(const s of A){const o=new qa(s.id,e);i(o)}}async changeFillColor(t,e,A,a){var r;if(!t.data||!t.data.regions)return;const i=a.getCommandDispatcher();e.variant?a.updateMetadata(t.stepName,{color:e.variant.name}):a.updateMetadata(t.stepName,{color:e.fill});const s=t.data.colorOption,o=s?this.createTextFillSpotColor(s,e.variant):void 0;s?a.updateStorage(t.stepName,{color:e.fill,colorProfileAssetKey:(r=s.colorProfile)==null?void 0:r.key}):a.updateStorage(t.stepName,{color:e.fill});for(const c of A){if(!e.fill)throw new Error("Fill not set on new color selection!");const l=new Wa(c.id,e.fill,o);i(l)}}async availableFillImages(t){var A,a;const e=t.data.imageFillOption;if(e){const i=((a=(A=e.variants)==null?void 0:A.map(s=>{var o;return(o=s.asset)==null?void 0:o.fileLink}))==null?void 0:a.filter(s=>!!s))||[];return Promise.all(i.map(async s=>{const o=await eA(s);return{src:s,width:o.width,height:o.height,scale:t.data.imageFillScale||1}}))}return Promise.resolve([])}async changeFillImage(t,e,A,a){var o,r;if(!t.data||!t.data.regions)return;const i=a.getCommandDispatcher(),s=(r=(o=t.option)==null?void 0:o.variants)==null?void 0:r.find(c=>{var l;return((l=c.asset)==null?void 0:l.fileLink)===e.src});a.updateMetadata(t.stepName,{fillImage:s==null?void 0:s.name}),a.updateStorage(t.stepName,{fillImage:e});for(const c of A){const l=new Te(c.id,e);i(l)}}availableStrokeColors(t){var a;const e=this.cachedStrokeColors.get(t.stepName);if(e)return e;const A=t.data.strokeOption;if(A){const i=((a=A.variants)==null?void 0:a.map(s=>({fill:s.color,stroke:s.color,variant:s})))||[];return this.cachedStrokeColors.set(t.stepName,i),i}return[]}async changeStrokeColor(t,e,A,a){var o;if(!t.data||!t.data.regions)return;const i=a.getCommandDispatcher();e!=null&&e.variant?a.updateMetadata(t.stepName,{strokeColor:e.variant.name}):a.updateMetadata(t.stepName,{strokeColor:e==null?void 0:e.fill});const s=e?{browserValue:e.fill,pmsValue:e.pmsValue}:void 0;a.updateStorage(t.stepName,{strokeColor:s});for(const r of A){const c=new Je(r.id,s,(o=t.data)==null?void 0:o.strokeThickness);i(c)}}getProcessedInput(t,e,A){const a=A?t:this.injectReplaceableText(t,e);return we(a,{vertical:e.vertical,uppercase:e.uppercase})}updateInputText(t,e,A,a){const i=a.getStepStorage(A.stepName),s=this.getProcessedInput(t,A.data,!!i.customiseAllText),o={command:void 0,helperData:{},errorData:this.getErrorsForText(t,A,a)};if(o.errorData)return o;o.helperData.charactersRemaining=A.data.maxLength-s.length;const r=[],c=new Map,l=new Map;for(const g of e){if(!g.fontData)throw new L("Failed to resolve font data for text.");const[d,B]=Vt(g.fontSize,g.fontData,{left:g.x,top:g.y,width:g.width,height:g.height,rotation:g.rotation,panelId:""},[s],{size:A.data.size,minSize:A.data.minSize,maxSize:A.data.maxSize});c.set(g.id,d),l.set(g.id,B);const h=A.data.curved?s:(B||[]).join(`
1374
- `);r.push(this.generateTextChangeCommandsForRegion(d,A.data,g.id,h))}return!A.data.curved&&e.length>0&&!Array.from(l.values()).every(d=>d)?(o.errorData||(o.errorData={}),o.errorData.doesNotFit=!0,o):(a.updateStorage(A.stepName,{text:t}),a.updateMetadata(A.stepName,{text:s}),(i.defaultCleared||!A.data.deleteDefaultOnFocus)&&a.setMandatoryFulfilled(A.stepName,!0),o.command=new G(r),o)}async selectVariant(t,e,A,a,i){const s=await this.selectVariantCommand(t,e,A.getStepStorage(t.stepName)||{},A.getRegionElements(t.stepName),A,a,i);s&&(s.command&&A.getCommandDispatcher()(s.command),s.followup&&await s.followup())}createTextFillSpotColor(t,e){const A=t.colorProfile;if(A){const a=(A.name||"").replace(/\s/g,"-"),i=a.lastIndexOf("/"),o=a.slice(i+1).slice(0,-4);if(!e.namedColor)throw new Error("variant named color not set!");return{profileName:o,namedColor:e.namedColor}}}async reload(t,e,A){var c,l,g;const a=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),o=Object.values(A.layouts).map(d=>d.elements).flat().filter(d=>d.stepName===t.stepName),r=t.option;if(a!=null&&a.selectedVariants){const d=a.selectedVariants[0].id;if(r&&d){const B=(c=r.variants)==null?void 0:c.find(h=>h.id===d);if(B){const h=await this.fontDataFromVariant(B),C=o.map(m=>({id:m.id,region:m.stepRegion})),u=(l=a.storage)==null?void 0:l.color,w=(g=a.storage)==null?void 0:g.text;await e.setSelectionsAndElements(t.stepName,[B],C,async()=>{e.updateMetadata(t.stepName,{color:u,text:w}),e.updateStorage(t.stepName,{text:w,inputText:w});const m=o.map(p=>new aA(p.id,h)),f=new G(m);e.getCommandDispatcher()(f)});const{command:E}=W.updateInputText(w||"",o,t,e);E&&e.getCommandDispatcher()(E)}}}}getDefaultColorVariant(t){const e=t.colorOption;if(e)return $.getDefaultVariant(e)}getDefaultColor(t){const e=t.colorOption;if(!e)return;const A=$.getDefaultVariant(e);return A==null?void 0:A.color}getDefaultImageFillVariant(t){const e=t.imageFillOption;if(e)return $.getDefaultVariant(e)}getDefaultStrokeColorVariant(t){const e=t.strokeOption;if(e)return $.getDefaultVariant(e)}async fontDataFromVariant(t){const e=t.asset;if(!e)throw new Bt(t);const A=e.fileLink;if(!A)throw new vt(e);const a=await It(A);return{assetUrl:A,name:a.names.fullName.en}}async selectVariantCommand(t,e,A,a,i,s,o,r,c){var d;const l=i.markUpdatePending(),g=await this.fontDataFromVariant(e);if(a.length>0){const B=a.map(u=>new aA(u.id,g));if(r){const u=a.map(w=>new Te(w.id,r));B.push(...u)}if(c){const u=a.map(w=>new Je(w.id,c,t.data.strokeThickness));B.push(...u)}const h=await this.changeInputTextWithRegion(t,t.data.size||Oe,g,A.text||"",A,i,!!A.customiseAllText,s,o);return h&&B.push(h),{command:new G(B),followup:async()=>{i.markUpdateCompleted(l),await i.setSelectionsAndElements(t.stepName,[e],a)}}}else{const B=await this.createTextboxRegions(t.stepName,e,t.data,g,A,i),h=await this.changeInputTextWithRegion(t,t.data.size||Oe,g,((d=B[0])==null?void 0:d.newElement.input)||A.text||t.data.defaultText||"",A,i,!!A.customiseAllText,s,o),C=B.flatMap(w=>w.commands);if(r){const w=B.map(E=>new Te(E.regionElement.id,r));C.push(...w)}if(c){const w=a.map(E=>new Je(E.id,c,t.data.strokeThickness));C.push(...w)}return h&&C.push(h),{command:new G(C),followup:async()=>{i.markUpdateCompleted(l)}}}}injectReplaceableText(t,e){return e.replaceableText?e.replaceableText.replace("{{}}",t):t}async createTextboxRegions(t,e,A,a,i,s){if(!A||!A.regions)throw new Error("Step data not supplied");const o=i.text||A.defaultText||"",r=this.getProcessedInput(o,A,!1),c=async g=>{var C;const B=s.getLayouts().find(u=>u.panelId===g.panelId),h=b();try{if(!B)throw new me("Failed to find layout for region: "+g.panelId);const u=A.colorOption;let w;if(u&&u.variants){const v=u.variants.find(H=>{var V;return H.id===((V=u.defaultVariant)==null?void 0:V.id)})||u.variants[0];w=this.createTextFillSpotColor(u,v),s.updateStorage(t,{colorProfileAssetKey:(C=u.colorProfile)==null?void 0:C.key})}const E=await this.getDefaultColor(A),m=E||"#000000",f={stepRegion:g,stepName:t,align:this.textAlign(A),fill:i.color?i.color:m,fontSize:A.size||Oe,fontData:a,id:h,layer:g.layer,layerIndex:g.layerIndex,rotation:g.rotation,text:r,input:o,type:N.Textbox,vertical:A.vertical,x:g.left,y:g.top,height:g.height,width:g.width,immutable:g.immutable,verticalAlign:A.verticalAlign||"middle",curved:A.curved,paths:A.paths,fillSpotColorDefinition:w},p=[],I=new Map,D=new Map;if(!f.fontData)throw new L("Failed to resolve font data for text.");const[F,x]=Vt(f.fontSize,f.fontData,{left:f.x,top:f.y,width:f.width,height:f.height,rotation:f.rotation,panelId:""},[r],{size:A.size,minSize:A.minSize,maxSize:A.maxSize});I.set(f.id,F),D.set(f.id,x);const Y=A.curved||A.vertical?r:(x||[]).join(`
1375
- `);p.push(this.generateTextChangeCommandsForRegion(F,A,f.id,Y));const P=new z(f,B);return{regionElement:{id:h,region:g},commands:[P,...p],newElement:f,fontData:a}}catch(u){throw console.log(u),new Ee("Error adding font to region")}},l=await Promise.all(A.regions.map(c)).catch(g=>{throw g instanceof Ee?(tn.setLatestToast("Failed to load font.",re.Error),g):g instanceof me?g:new Error(g)});return await s.setSelectionsAndElements(t,[e],l.map(g=>g.regionElement),async()=>{s.updateMetadata(t,{text:o}),s.updateStorage(t,{text:o})}),l}generateTextChangeCommandsForRegion(t,e,A,a){const i=[],s=new Za(A,a);if(i.push(s),!e.size){const r=new Xa(A,t);i.push(r)}return new G(i)}async changeInputTextWithRegion(t,e,A,a,i,s,o,r,c,l){const g=(a||"").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,""),d=this.getProcessedInput(g,t.data,o),B=s.getRegionElements(t.stepName),h=new Map,C=new Map;for(const f of B)if(f.region){const[p,I]=Vt(e,A,f.region,[d],{size:t.data.size,minSize:t.data.minSize,maxSize:t.data.maxSize});h.set(f.id,p),C.set(f.id,I)}const w=(()=>{if(t.data&&t.data.maxLength&&d.length>t.data.maxLength)return l&&l(!0),{info:"0"};const f=s.getProfanities(),p=Ve.split(d.toLowerCase());for(const I of p)for(const D in f){const F=f[D].toLowerCase().replace(/\s/g,"");if(I===F)return r(!0),{error:"Blocked profanity."}}return!t.data.vertical&&!t.data.allowNewlines&&(d.includes(`
1376
- `)||d.includes("\r"))?(r(!0),{error:"Cannot span multiple lines."}):!t.data.curved&&!Array.from(C.values()).every(D=>D)?(r(!0),{error:"Does not fit."}):(r(!1),{info:(t.data.maxLength-d.length).toString()})})();if(w.error){c(w.error);return}if(c(`${w.info} characters remaining`||""),l)return;s.updateStorage(t.stepName,{text:g}),s.updateMetadata(t.stepName,{text:this.injectReplaceableText(g,t.data)}),(i.defaultCleared||!t.data.deleteDefaultOnFocus)&&s.setMandatoryFulfilled(t.stepName,!0);const E=[];for(const f of B){const p=t.data.curved?d:(C.get(f.id)||[]).join(`
1377
- `);E.push(this.generateTextChangeCommandsForRegion(h.get(f.id)||1,t.data,f.id,p))}return new G(E)}}const W=new oo;class PA{}const ro="data:application/font-woff;base64,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",co=`<?xml version="1.0" encoding="iso-8859-1"?>
1378
- <!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
1379
- <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
1380
- width="289.691px" height="204.059px" viewBox="0 0 289.691 204.059" enable-background="new 0 0 289.691 204.059"
1381
- xml:space="preserve">
1382
- <g id="Layer_3">
1383
- <g>
1384
- <g>
1385
- <defs>
1386
- <path id="SVGID_1_" d="M132.799,0L132.799,0c-2.85,0-5.611,0.376-8.204,1.119c-6.512,1.865-14.407,8.455-17.575,17.447
1387
- c-5.374,1.759-16.263,6.039-18.474,16.876c-12.301,4.695-59.215,23.718-76.41,46.864c-1.783,2.067-14.076,17.86-11.873,42.198
1388
- c2.083,23.017,14.66,39.637,20.03,46.733c0.496,0.655,0.925,1.223,1.271,1.697c3.272,4.502,16.448,20.198,29.967,27.96
1389
- c0.985,0.565,2.526,1.337,3.598,1.671c9.286,2.898,13.053,0.684,13.053,0.684l-5.734-6.704
1390
- c-0.113-0.047-1.555-2.104-2.024-3.528c-0.401-1.1-0.683-3.708,1.941-8.822c1.92-3.74,8.466-11.905,30.74-24.556
1391
- c19.286-10.953,45.665-22.672,78.404-34.831c0.384-0.138,43.36-15.521,71.448-17.843l0.084-0.007l0.084-0.01
1392
- c0.056-0.006,5.722-0.659,11.761-0.659c7.122,0,10.06,0.898,11.094,1.355l0.378,9.638c0,0,5.87-4.852,7.88-7.117
1393
- c2.01-2.264,12.031-11.822,14.79-47.407c0.084-0.941,1.244-14.374,0.202-25.831c-0.428-4.706-2.167-9.042-5.03-12.54
1394
- c-4.914-6.004-15.065-13.686-35.521-16.2c-0.84-0.118-8.692-1.176-21.503-1.176c-14.431,0-29.204,1.305-43.952,3.882
1395
- c-1.858-1.395-4.78-2.782-9.053-2.782c-0.427,0-0.861,0.014-1.303,0.043c-1.604-2.318-4.231-4.531-8.237-5.259
1396
- c-0.396-0.076-1.797-0.315-3.752-0.315c-0.897,0-1.798,0.051-2.676,0.152h-0.001c-0.244,0.007-1.149-0.008-2.428-0.517
1397
- c-0.623-0.317-2.157-1.062-3.567-1.46c-0.945-0.267-2.142-0.54-3.842-0.54c-1.387,0-2.951,0.186-4.78,0.569l-0.214,0.045
1398
- l-0.073,0.023c-0.141,0.032-0.727,0.154-1.455,0.154c-0.378,0-0.727-0.033-1.036-0.098C139.516,0.637,136.489,0,132.799,0z"/>
1399
- </defs>
1400
- <clipPath id="SVGID_2_">
1401
- <use xlink:href="#SVGID_1_" overflow="visible"/>
1402
- </clipPath>
1403
-
1404
- <radialGradient id="SVGID_3_" cx="0.6661" cy="211.1478" r="1" gradientTransform="matrix(196.7466 -33.1074 59.2188 355.3871 -12531.9229 -75128.1562)" gradientUnits="userSpaceOnUse">
1405
- <stop offset="0" style="stop-color:#31006F"/>
1406
- <stop offset="0.7044" style="stop-color:#31006F"/>
1407
- <stop offset="0.9025" style="stop-color:#8663A8"/>
1408
- <stop offset="0.9837" style="stop-color:#380874"/>
1409
- </radialGradient>
1410
- <path clip-path="url(#SVGID_2_)" fill="url(#SVGID_3_)" d="M289.231,36.928c0-15.893-21.025-34.603-52.712-35.045
1411
- c-15.771-0.22-99.017-1.969-102.404-3.731C132.43-2.669,102,8.514,99.071,14.978c-1.352,2.989-12.46,12.774-12.087,16.225
1412
- C43.908,47.213,14.509,73.752,3.19,93.894c-4.256,7.574-5.912,24.772,1.863,48.426c7.171,21.815,39.719,65.369,55.762,70.653
1413
- c34.873-19.08-3.701-15.168,25.189-33.173c37.467-23.352,96.365-43.82,128.896-51.007c51.454-11.366,72.09-9.938,70.905-8.055
1414
- C293.781,108.06,291.07,57.024,289.231,36.928z"/>
1415
- </g>
1416
- <path fill="#F4F5F5" d="M273.502,102.985c0,0-0.484,7.046-0.92,8.889l-0.856,0.768l-1.487,1.343c0,0,0.746-3.28,0.676-7.538
1417
- L273.502,102.985z"/>
1418
- <g>
1419
- <defs>
1420
- <path id="SVGID_4_" d="M273.495,103.048l-0.914,8.826l-6.223,5.407l-0.378-9.638c-3.51-1.84-20.124-1.91-40.523,1.965
1421
- c-20.398,3.875-55.726,13.5-108.591,37.875c-52.865,24.375-56.042,40.035-56.3,41.165c-0.258,1.129-0.609,2.871-0.246,4.106
1422
- c0.363,1.234,1.566,3.062,1.566,3.062c0.622,0.875,6.294,7.434,6.294,7.434c-0.243,0.139-0.713,0.296-0.713,0.296
1423
- c-3.776-1.363-10.024-5.048-12.507-6.55c-0.105-0.059-0.211-0.109-0.316-0.168c-0.213-0.126-0.425-0.267-0.634-0.411
1424
- l-0.127-0.079l-0.016-0.022c-4.346-3.133-7.493-10.523,1.153-21.838c7.623-9.975,16.641-15.494,27.199-21.737
1425
- c35.97-21.271,88.653-41.928,128.445-51.065c20.468-4.7,37.871-6.713,47.404-5.994
1426
- C270.766,96.641,274.312,100.216,273.495,103.048z M103.152,50.182c-0.754,0.298-4.411,1.78-5.162,2.081
1427
- c-46.711,18.73-75.543,39.262-85.429,55.22c-4.89,7.894-6.183,14.713-7.333,23.376c-0.528,3.979-0.264,9.917,0.182,13.905
1428
- c0.098,0.872,0.196,1.558,0.285,1.837c-6.447-20.414-0.184-36.278,3.696-43.319c10.903-19.787,49.756-42.606,92.09-58.743
1429
- C101.625,47.168,102.123,48.443,103.152,50.182z M289.642,46.027c0,0-1.68-8.208-8.18-16.932
1430
- C281.44,29.064,260.598,16,235.788,15.96c-15.584-0.025-35.217,2.462-56.404,6.836c0.858,0.69,2.004,2.132,1.76,4.812
1431
- c21.139-4.514,40.632-7.022,56.269-6.997c16.325,0.026,32.385,3.661,38.959,8.397c2.862,2.062,6.187,5.337,8.039,8.968
1432
- c0.562,1.011,3.167,5.866,5.214,12.307C289.626,50.282,289.762,47.693,289.642,46.027z"/>
1433
- </defs>
1434
- <clipPath id="SVGID_5_">
1435
- <use xlink:href="#SVGID_4_" overflow="visible"/>
1436
- </clipPath>
1437
- <rect x="282.522" y="30.129" clip-path="url(#SVGID_5_)" fill="#95979A" width="7.146" height="21.322"/>
1438
-
1439
- <radialGradient id="SVGID_6_" cx="0.6661" cy="211.1478" r="1" gradientTransform="matrix(270.0389 19.3946 -19.0497 267.9429 3989.5959 -56677.875)" gradientUnits="userSpaceOnUse">
1440
- <stop offset="0" style="stop-color:#000000"/>
1441
- <stop offset="0.0996" style="stop-color:#242425"/>
1442
- <stop offset="0.2741" style="stop-color:#4E4F51"/>
1443
- <stop offset="0.5029" style="stop-color:#757779"/>
1444
- <stop offset="0.7746" style="stop-color:#A6A8AB"/>
1445
- <stop offset="0.8165" style="stop-color:#E2E3E4"/>
1446
- <stop offset="0.8338" style="stop-color:#ECEDED"/>
1447
- <stop offset="0.8581" style="stop-color:#F2F2F3"/>
1448
- <stop offset="0.9255" style="stop-color:#F3F4F4"/>
1449
- <stop offset="0.9497" style="stop-color:#85878A"/>
1450
- <stop offset="0.9601" style="stop-color:#77787B"/>
1451
- <stop offset="0.9911" style="stop-color:#C8CACC"/>
1452
- </radialGradient>
1453
- <path clip-path="url(#SVGID_5_)" fill="url(#SVGID_6_)" d="M274.97,104.208c-1.015,1.477-1.895,7.095-2.389,7.667
1454
- c0.266-0.396-6.223,5.407-6.223,5.407S53.633,196.961,60.248,199.321c-1.672-0.501-3.655-1.4-5.602-2.491
1455
- c-4.713-2.786-8.78-10.369,0.376-22.35c7.623-9.975,16.641-15.494,27.199-21.736c35.97-21.271,88.653-41.929,128.445-51.066
1456
- c20.468-4.7,37.871-6.713,47.404-5.994C271.591,96.703,276.421,101.309,274.97,104.208z M101.481,44.54
1457
- c-42.334,16.137-81.187,38.956-92.09,58.743c-3.88,7.042-10.143,22.905-3.696,43.319c-0.089-0.279-0.188-0.965-0.285-1.837
1458
- c-0.446-3.989-0.711-9.927-0.182-13.905c1.15-8.662,2.444-15.482,7.333-23.376c9.886-15.959,38.718-36.49,85.429-55.219
1459
- c0.752-0.301,4.408-1.784,5.162-2.081C102.123,48.443,101.625,47.168,101.481,44.54z M235.789,15.959
1460
- c-15.583-0.025-35.217,2.462-56.404,6.835c0.858,0.69,2.004,2.132,1.76,4.812c21.139-4.514,40.632-7.022,56.269-6.997
1461
- c16.325,0.026,32.385,3.661,38.959,8.397c2.862,2.062,7.305,5.886,8.059,9.237c-0.04-1.016-0.352-2.27-0.408-2.911
1462
- C283.11,25.107,267.1,16.009,235.789,15.959z"/>
1463
- </g>
1464
- <path fill="#DCDDDE" d="M60.273,199.427l7.908,3.825l-5.24-6.101C62.941,197.152,58.272,198.786,60.273,199.427"/>
1465
-
1466
- <radialGradient id="SVGID_7_" cx="0.6661" cy="211.1478" r="1" gradientTransform="matrix(270.0424 19.3949 -19.05 267.9464 3989.6995 -56678.5859)" gradientUnits="userSpaceOnUse">
1467
- <stop offset="0" style="stop-color:#000000"/>
1468
- <stop offset="0.0996" style="stop-color:#242425"/>
1469
- <stop offset="0.2741" style="stop-color:#4E4F51"/>
1470
- <stop offset="0.5029" style="stop-color:#757779"/>
1471
- <stop offset="0.7746" style="stop-color:#A6A8AB"/>
1472
- <stop offset="0.8338" style="stop-color:#ECEDED"/>
1473
- <stop offset="0.8581" style="stop-color:#F2F2F3"/>
1474
- <stop offset="0.9255" style="stop-color:#F3F4F4"/>
1475
- <stop offset="0.9601" style="stop-color:#77787B"/>
1476
- <stop offset="0.9911" style="stop-color:#C8CACC"/>
1477
- </radialGradient>
1478
- <path fill="url(#SVGID_7_)" d="M273.283,103.591c-1.014,1.477-1.926,2.342-2.419,2.914c1.213-1.808-4.269-10.909-55.135-0.044
1479
- c-20.898,4.464-58.364,17.017-91.77,32.224c-14.657,6.627-44.582,21.095-57.613,32.959c-12.456,11.341-14.277,24.658-5.817,27.676
1480
- c-1.672-0.501-3.937-1.4-5.884-2.491c-4.713-2.786-8.78-10.369,0.376-22.35c7.623-9.975,16.641-15.494,27.199-21.737
1481
- c35.97-21.271,88.653-41.928,128.445-51.065c20.468-4.7,37.871-6.713,47.404-5.994
1482
- C271.591,96.703,274.735,100.692,273.283,103.591z M101.481,44.54c-42.334,16.137-81.187,38.956-92.09,58.743
1483
- c-3.88,7.042-10.143,22.905-3.696,43.319c-0.089-0.279-0.188-0.965-0.285-1.837c-0.446-3.989-0.711-9.927-0.182-13.905
1484
- c1.15-8.662,2.444-15.482,7.333-23.376c9.886-15.959,38.718-36.49,85.429-55.219c0.752-0.301,4.408-1.784,5.162-2.081
1485
- C102.123,48.443,101.625,47.168,101.481,44.54z M235.789,15.959c-15.583-0.025-35.217,2.462-56.404,6.835
1486
- c0.858,0.69,2.004,2.132,1.76,4.812c21.139-4.514,40.632-7.022,56.269-6.997c16.325,0.026,32.385,3.661,38.959,8.397
1487
- c2.862,2.062,6.771,6.064,8.179,9.197c-0.546-1.213-0.441-2.314-0.498-2.954C283.141,25.023,267.1,16.009,235.789,15.959z"/>
1488
- </g>
1489
- </g>
1490
- <g id="Layer_2">
1491
- <g opacity="0.7">
1492
- <defs>
1493
-
1494
- <rect id="SVGID_8_" x="112.559" y="3.607" transform="matrix(0.1079 -0.9942 0.9942 0.1079 82.6225 182.4761)" opacity="0.7" width="60.856" height="83.188"/>
1495
- </defs>
1496
- <clipPath id="SVGID_9_">
1497
- <use xlink:href="#SVGID_8_" overflow="visible"/>
1498
- </clipPath>
1499
- <g clip-path="url(#SVGID_9_)">
1500
- <g>
1501
- <defs>
1502
-
1503
- <rect id="SVGID_10_" x="112.559" y="3.607" transform="matrix(0.1079 -0.9942 0.9942 0.1079 82.6225 182.4761)" width="60.856" height="83.188"/>
1504
- </defs>
1505
- <clipPath id="SVGID_11_">
1506
- <use xlink:href="#SVGID_10_" overflow="visible"/>
1507
- </clipPath>
1508
- <g transform="matrix(1 0 7.450581e-09 1 -7.629395e-06 0)" clip-path="url(#SVGID_11_)">
1509
-
1510
- <image overflow="visible" enable-background="new " width="636" height="465" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnwAAAHRCAYAAADwh2T7AAAACXBIWXMAAAsSAAALEgHS3X78AAAA
1511
- GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAyOdJREFUeNrsvQmYJddVJnhuRLwt
1512
- X26VSlWpnC4ttiTLwrIMwiC7PcYG3MYbiw0NxgZ6eub7hvVjuoH5mOlvtp6mu5mmm8GAaRpk424w
1513
- tpFNgxdZNjZehCRbaClbaLNcUqmcVapSKisrt5dviYiJGxXnvT/OuxEvsyqztjz/p9B7GW+tFxH3
1514
- /vc/5/yHSKFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKh
1515
- UCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQ
1516
- KBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAo
1517
- FAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgU
1518
- CoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQK
1519
- hUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqF
1520
- QqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVC
1521
- oVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKh
1522
- UCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQ
1523
- KBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUik0gjmNj
1524
- t628ZmJi0ktuvEaj4We77OvtPj/bvGzfdnw/n7dOp+u1Ox0vDENvs9/bPqfX6xl4ncfvF0WRr2eA
1525
- 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
- 0CPfmvcWT570EnLWJ3l2W1o6ZeaPHh35vZeXVwy+rtVqGbsvIYEp+dMzQKFQKBQKxa5AQqbM4WeO
1527
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +07CkXnH0d33fJW+//teN/ScvXv3GRsSPXXqJM3Pz/M+mpycpOPHj9Pa2qqfKVySRHmZqodkih9D
1544
- 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
- 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
- Er2DBx8amqMSItcPbybP8xYWFuLktVGyP/Z9j7rdrmk2x73Z2Vlj35eGVTNL5uoZ0eONbVWY7NVo
1547
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- YiV8CoVCobiQ4NkqgdN5eehjR0DIuICCFbgqkDQmfAENzI3RPFkSvBA2WRTBZJLVvbGM2DHRY+K3
1567
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- EiIY6uWphE+hUCgU20v6DA0bByOZkyFd7m3LBKJBeVsRJnBI+EgQPu54IVUiDFX6Ql3CnL6ogIjE
1605
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 0UAxY2+7MoWPlUPuhDIGhA/D8lK9dfUiLlL40Ei7B+dFm/KVvkT59noxDcK+/P3l+/dqtRodOvRN
1618
- +t3f+e3+g5WgQqcbxCjhUygUCoWC6rV8K9S77/kKjY83aWVl2XY1IBquOpV+cJURm6t3LRK+iNy5
1619
- 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
- DayoLSN8RHmzaq7SlebNsrKXu3C0aGBGzZW+/Y4cExOTad9d23OXFyoW9hzejVDCp1AoFAonwjCk
1621
- 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
- 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
- GxclfAqFQqFQpDl7ViFh/P19X00Jnw2HZdYXOJG7VD4XySvaX5SrRg7SJ8O8LrLmUvok0bvQ43qj
1624
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- U7M5btbW1lIVp9lset1ul1UV7OOKJstT2eQ8nm3YPxdVIbRk2Wov2wuZsO00pELmUltd+ZRMjpiU
1634
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 8vQ7JIuUXT0eqMKnUCgUlyiMMaUqx6/+yq+ar3zlHuJJsVIJrMFyOrHb+1mhhsubjYs0OFdPhnM5
1648
- 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
- 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
- M9l2WbbZ+3uSbZpOmy6j4TLn8SHpO1M7D8U2rQloZxXSMuUvAsLWBRJnSR2re1bNWxOb3cdGy0gM
1651
- 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
- cil5fIJm9uxJ9z2/eNI1wZlGo0HT09Oporew8Fxk3ye5tR000sdtocb4eNPLWqhxGy0mfLJrxnS2
1653
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 8rqkyl4OKqcrFArFNqJWPZ2W9tDBrw8zPcsCk5soijybWwfWKWWWF659rjZSLsJXpbzhLiprbKrM
1670
- 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
- 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
- 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
- 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
- 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
- yteembmst7a2llqwHD9+PEzup9eCrcrd7V01XPD1J1AoFIrtw/Fnj5uE7BlbFGH97sIwTD3zlpeX
1676
- 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
- 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
- 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
- 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
- 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
- Ka/wMVnjzy8L6bKCx0SP32cMSCIWauDn+yMmdoUCF0Se2Hxypy5g3qptoBFz27TMYJwXGqH+tEr4
1682
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- o5fddJP+QLsQBw5caZO7zeHDT6eGyMlckRK8zEIlhVV/rUqwBbd+S/ZSdc9ariRksWJz+SgfnrIk
1698
- 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
- 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
- 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
- 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
- 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
- dt5g26GIBgbNvLCxZDCq1+txstCKkmvQWjDH4+NNm6drCZ8yvpIDoFBclLjpppd7X//619L7c3Nz
1704
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- OGFxu7JxuLUq3iydVvW4YMPet2HeaRpU7zLhQ887Q8OqIvbN7TlIKIkFDn43nki9AoIn9406x3UO
1720
- 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
- x2ut0lVccLjv7x8wzxx+xnzkI39OjzzyD4aJnjGerapNCV2z2QxsVeXKykpQsBqsCrUEPcaYGHrV
1722
- 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
- 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
- lWy++F74d4WG27T5jvc8Wy89JXyK7RaguFUaF3WENKjS5fBvmwa5fxEQx5wKbzvrdLsdetlNr6CP
1725
- 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
- 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
- KaHwXiVTgCugblUd5D+g8hy+HuXNjnHiYbsIJIFykSEJZl0QTNm9wqfhHEMaobq5QrpY5OHyPSPH
1728
- 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
- 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
- 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
- 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
- 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
- WjoQJKTLW1x8vmK7GNiL++abX+EdPPjQhCB8sh+oLxQQrgZLCV/y/uvZANGNojCd0JP372TPiV77
1734
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- aLcXb9j2Y7bAxYa9k5W067cINjkOFSlskVAKJHGpwvFmJW8MCFUdiJ3sVcthIc9xDoZiomnD/Y3s
1744
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Lj6fEj3bQnG3Q3P4FOcU+/fvt3l65plnDnu26OL48WeJ3O7qrIo0YBLH/KdJuMXG9BNiGxOTrqzQ
1753
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 24SJnMNxk0D4sIijRsNVkHWh8HVpEML1aGDNwpNyCyblXvL9rOEzt3Uzhw4d2uzK9ZKEHUDn5uas
1769
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 2eGJmcOumFvFSk09U2vqlDfORQWwQXkvNqyixERgNNKNQc2rkLvQo8wn7ZKZmC15tyrf0aPHzMxl
1779
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 2Jufn0/99RJSb2666eUm2S+PaQWOEYbcpakwh+THKZ+75lKByxS+riB87JXYA4KFvZh9GlaEK1Ss
1792
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- AIZi4cdbCM/h1ofdwVimvFAJ3y5B5pmXEr8vfPGu+GMf+6h5321/FNtOCQcOXElHjjzjOZQwWV0o
1800
- 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
- TdCgv3EDCD/a5mBY2FWsUEb4WOULBDnvidU+Fg/5VFwUsW2cecS5EpG7VZRCoRg9LoViwdcT98sW
1802
- 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
- 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
- wufqtbnd5M/fxOKgqGBIoVAMkzPZy1qSPVb5XDZNuRCw5/l9kler1Yh76yrhU1zynC/LyTK2N+zE
1805
- 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
- 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
- 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
- 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
- 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
- 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
- rCynbdAS4udHUejZHD67CRVEetz5MHFjxSwTOmmrUmTCK1tvyb/RQFmSkKBgYkViYByDhiQOZWFC
1812
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- cYXiYlbwzpYUmS1+F5kSI4keh3O5qG4527igjv/msXoxe81aNka7XBcUqvBdHNi7d5/PPW+tl97M
1845
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- u4nEQuHjhQBW3+6hQUXuvuwcmaZBSLcOC4CxHTruClWQLoZz6WwXLEULklgQKrPNn4+ErOizY8fi
1856
- 1mWCXrQo5bENFb1YLKJXgPBx5AVTak5kt+yPugwqn33NYjJPRsk82avVar12u52O0a9+9Wuiu+++
1857
- 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
- 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
- CmoR4Yto2Iagnb22nb0fqn+RIO+ynRqGdovCuBX4fgqFYvsEmLjg/tkS4rjg1lXcVtSLPHYoe9EI
1860
- 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
- +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
- YFFGnfI9UesOJQ/z/7DCF330ZNjWKyF4O9m+isRA5UoCltVbbcdgIrc1cpf9x44Veez492JxCiqw
1863
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- kvZKFD5smYYqLJoYI1lvAMHC99lKOBcnpEiojV3YhxOKrETmz5HEFY2+vYLvpStsxWYJD5Us8lxK
1901
- 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
- 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
- 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
- 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
- 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
- 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
- VeO0EtDr6qJTCd95+y3NW9/6g94nPvHXUnLHECuGcNk4uYjwjYnHXaa4aPQbCMUmKFgp4rH3NjmI
1908
- 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
- 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
- 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
- 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
- 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
- nTw4rVE+2ZcJnzTuXIHnyUGmR+5m4Tj5VByEDwkRFs+MOwgftyibFoRPtrZz5cptNjG5rApQKn8y
1914
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- KyMAspesJH34/jEN56xhb9gVobT1KJ+H2xtB+AIq98GTCmNbfM5JGuTVucbILg2HuQ1tsvivVqt1
1925
- Go1GXK3WrEIXrawsp79Lsi+anp6Ojx07xu9vzZPT7x1FYZ9wJ3+ogqcK37lDvVEvfAzIni9WWth5
1926
- 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
- OQZhvAYwhGlA2UM1D8kZEr662FDxq5Db7Ppc2uF4lE8+d/mhGccgrp57iu2Ay29OFkjxeYqLQVxE
1928
- 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
- 5yB8RYU2pcfDWqkkG0myb8lfFqK1/nqWEMa+70W2a0a7Habf3fN8G8rVK0gJ37mDZ7yyidRlaGxA
1930
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- oWqeEr4LC4snT9Kn7rgzvZje/Oa30qc+9Yn0Qmu3O0YQCJ7osRIXQ7XTmZrHZG8ClB8kCBXK54yh
1948
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- rPw8yle9VijfqkxWfG2IFa5c0WKVGlqqcLhjidwNt3miWKfyXrhEwzmQGEpnexwOtaM1TjV7HHP6
1958
- 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
- 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
- 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
- 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
- a5QP22I1HQ7ssliE/y0VMUFINZYJ3jgQccynHIPXVOFYMfmThC+g4Vw9j4qbxCsUlyJBdClVPQf5
1963
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- yyrdwKHmEQ37ZCGhC6ncR8voNaq4yAmfTPbvCYWMr282T1/JCJYdB5bg2g6BRDHh4+sQx0xcgJkR
1973
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 5XEwBcfJFcaN9RpVXMQKn6t1YReub1bNlrPtVKbqncweO0n5/Fwu3GDC9/+z9y5Aktz3fd+ve147
1985
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 6A1TdcyOfq+sO8Y1ZpRp1Cw5pHwDhTZGFjG3aSJ6m0r0tSk/NkhP2bC2Km2zsQ7UulmjoT1DUUq1
1994
- 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
- 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
- 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
- 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
- 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
- tHZPd8nay9qXM3ZsD0Tw6Q5XXePnqouVKJu2dRoxPk6EmTSW9FdXV+U1B8mBf3T33W+OL126FLHx
2000
- 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
- wV1PyVGav7y8LIKhTqNdnmK/wsLhzuwynx6joeXHsUxUaGGoR2uVabLH3l58R/GECF9Io3YBWuhd
2002
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 66Whbmuoy7qb145E06l1a9JaNN7ONe4OIg7cbFFYJOxcv0tdUqG7XKXcQhsh299wXCBC7fUxFU/k
2040
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- LafCL9kGp5G95eVl7RxA7U7Hq8/MjP384jj2eonYC4MgtUMJwpB63R7Nz8+lt1+5ukLNY4u8Ud9+
2049
- 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
- 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
- zUAJvo4RfjqSp7ty9RQN/RjpMj+/wK4IMU+3+NjHPk6/8Rv/fPCBWDNj59FrGHrVSrJpqGwfV7P/
2052
- ne/5tLW1RUEQ0skTx9Pr2YolTv7xfWdnZ3ciyAGA4DtC5IQOi7zMcFkMfnXtnh7DZVO9ZRodpVai
2053
- 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
- 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
- 2dgi8OS0lUXy1rJI3qA5IzmAXku2qf1ardZLDq7Tx0kOqPuLi4thIvJY7MkkjJzYSz+YKaJv5XIZ
2056
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 5Cmv1drkpo3BtokjeojqAQDBdxDx1RG4Pz+/4C0szHuXLl0KGo1GJ9mQzdEw0qdrZ9o09LnS6aEa
2099
- 5ceB9dUOxYo9EVI6JSQpXmmE2MyEk3QDxmrDPs0cT9dYNl3fE1B+rmaQPZf4CsZKCNbUDkxHBXSU
2100
- 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
- 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
- 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
- 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
- y+eK8sWZgNN1di7BV1KCb0YJVB3Ns92BsGABNwM7JtEudo5th/KzYjfUfeQ3qwVfh4otT4hGLZ5s
2105
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 5VaSDaqfbFAlTSndp7w0skV85nRK1gq+Lo3O0NSCTVKgs9ljcir3WLI0aZjalTTvLA1r/XS90LTf
2122
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Gqv1w3OIHl+t0671IJpy/bqRA1drEqyjfNp2RdK1fF6aNdYpP9O2PT+/EM7NNXqXL18OuEs2+d2n
2131
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- n9LCp5QclZcqlTLX7tkGhSL/rb66TTbiMoOXI3Vi5ryYLRzhO07DCN8J2k7vcoRvjvKp372O8JFD
2145
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- zMdlndQm4jKZpqruJ7V8FSUUbS2s60DDUwdQ9sBIN5dIGleidWKvIpE9rte7li2b2Wk7u37TiMBU
2159
- 9C0tLck4s/R5M488lCoAAA4V8OHbJTzAvN8fzrPc2NigMNx2iuh0BkMKrBmr7PTKNLRYkdFtNRpO
2160
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- K2XCrWeEoAg9qfMTy5aquk+Fhj6V04wLjByCr+N4vSJOJaW7RcMIo0Ty5D3o81IHqOdrR5ubLXrs
2168
- sXfHTzz1YXrfe78LvzkAAAQfGCv4qEDkFdmZeGMEIQQf2A/Bp0WfrY3TPnYSEZMIXyUTTFXKR8rq
2169
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 9CpK+FXM9a76JgBu9MDDij4tpvS0DSv+bN2b3Ece2ze3acHXpdHGDlnX/THreGSEqn6NkXmdPfXa
2181
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- PpeRsm2gctLr96nk+1hLAABHBmzRdrvXjGPnTuP48ROe+Xy1T5n4kM0asSeCr6J2fjUVDfEd4tE1
2189
- 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
- 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
- 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
- 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
- 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
- 9uV9ZlYpWsjGiciLk98YmybnonjJQ0QLCwsUhlHAHbfnzt1HrdYmLS8v08WL76Gf/bmfow998APk
2195
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- adczgbdqBB+LvKtK8G3SsIEj7eB96KG3eF/5yp/FTz754ejppz91I2KrzCV7WX2eN+H9DSJ46m8g
2206
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- Mkg+Xbiej4obL2K10560FE06iMYIQfj43R5C0NbsuXz2dEq37bhupDtXBCRHqpvN7Y7c+fkFiDwA
2224
- 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
- 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
- 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
- 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
- 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
- dY3Oso0ZOxV6t1oYQphO//nYgwgd2dOpXN18IWLvOg2bNjaM6BNxKIJvUDrAHbrHj5+Irl694ioh
2230
- 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
- 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
- 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
- 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
- 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
- Tlez66SOL/XaW1xc3EgEXVr7d/bsXf3XX38tbRhaWlqKlpeXRVACAAA45KCGbx+4++43e8vL3/CM
2236
- 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
- TVK6smzRMJ0rTRppdC8IQv7b6PTp02G/H4StVitt2gjDMA6CAKlcAACA4AOFH2rJ99rttiu16pnL
2238
- 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
- DZs1ZKqGju6lnblRFPWq1Wq4vr4ebG5uBrVaLdF6YQSxBwAAEHxgAiz2Go2GNz8/z+clclck+CSC
2240
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- HtC/ietwkfC0voHWJsWmq4lGayVpwnnXc7hq9niRUgAWe+K3x+n+N7LL17IDBI74rZw9e1fnypXL
2252
- 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
- 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
- 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
- PrAbfuyv/jXvTUtvopde+hqnzrwPfvBD9Cd/8ix9/euvEJ//i794qWjnn+7wE8EXOoSEFiDV7HuU
2256
- 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
- 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
- Tu+5L/4pnT59ml555WW2aqGlpSX64hf/lIeRuiJfA1GRCT4tokSEiFASoVdT5ys0TA3rKJ9P7ukO
2259
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- +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
- v5ptEogdzxPvw3twib5YCT4tNq3gmTR391Zia+x0NC/IxJcVfHrSSX+C4Kuo9+sSfKFD8LWU4NPN
2269
- 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
- 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
- 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
- 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
- 7xV8RrYZxU662FKCb4uGqd6+EZO+Q/TRGMEXOgSfruPT3bsBjU7USAXj/PxC/NxzX0wf+5FH3pbW
2274
- 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
- 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
- XfEzz/xR+hw/+/d+nn7ll38RvywAALiNgC3L4RDlenIGR7zYboWtWdii5RhtW7CcTJY7s8vN7Px8
2277
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- lg2mOMiKHcLUCj6Xp6Id46YteSbCYu/69XX8ugAAAIIPHCBEiFC5XPEWFub7/X7Q39hYL6nbxLpj
2288
- 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
- ISOWrKCyo+ZsCjxUr2lTnW4qYSeLNVvW9X79xcXFOPmyqNvtURAMA36NRiNZ5ujKlcvp+eR+xI0V
2290
- 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
- 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
- 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
- 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
- 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
- RPmuXp9GTZTteq6FsCsVrmsQtc/eWrZw/d41ynfmWkuWQR0gC/ZtsT6acWUhyNTrdcoidmnUT0iu
2296
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- JaK3TkOvPYnqWbEXGMFHjz32blpf36Br195IBRwLOZ3aXVm5mp7y97u8/I30NhGDHAV8/PGLIvLo
2304
- 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
- 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
- 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
- +LiOT4uXRBDYbtOYRn3lXNfvZ5euPa+je3acmqR3bceubqggGs7gtZ6DYtfiK7FXJPj0c2rBt0XD
2308
- 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
- pVLxw3C7lq/RaISJ4AuzBg7tw1ej0Vo4Lapc49Z8Kh6RthPRp9O3upnCCkDx/5NOXambi2hYs9en
2310
- 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
- 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
- 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
- 1bNl+5SP2unUqxZs8jr0bFy96OYNHdUbpHGTzz9i0X3u3H3Ryy//RfT2t78j9jyK//iPn6Enn/oI
2314
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- xsZ6kQ1L6BA2dtlPLz5XDd84c2YtyOxrJiXAdLRQZuq2Ke/DZydtlNX71IJPN4TI4wfqNWhfPW0S
2324
- LaSvkb8Htsc5e/YunqqBFRQAAAAEH9g9LPYoG7FGbl89Lf5c529GxMllwuzqAh43BcOOPguUmBPB
2325
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- YkUEAABwqECE7xAhkb2XXvoaj1qjcrlCnHocI/SmMV/eK8FHBae+EXpF6VfnPN/kPXrJexykrPv9
2335
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- SoRtqdFo5Ea/sUXLX176hk/j09XxFK/5xpSt58V33LGA6B4AAAAIPrD3ZDVnKWzRosSLFV7TePBN
2343
- Wwe3V4yN5rngFG6v101O5+i9731/7rYTJ45jhQAAAACmADV8h1Wp+741/51Ux1cUAdvvkWtFAm8q
2344
- 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
- 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
- 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
- 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
- AAAE39Hjne98V9qwsS2EtoruNo0P3zTs1ySOqeGZwfJ+tdjlGr5qpYIVAgAAAIDgO/zEcexvbm4O
2349
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 5TUaDd8fzXO65tP62eKp83opq9vtrF39OJ5a5PqQ3JE9FnQcvWurxw3V9YNlfn6hW6vVWPgNIn3J
2363
- 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
- NXo9tWjD5bR+b2NjPe52u4PoHmtY3y8lpyXU7QEAAAAQfLcH3LSgp4jF8bbOOnPmTJGQI4fo86YU
2365
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- +fR6dl66cnXTBt++VqvVwmq11mu322EQ9INGoxEmr5Varc1ye5vcG/M8zzaPAAAAAACC7/aFPeyY
2385
- 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
- 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
- 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
- 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
- 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
- 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
- EUOaMHipZcJMInzS1KHTuUR5KxVp2mg7TjuUN2rmWbn8fBzN40YNrt9LX+v58/fT+97/Ae/557+K
2392
- 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
- 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
- hVa32+0rca/r8qQDl+FooDRs+Oo2vq9Hw6idTO/QTRy6i1fuI1HEQB6PO4i72eSMt7/9HfSORx/1
2395
- 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
- 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
- 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
- 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
- QXKfII5j3WChGzJ0HV634Lr0b8IwDC5ceFf0tre9PXrttVe5KSNN+yaCM6rXZ6LNzU00ZQAAAAC3
2400
- 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
- L0St1iaLy/QyC8rjx09EV65cjs3jAAAAAOAWgQjfEeG//rVf9eqNBapVq/T7v/+v4+Xlb9Bjj707
2402
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
2414
- IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 10.4696)">
2415
- </image>
2416
- </g>
2417
- </g>
2418
- </g>
2419
- </g>
2420
- <g>
2421
- <path fill="#ED1C24" d="M174.957,30.203c-0.284-0.646-1.032-1.349-2.281-1.388c-0.213-0.007-0.435,0.007-0.667,0.04
2422
- c-0.904,0.135-1.788,0.676-2.397,1.515c-0.402-0.719-1.081-1.196-1.905-1.321c-0.113-0.015-0.225-0.023-0.335-0.027
2423
- c-0.035-0.001-0.07-0.002-0.105-0.002c0.172-0.292,0.28-0.589,0.333-0.87c0.131-0.693-0.072-1.291-0.545-1.601
2424
- c-0.191-0.125-0.416-0.196-0.65-0.203c-0.414-0.013-0.742,0.159-1.09,0.342c-0.158,0.083-0.322,0.169-0.491,0.236
2425
- c-0.302,0.121-0.62,0.221-0.948,0.31c-0.029-0.454-0.146-0.885-0.436-1.223c-0.197-0.229-0.553-0.506-1.131-0.524
2426
- c-0.063-0.002-0.128-0.001-0.194,0.004c-0.966,0.063-1.745,0.958-2.372,2.727c-0.002-0.19-0.031-0.381-0.09-0.567
2427
- c-0.244-0.763-0.938-1.273-1.766-1.299c-0.319-0.01-0.649,0.055-0.953,0.188c-1.049,0.458-1.616,1.61-1.291,2.623
2428
- c0.025,0.077,0.057,0.15,0.091,0.222c-1.238,0.182-2.105,1.065-2.674,1.944c-0.238-0.137-0.515-0.227-0.835-0.237
2429
- c-0.169-0.005-0.339,0.014-0.506,0.058c-0.744,0.195-1.028,0.664-1.142,1.25c-0.255-0.728-0.738-1.205-1.626-1.278
2430
- c-0.04-0.003-0.08-0.006-0.119-0.007c-0.921-0.029-2.08,0.433-2.367,2.796c-0.036,0.299-0.063,0.607-0.082,0.909
2431
- c-0.185-0.607-0.511-1.198-1.091-1.689c-0.646-0.547-1.254-0.676-1.651-0.689c-0.637-0.02-1.129,0.236-1.377,0.481
2432
- c-0.597,0.589-0.39,1.317-0.29,1.724c0.101,0.407,0.175,0.841,0.148,1.094c-0.193-0.645-0.454-1.168-0.971-1.624
2433
- c-0.483-0.427-1.119-0.664-1.84-0.686c-0.187-0.006-0.378,0.003-0.569,0.027c-1.897,0.236-3.379,1.794-4.103,4.067
2434
- c-0.137-0.23-0.291-0.438-0.46-0.621c-0.752-0.814-1.642-1.242-2.643-1.273c-0.282-0.009-0.576,0.014-0.874,0.068l-0.035,0.007
2435
- c-0.416,0.089-1.162,0.321-1.482,0.869c-0.247,0.423-0.376,1.01,0.169,1.614c-0.218-0.108-0.428-0.184-0.624-0.236
2436
- c-0.283-0.076-0.568-0.119-0.846-0.128c-0.847-0.026-1.578,0.258-1.956,0.761c-0.202,0.269-0.366,0.639-0.279,1.093
2437
- c-0.423-0.205-0.899-0.324-1.389-0.34c-0.248-0.008-0.501,0.011-0.752,0.055c-1.608,0.242-2.789,1.427-3.544,3.038
2438
- c-0.073-0.026-0.149-0.046-0.227-0.059l-0.102-0.013l-0.051-0.002c-0.585-0.018-0.94,0.353-1.176,0.599
2439
- c-0.035,0.036-0.07,0.073-0.108,0.111c-0.072-0.797-0.11-1.449-0.109-2.219c0.002-1.13,0.277-1.776,0.46-2.081l0.108-0.037
2440
- c0.742-0.252,1.458-0.494,2.075-0.713c1.449-0.513,2.455-0.881,3.21-1.315c1.468-0.844,2.565-2.057,2.934-3.245
2441
- c0.274-0.882,0.244-1.625-0.086-2.15c-0.22-0.35-0.557-0.574-0.947-0.631l-0.09-0.012l-0.063-0.002
2442
- c-0.458-0.014-0.795,0.195-1.15,0.417c-0.257,0.16-0.576,0.359-1.07,0.584c-1.027,0.468-2.291,0.943-4.226,1.588
2443
- c-2.061,0.687-4.653,1.655-6.419,3.049c-1.906,1.505-2.48,3.077-2.625,4.121c-0.222,1.504,0.493,1.941,0.939,2.068
2444
- c0.108,0.03,0.218,0.048,0.329,0.051c0.725,0.023,1.146-0.487,1.453-0.86l0.116-0.139c0.058-0.068,0.217-0.242,0.521-0.483
2445
- c-0.311,1.478-0.287,3.07-0.178,4.325c-0.914,0.725-1.319,1.77-1.384,2.545c-0.083,1.003,0.31,1.736,1.028,1.915l0.123,0.029
2446
- l0.115,0.004c0.321,0.01,0.567-0.108,0.757-0.244c0.609,4.554,0.717,8.077,0.29,9.801l-0.016,0.064
2447
- c-0.387,1.52,0.233,2.055,0.822,2.236l0.046,0.014l0.047,0.01c0.123,0.026,0.251,0.042,0.379,0.046
2448
- c1.267,0.04,2.568-0.992,3.313-2.627c0.805-1.768,0.616-5.234,0.038-9.882c0.532,3.639,2.059,5.666,4.39,5.738
2449
- c0.124,0.004,0.251,0.001,0.368-0.009c0.849-0.062,1.602-0.463,2.178-1.159c0.355-0.43,0.617-0.941,0.809-1.457
2450
- c0.11,0.087,0.225,0.168,0.344,0.243c0.554,0.365,1.192,0.568,1.845,0.588c1.091,0.034,2.317-0.442,2.439-1.389
2451
- c0.013-0.096,0.022-0.263-0.018-0.454c1.075-0.184,2.154-1.507,2.94-3.632c0.244-0.61,0.524-1.38,0.754-2.37
2452
- c0.905,1.882,2.357,2.659,3.709,2.702c0.195,0.006,0.395-0.002,0.594-0.025c1.006-0.116,1.957-0.705,2.679-1.659
2453
- c0.437-0.578,0.776-1.268,1.008-2.029c0.451,0.709,1.149,1.203,2.224,1.267l0.046,0.002c1.327,0.023,2.306-0.963,2.955-2.236
2454
- c0.959,1.074,1.995,1.336,2.721,1.359c0.829,0.026,1.462-0.254,1.695-0.376c0.59-0.307,0.946-0.813,0.963-1.342
2455
- c1.498-0.553,1.303-2.42,1.236-3.064c-0.027-0.256-0.048-0.613-0.06-1.022c0.391,3.088,2.039,3.501,2.788,3.524l0,0
2456
- c0.15,0.005,0.304-0.004,0.458-0.026c1.034-0.145,1.704-0.783,1.915-1.46c0.426,0.451,0.991,0.741,1.74,0.764
2457
- c0.067,0.002,0.133,0.002,0.199-0.001c0.842-0.031,1.792-0.53,2.195-1.222c0.463,0.425,1.031,0.713,1.71,0.813
2458
- c0.143,0.021,0.287,0.034,0.429,0.039c1.101,0.034,1.976-0.421,2.642-1.037c0.006,0.012,0.012,0.024,0.018,0.035
2459
- c0.269,0.491,0.752,0.65,0.988,0.699c0.12,0.028,0.256,0.044,0.408,0.049c1.154,0.036,2.81-0.562,3.673-2.358
2460
- c0.97-1.986,0.067-3.915-0.472-5.068c-0.1-0.213-0.194-0.414-0.246-0.554c-0.098-0.265-0.126-0.473-0.126-0.618
2461
- c0.146,0.07,0.336,0.137,0.569,0.144l0,0c0.134,0.004,0.268-0.012,0.4-0.05c0.389-0.113,0.702-0.386,0.881-0.77
2462
- C175.21,31.395,175.199,30.754,174.957,30.203z"/>
2463
- <g opacity="0.5">
2464
- <g>
2465
- <g>
2466
- <defs>
2467
-
2468
- <rect id="SVGID_12_" x="122.62" y="13.483" transform="matrix(0.1079 -0.9942 0.9942 0.1079 82.8799 180.6859)" width="38.995" height="61.358"/>
2469
- </defs>
2470
- <clipPath id="SVGID_13_">
2471
- <use xlink:href="#SVGID_12_" overflow="visible"/>
2472
- </clipPath>
2473
- <path clip-path="url(#SVGID_13_)" fill="#595959" d="M157.669,27.744c0.539-0.235,1.102-0.034,1.257,0.45
2474
- c0.155,0.484-0.156,1.067-0.695,1.302s-1.102,0.034-1.257-0.45C156.819,28.563,157.13,27.98,157.669,27.744z M119.826,43.655
2475
- c-0.307-0.039-0.601,0.927-2.176,1.357c-0.184-1.752-0.28-2.686-0.278-3.95c0.003-1.842,0.643-2.734,0.871-2.994
2476
- c0.889-0.302,1.761-0.595,2.492-0.854c1.426-0.504,2.373-0.855,3.031-1.233c1.285-0.739,2.168-1.752,2.44-2.628
2477
- c0.263-0.848,0.108-1.352-0.159-1.391c-0.268-0.04-0.628,0.384-1.766,0.903c-1.137,0.518-2.508,1.022-4.332,1.63
2478
- c-1.822,0.608-4.417,1.551-6.091,2.872c-1.67,1.319-2.117,2.651-2.225,3.43c-0.095,0.645,0.021,0.83,0.164,0.871
2479
- c0.261,0.074,0.47-0.245,0.779-0.608c0.34-0.4,1.422-1.42,3.907-2.374c-2.038,1.607-1.804,5.732-1.598,7.467
2480
- c-1.159,0.567-1.417,1.691-1.45,2.084c-0.032,0.393,0.058,0.739,0.21,0.777c0.161,0.04,0.533-0.636,1.571-0.962
2481
- c0.69,4.555,1.107,9.428,0.505,11.861c-0.075,0.302-0.256,0.905,0.074,1.007c0.727,0.155,1.8-0.473,2.483-1.972
2482
- c0.704-1.547,0.439-5.103-0.081-9.294c-0.117-0.94-0.224-1.812-0.321-2.628c1.211-0.291,1.874-1.491,2.028-1.952
2483
- C120.088,44.523,120.118,43.702,119.826,43.655z M130.074,51.611c-0.265-0.039-0.868-0.51-1.296-1.466
2484
- c-0.428-0.956-0.667-2.03-0.996-4.399c-0.33-2.376-0.494-2.793-1.161-2.785c-1.585,0.11-1.332,3.047-1.225,4.474
2485
- c-0.121,2.203-0.473,3.913-1.194,3.923c-0.693,0.009-1.276-0.779-1.295-4.642c0.132-5.085,2.759-4.477,3.032-4.377
2486
- c0.26,0.095,0.382,0.213,0.49,0.129c0.164-0.13-0.002-0.695-0.34-1.104s-1.109-0.875-2.144-0.688
2487
- c-2.001,0.292-3.796,3.05-3.633,7.367c0.164,4.356,1.895,6.263,3.668,6.12c2.348-0.172,2.497-4.137,2.494-4.163
2488
- c0.1,0.365,0.627,1.421,1.498,1.957c1.252,0.833,2.599,0.21,2.629-0.029C130.633,51.688,130.339,51.65,130.074,51.611z
2489
- M131.157,36.977c-0.397,0.085-0.709,0.243-0.775,0.358c-0.29,0.497,0.606,0.526,1.43,1.498
2490
- c0.597,0.704,1.088,1.814,1.094,4.28c0.007,2.777-0.854,4.389-0.854,4.389s-0.213-3.202-0.935-5.373
2491
- c-0.606-1.823-1.491-2.673-2.404-2.919c-0.85-0.228-1.487,0.01-1.658,0.238s-0.076,0.389,0.168,0.665
2492
- c0.244,0.276,1.377,1.501,2.216,4.524c0.789,2.842,0.893,3.765,1.024,4.472s0.258,1.386,0.905,1.443
2493
- c0.46,0.04,1.424-0.8,2.219-2.96c0.423-1.054,0.808-2.278,1.011-3.944c0.381-3.08-0.149-4.973-0.91-5.796
2494
- C133.158,37.278,132.392,36.753,131.157,36.977z M139.529,47.213c1.948-0.224,3.569-3.052,2.982-6.673
2495
- c-0.106-0.653-0.375-1.867-0.943-2.583c-0.426-0.538-0.973-0.891-1.403-0.615c-0.26,0.236-0.128,0.378,0.164,1.215
2496
- c0.292,0.836,0.412,1.987,0.38,3.117c-0.039,1.394-0.291,2.961-1.279,2.961c-1.021,0-1.49-1.887-1.492-3.975
2497
- c-0.002-2.093,0.829-4.31,2.061-4.3c0.628,0.012,0.855,0.441,1.052,0.375c0.272-0.091,0.413-0.952-0.313-1.592
2498
- c-0.413-0.365-1.001-0.466-1.56-0.397c-2.419,0.301-3.811,3.434-3.624,6.951C135.752,45.425,137.38,47.46,139.529,47.213z
2499
- M145.628,44.787c1.515,0.026,2.403-2.327,2.68-3.779c0.203,0.594,0.482,1.172,0.864,1.664c1.306,1.69,2.804,1.247,3.31,0.984
2500
- c0.268-0.139,0.403-0.329,0.379-0.45c-0.014-0.073-0.086-0.121-0.221-0.12c-0.761-0.005-1.35-0.307-1.926-1.249
2501
- c-0.545-0.911-0.744-3.102-0.662-6.233c0.076-2.898-0.336-3.145-0.888-3.191c-0.947-0.078-1.215,0.941-1.324,1.842
2502
- c-0.15,1.235-0.122,2.681-0.105,3.1c0.01,0.243,0.023,0.688,0.077,1.236c-0.174,1.228-0.597,3.492-1.341,3.448
2503
- c-0.899-0.054-0.589-3.584-0.614-4.841c-0.02-1.043-0.045-2.252-0.962-3.028c-0.822-0.696-1.46-0.372-1.57-0.263
2504
- c-0.175,0.173-0.065,0.431,0.043,0.857c0.12,0.474,0.2,2.01,0.238,4.057C143.646,40.891,143.24,44.643,145.628,44.787z
2505
- M157.653,33.034c-1.42-0.098-1.575,2.98-1.534,4.971c0.052,2.5,0.824,3.789,2.097,3.61c0.758-0.106,1.073-0.619,1.056-0.869
2506
- c-0.025-0.362-0.44-0.311-0.717-1.207c-0.34-1.504-0.41-2.85-0.249-4.672C158.452,33.225,158.059,33.062,157.653,33.034z
2507
- M159.146,31.495c0.26,0.093,0.283-0.215,1.269-0.659c0.037-0.016,0.075-0.029,0.111-0.043
2508
- c-0.167,0.823-0.362,2.163-0.43,4.646c-0.122,4.802,1.093,5.506,2.084,5.469c0.708-0.026,1.348-0.566,1.35-0.83
2509
- c0.003-0.321-0.308-0.301-0.523-0.704c-0.487-0.802-0.629-2.096-0.625-4.917c0.044-1.726,0.21-3.044,0.374-4.116
2510
- c0.462-0.075,1.018-0.172,1.714-0.317c2.379-0.495,2.569-2.178,2.294-2.358c-0.195-0.128-0.631,0.233-1.238,0.475
2511
- c-0.829,0.331-1.742,0.524-2.532,0.685c0.024-0.163,0.046-0.321,0.064-0.473c0.165-1.38-0.145-1.597-0.572-1.57
2512
- c-0.738,0.048-1.35,1.713-1.615,2.592c-0.501,0.186-0.913,0.419-1.261,0.725C159.065,30.582,158.878,31.4,159.146,31.495z
2513
- M169.767,37.669c-0.163,0.581-1.266,3.171-3.484,2.843c-2.028-0.3-2.627-3.201-2.293-5.576
2514
- c0.252-1.79,1.569-4.898,3.883-4.603c1.266,0.193,1.987,1.876,0.644,4.281c-0.739,1.323-1.79,2.002-2.322,2.279
2515
- c0.213,0.858,0.64,1.375,1.301,1.421c0.713,0.049,1.354-0.274,1.843-0.843c0.154-0.18,0.277-0.33,0.393-0.312
2516
- C169.872,37.181,169.841,37.405,169.767,37.669z M166.053,35.928c0.386-0.343,1.023-1.013,1.459-2.014
2517
- c0.637-1.461,0.445-2.312,0.018-2.358c-0.569-0.061-1.407,1.512-1.485,3.318C166.029,35.25,166.031,35.602,166.053,35.928z
2518
- M174.271,30.85c-0.17-0.386-0.72-0.87-1.799-0.714c-1.189,0.178-2.432,1.418-2.263,3.34c0.164,1.861,0.986,2.894,1.051,4.055
2519
- c0.06,1.08-0.326,1.672-0.87,2.138c-0.257,0.219-0.283,0.328-0.229,0.428c0.054,0.099,0.193,0.148,0.274,0.163
2520
- c0.317,0.085,2.019,0.054,2.875-1.728c0.914-1.871-0.402-3.806-0.759-4.771c-0.391-1.049-0.161-1.942,0.416-2.143
2521
- c0.642-0.224,0.869,0.281,1.138,0.203C174.391,31.739,174.445,31.245,174.271,30.85z M153.379,42.311
2522
- c0.913-0.181,0.801-1.27,0.726-1.99c-0.097-0.932-0.125-3.023,0.072-4.446c0.223-1.611,0.891-3.178,2.191-3.604
2523
- c1.146-0.376,1.619,0.165,1.894-0.117c0.232-0.238-0.183-1.484-1.721-1.509c-1.773-0.029-2.703,2.153-2.97,2.93
2524
- c0,0-0.437-1.385-1.277-1.166c-0.465,0.122-0.385,0.411-0.432,2.009c-0.047,1.596-0.18,3.627,0.031,5.384
2525
- C152.104,41.557,152.467,42.492,153.379,42.311z"/>
2526
- </g>
2527
- </g>
2528
- </g>
2529
- <path fill="#FFF200" d="M157.366,27.533c0.539-0.235,1.102-0.034,1.257,0.45c0.155,0.484-0.156,1.067-0.695,1.302
2530
- c-0.539,0.236-1.102,0.034-1.257-0.45C156.515,28.351,156.827,27.768,157.366,27.533z M119.523,43.443
2531
- c-0.307-0.039-0.601,0.927-2.176,1.357c-0.184-1.752-0.28-2.686-0.278-3.95c0.003-1.842,0.643-2.734,0.871-2.994
2532
- c0.889-0.302,1.761-0.595,2.492-0.854c1.426-0.504,2.373-0.854,3.031-1.233c1.285-0.739,2.168-1.752,2.44-2.628
2533
- c0.263-0.848,0.108-1.352-0.159-1.391c-0.268-0.04-0.628,0.384-1.766,0.902c-1.137,0.518-2.508,1.022-4.332,1.63
2534
- c-1.822,0.608-4.417,1.551-6.091,2.872c-1.67,1.319-2.117,2.651-2.225,3.43c-0.095,0.645,0.021,0.83,0.164,0.871
2535
- c0.261,0.074,0.47-0.245,0.779-0.608c0.34-0.4,1.422-1.42,3.907-2.374c-2.038,1.607-1.804,5.732-1.598,7.467
2536
- c-1.159,0.567-1.417,1.691-1.45,2.084c-0.032,0.393,0.058,0.739,0.21,0.777c0.161,0.04,0.533-0.636,1.571-0.962
2537
- c0.69,4.555,1.107,9.428,0.505,11.861c-0.075,0.302-0.256,0.905,0.074,1.007c0.727,0.155,1.8-0.473,2.483-1.972
2538
- c0.704-1.547,0.439-5.103-0.081-9.294c-0.117-0.94-0.224-1.812-0.321-2.628c1.211-0.291,1.874-1.491,2.028-1.952
2539
- C119.785,44.311,119.815,43.491,119.523,43.443z M129.771,51.4c-0.265-0.039-0.868-0.51-1.296-1.466
2540
- c-0.428-0.956-0.666-2.03-0.996-4.399c-0.33-2.376-0.494-2.793-1.161-2.785c-1.585,0.11-1.332,3.047-1.225,4.474
2541
- c-0.121,2.203-0.473,3.913-1.194,3.923c-0.693,0.009-1.276-0.779-1.295-4.642c0.132-5.085,2.759-4.477,3.032-4.377
2542
- c0.26,0.094,0.382,0.213,0.49,0.129c0.164-0.13-0.002-0.695-0.34-1.104s-1.109-0.875-2.144-0.688
2543
- c-2.001,0.292-3.796,3.05-3.633,7.367c0.164,4.356,1.895,6.263,3.668,6.12c2.348-0.172,2.497-4.137,2.494-4.163
2544
- c0.1,0.365,0.627,1.421,1.498,1.957c1.252,0.833,2.599,0.21,2.629-0.029C130.33,51.477,130.036,51.439,129.771,51.4z
2545
- M130.853,36.765c-0.397,0.085-0.709,0.243-0.775,0.358c-0.29,0.497,0.606,0.526,1.43,1.498c0.597,0.704,1.088,1.814,1.094,4.28
2546
- c0.007,2.777-0.854,4.389-0.854,4.389s-0.213-3.202-0.935-5.373c-0.606-1.823-1.491-2.673-2.404-2.919
2547
- c-0.85-0.228-1.487,0.01-1.658,0.238s-0.076,0.389,0.168,0.665c0.244,0.276,1.377,1.501,2.216,4.524
2548
- c0.789,2.842,0.893,3.765,1.024,4.472c0.131,0.706,0.258,1.386,0.905,1.443c0.46,0.04,1.424-0.8,2.219-2.96
2549
- c0.423-1.054,0.808-2.278,1.011-3.944c0.381-3.08-0.149-4.973-0.91-5.796C132.854,37.066,132.088,36.542,130.853,36.765z
2550
- M139.225,47.001c1.948-0.224,3.569-3.052,2.982-6.673c-0.106-0.653-0.375-1.867-0.943-2.583
2551
- c-0.426-0.538-0.973-0.891-1.403-0.615c-0.26,0.236-0.128,0.378,0.164,1.215c0.292,0.836,0.412,1.987,0.38,3.117
2552
- c-0.039,1.394-0.291,2.961-1.279,2.961c-1.021,0-1.49-1.887-1.492-3.975c-0.002-2.093,0.829-4.31,2.061-4.3
2553
- c0.628,0.012,0.855,0.441,1.052,0.375c0.272-0.091,0.412-0.951-0.313-1.592c-0.413-0.365-1.001-0.466-1.56-0.397
2554
- c-2.419,0.301-3.811,3.434-3.624,6.951C135.449,45.214,137.077,47.248,139.225,47.001z M145.325,44.575
2555
- c1.515,0.026,2.403-2.327,2.68-3.779c0.203,0.594,0.482,1.172,0.864,1.664c1.306,1.69,2.804,1.247,3.31,0.984
2556
- c0.268-0.139,0.403-0.329,0.379-0.451c-0.014-0.073-0.086-0.121-0.221-0.12c-0.761-0.005-1.35-0.307-1.926-1.249
2557
- c-0.545-0.911-0.744-3.102-0.662-6.232c0.076-2.898-0.336-3.145-0.888-3.191c-0.947-0.078-1.215,0.941-1.324,1.842
2558
- c-0.15,1.235-0.122,2.68-0.105,3.1c0.01,0.243,0.023,0.688,0.077,1.236c-0.174,1.228-0.597,3.492-1.341,3.448
2559
- c-0.899-0.053-0.589-3.584-0.614-4.841c-0.02-1.043-0.045-2.252-0.962-3.028c-0.822-0.696-1.46-0.372-1.57-0.263
2560
- c-0.175,0.173-0.065,0.431,0.043,0.857c0.12,0.474,0.2,2.01,0.238,4.057C143.342,40.679,142.937,44.431,145.325,44.575z
2561
- M157.349,32.822c-1.42-0.098-1.575,2.98-1.534,4.971c0.052,2.5,0.824,3.789,2.097,3.61c0.757-0.106,1.073-0.619,1.056-0.869
2562
- c-0.025-0.362-0.44-0.311-0.717-1.207c-0.34-1.504-0.41-2.85-0.249-4.672C158.149,33.014,157.756,32.85,157.349,32.822z
2563
- M158.843,31.284c0.26,0.093,0.283-0.215,1.269-0.659c0.037-0.016,0.074-0.029,0.111-0.043c-0.167,0.823-0.362,2.163-0.43,4.646
2564
- c-0.122,4.802,1.093,5.506,2.084,5.469c0.708-0.026,1.348-0.566,1.35-0.83c0.003-0.321-0.308-0.301-0.523-0.704
2565
- c-0.487-0.802-0.629-2.096-0.625-4.917c0.044-1.726,0.21-3.044,0.374-4.116c0.462-0.075,1.018-0.172,1.715-0.317
2566
- c2.379-0.495,2.569-2.178,2.294-2.358c-0.195-0.128-0.631,0.233-1.238,0.475c-0.829,0.331-1.742,0.524-2.532,0.685
2567
- c0.024-0.163,0.046-0.321,0.064-0.473c0.165-1.38-0.145-1.597-0.572-1.57c-0.738,0.048-1.35,1.713-1.615,2.592
2568
- c-0.501,0.186-0.914,0.419-1.261,0.725C158.762,30.371,158.575,31.188,158.843,31.284z M169.464,37.457
2569
- c-0.163,0.581-1.266,3.171-3.484,2.843c-2.028-0.3-2.627-3.201-2.293-5.576c0.252-1.79,1.569-4.898,3.883-4.603
2570
- c1.266,0.193,1.987,1.876,0.644,4.281c-0.739,1.323-1.79,2.002-2.322,2.279c0.213,0.858,0.64,1.375,1.301,1.421
2571
- c0.713,0.049,1.354-0.274,1.843-0.843c0.154-0.18,0.277-0.33,0.393-0.312C169.569,36.97,169.538,37.194,169.464,37.457z
2572
- M165.75,35.716c0.386-0.343,1.023-1.013,1.459-2.014c0.637-1.461,0.445-2.312,0.018-2.358c-0.569-0.061-1.407,1.512-1.485,3.318
2573
- C165.725,35.038,165.728,35.391,165.75,35.716z M173.968,30.638c-0.17-0.386-0.72-0.87-1.799-0.714
2574
- c-1.189,0.178-2.432,1.418-2.263,3.34c0.164,1.861,0.986,2.894,1.051,4.055c0.06,1.08-0.326,1.672-0.87,2.138
2575
- c-0.257,0.219-0.283,0.328-0.228,0.428c0.054,0.099,0.193,0.148,0.274,0.163c0.317,0.085,2.019,0.054,2.875-1.728
2576
- c0.914-1.871-0.402-3.805-0.759-4.77c-0.391-1.049-0.161-1.943,0.416-2.143c0.642-0.224,0.869,0.281,1.138,0.203
2577
- C174.087,31.527,174.141,31.033,173.968,30.638z M153.075,42.099c0.913-0.181,0.801-1.27,0.726-1.99
2578
- c-0.097-0.932-0.125-3.023,0.072-4.446c0.223-1.611,0.891-3.178,2.191-3.604c1.146-0.376,1.619,0.165,1.894-0.117
2579
- c0.232-0.238-0.183-1.484-1.721-1.509c-1.773-0.029-2.703,2.153-2.97,2.93c0,0-0.437-1.385-1.277-1.166
2580
- c-0.465,0.122-0.385,0.411-0.432,2.009c-0.047,1.596-0.18,3.627,0.031,5.384C151.801,41.345,152.163,42.28,153.075,42.099z"/>
2581
- </g>
2582
-
2583
- <linearGradient id="cadbury_logo_2_" gradientUnits="userSpaceOnUse" x1="151.1472" y1="251.8356" x2="178.1811" y2="232.0889" gradientTransform="matrix(0.99 0.1407 0.1407 -0.99 -56.0405 236.3141)">
2584
- <stop offset="0" style="stop-color:#986E3A"/>
2585
- <stop offset="0.511" style="stop-color:#D6B37C"/>
2586
- <stop offset="1" style="stop-color:#9A673B"/>
2587
- </linearGradient>
2588
- <path id="cadbury_logo_1_" fill="url(#cadbury_logo_2_)" d="M160.872,15.197c0.086-0.372,0.157-0.937-0.174-1.216
2589
- c-0.116-0.072-0.243-0.08-0.381-0.036c-0.196,0.076-0.326,0.259-0.39,0.459c-0.353,0.937-0.622,1.924-1.184,2.793
2590
- c-0.168,0.259-0.395,0.583-0.658,0.576c-0.065-0.004-0.117-0.039-0.155-0.17c-0.175-0.763,0.2-1.636,0.454-2.383
2591
- c0.091-0.22,0.15-0.53,0.046-0.738c-0.059-0.109-0.167-0.174-0.284-0.184c-0.334-0.017-0.534,0.258-0.7,0.522
2592
- c-0.606,1.125-1.099,2.418-1.915,3.445c-0.122,0.126-0.242,0.298-0.432,0.28c-0.082-0.012-0.148-0.077-0.178-0.183
2593
- c-0.106-0.462,0.035-1.152,0.243-1.692c0.152-0.393,0.327-0.638,0.402-1.033c0.03-0.212-0.035-0.402-0.231-0.509
2594
- c-0.105-0.045-0.209-0.066-0.358,0.006c-0.282,0.153-0.53,0.382-0.862,0.444c0.066-0.236,0.151-0.459,0.136-0.708
2595
- c-0.02-0.211-0.089-0.449-0.284-0.531c-0.189-0.069-0.423-0.018-0.597,0.134c-0.499,0.5-0.529,1.315-0.303,1.961
2596
- c-0.157,0.821-0.547,1.604-0.992,2.3c-0.166,0.224-0.328,0.479-0.608,0.514c-0.188,0.001-0.279-0.133-0.327-0.364
2597
- c0.275-0.536,0.607-1.127,0.758-1.694c0.119-0.441,0.282-1.121,0.01-1.539c-0.058-0.102-0.194-0.172-0.338-0.161
2598
- c-0.27,0.011-0.47,0.209-0.628,0.407c-0.595,0.865-0.739,1.875-0.754,2.904c-0.107,0.328-0.283,0.666-0.545,0.914
2599
- c-0.124,0.123-0.334,0.24-0.5,0.161c-0.094-0.062-0.15-0.161-0.169-0.275c-0.096-0.637,0.147-1.258,0.35-1.852
2600
- c0.362-1.059,0.739-1.311,0.551-1.759c-0.073-0.165-0.239-0.27-0.407-0.277c-0.219-0.021-0.469,0.105-0.604,0.312
2601
- c-0.295,0.49-0.602,1.004-1.025,1.409c-0.249,0.222-0.459,0.429-0.829,0.589c-0.023-0.205-0.069-0.415-0.131-0.603
2602
- c-0.197-0.605-0.578-1.196-1.284-1.15c-0.245,0.015-0.485,0.143-0.651,0.244c0.09-0.875,0.321-1.735,0.74-2.5
2603
- c0.255-0.467,0.664-0.939,0.713-1.334c0.026-0.212-0.065-0.419-0.243-0.524c-0.186-0.096-0.374-0.096-0.583,0.004
2604
- c-0.423,0.242-0.674,0.708-0.888,1.135c-0.402,0.443-1.005,0.643-1.614,0.777c-0.808,0.21-1.324-0.023-1.864-0.518
2605
- c-0.147-0.116-0.328-0.243-0.541-0.226c-0.222-0.002-0.444,0.199-0.531,0.354c-0.114,0.182-0.118,0.435-0.006,0.61
2606
- c0.457,0.663,1.038,1.173,1.296,2.062c0.059,0.206,0.106,0.411,0.107,0.626c-1.579,0.918-2.489,2.841-2.42,4.606
2607
- c-0.157,0.514-0.311,1.399-0.913,1.365c-0.304-0.063-0.729-1.071,0.118-4.043c0.044-0.447,0.176-0.92-0.058-1.35
2608
- c-0.134-0.242-0.449-0.288-0.698-0.28c-1.978,0.201-3.175,2.511-4.069,4.116c-1.125,1.8-2.473,2.883-3.843,3.561
2609
- c-3.361,1.665-7.159,1.041-7.425-2.664c-0.255-3.531,1.91-7.598,6.584-9.522c3.61-1.485,5.994-0.295,5.953,1.836
2610
- c-0.02,1.037-0.719,4.227-5.229,5.846c-0.775,0.278-2.187,0.391-2.762-0.277c-0.902-1.064-0.583-2.368-0.007-3.289
2611
- c1.005-1.489,2.717-2.402,4.498-2.85c0.146-0.029,0.267-0.096,0.342-0.259c0.044-0.111,0.042-0.214-0.014-0.355
2612
- c-0.096-0.19-0.278-0.234-0.459-0.215c-1.623,0.229-3.108,0.916-4.264,1.891c-1.366,1.243-2.38,2.854-2.253,4.68
2613
- c0.092,1.191,0.898,2.265,2.078,2.571c1.308,0.292,3.093-0.317,4.279-0.927c2.478-1.401,4.552-3.835,4.883-6.584
2614
- c0.121-1.23-0.477-2.475-1.557-3.129c-1.735-0.995-5.294-0.958-8.865,1.322c-1.286,0.823-3.225,2.255-4.59,4.855
2615
- c-1.364,2.601-1.449,6.171,0.654,8.159c1.531,1.447,4.03,1.905,6.552,1.207c1.826-0.506,3.653-1.959,5.125-3.85
2616
- c-0.081,1.148,0.661,1.663,1.375,1.677c1.581,0.02,2.267-1.975,2.267-1.975c0.19,0.575,0.264,0.837,0.872,0.994
2617
- c1.026,0.261,1.476-0.572,1.657-1.215c0.175,0.408,0.636,0.79,1.117,0.739c0.759-0.073,1.291-0.769,1.577-1.373
2618
- c1.009-2.136,1.002-4.585,0.396-6.807c0.431-0.025,0.712-0.134,1.084-0.257c0.21-0.068,0.373-0.122,0.579-0.205
2619
- c-0.345,1.389-0.567,2.831-0.558,4.315c0.044,0.98,0.096,2.118,0.788,2.783c0.298,0.306,0.729,0.407,1.152,0.268
2620
- c0.539-0.158,0.988-0.897,1.171-1.439c0.132-0.331,0.325-1.121,0.373-1.659c0.214-0.151,0.435-0.286,0.641-0.451
2621
- c0.085-0.069,0.13-0.101,0.212-0.169c-0.101,0.607-0.207,1.302-0.064,1.912c0.091,0.424,0.355,0.799,0.773,0.9
2622
- c0.688,0.142,1.395-0.759,1.801-1.273c0.137,0.243,0.307,0.499,0.589,0.593c0.332,0.109,0.784-0.029,1.067-0.36
2623
- c0.826-0.967,1.176-2.288,1.596-3.486l0.045-0.125c0.215-0.056,0.397-0.136,0.595-0.257c-0.181,0.503-0.33,1.025-0.396,1.563
2624
- c-0.089,0.655,0.013,1.49,0.571,1.83c0.286,0.15,0.666-0.028,0.87-0.193c0.658-0.565,1.088-1.383,1.492-2.119l0.031-0.05
2625
- c-0.014,0.404,0.055,0.946,0.254,1.288c0.114,0.201,0.361,0.368,0.583,0.35c0.677-0.078,1.008-0.707,1.391-1.23
2626
- c0.066-0.09,0.136-0.209,0.177-0.266c-0.169,0.857-0.485,1.799-0.675,2.663c-0.049,0.22-0.204,0.705-0.125,0.998
2627
- c0.089,0.332,0.34,0.563,0.83,0.614c0.091,0.008,0.139-0.037,0.148-0.106c-0.116-0.546,0.002-0.992,0.22-1.791
2628
- C160.065,18.438,160.489,16.803,160.872,15.197z M137.211,19.107c-0.455,1.511-1.221,3.579-1.733,4.151
2629
- c-0.694,0.776-1.06-0.081-0.88-0.598c0.272-1.31,0.914-3.001,1.948-3.999c0.137-0.115,0.473-0.4,0.664-0.182
2630
- C137.279,18.616,137.261,18.942,137.211,19.107z M141.501,20.641c-0.125,0.378-0.278,0.806-0.557,1.127
2631
- c-0.081,0.099-0.235,0.216-0.368,0.117c-0.328-0.263-0.291-0.978-0.222-1.421c0.131-0.847,0.558-1.744,1.347-2.201l0.043-0.022
2632
- C141.852,19.053,141.705,19.865,141.501,20.641z M145.322,20.76c-0.086,0.025-0.165,0.006-0.233-0.034
2633
- c-0.314-0.245-0.397-0.973-0.422-1.517c-0.02-0.431,0.041-1.236,0.425-1.577c0.242-0.179,0.531-0.126,0.629,0.136
2634
- c0.209,0.505,0.213,1.379,0.116,1.958C145.779,20.072,145.676,20.676,145.322,20.76z"/>
2635
- </g>
2636
- </svg>
2637
-
2638
- `,R=n=>Zn("http://www.w3.org/2000/svg",n),vA=(n,t)=>{const e=R("rect");return e.setAttribute("height",`${n}`),e.setAttribute("width",`${t}`),e},lo=()=>{const n=R("svg");return n.setAttribute("xmlns","http://www.w3.org/2000/svg"),n.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),n.setAttribute("version","1.1"),n},go=n=>{const t=R("use");return t.setAttribute("xlink:href",n),t.setAttribute("href",n),t};function en(n){const t=lo(),e=/viewBox="0 0 (.+?) (.+?)"/.exec(n)||["0","0"],A=parseFloat(e[1]),a=parseFloat(e[2]);return t.setAttribute("height",`${a}`),t.setAttribute("width",`${A}`),[t,a,A]}const Bo=(n,t,e)=>{const A=R("g");n.appendChild(A),A.setAttribute("id",e),A.innerHTML=t};function An(n,t,e){const A=b();Bo(t,e,`bgdef-${A}`),n.appendChild(go(`#bgdef-${A}`))}const an=(n,t,e,A)=>{const a=ce("filter");a.setAttribute("id",A),a.setAttribute("height","200%"),a.setAttribute("width","200%"),a.setAttribute("x","-50%"),a.setAttribute("y","-50%");const i=ce("feOffset");a.appendChild(i),i.setAttribute("result","offOut"),i.setAttribute("in","SourceAlpha"),i.setAttribute("dx",`${n}`),i.setAttribute("dy",`${t}`);const s=ce("feGaussianBlur");a.appendChild(s),s.setAttribute("result","blurOut"),s.setAttribute("in","offOut"),s.setAttribute("stdDeviation",`${e}`);const o=ce("feBlend");return a.appendChild(o),o.setAttribute("in","SourceGraphic"),o.setAttribute("in2","blurOut"),o.setAttribute("mode","normal"),a},nn=n=>{let t=n;return t=t.replace(/feoffset/gi,"feOffset"),t=t.replace(/fegaussianblur/gi,"feGaussianBlur"),t=t.replace(/feblend/gi,"feBlend"),t=t.replace(/lineargradient/gi,"linearGradient"),t=t.replace(/stddeviation/gi,"stdDeviation"),t};function kA(n,t,e,A,a,i){const s=a||1,o=i||1,r={x:t[0],y:t[1],width:t[2]-t[0],height:t[3]-t[1]};if(r.width<=0)return;const c=ho(r.height,r.width,e*s,A*o),l=(A-c*r.width)/2-c*r.x,g=(e-c*r.height)/2-c*r.y;n.setAttribute("transform",`translate(${l} ${g}) scale(${c} ${c})`)}function ho(n,t,e,A){const a=e/n,i=A/t;return a>1&&i>1?Math.min(a,i):a>1&&i<1?i:a<1&&i>1?a:Math.min(a,i)}const ta={m:["x","y"],z:[],l:["x","y"],h:["x"],v:["y"],c:["x1","y1","x2","y2","x","y"],s:["x2","y2","x","y"],q:["x1","y1","x","y"],t:["x","y"],a:["rx","ry","xRotation","largeArc","sweep","x","y"]};class NA{constructor(t){const e=Array.from(t.querySelectorAll("path"));this.paths=e.map(A=>{const a=A.getAttribute("d")||"",i=this.parsePath(a);return{pathElement:A,pathData:i}})}transform(t){for(const e of this.paths)e.pathData=this.runTransformer(e.pathData,t);this.update()}encodePath(t){let e="";const a=i=>{const s=[],o=i.relative?i.type:i.type.toUpperCase();let r=e!==o;const c=ta[i.type];r&&(s.push(o),e=o);for(const l of c){const g=i[l];let d;switch(typeof g){case"boolean":d=g|0;break;case"number":d=(g*100|0)/100;break;default:throw new mt("Failed to encode path.")}r||s.push(" "),s.push(d),r=!1}return s.join("")};return t.map(a).join("")}parsePath(t){const e=/([mzlhvcsqta])([^mzlhvcsqta]*)/gi,A=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi,a=[];let i;for(e.lastIndex=0;i=e.exec(t);){const s=i[1].toLowerCase(),o=(i[2].match(A)||[]).map(parseFloat),r=s===i[1],c=ta[s];if(o.length<c.length)throw new mt(`Path type "${s}" given ${o.length} arguments, expected ${c.length}.`);if(c.length>0){if(o.length%c.length!==0)throw new mt(`Path type "${s}" given ${o.length} arguments, not divisible by ${c.length}`);for(let l=0;l<o.length/c.length;l++){const g={type:s,relative:r};for(let d=0;d<c.length;d++)g[c[d]]=o[l*c.length+d];a.push(g)}}else a.push({type:s,relative:r})}return a}runTransformer(t,e){const A=[["x1","y1"],["x2","y2"],["x","y"]],a=i=>{for(let s=0;s<A.length;s++){const[o,r]=A[s];if(o in i&&r in i){const c=[i[o],i[r]],l=e(c);if(l.length<2)throw new mt("Transformer must return at least 2 points.");i[o]=l[0],i[r]=l[1]}}return i};return this.transformPath(t,a)}transformPath(t,e){const A=[];for(let a=0;a<t.length;a++){const i=JSON.parse(JSON.stringify(t[a])),s=e(i);Array.isArray(s)?A.push(...s):s&&A.push(s)}return A}update(){for(const{pathElement:t,pathData:e}of this.paths){const A=this.encodePath(e);t.setAttribute("d",A)}}}class Co extends PA{constructor(){super(...arguments),this.moduleName="Favourites"}svgPreview(t){return this.svg(t)}svgPrint(t){return this.svg(t)}svg(t){const e=mA(ro),a=t!==""?(s=>s.charAt(0).toUpperCase()+s.substr(1).toLowerCase())(t):"",i=e.getPath(a,0,72,72);return this.brandSvg(i,co)}brandSvg(t,e){const A=t.toSVG(2),a=t.getBoundingBox(),i=a.x2-a.x1,s=t.toPathData(3),o=()=>{const p=R("g"),I=R("defs");p.appendChild(I),I.appendChild(an(3,7,4,"shadow"));const D=R("g");p.appendChild(D),D.setAttribute("filter","url(#shadow)"),D.innerHTML=A;const F=R("g");p.appendChild(F),F.setAttribute("fill","red"),F.setAttribute("stroke","red"),F.setAttribute("stroke-width","9"),F.innerHTML=A;const x=R("g");p.appendChild(x),x.setAttribute("fill","#9d2621"),x.setAttribute("transform","translate(1,1)"),x.innerHTML=A;const Y=R("g");return p.appendChild(Y),Y.setAttribute("fill","yellow"),Y.innerHTML=A,new NA(p).transform(([v,H])=>[v,H+(i/2-v)**2/(i*2.9)]),p},[r,c,l]=en(e);if(!r)return"";const g=R("defs");r.appendChild(g),An(r,g,e);const d=c*.23,B=l*.94,h=l*.04,C=c*.53,u=R("g");r.appendChild(u),u.setAttribute("transform",`translate(${h} ${C}) rotate(-21)`);const w=vA(d,B);w.setAttribute("opacity","0"),u.appendChild(w);const E=R("g");u.appendChild(E);const m=o();E.appendChild(m);const f=lA(s);return kA(E,f,d,B),nn(r.outerHTML)}}const uo="data:application/octet-stream;base64,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ZWxmIE1ha2VyIDIuMy41AABNAGEAbAB0AGUAcwBlAHIAcwBSAGUAZwB1AGwAYQByAABNYWx0ZXNlcnNSZWd1bGFyAABNAGEAbAB0AGUAcwBlAHIAcwAATWFsdGVzZXJzAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAAAAAAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAABAAIBAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCsAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAljb250cm9sTEYJY29udHJvbENSB0FwLmxpZ2EHQWoubGlnYQdFdC5saWdhB0VmLmxpZ2EHRWoubGlnYQdFay5saWdhB0VsLmxpZ2EHRWIubGlnYQdGdC5saWdhB0ZoLmxpZ2EHRmsubGlnYQdGbC5saWdhB0ZiLmxpZ2EHSHQubGlnYQdIZi5saWdhB0l0LmxpZ2EHSXAubGlnYQdJZi5saWdhB0lqLmxpZ2EHSWwubGlnYQdJYi5saWdhB0p0LmxpZ2EHSmYubGlnYQdKaC5saWdhB0prLmxpZ2EHSmwubGlnYQdKYi5saWdhB0t0LmxpZ2EHS3AubGlnYQdLeS5saWdhB0xqLmxpZ2EHTWoubGlnYQdNaC5saWdhB01mLmxpZ2EHTnQubGlnYQdOZi5saWdhB09mLmxpZ2EHT3oubGlnYQdQcS5saWdhB1B3LmxpZ2EHUHIubGlnYQdQdC5saWdhB1B5LmxpZ2EHUHUubGlnYQdQaS5saWdhB1BmLmxpZ2EHUGgubGlnYQdQai5saWdhB1BrLmxpZ2EHUGwubGlnYQdQei5saWdhB1B4LmxpZ2EHUHYubGlnYQdQYi5saWdhB1BuLmxpZ2EHUG0ubGlnYQdScC5saWdhB1JmLmxpZ2EHUmoubGlnYQdUdC5saWdhB1RmLmxpZ2EHVGgubGlnYQdUay5saWdhB1RsLmxpZ2EHVGIubGlnYQdVdC5saWdhB1VzLmxpZ2EHVWYubGlnYQdWdC5saWdhB1ZzLmxpZ2EHVmYubGlnYQdWbC5saWdhB1d0LmxpZ2EHV2YubGlnYQdYcC5saWdhB1l0LmxpZ2EHWWkubGlnYQdZZi5saWdhB1loLmxpZ2EHWWwubGlnYQdZay5saWdhB1liLmxpZ2EHQWYubGlnYQdDeS5saWdhB0VoLmxpZ2EHR3IubGlnYQdPcC5saWdhB2J0LmxpZ2EHYnIubGlnYQdiZi5saWdhB2JqLmxpZ2EHYnoubGlnYQdkdC5saWdhB2VmLmxpZ2EHZnQubGlnYQdmaC5saWdhB2ZiLmxpZ2EHZmsubGlnYQdnai5saWdhB2pqLmxpZ2EHeWoubGlnYQd0dC5saWdhB3RmLmxpZ2EHdGgubGlnYQd0aS5saWdhB3RrLmxpZ2EHdGwubGlnYQh0dGgubGlnYQhlZmYubGlnYQhlZmIubGlnYQdmZi5saWdhB2ZpLmxpZ2EHZmwubGlnYQAAAAAAAAH//wACAAEAAAAMAAAAHAAAAAIAAgADADoAAQA7AKsAAgAEAAAAAgAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQQIAB0AQABaAGQAngDIANIA5AEWAUgBYgFsAYYBmAGyAkQCXgKQAqoCzALeAugDIgNMA1YDdAOuA7gDwgP+AAMACAAOABQAjQACACUAPAACACkAOwACAC8AAQAEAI4AAgA4AAcAEAAWABwAIgAoAC4ANACPAAIAJwBCAAIAIQBBAAIAKwBAAAIAKgA/AAIAKQA+AAIAJQA9AAIAMwAFAAwAEgAYAB4AJABHAAIAIQBGAAIAKwBFAAIAKgBEAAIAJwBDAAIAMwABAAQAkAACADEAAgAGAAwASQACACUASAACADMABgAOABQAGgAgACYALABPAAIAIQBOAAIAKwBNAAIAKQBMAAIAJQBLAAIALwBKAAIAMwAGAA4AFAAaACAAJgAsAFUAAgAhAFQAAgArAFMAAgAqAFIAAgAnAFEAAgAlAFAAAgAzAAMACAAOABQAWAACADgAVwACAC8AVgACADMAAQAEAFkAAgApAAMACAAOABQAXAACACUAWwACACcAWgACACkAAgAGAAwAXgACACUAXQACADMAAwAIAA4AFACRAAIALwBgAAIAOQBfAAIAJQASACYALAAyADgAPgBEAEoAUABWAFwAYgBoAG4AdAB6AIAAhgCMAHIAAgAsAHEAAgAtAHAAAgAhAG8AAgA1AG4AAgA3AG0AAgA5AGwAAgArAGsAAgAqAGoAAgApAGkAAgAnAGgAAgAlAGcAAgAoAGYAAgA0AGUAAgA4AGQAAgAzAGMAAgAxAGIAAgA2AGEAAgAwAAMACAAOABQAdQACACkAdAACACUAcwACAC8ABgAOABQAGgAgACYALAB7AAIAIQB6AAIAKwB5AAIAKgB4AAIAJwB3AAIAJQB2AAIAMwADAAgADgAUAH4AAgAlAH0AAgAyAHwAAgAzAAQACgAQABYAHACCAAIAKwCBAAIAJQCAAAIAMgB/AAIAMwACAAYADACEAAIAJQCDAAIAMwABAAQAhQACAC8ABwAQABYAHAAiACgALgA0AIwAAgAhAIsAAgAqAIoAAgArAIkAAgAnAIgAAgAlAIcAAgAoAIYAAgAzAAUADAASABgAHgAkAJYAAgA5AJUAAgApAJQAAgAlAJMAAgAxAJIAAgAzAAEABACXAAIAMwADAAgAEAAYAKgAAwAlACEApwADACUAJQCYAAIAJQAHABAAFgAcACIAKAAuADQAqwACACsAqgACACgAqQACACUAnAACACoAmwACACEAmgACACcAmQACADMAAQAEAJ0AAgApAAEABACeAAIAKQAHABAAGAAeACQAKgAwADYApgADADMAJwClAAIAKwCkAAIAKgCjAAIAKACiAAIAJwChAAIAJQCgAAIAMwABAAQAnwACACkAAQAdAAYACAAKAAsADAANAA4ADwAQABEAEgATABQAFQAXABkAGgAbABwAHQAeACEAIwAkACUAJgApADMAOAAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFrZXJuAAgAAAABAAAAAQAEAAIAAAABAAgAAQPGAAQAAABEAJIAnADSAOABIgEoATYBPAFKAVABXgFkAW4BfAGKAawBsgHAAcYB1AHiAewB/gIIAhYCSAJiAnAChgKcAqoCvALKAtAC6gL0AvoDAAMKAxADGgMgAyYDLAMyAzgDOAMyAz4DRANOAz4DVANaA2ADIANmA2wDcgN4A34DiAOOA5gDngOkA7IDvAACAC7//AA3//IADQAl/+oAKP/8ACn/9AAq//AAK//6ACz//gAt//4AMf/qADP//AA0//wANf/+ADb/+AA5//QAAwAt//wALv/8ADb//AAQACT//AAl/+wAJv/6ACf//AAp/+wAKv/0ACv/+gAs//gALf/8AC//7gAx//gAMv/0ADT/9gA3/+oAOP/6ADn/5AABADf/+gADADX//AA3/+gAOf/6AAEALv/2AAMAKP/8ACn/6AAy/+QAAQAu//IAAwAo/+4AL//2ADX/5gABACT/8AACABgAAgAoAAQAAwAo//4ALv/wADL/+AADACf/9gAv/+4Ao//sAAgAKf/qACv/9AAu//wAL//uADH/7gAy//IAN//mAJX/9AABADYADgADACAABAAjAAQAM//4AAEAMv/8AAMAJv/+ACr/+AA3//4AAwAo//gALv/0AJn/7AACACMAAgAl/+wABAAk//wAL//8ADT/9AA4//4AAgAt//IAq//iAAMAJf/sACb/+AA3//wADAAk//wAJv/+ACj/+gAp/+AAK//+ACz/9gAt//wAL//qADH/7AAy//IAN//cAKP/4gAGACQAAgAl/9oAK//yAC//4gAx/+gAMv/8AAMAKQB+ADL/7ACeAIgABQAg//wAIv/4ACb//AAu//YANQAEAAUAKf/0ACr/+AAv//QAM//mAKP/3gADACEAHAAkAAIALv/4AAQAJf/0AC3//gAv//wAmf/8AAMAJP/wACf/+AAp/+4AAQAk//oABgAg//QAIf/wACj/9gAu/+wAL//0ADP/9AACACH//gA3//IAAQApAEIAAQAnACgAAgAzADQAqgAoAAEAMwA0AAIAMwAyAKEARgABADL/6gABADMALAABACkANAABAJoAGAABADMAMgABACkAOAABADMAMAACACUAEgAzAC4AAQApAHgAAQApADYAAQAzAC4AAQAzADgAAQAzAEIAAQAzAEwAAQAz//IAAQAnAEgAAgAl/+4Amv/oAAEAKQBiAAIAKQBaAJ4AUAABACkAVgABAKEARAADADMANgCaABIAogBKAAIAJwAsAKEARgACAC3/8gA3/+oAAQBEAAYABwAIAAkACgAMABEAFAAVABgAHQAgACEAIgAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOQA8AD0APgBIAEkASwBMAE0AUABRAFkAWgBcAF4AXwBhAGgAagB+AIEAhACIAI0AkQCYAJoAnQCeAJ8AoAChAKkAqgAAAAAAAQAAAADUGBYRAAAAANfpcqUAAAAA1+lypQ==";class wo extends PA{constructor(t,e){super(),this.moduleName="Maltesers",this.shortLength=5,this.indicator=A=>A?1:0,this.backgroundSvg=t,this.backgroundShortSvg=e}svgPreview(t){return this.svg(t)}svgPrint(t){return this.svg(t)}svg(t){const e=mA(uo),a=t!==""?(r=>r.charAt(0).toUpperCase()+r.substr(1).toLowerCase())(t):"",i=e.getPath(a,0,72,72),s=t.length<this.shortLength,o=s?this.backgroundShortSvg:this.backgroundSvg;return this.brandSvg(i,o,s)}brandSvg(t,e,A){const a=t.toSVG(2),i=t.getBoundingBox(),s=i.y2-i.y1,o=i.x2-i.x1,r=t.toPathData(3),c=()=>{const D=R("g"),F=R("g");D.appendChild(F),F.setAttribute("stroke","#5C1A0D"),F.setAttribute("stroke-width","4"),F.setAttribute("transform","translate(1,1)"),F.innerHTML=a;const x=R("g");D.appendChild(x),x.setAttribute("fill","#FFE386"),x.setAttribute("transform","translate(1,1)"),x.innerHTML=a;const Y=R("g");D.appendChild(Y),Y.setAttribute("fill","white"),Y.innerHTML=a;const P=new NA(D);return P.transform(([v,H])=>[v,H+((o-v)*H)**2/(o*5e4)]),P.transform(([v,H])=>[v,H+(o/3-v)**2/o*this.indicator(v<o/3)]),P.transform(([v,H])=>[v-(s-H)*(o-v)/800,H]),D},[l,g,d]=en(e);if(!l)return"";const B=R("defs");l.appendChild(B),An(l,B,e);let h,C,u,w;A?(h=g*.25*(1+.1),C=d/2*(1+.1),u=d*.22,w=g*.32):(h=g*.22*(1+.1),C=d*.8,u=d*.067,w=g*.33);const E=R("g");l.appendChild(E),E.setAttribute("transform",`translate(${u} ${w}) rotate(-10)`);const m=vA(h,C);m.setAttribute("opacity","0"),E.appendChild(m);const f=R("g");E.appendChild(f);const p=c();f.appendChild(p);const I=lA(r);return kA(f,I,h,C),l.outerHTML}}const Eo="data:application/octet-stream;base64,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DOYNZA3mDlQOyg88D54QEBCGEQARchHsEmIS1BOWFAwUghTwFWIV1BaiFxQXkhgEGMYZdBomGtQbfhwYHL4dYB3+HpgfPh/oIJYhPCHmIpQjRiPsJJolSCXuJpQnQifoKJIpRAAmAAn/8QAK//sADP/7AA3/+wAO//sAD//7ABD/+wAR//sAEv/7ABP/+wAU//sAFf/xABb/8QAZ//sAHf/2AB7/+wAf//sAIP/xACH/+wAi//sAI//7ACT/+wAl//EAJv/2ACf/8QAo//sAKf/2ACr/+wAr//sALP/sAC3/7AAu/+IAL//dADD/9gAx/+wAMv/7ADP/+wA0//YAKwAG//EACP/nAAn/4gAK/9MAC//iAAz/9gAN/+IADv/sAA//4gAQ/9gAEf/iABL/1QAT//EAFP/nABX/8QAW/9gAMf/TADL/pgAz//MANP/nADX/8QA2//EAN//7ADj/7gA5//YAOv/7ADv/2AA8//EAPf/2AD7/9gA///EAQP/sAEH/+wBC/+wAQ//xAET/7ABF/+wARv/2AEf/3QBI/90ASf/EAEr/zgBL//YAKwAG//YAB//2AAn/3QAL/+wADP/sAA3/8QAO//YAD//sABD/8QAR/+wAEv/iABP/5wAU/+wAFf/dABb/7AAX/78AMf/YADL/sAAz/+IANP/iADX/8QA2/+cAN//xADj/3QA5/+wAOv/2ADv/4gA8//EAPf/xAD7/8QA///YAQP/YAEH/9gBC/+cAQ//sAET/7ABF/+wARv/xAEf/zgBI/9MASf/OAEr/zgBL/+wAKgAG//YAB//iAAj/4gAK/+IADP/dAA3/ugAO/+IAD//iABD/5wAR/+IAEv/dABP/yQAU/90AFf+mABb/0wAx/5gAMv/YADP/4gA0/9MANf/xADb/7AA3/+wAOP/iADn/7AA6//EAO//dADz/5wA9/+wAPv/sAD//5wBA/9gAQf/sAEL/zgBD/+wARP/YAEX/tQBG/90AR/+hAEj/oQBJ/8QASv+DAEv/7AAqAAb/8QAH/90ACP/YAAn/oQAL/8kADP/iAA3/sAAO/+cAD//YABD/4gAR/90AEv/bABP/4gAU/+IAFf/TABb/5wAg/+QAMf/nADL/3AAz//QANP/rADX/9AA2//IAN//4ADj/8AA5//QAOv/1ADv/7AA8/+oAPf/7AD7/9wA///IAQP/tAEH/+wBC/+IAQ//2AET/4wBF/7YARv/vAEf/pgBK/6MAS//yACYAB//TAAj/8QAK/84ADP/dAA3/9gAO//EAD//dABD/pgAR/8kAEv+6ABP/7AAU/90AFf/OADH/xAAy/5IAM//sADT/3QA1/+cANv/xADf/9gA4/90AO/9WADz/5wA9//EAPv/sAD//5wBA/84AQf/dAEL/0wBD/+cARP/nAEX/5wBG/+cAR//dAEj/2ABJ/7oASv/JAEv/4gAsAAb/+wAH//sACP/xAAn/zgAK/+cAC//dAAz/9gAN/9gADv/tAA//7AAQ/+kAEf/rABL/3QAT/90AFP/hABX/3QAW/90AMf/nADL/vwAz/+cANP/nADX/8QA2//EAN//sADj/5wA5//YAOv/2ADv/4gA8//EAPf/2AD7/+wA///sAQP/2AEH/+wBC/+wAQ//7AET/7ABF/9MARv/7AEf/yQBI/84ASf+wAEr/xABL/+cADgAG//sACf/xAAv/7AAN//sADv/7AA8AAAAR//EAEv/0ABP/9gAU//EAFf/xABb/7AAx//YAQP/2ACkABv/7AAf/9gAI//sACf/iAAr/5wAL/+wADP/vAA3/3QAO//sAD//qABD/8QAR/+wAEv/nABP/8QAU/+cAFf/iABb/7AAx/+cAMv/vADP//AA0/+cANf/7ADb//gA4//EAOf/8ADr//AA7/+kAPP/6AD3//QA+//4AP//7AEL/6gBD//0ARP/2AEX/7ABG//EAR//YAEj/4gBJ/+wASv/LAEv//AAsAAb/+wAH//EACP/2AAn/0wAK/+IAC//JAAz/5wAN/90ADv/iAA//7AAQ/+cAEf/sABL/3QAT/9MAFP/iABX/zgAW/+cAMf/YADL/xAAz/+wANP/dADX/6AA2//EAN//xADj/4wA5//EAOv/2ADv/7AA8/+wAPf/sAD7/9gA//+wAQP/iAEH/8QBC/90AQ//nAET/5wBF/8QARv/mAEf/xABI/8kASf+1AEr/rQBL/+IALAAG//sAB//7AAj/9gAJ/9MACv/2AAv/ugAM/+kADf/dAA7/9gAP/+wAEP/2ABH/8AAS//EAE//2ABT/5wAV/9gAFv/sADH/vwAy/9UAM//eADT/3wA1//EANv/xADf/9gA4/+IAOf/xADr/9gA7/+wAPP/xAD3/9gA+//EAP//2AED/2ABB//EAQv/nAEP/9gBE/+cARf/TAEb/8QBH/9gASP/YAEn/xgBK/78AS//xACsABv/7AAf/9gAI/+wACf/TAAr/5wAL/90ADP/lAA3/zgAO/90AD//dABD/7AAR/+IAEv/iABP/2AAU/+IAFf/JABb/5wAx/90AMv/EADP/6wA0/+EANf/wADb/8AA4/9wAOf/dADr/7AA7/9gAPP/sAD3/5wA+/+wAP//iAED/0wBB/+IAQv/YAEP/4gBE/84ARf/JAEb/4gBH/8kASP/OAEn/vwBK/8kAS//TACwABv/7AAf/3wAI/+cACf+wAAr/4wAL/8kADP/dAA3/xwAO/+cAD//dABD/7AAR/+cAEv/iABP/yQAU/9cAFf+/ABb/4gAa/+kAMf/YADL/uwAz/+EANP/dADb/6wA3//MAOP/lADn/8QA6//IAO//eADz/5wA9/+4APv/zAD//8ABA/+IAQf/2AEL/6gBD//YARP/kAEX/zABG/+8AR/+0AEj/uwBJ/64ASv+vAEv/5QAsAAb/+wAH/90ACP/nAAn/4gAK/9MAC//nAAz/3QAN//YADv/eAA//3QAQ/7AAEf/OABL/sAAT//sAFP/dABX/0wAW/9MAMf/iADL/iAAz//YANP/OADX/9gA2//EAN//xADj/0wA5//YAOv/zADv/gAA8//EAPf/7AD7/+wA///YAQP/OAEH/7gBC/84AQ//2AET/2ABF//sARv/2AEf/5wBI/+cASf/TAEr/4gBL/+wALAAG//sAB//2AAj/8QAJ/9gACv/nAAv/3QAM/+IADf/dAA7/4gAP/+IAEP/nABH/5wAS/9gAE//YABT/3QAV/84AFv/sADH/5wAy/78AM//nADT/2AA1/+cANv/nADf/7AA4/90AOf/sADr/7AA7/+cAPP/sAD3/8QA+/+wAP//xAED/4gBB//EAQv/dAEP/5wBE/+IARf/YAEb/5wBH/78ASP/HAEn/sABK/7UAS//dACsABv/xAAf/8QAI/+IACf/dAAr/0wAL/+IADP/iAA3/3QAO/+cAD//dABD/zgAR/9MAEv/EABP/0wAU/84AFv/dADH/4gAy/6EAM//jADT/3QA1/+wANv/sADf/5wA4/90AOf/nADr/8QA7/78APP/xAD3/9gA+/+wAP//nAED/3QBB/+cAQv/nAEP/5wBE/+IARf/OAEb/3QBH/8QASP/JAEn/lwBK/7oAS//YACkABv/sAAf/0wAI/90ACf/OAAr/3QAM/90ADf/EAA7/5wAP/9gAEP/YABH/3QAS/9MAE//YABT/4gAV/90AMf/sADL/wAAz/+8ANP/kADX/6wA2//AAN//2ADj/5AA5//EAOv/uADv/1gA8//QAPf/2AD7/8QA///AAQP/dAEH/7ABD/+gARP/YAEX/1QBG/+wAR/+3AEj/wwBJ/7UASv+wAEv/5gAeAAf/zgAi/+4AI//5ACT/7wAy/9AAM//pADT/sQA1/+sANv/nADf/5gA4/7oAOf/vADr/9wA7/9AAPP/sAD3/6wA+/+YAP//sAED/uwBB/+kAQv+7AEP/5ABE/9QARf+6AEb/0ABH/34ASP+SAEn/zQBK/5sAS//nABwAF//RACT//wAy/9EAM//uADT/5wA1/+8ANv/3ADf/7gA4/+gAOf/3ADr/+wA7/9oAPP/vAD3/9wA+/+4AP//vAED/4QBB//cAQv/nAEP/7wBE/+4ARf/QAEb/9wBH/8EASP/MAEn/wwBK/7sAS//nABwAF//QABv/+QAy/8EAM//zADT/6wA1//sANv/zADf/+wA4/+8AOf/zADr//gA7/+EAPP/vAD3/9wA+//kAP//3AED/4gBB//kAQv/jAEP/8wBE/+YARf/VAEb/+QBH/84ASP/JAEn/twBK/8EAS//rAB8ABv/7ABL/3wAX/8kAJf/5ACv/7wAy/7oAM//zADT/6wA1/+8ANv/uADf/8wA4/+oAOf/vADr/7wA7/9QAPP/5AD3//gA+//EAP//vAED/4wBB//MAQv/mAEP/7gBE/+cARf/XAEb/6wBH/8kASP/JAEn/twBK/7cAS//nACAABv/7ACQAAgAl/+8AJ//5AC3//gAv//4AMv/oADP//QA0/+sANf/7ADb/+gA3//sAOP/jADn/9wA6//oAO//kADz//wA9//0APv/+AD8AAABA/+gAQf/7AEL/6ABD//sARP/sAEX/8QBG//sAR//qAEj/6wBJ/+cASv/qAEv/+QAbAAb/+wAl/+8AMv+5ADP/+wA0/+8ANf/7ADb/+wA3//0AOP/vADn/+wA6AAAAO/+7ADz//gA9//4APv/7AED/7ABB//4AQv/nAEP/+QBE//kARf/7AEb/+QBH//MASP/rAEn/4gBK/+8AS//7AB0ABv/2ABf/zgAl/+8AMv+3ADP/9wA0/+sANf/3ADb/8QA3//kAOP/uADn/8wA6//sAO//YADz/8wA9/+4APv/3AD//8wBA/+MAQf/3AEL/6QBD/+8ARP/nAEX/1ABG/+8AR//JAEj/zABJ/6YASv/JAEv/3AAcAAb/+wAX//MAJf/7ADL/6wAz//4ANP/uADX/+wA2//4AN//+ADj/8wA5//0AOv/+ADv/7gA8//4APf/+AD7/+wA///4AQP/uAEL/9wBD//4ARP/+AEX/+QBG//4AR//uAEj/9wBJ/+4ASv/zAEv//gAYAAb/+wAx//YAMv/rADP//wA0//MANf//ADYAAQA3//8AOP/zADv/6AA8//4APf/+AD4AAQBA/+4AQf//AEL/8wBD//4ARP/4AEX//QBH/+wASP/3AEn/7ABK//EASwABABwABv/2ABf/4QAy/8oAM//9ADT/+QA1//4ANv/7ADf//gA4//MAOf/+ADr//wA7/+EAPP/7AD3//gA+//4AP//+AED/7wBB//4AQv/zAEP//gBE//sARf/7AEb//gBH/+8ASP/5AEn/2gBK//oAS//+AB0ABv/nABf/5wAx/7AAMv/hADP/7gA0/7QANf/rADb/5wA3/+4AOP+sADn/6wA6//kAO/+3ADz/6gA9/+8APv/nAD//5wBA/6wAQf/uAEL/rgBD/+cARP+8AEX/3ABG/9oAR//cAEj/0QBJ/9oASv/RAEv/7wAeAAb/9gAX//cAI//9ADH/vwAy/+4AM//5ADT/2gA1//4ANv/3ADf/+wA4/9oAOf/3ADr/+wA7/+cAPP/7AD3/+QA+//cAP//5AED/1ABB//sAQv/cAEP/9wBE/+8ARf/JAEb/6wBH/8QASP++AEn/5wBK/8EAS//+ABwAF//7ADH/7AAy/+QAM//+ADT/7gA1//4ANgAAADf//QA4//cAOf/7ADr//gA7/+4APP/+AD3//gA+//0AP//7AED/7wBB//4AQv/uAEP//gBE//cARf/7AEb/+QBH/+gASP/vAEn/6wBK/+gAS//+AB4ABv/7ABf/8wAa//4AHf/3ACX/9wAq//4AMf/2ADL/5AAz//0ANP/zADX/+wA2//4AN//+ADj/+QA7/+4APf/+AD7/+wA///4AQP/2AEH/+gBC/+4AQ//7AET/+QBF//sARv/+AEf/8wBI/+8ASf/zAEr/6wBL//4AHQAG//EAJP/3ADH/7AAy/7sAM//sADT/4wA1/+8ANv/vADf/9wA4/+QAOf/qADr/9wA7/98APP/vAD3/9wA+/+sAP//uAED/4wBB/+4AQv/mAEP/7wBE/+IARf/VAEb/7gBH/8MASP/GAEn/uwBK/7oAS//fABwABv/sACT//gAy/54AM//rADT/6gA1//EANv/rADf/9wA4/+MAOf/oADr/9wA7/64APP/sAD3/8QA+/+wAP//sAED/4QBB//MAQv/oAEP/5ABE/9gARf/kAEb/7gBH/9EASP/QAEn/uwBK/8QAS//zADAAF//3ABj//wAZ/+kAGv//ABv//QAc//4AHf/pAB7/+wAf//8AIP/iACH//gAi//8AI//+ACT//wAl/+IAJ//uACj//gAp/+cAKv/hACv/+QAs/8MALf/QAC7/5AAv/8wAMP//ADL/4QAz//4ANP/jADX/9wA3//kAOP/fADn/9wA7/+IAPP/5AD3/+gA+//EAP//6AED/2gBB/+8AQv/aAET/7wBF/9cARv/qAEf/xgBI/7sASf/qAEr/tABL//sAHQAG/+cAF//oACT/+gAy/+IAM//xADT/zAA1/+8ANv/sADf/+gA4/8wAOf/3ADr/8wA7/8kAPP/uAD3/7wA+/+wAP//rAED/yQBB//cAQv/MAEP/+ABE/9QARf/KAEb/2gBH/8EASP/EAEn/4gBK/7cAS//vAB0ABv/xABv/+QAl/+4AMv+8ADP/7wA0/9wANf/zADb/6AA3//cAOP/hADn/5gA6//MAO//aADz/6QA9//MAPv/pAD//6wBA/+MAQf/3AEL/2gBD/+kARP/rAEX/1ABG/+kAR//JAEj/zABJ/7QASv+7AEv/5wAbAAb/9gAy/6YAM//9ADT/0wA1//oANv/+ADf//QA4/9UAOf/3ADr//wA7/7kAPP/6AD3//gA+//sAP//7AED/0ABB//oAQv/XAEP/+QBE/+IARf/zAEb/9wBH/+8ASP/vAEn/6gBK/+cAS//6ABwABv/7ACQAAgAy/9UAM//7ADT/7wA1//cANv/9ADf//wA4/+4AOf/7ADr//wA7/+sAPP/+AD3//gA+//0AP//6AED/7gBB//sAQv/sAEP/+wBE/+8ARf/7AEb//QBH/+8ASP/qAEn/3wBK//gAS//+ABwABv/nABf/lQAy/4IAM//3ADT/wQA1/+kANv/nADf/+gA4/8QAOf/oADr/6wA7/5UAPP/uAD3/+wA+//cAP//vAED/wQBB/+8AQv/DAEP/5wBE/84ARf/uAEb/7gBH/+kASP/pAEn/zgBK/+4AS//7ADMABv/sABf/owAY//kAGf/XABr//gAb//4AHP/5AB3/0AAe//gAIP+tACH/8wAi//4AJP/+ACX/0AAm//kAJ//MACj//gAp/9oAKv/+ACv//gAs/+MALf/zAC7/3AAv//cAMP/7ADL/jwAz/+oANP/CADX/7wA2/+oAN//3ADj/xgA5/+sAOv/6ADv/qgA8/+sAPf/7AD7/7wA//+8AQP++AEH/7gBC/8MAQ//qAET/1QBF/+sARv/pAEf/6ABI/+cASf/iAEr/2gBL/+4AHAAG/+cAF//hADL/1AAz/+sANP+wADX/6wA2/+QAN//jADj/qgA5/+cAOv/jADv/ugA8/+cAPf/vAD7/2gA//+kAQP+uAEH/7wBC/64AQ//kAET/uwBF/9oARv/aAEf/zABI/84ASf/TAEr/zQBL/+sAHwAG/+IAF/+lACP//gAk//sAL//uADL/hwAz/+8ANP+sADX/+AA2/9wAN//6ADj/uQA5/+4AOv/vADv/hAA8/+gAPf/pAD7/5wA//+YAQP+wAEH/6QBC/7oAQ//vAET/zgBF/+gARv/oAEf/2gBI/+YASf/QAEr/4gBL/+kAHAAG//sAF//+ADL/5wAz//sANP/kADX/+wA2//8AN//7ADj/4QA5//4AOv//ADv/6wA8//sAPf/+AD7//gA///sAQP/hAEH/+wBC/9oAQ//+AET/7wBF//sARv/6AEf/6QBI//kASf/rAEr/6QBL//sAMAAG/+wAB//YAAj/3QAJ/9MACv+/AAv/yQAM/+IADf/YAA7/7AAP/9MAEP/JABH/5wAS/+IAE//OABT/4gAV/+wAFv/nACD/WwAh/+wAIv/xACP/8QAk//YAJf/xADL/oQAz/+wANP/nADX/7AA2//sAN//2ADj/9gA5//sAO/+PADz/7AA9//YAPv/sAD//8QBA/+IAQf/nAEL/7ABD/+IARP/JAEX/zgBG/+cAR/+/AEj/xABJ/5IASv+/AEv/4gArAAb/9gAI/8QACf+cAAr/zAAL/5QADP+6AA3/xAAO/+oAD//BABD/zgAR/78AEv+7ABP/2AAU/78AFf+mABcAAgAk/+cAMf+mADL/2AAz/+cANP+7ADX/5gA2//MAN//zADj/sQA5/+oAOv/rADz/6AA9/+gAPv/mAD//5wBA/7oAQf/4AEL/twBD/+gARP/OAEX/sQBG/88AR/+EAEj/lwBJ/9AASv+NAEv/9wAsAAb/9gAH/+oACP/nAAn/xAAK/+gAC//TAAz/3QAN/9gADv/lAA//5wAQ/+IAEf/aABL/3AAT/9MAFP/bABX/xAAk//EAMf/YADL/zQAz/+wANP/kADX/9wA2//MAN//9ADj/4wA5//cAOv/3ADv/5gA8//4APf/9AD7/7gA//+4AQP/kAEH/+QBC/+YAQ//vAET/6QBF/9oARv/vAEf/zgBI/88ASf/QAEr/uQBL//kAKwAG//YAB//qAAj/7AAJ/9gACv/uAAv/4gAM/+IADf/dAA7/9AAP/+IAEP/eABH/5gAS/+IAE//TABT/3QAV/90AJP/2ADH/7AAy/74AM//uADT/3wA1//oANv/xADj/5wA5/+8AOv/5ADv/2AA8/+0APf/9AD7/8wA///EAQP/rAEH/+ABC/+QAQ//3AET/5gBF/9AARv/zAEf/xgBI/80ASf++AEr/twBL/+gAKgAH//EACP/xAAn/0wAK/+YAC//YAAz/5wAN/9gADv/oAA//5wAQ/+IAEf/iABP/2AAU/90AFf/dACT/+wAx/+wAMv+7ADP/9wA0/+QANf/rADb/5wA3//EAOP/kADn/+QA6//YAO//aADz/9wA9//4APv/uAD//8QBA/+cAQf/vAEL/4wBD/+sARP/cAEX/0ABG/+sAR//CAEj/xABJ/7QASv+6AEv/6AAmAAf/9gAI//EACf/sAAr/9gAM/+cADv/6AA//8QAQ//EAEf/vABL/4QAT//EAFP/iABX/5wAy/+kAM//9ADT/5wA1//sANv/9ADf//gA4/+sAOf/+ADoAAQA7/+gAPP/9AD3/9wA+//0AP//9AED/6wBBAAEAQv/pAEP/+QBE/+wARgACAEf/6QBI/+8ASf/nAEr/6wBL//sAKQAH//sACP/xAAn/5wAK/+4AC//2AAz/4gAN//sADv/1AA//8QAQ/90AEf/kABL/4gAT/+wAFP/YABX/3QAx//YAMv+5ADP/+AA0/+MANf/3ADb/+AA3//kAOP/iADn/+gA6//0AO//OADz//QA9//4APv/5AD///ABA/+YAQv/jAEP/9wBE/+YARf/vAEb//gBH/+cASP/vAEn/0QBK/+YAS//9ACgAB//2AAj/4gAJ/90ACv/sAAv/4gAM/+gADf/iAA7/9QAP/+gAEP/dABH/4AAS/+YAE//OABT/4gAV/90AJP/7ADH/9gAy/8EAM//vADT/3wA2//QAN//4ADj/4wA5/+kAOv/6ADv/0QA8/+YAPf/zAD7/6QA///EAQP/qAEL/3ABD/+gARP/fAEb/+ABH/7sASP+7AEn/rwBK/68AS//jACcACP/xAAn/7AAK//gADP/2AA7/9wAP//YAEP/xABH/5wAS/+cAE//xABT/7AAV/+UAMf/2ADL/6AAz//kANP/qADX/+wA2//oAN//7ADj/6wA5//cAOv//ADv/4wA8//sAPf/+AD7/+wA///oAQP/sAEH/+gBC/+MAQ//5AET/7wBF/+oARv/7AEf/4wBI/+wASf/jAEr/6gBL//4AJgAH//sACP/7AAn/5wAK//oADP/2AA7/9gAP//YAEP/xABH/8QAS//IAE//xABT/5wAV//EAMv/nADP/+wA0//EANf/9ADb//gA3//4AOP/uADn/+wA6//4AO//oAD0AAAA+//sAP//+AED/7wBB//4AQv/qAEP//wBE//EARf/3AEb/+wBH/+YASP/3AEn/2gBK/+QAS//7ACkAB//2AAj/9gAJ/90ACv/yAAz/8QAO//EAD//wABD/6gAR/+wAEv/mABP/9AAU/+wAFf/rABf/zgAx//YAMv/OADP/7wA0/+oANf/5ADb//gA3//0AOP/oADn/+QA6//0AO//YADz//gA9//8APv/6AD//+QBA/+4AQf/5AEL/4wBD//gARP/qAEX/+QBG//oAR//pAEj/6QBJ/9UASv/rAEv/+gAqAAf/sgAI/8kACf+wAAr/ugAL/7UADP+1AA3/3QAO/+QAD/+6ABD/sgAR/7UAEv+xABP/4gAU/6sAFf+mADH/lwAy/9oAM//jADT/qwA1/+IANv/iADf/4wA4/5oAOf/XADr/7gA7/7QAPP/kAD3/6wA+/+4AP//mAED/rQBB/+8AQv+qAEP/6gBE/74ARf/XAEb/2gBH/9AASP/SAEn/1QBK/80AS//qACsAB//nAAj/8QAJ/6YACv/sAAv/nAAM/90ADf+6AA7/9gAP/+IAEP/sABH/3QAS/9oAE//sABT/3QAV/8QAJP/+ADH/pgAy/+sAM//vADT/ygA1//0ANv/zADf/+wA4/9MAOf/vADr/+wA7/9gAPP/3AD3/9wA+//EAP//7AED/1QBB//cAQv/PAEP/8wBE/+YARf+7AEb/5wBH/7UASP/JAEn/2gBK/6UAS//zACkAB//2AAn/7AAK//kAC//sAAz/9gAO//oAD//2ABD/7AAR/+cAEv/vABP/9gAU//EAFf/sABcAAQAx/+YAMv/pADP/+QA0/+oANf/zADb/+wA3//oAOP/nADn/9wA6//4AO//uADz/+QA9//oAPv/7AD//+QBA/+8AQf/3AEL/6QBD//oARP/sAEX/8wBG//gAR//pAEj/6QBJ/+MASv/nAEv//QAqAAf/9gAI//sACf/sAAr/9wAL/+wADP/7AA7/+gAP//EAEP/2ABH/7AAS//EAE//2ABT/9gAV/+QAFwABADH/8QAy/+kAM//3ADT/6QA1//kANv/5ADf/+QA4/+8AOf/6ADr//gA7/+8APP/7AD3/+gA+//oAP//4AED/7wBB//sAQv/rAEP//QBE/+8ARf/3AEb/+gBH/+4ASP/rAEn/4QBK/+wAS//5ACsAB//xAAj/4gAJ/9gACv/sAAv/2AAM//YADf/iAA7/8QAP/90AEP/iABH/0wAS/+IAE//JABT/4gAV/94AJP/7ADH/3QAy/7QAM//pADT/4QA1/+wANv/vADf/6gA4/+IAOf/qADr/+gA7/9oAPP/pAD3/6wA+/+wAP//pAED/4QBB/+sAQv/cAEP/6wBE/+IARf/JAEb/7gBH/7wASP/BAEn/pgBK/7UAS//kACwAB//iAAj/5wAJ/+IACv/OAAv/2AAM/+cADf/nAA7/8AAP/90AEP+6ABH/xAAS/9cAE//XABT/2AAV/9gAG//3ACT/+wAx/+IAMv+gADP/6QA0/+MANf/mADb/7wA3/+sAOP/aADn/6AA6//YAO/+xADz/6wA9/+4APv/oAD//7wBA/9oAQf/oAEL/1wBD/+MARP/aAEX/2ABG/+cAR//PAEj/yQBJ/7kASv/BAEv/6AApAAf/8QAI/+wACf/OAAr/6gAL/84ADP/nAA3/2AAO//YAD//fABD/4gAR/9gAEv/lABP/5wAU/+IAFf/YADH/4gAy/+cAM//3ADT/2gA1//gANv/5ADf/+wA4/9wAOf/3ADr//gA7/+MAPP/3AD3//QA+//cAP//3AED/1QBC/9UAQ//9AET/6QBF/+EARv/pAEf/ugBI/8QASf/aAEr/wgBL//sAKwAH/8kACP/YAAn/xAAK/9MAC/+/AAz/yQAN/9gADv/nAA//xAAQ/7oAEf+1ABL/wQAT/9gAFP+6ABX/vwAk//sAMf+/ADL/2gAz/+gANP/KADX/6QA2/+kAN//oADj/xgA5/+QAOv/nADv/uQA8/+wAPf/uAD7/6QA//+cAQP/GAEH/7ABC/8kAQ//mAET/2ABF/84ARv/VAEf/wQBI/7wASf/GAEr/tABL/+8AKwAH//EACP/2AAn/yQAK/+oAC//TAAz/3QAN/+cADv/sAA//4gAQ/+IAEf/YABL/3wAT/90AFP/dABX/2AAk//sAMf/nADL/xgAz//MANP/iADX/7wA2/+4AN//3ADj/4wA5/+kAOv/vADv/1wA8/+4APf/zAD7/6gA//+0AQP/kAEH/9wBC/98AQ//qAET/5wBF/9AARv/vAEf/yQBI/9AASf/PAEr/xABL/+8AKQAH/+cACP/sAAn/5wAK/+kAC//dAAz/2AAO/+wAD//XABD/qwAR/8kAEv/AABP/9gAU/9MAFf/OADH/2AAy/7AAM//5ADT/2gA1//0ANv/6ADf//gA4/98AOf/3ADr//QA7/8YAPP/7AD3//gA+//gAP//4AED/1QBB//0AQv/VAEP/+ABE/+MARf/zAEb/+QBH/+4ASP/zAEn/4gBK/+cAS//zACkACP/2AAn/5wAK//QAC//sAAz/+wAN//4ADv/2AA//5QAQ/+wAEf/nABL/8wAT//EAFP/nABX/3QAx/+QAMv/KADP/+QA0/+wANf/6ADb/+gA3//sAOP/vADn/+gA6AAAAO//hADz//wA9//0APv/5AD///gBA/+wAQf/7AEL/7ABD//sARP/vAEX/9wBG//sAR//zAEj/6gBJ/+EASv/jAEv/+wArAAf/zgAI/84ACf/YAAr/ygAL/9gADP/JAA3/+wAO/9kAD//JABD/ogAR/7oAEv+5ABP/5wAU/8QAFf+9ACT/+wAx/7oAMv+FADP/+wA0/7sANf/qADb/6wA3/+wAOP++ADn/5gA6/+8AO/+iADz/6AA9/+oAPv/sAD//7wBA/8MAQf/mAEL/uwBD/+YARP/KAEX/6QBG/+8AR//jAEj/3wBJ/9MASv/hAEv/6wApAAf/zgAI/84ACf/TAAv/2AAM/84ADv/eAA//xAAQ/7AAEf/TABL/sQAT/+wAFP/FABX/yQAk//sAMf/JADL/lQAz//MANP/BADX/+QA2//MAN//3ADj/xgA5//sAOv/3ADv/pQA8/+8APf/+AD7/7gA//+oAQP/DAEH/7gBC/8QAQ//vAET/0ABF/+4ARv/uAEf/6QBI/+QASf/aAEr/5gBL//cAKgAH/8QACP/OAAn/pgAL/7oADP+rAA3/3QAO/+cAD/+5ABD/twAR/8QAEv+zABP/0wAU/7AAFf+cACT/+wAx/6EAMv/aADP/4wA0/7cANf/4ADb/4wA3//0AOP+3ADn/7gA6/+8AO/+7ADz/7gA9//EAPv/jAD//6ABA/7oAQf/zAEL/uQBD/+sARP/OAEX/3wBG/+EAR//aAEj/2ABJ/9gASv/MAEv/7gAsAAf/yQAI/84ACf/JAAr/wgAL/8kADP/JAA3//gAO/8kAD/+6ABD/jQAR/7oAEv+gABP/4gAU/7UAFf+6AB7/8QAk//sAMf+1ADL/lwAz/+8ANP+7ADX/5gA2/+4AN//uADj/uQA5/+gAOv/3ADv/hAA8/+8APf/sAD7/7AA//+oAQP+6AEH/7ABC/7kAQ//pAET/ygBF/+8ARv/vAEf/6ABI/+kASf/fAEr/5ABL//EAJgAH//YACf/iAAr/7AAL/+cADP/iAA3//wAO//UAD//nABD/7AAR/+IAEv/gABP/7AAU/90AFf/TADH/4gAy/+sAM//+ADT/6AA1//4ANgAEADf//wA4/9wAOf/6ADv/5gA8//8APf//AD///QBA/+MAQf//AEMAAABE/+8ARf/4AEb/+wBH//cASP/rAEn/6QBK/+kAS//9AAIAAQAGAEsAAAAAAAAAAQAAAADUGBYRAAAAANmXsTQAAAAA2ZexNA==";class mo extends PA{constructor(){super(...arguments),this.moduleName="Vegemite"}svgPreview(t,e){return this.svgElement(t,e)}svgPrint(t,e){return this.svgElement(t,e)}svgElement(t,e){const A=mA(Eo),i=t!==""?(m=>m.charAt(0).toUpperCase()+m.substr(1).toLowerCase())(t):"",s=A.getPath(i,0,72,72),o=s.toSVG(2),r=s.getBoundingBox(),c=r.x2-r.x1,l=s.toPathData(3),g=()=>{const m=R("g");m.classList.add("module-text-group");const f=R("defs");m.appendChild(f),f.appendChild(an(0,2,2,"shadow"));const p=R("path");p.setAttribute("d",l),p.setAttribute("stroke","black"),p.setAttribute("stroke-width","3"),f.appendChild(p);const I=R("g");I.classList.add("module-layer0"),m.appendChild(I),I.setAttribute("filter","url(#shadow)"),I.innerHTML=p.outerHTML;const D=R("g");D.classList.add("module-layer1"),m.appendChild(D),D.setAttribute("stroke-width","3"),D.setAttribute("stroke","rgb(45,41,38)"),D.setAttribute("fill","rgb(45,41,38)"),D.setAttribute("transform","translate(0.5,0)"),D.innerHTML=o;const F=R("g");F.classList.add("module-layer2"),m.appendChild(F),F.setAttribute("fill","rgb(255,209,0)"),F.setAttribute("transform","translate(1,-0.1)"),F.innerHTML=o;const x=R("g");return x.classList.add("module-layer3"),m.appendChild(x),x.setAttribute("fill","white"),x.innerHTML=o,new NA(m).transform(([P,v])=>[P,v+(c/2-P)**2/(c*6)]),m},d=R("g");d.classList.add("module-root");const B=R("defs");d.appendChild(B);const h=R("g");h.classList.add("module-bounds"),d.appendChild(h);const C=vA(e.height,e.width);C.setAttribute("opacity","0"),h.appendChild(C);const u=R("g");u.classList.add("module-text-enclosure"),d.appendChild(u);const w=g();u.appendChild(w);const E=lA(l);return kA(u,E,e.height,e.width,.35,.65),nn(d.outerHTML)}}async function sn(n){if(n==="Favourites")return new Co;if(n==="Maltesers"){const t=_("https://assets.spiff.com.au/public/modules/img/MaltesersBackground.svg"),e=_("https://assets.spiff.com.au/public/modules/img/MaltesersBackgroundShort.svg"),A=await Promise.all([t,e]);return new wo(A[0],A[1])}if(n==="Vegemite")return new mo;throw new L(`Failed to resolve Module, Module ${n} not found`)}const xe=Q.gql`
1370
+ `,p={};p[this.shapeFillId]={browserValue:m};const C=Q();return{id:C,region:h,command:new G({stepRegion:h,stepName:t.stepName,colors:p,id:C,svg:f,type:T.Illustration,y:h.top,x:h.left,rotation:h.rotation,width:h.width,height:h.height,layer:h.layer,layerIndex:h.layerIndex,immutable:h.immutable,excludeFromExport:t.data.excludeFromPrint},g)}},d=t.data.regions.map(c),A=d.filter(h=>!!h).map(h=>h==null?void 0:h.command),u=d.filter(h=>!!h).map(h=>({id:h.id,region:h.region}));return{command:new O(A),followup:async()=>{await n.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],u,async()=>{n.updateStorage(t.stepName,{colour:o()})})}}}}}const xt=new Ks;class Xs{constructor(){this.latestToast=null,this.toastType=null,this.toastCallbacks=[]}addToastCallback(t){t({toastMessage:this.latestToast,toastType:this.toastType}),this.toastCallbacks.push(t)}removeToastCallback(t){this.toastCallbacks=this.toastCallbacks.filter(e=>e!==t)}setLatestToast(t,e){this.latestToast=t,this.toastType=e,this.onToastChange()}onToastChange(){this.toastCallbacks.forEach(t=>t({toastMessage:this.latestToast,toastType:this.toastType}))}}const Jn=new Xs,ze=(r,t,e,a,n)=>{if(t.some(d=>d==null))throw new Error(`Failed to autosize lines: ${t.join(", ")}`);let i=t.map(d=>d.split(`
1371
+ `)).flat(),s=i.length,o=i.map(d=>At(d,a,n));const l=n.getApproximateHeight()*a;let c=!0;for(;c;){if(l+(s-1)*e>r.height)return[null,null];const A=Math.max(...o);if(A<=r.width)return[i,A];const u=o.reduce((f,p,C,w)=>p>w[f]?C:f,0),h=i[u];let g=!1,m=h.length;for(;!g&&m>-1;){m=h.lastIndexOf(" ",m-1);const f=[h.slice(0,m),h.slice(m+1)],p=f.map(w=>At(w,a,n));p[0]<=r.width&&(i=[...i.slice(0,u),...f,...i.slice(u+1)],o=[...o.slice(0,u),...p,...o.slice(u+1)],s+=1,g=!0)}g||(c=!1)}return[null,null]},qt=(r,t,e,a,n)=>{let i,s;const o=St(t.assetUrl),l=o.getFont();if(n.size){const u=r/l.unitsPerEm;return[i,s]=ze(e,a,r,u,o),[n.size,i,s]}const c=6;let d=c-Oe;if(a.length>0){let u=a,h=0;for(;(!n.maxSize||d<=n.maxSize)&&u;)d+=Oe,h=d/l.unitsPerEm,[u,s]=ze(e,a,d,h,o)}d>c&&(d-=Oe),n.minSize&&d<n.minSize&&(d=n.minSize);const A=d/l.unitsPerEm;return[i,s]=ze(e,a,d,A,o),[d,i,s]},Ge=30;class Ce extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=Ce.name}}const Zs=["‘","’","“","”",`
1372
+ `];class we extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=we.name}}class _s{constructor(){this.cachedColors=new Map,this.cachedStrokeColors=new Map,this.filterUnsupportedCharacters=(t,e)=>{let a=t.replace(/(\r\n|\r|(\u2665|\u00a9|\u00ae|[\u2000-\u2017]|[\u201E-\u3300]]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]))/gm,"");const n=[],i=e?St(e.assetUrl):void 0;if(i){const s=a.split("").filter(l=>!Zs.includes(l)).join(""),o=s.split("").map(l=>i.getFont().charToGlyph(l));for(let l=0;l<o.length;l++)o[l].name===".notdef"&&n.push(String.fromCharCode(s.charCodeAt(l)))}for(let s=0;s<n.length;s++)a=a.replaceAll(n[s],"");return a},this.textAlign=t=>t.vertical?"center":t.textAlign||"center",this.getErrorsForText=(t,e,a)=>{let n;e.data&&e.data.maxLength&&t.length>e.data.maxLength&&(n||(n={}),n.hitCharacterLimit=!0);const i=a.getProfanities(),s=qe.split(t.toLowerCase());for(const l of s)for(const c in i){const d=i[c].toLowerCase().replace(/\s/g,"");if(l===d){n||(n={}),n.blockedProfanity=!0;break}}return!e.data.allowNewlines&&(t.includes(`
1373
+ `)||t.includes("\r"))&&(n||(n={}),n.illegalMultipleLines=!0),n}}async init(t,e,a){var i,s,o;const n=t.option;if(!n)return null;if(a)await this.reload(t,e,a);else{const l=this.getDefaultImageFillVariant(t.data),c=(i=l==null?void 0:l.asset)==null?void 0:i.fileLink,d=c?await ea(c):void 0,A=d?{src:d.src,height:d.height,width:d.width,scale:t.data.imageFillScale||1}:void 0,u=this.getDefaultStrokeColorVariant(t.data),h=t.data.strokeEnabled&&(u!=null&&u.color)?{browserValue:u.color,pmsValue:u.name}:void 0;e.updateStorage(t.stepName,{text:t.data.defaultText||"",inputText:t.data.defaultText||"",color:((s=this.getDefaultColorVariant(t.data))==null?void 0:s.color)||this.getDefaultColor(t.data),fillImage:A,strokeColor:h}),e.updateMetadata(t.stepName,{text:t.data.defaultText||"",color:((o=this.getDefaultColorVariant(t.data))==null?void 0:o.name)||this.getDefaultColor(t.data),fillImage:l==null?void 0:l.name,strokeColor:t.data.strokeEnabled?u==null?void 0:u.color:void 0});const g=X.getDefaultVariant(n);if(g)return this.selectVariantCommand(t,g,{},[],e,()=>{},()=>{},A,h)}return null}findLayoutElements(t,e){return t.getRegionElements(e.stepName).map(i=>L(i.id,t.getAllLayoutData()))}availableFillColors(t){var n;const e=this.cachedColors.get(t.stepName);if(e)return e;const a=t.data.colorOption;if(a){const i=((n=a.variants)==null?void 0:n.map(s=>({fill:s.color,stroke:s.color,variant:s})))||[];return this.cachedColors.set(t.stepName,i),i}return[]}changeAlignment(t,e,a,n){if(!t.data||!t.data.regions)return;const i=n.getCommandDispatcher();for(const s of a){const o=new Wn(s.id,e);i(o)}}async changeFillColor(t,e,a,n){var l;if(!t.data||!t.data.regions)return;const i=n.getCommandDispatcher();e.variant?n.updateMetadata(t.stepName,{color:e.variant.name}):n.updateMetadata(t.stepName,{color:e.fill});const s=t.data.colorOption,o=s?this.createTextFillSpotColor(s,e.variant):void 0;s?n.updateStorage(t.stepName,{color:e.fill,colorProfileAssetKey:(l=s.colorProfile)==null?void 0:l.key}):n.updateStorage(t.stepName,{color:e.fill});for(const c of a){if(!e.fill)throw new Error("Fill not set on new color selection!");const d=new Gn(c.id,e.fill,o);i(d)}}async availableFillImages(t){var a,n;const e=t.data.imageFillOption;if(e){const i=((n=(a=e.variants)==null?void 0:a.map(s=>{var o;return(o=s.asset)==null?void 0:o.fileLink}))==null?void 0:n.filter(s=>!!s))||[];return Promise.all(i.map(async s=>{const o=await ea(s);return{src:s,width:o.width,height:o.height,scale:t.data.imageFillScale||1}}))}return Promise.resolve([])}async changeFillImage(t,e,a,n){var o,l;if(!t.data||!t.data.regions)return;const i=n.getCommandDispatcher(),s=(l=(o=t.option)==null?void 0:o.variants)==null?void 0:l.find(c=>{var d;return((d=c.asset)==null?void 0:d.fileLink)===e.src});n.updateMetadata(t.stepName,{fillImage:s==null?void 0:s.name}),n.updateStorage(t.stepName,{fillImage:e});for(const c of a){const d=new $e(c.id,e);i(d)}}availableStrokeColors(t){var n;const e=this.cachedStrokeColors.get(t.stepName);if(e)return e;const a=t.data.strokeOption;if(a){const i=((n=a.variants)==null?void 0:n.map(s=>({fill:s.color,stroke:s.color,variant:s})))||[];return this.cachedStrokeColors.set(t.stepName,i),i}return[]}async changeStrokeColor(t,e,a,n){var o;if(!t.data||!t.data.regions)return;const i=n.getCommandDispatcher();e!=null&&e.variant?n.updateMetadata(t.stepName,{strokeColor:e.variant.name}):n.updateMetadata(t.stepName,{strokeColor:e==null?void 0:e.fill});const s=e?{browserValue:e.fill,pmsValue:e.pmsValue}:void 0;n.updateStorage(t.stepName,{strokeColor:s});for(const l of a){const c=new Ve(l.id,s,(o=t.data)==null?void 0:o.strokeThickness);i(c)}}getProcessedInput(t,e,a){const n=a?t:this.injectReplaceableText(t,e);return pe(n,{vertical:e.vertical,uppercase:e.uppercase})}updateInputText(t,e,a,n){const i=n.getStepStorage(a.stepName),s=this.getProcessedInput(t,a.data,!!i.customiseAllText),o={command:void 0,helperData:{},errorData:this.getErrorsForText(t,a,n)};if(o.errorData)return o;o.helperData.charactersRemaining=a.data.maxLength-s.length;const l=[],c=new Map,d=new Map;for(const A of e){if(!A.fontData)throw new $("Failed to resolve font data for text.");const[u,h]=qt(A.fontSize,A.fontData,{left:A.x,top:A.y,width:A.width,height:A.height,rotation:A.rotation,panelId:""},[s],{size:a.data.size,minSize:a.data.minSize,maxSize:a.data.maxSize});c.set(A.id,u),d.set(A.id,h);const g=a.data.curved?s:(h||[]).join(`
1374
+ `);l.push(this.generateTextChangeCommandsForRegion(u,a.data,A.id,g))}return!a.data.curved&&e.length>0&&!Array.from(d.values()).every(u=>u)?(o.errorData||(o.errorData={}),o.errorData.doesNotFit=!0,o):(n.updateStorage(a.stepName,{text:t}),n.updateMetadata(a.stepName,{text:s}),(i.defaultCleared||!a.data.deleteDefaultOnFocus)&&n.setMandatoryFulfilled(a.stepName,!0),o.command=new O(l),o)}async selectVariant(t,e,a,n,i){const s=await this.selectVariantCommand(t,e,a.getStepStorage(t.stepName)||{},a.getRegionElements(t.stepName),a,n,i);s&&(s.command&&a.getCommandDispatcher()(s.command),s.followup&&await s.followup())}createTextFillSpotColor(t,e){const a=t.colorProfile;if(a){const n=(a.name||"").replace(/\s/g,"-"),i=n.lastIndexOf("/"),o=n.slice(i+1).slice(0,-4);if(!e.namedColor)throw new Error("variant named color not set!");return{profileName:o,namedColor:e.namedColor}}}async reload(t,e,a){var c,d,A;const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),o=Object.values(a.layouts).map(u=>u.elements).flat().filter(u=>u.stepName===t.stepName),l=t.option;if(n!=null&&n.selectedVariants){const u=n.selectedVariants[0].id;if(l&&u){const h=(c=l.variants)==null?void 0:c.find(g=>g.id===u);if(h){const g=await this.fontDataFromVariant(h),m=o.map(w=>({id:w.id,region:w.stepRegion})),f=(d=n.storage)==null?void 0:d.color,p=(A=n.storage)==null?void 0:A.text;await e.setSelectionsAndElements(t.stepName,[h],m,async()=>{e.updateMetadata(t.stepName,{color:f,text:p}),e.updateStorage(t.stepName,{text:p,inputText:p});const w=o.map(v=>new na(v.id,g)),y=new O(w);e.getCommandDispatcher()(y)});const{command:C}=H.updateInputText(p||"",o,t,e);C&&e.getCommandDispatcher()(C)}}}}getDefaultColorVariant(t){const e=t.colorOption;if(e)return X.getDefaultVariant(e)}getDefaultColor(t){const e=t.colorOption;if(!e)return;const a=X.getDefaultVariant(e);return a==null?void 0:a.color}getDefaultImageFillVariant(t){const e=t.imageFillOption;if(e)return X.getDefaultVariant(e)}getDefaultStrokeColorVariant(t){const e=t.strokeOption;if(e)return X.getDefaultVariant(e)}async fontDataFromVariant(t){const e=t.asset;if(!e)throw new ht(t);const a=e.fileLink;if(!a)throw new Mt(e);const n=await vt(a);return{assetUrl:a,name:n.names.fullName.en}}async selectVariantCommand(t,e,a,n,i,s,o,l,c){var u;const d=i.markUpdatePending(),A=await this.fontDataFromVariant(e);if(n.length>0){const h=n.map(f=>new na(f.id,A));if(l){const f=n.map(p=>new $e(p.id,l));h.push(...f)}if(c){const f=n.map(p=>new Ve(p.id,c,t.data.strokeThickness));h.push(...f)}const g=await this.changeInputTextWithRegion(t,t.data.size||Ge,A,a.text||"",a,i,!!a.customiseAllText,s,o);return g&&h.push(g),{command:new O(h),followup:async()=>{i.markUpdateCompleted(d),await i.setSelectionsAndElements(t.stepName,[e],n)}}}else{const h=await this.createTextboxRegions(t.stepName,e,t.data,A,a,i),g=await this.changeInputTextWithRegion(t,t.data.size||Ge,A,((u=h[0])==null?void 0:u.newElement.input)||a.text||t.data.defaultText||"",a,i,!!a.customiseAllText,s,o),m=h.flatMap(p=>p.commands);if(l){const p=h.map(C=>new $e(C.regionElement.id,l));m.push(...p)}if(c){const p=n.map(C=>new Ve(C.id,c,t.data.strokeThickness));m.push(...p)}return g&&m.push(g),{command:new O(m),followup:async()=>{i.markUpdateCompleted(d)}}}}injectReplaceableText(t,e){return e.replaceableText?e.replaceableText.replace("{{}}",t):t}async createTextboxRegions(t,e,a,n,i,s){if(!a||!a.regions)throw new Error("Step data not supplied");const o=i.text||a.defaultText||"",l=this.getProcessedInput(o,a,!1),c=async A=>{var m;const h=s.getLayouts().find(f=>f.panelId===A.panelId),g=Q();try{if(!h)throw new we("Failed to find layout for region: "+A.panelId);const f=a.colorOption;let p;if(f&&f.variants){const N=f.variants.find(z=>{var W;return z.id===((W=f.defaultVariant)==null?void 0:W.id)})||f.variants[0];p=this.createTextFillSpotColor(f,N),s.updateStorage(t,{colorProfileAssetKey:(m=f.colorProfile)==null?void 0:m.key})}const C=await this.getDefaultColor(a),w=C||"#000000",y={stepRegion:A,stepName:t,align:this.textAlign(a),fill:i.color?i.color:w,fontSize:a.size||Ge,fontData:n,id:g,layer:A.layer,layerIndex:A.layerIndex,rotation:A.rotation,text:l,input:o,type:T.Textbox,vertical:a.vertical,x:A.left,y:A.top,height:A.height,width:A.width,immutable:A.immutable,verticalAlign:a.verticalAlign||"middle",curved:a.curved,paths:a.paths,fillSpotColorDefinition:p},v=[],E=new Map,B=new Map;if(!y.fontData)throw new $("Failed to resolve font data for text.");const[x,P]=qt(y.fontSize,y.fontData,{left:y.x,top:y.y,width:y.width,height:y.height,rotation:y.rotation,panelId:""},[l],{size:a.size,minSize:a.minSize,maxSize:a.maxSize});E.set(y.id,x),B.set(y.id,P);const F=a.curved||a.vertical?l:(P||[]).join(`
1375
+ `);v.push(this.generateTextChangeCommandsForRegion(x,a,y.id,F));const M=new G(y,h);return{regionElement:{id:g,region:A},commands:[M,...v],newElement:y,fontData:n}}catch(f){throw console.log(f),new Ce("Error adding font to region")}},d=await Promise.all(a.regions.map(c)).catch(A=>{throw A instanceof Ce?(Jn.setLatestToast("Failed to load font.",le.Error),A):A instanceof we?A:new Error(A)});return await s.setSelectionsAndElements(t,[e],d.map(A=>A.regionElement),async()=>{s.updateMetadata(t,{text:o}),s.updateStorage(t,{text:o})}),d}generateTextChangeCommandsForRegion(t,e,a,n){const i=[],s=new qn(a,n);if(i.push(s),!e.size){const l=new jn(a,t);i.push(l)}return new O(i)}async changeInputTextWithRegion(t,e,a,n,i,s,o,l,c,d){const A=(n||"").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,""),u=this.getProcessedInput(A,t.data,o),h=s.getRegionElements(t.stepName),g=new Map,m=new Map;for(const y of h)if(y.region){const[v,E]=qt(e,a,y.region,[u],{size:t.data.size,minSize:t.data.minSize,maxSize:t.data.maxSize});g.set(y.id,v),m.set(y.id,E)}const p=(()=>{if(t.data&&t.data.maxLength&&u.length>t.data.maxLength)return d&&d(!0),{info:"0"};const y=s.getProfanities(),v=qe.split(u.toLowerCase());for(const E of v)for(const B in y){const x=y[B].toLowerCase().replace(/\s/g,"");if(E===x)return l(!0),{error:"Blocked profanity."}}return!t.data.vertical&&!t.data.allowNewlines&&(u.includes(`
1376
+ `)||u.includes("\r"))?(l(!0),{error:"Cannot span multiple lines."}):!t.data.curved&&!Array.from(m.values()).every(B=>B)?(l(!0),{error:"Does not fit."}):(l(!1),{info:(t.data.maxLength-u.length).toString()})})();if(p.error){c(p.error);return}if(c(`${p.info} characters remaining`||""),d)return;s.updateStorage(t.stepName,{text:A}),s.updateMetadata(t.stepName,{text:this.injectReplaceableText(A,t.data)}),(i.defaultCleared||!t.data.deleteDefaultOnFocus)&&s.setMandatoryFulfilled(t.stepName,!0);const C=[];for(const y of h){const v=t.data.curved?u:(m.get(y.id)||[]).join(`
1377
+ `);C.push(this.generateTextChangeCommandsForRegion(g.get(y.id)||1,t.data,y.id,v))}return new O(C)}}const H=new _s;class to{}const eo="data:application/octet-stream;base64,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DOYNZA3mDlQOyg88D54QEBCGEQARchHsEmIS1BOWFAwUghTwFWIV1BaiFxQXkhgEGMYZdBomGtQbfhwYHL4dYB3+HpgfPh/oIJYhPCHmIpQjRiPsJJolSCXuJpQnQifoKJIpRAAmAAn/8QAK//sADP/7AA3/+wAO//sAD//7ABD/+wAR//sAEv/7ABP/+wAU//sAFf/xABb/8QAZ//sAHf/2AB7/+wAf//sAIP/xACH/+wAi//sAI//7ACT/+wAl//EAJv/2ACf/8QAo//sAKf/2ACr/+wAr//sALP/sAC3/7AAu/+IAL//dADD/9gAx/+wAMv/7ADP/+wA0//YAKwAG//EACP/nAAn/4gAK/9MAC//iAAz/9gAN/+IADv/sAA//4gAQ/9gAEf/iABL/1QAT//EAFP/nABX/8QAW/9gAMf/TADL/pgAz//MANP/nADX/8QA2//EAN//7ADj/7gA5//YAOv/7ADv/2AA8//EAPf/2AD7/9gA///EAQP/sAEH/+wBC/+wAQ//xAET/7ABF/+wARv/2AEf/3QBI/90ASf/EAEr/zgBL//YAKwAG//YAB//2AAn/3QAL/+wADP/sAA3/8QAO//YAD//sABD/8QAR/+wAEv/iABP/5wAU/+wAFf/dABb/7AAX/78AMf/YADL/sAAz/+IANP/iADX/8QA2/+cAN//xADj/3QA5/+wAOv/2ADv/4gA8//EAPf/xAD7/8QA///YAQP/YAEH/9gBC/+cAQ//sAET/7ABF/+wARv/xAEf/zgBI/9MASf/OAEr/zgBL/+wAKgAG//YAB//iAAj/4gAK/+IADP/dAA3/ugAO/+IAD//iABD/5wAR/+IAEv/dABP/yQAU/90AFf+mABb/0wAx/5gAMv/YADP/4gA0/9MANf/xADb/7AA3/+wAOP/iADn/7AA6//EAO//dADz/5wA9/+wAPv/sAD//5wBA/9gAQf/sAEL/zgBD/+wARP/YAEX/tQBG/90AR/+hAEj/oQBJ/8QASv+DAEv/7AAqAAb/8QAH/90ACP/YAAn/oQAL/8kADP/iAA3/sAAO/+cAD//YABD/4gAR/90AEv/bABP/4gAU/+IAFf/TABb/5wAg/+QAMf/nADL/3AAz//QANP/rADX/9AA2//IAN//4ADj/8AA5//QAOv/1ADv/7AA8/+oAPf/7AD7/9wA///IAQP/tAEH/+wBC/+IAQ//2AET/4wBF/7YARv/vAEf/pgBK/6MAS//yACYAB//TAAj/8QAK/84ADP/dAA3/9gAO//EAD//dABD/pgAR/8kAEv+6ABP/7AAU/90AFf/OADH/xAAy/5IAM//sADT/3QA1/+cANv/xADf/9gA4/90AO/9WADz/5wA9//EAPv/sAD//5wBA/84AQf/dAEL/0wBD/+cARP/nAEX/5wBG/+cAR//dAEj/2ABJ/7oASv/JAEv/4gAsAAb/+wAH//sACP/xAAn/zgAK/+cAC//dAAz/9gAN/9gADv/tAA//7AAQ/+kAEf/rABL/3QAT/90AFP/hABX/3QAW/90AMf/nADL/vwAz/+cANP/nADX/8QA2//EAN//sADj/5wA5//YAOv/2ADv/4gA8//EAPf/2AD7/+wA///sAQP/2AEH/+wBC/+wAQ//7AET/7ABF/9MARv/7AEf/yQBI/84ASf+wAEr/xABL/+cADgAG//sACf/xAAv/7AAN//sADv/7AA8AAAAR//EAEv/0ABP/9gAU//EAFf/xABb/7AAx//YAQP/2ACkABv/7AAf/9gAI//sACf/iAAr/5wAL/+wADP/vAA3/3QAO//sAD//qABD/8QAR/+wAEv/nABP/8QAU/+cAFf/iABb/7AAx/+cAMv/vADP//AA0/+cANf/7ADb//gA4//EAOf/8ADr//AA7/+kAPP/6AD3//QA+//4AP//7AEL/6gBD//0ARP/2AEX/7ABG//EAR//YAEj/4gBJ/+wASv/LAEv//AAsAAb/+wAH//EACP/2AAn/0wAK/+IAC//JAAz/5wAN/90ADv/iAA//7AAQ/+cAEf/sABL/3QAT/9MAFP/iABX/zgAW/+cAMf/YADL/xAAz/+wANP/dADX/6AA2//EAN//xADj/4wA5//EAOv/2ADv/7AA8/+wAPf/sAD7/9gA//+wAQP/iAEH/8QBC/90AQ//nAET/5wBF/8QARv/mAEf/xABI/8kASf+1AEr/rQBL/+IALAAG//sAB//7AAj/9gAJ/9MACv/2AAv/ugAM/+kADf/dAA7/9gAP/+wAEP/2ABH/8AAS//EAE//2ABT/5wAV/9gAFv/sADH/vwAy/9UAM//eADT/3wA1//EANv/xADf/9gA4/+IAOf/xADr/9gA7/+wAPP/xAD3/9gA+//EAP//2AED/2ABB//EAQv/nAEP/9gBE/+cARf/TAEb/8QBH/9gASP/YAEn/xgBK/78AS//xACsABv/7AAf/9gAI/+wACf/TAAr/5wAL/90ADP/lAA3/zgAO/90AD//dABD/7AAR/+IAEv/iABP/2AAU/+IAFf/JABb/5wAx/90AMv/EADP/6wA0/+EANf/wADb/8AA4/9wAOf/dADr/7AA7/9gAPP/sAD3/5wA+/+wAP//iAED/0wBB/+IAQv/YAEP/4gBE/84ARf/JAEb/4gBH/8kASP/OAEn/vwBK/8kAS//TACwABv/7AAf/3wAI/+cACf+wAAr/4wAL/8kADP/dAA3/xwAO/+cAD//dABD/7AAR/+cAEv/iABP/yQAU/9cAFf+/ABb/4gAa/+kAMf/YADL/uwAz/+EANP/dADb/6wA3//MAOP/lADn/8QA6//IAO//eADz/5wA9/+4APv/zAD//8ABA/+IAQf/2AEL/6gBD//YARP/kAEX/zABG/+8AR/+0AEj/uwBJ/64ASv+vAEv/5QAsAAb/+wAH/90ACP/nAAn/4gAK/9MAC//nAAz/3QAN//YADv/eAA//3QAQ/7AAEf/OABL/sAAT//sAFP/dABX/0wAW/9MAMf/iADL/iAAz//YANP/OADX/9gA2//EAN//xADj/0wA5//YAOv/zADv/gAA8//EAPf/7AD7/+wA///YAQP/OAEH/7gBC/84AQ//2AET/2ABF//sARv/2AEf/5wBI/+cASf/TAEr/4gBL/+wALAAG//sAB//2AAj/8QAJ/9gACv/nAAv/3QAM/+IADf/dAA7/4gAP/+IAEP/nABH/5wAS/9gAE//YABT/3QAV/84AFv/sADH/5wAy/78AM//nADT/2AA1/+cANv/nADf/7AA4/90AOf/sADr/7AA7/+cAPP/sAD3/8QA+/+wAP//xAED/4gBB//EAQv/dAEP/5wBE/+IARf/YAEb/5wBH/78ASP/HAEn/sABK/7UAS//dACsABv/xAAf/8QAI/+IACf/dAAr/0wAL/+IADP/iAA3/3QAO/+cAD//dABD/zgAR/9MAEv/EABP/0wAU/84AFv/dADH/4gAy/6EAM//jADT/3QA1/+wANv/sADf/5wA4/90AOf/nADr/8QA7/78APP/xAD3/9gA+/+wAP//nAED/3QBB/+cAQv/nAEP/5wBE/+IARf/OAEb/3QBH/8QASP/JAEn/lwBK/7oAS//YACkABv/sAAf/0wAI/90ACf/OAAr/3QAM/90ADf/EAA7/5wAP/9gAEP/YABH/3QAS/9MAE//YABT/4gAV/90AMf/sADL/wAAz/+8ANP/kADX/6wA2//AAN//2ADj/5AA5//EAOv/uADv/1gA8//QAPf/2AD7/8QA///AAQP/dAEH/7ABD/+gARP/YAEX/1QBG/+wAR/+3AEj/wwBJ/7UASv+wAEv/5gAeAAf/zgAi/+4AI//5ACT/7wAy/9AAM//pADT/sQA1/+sANv/nADf/5gA4/7oAOf/vADr/9wA7/9AAPP/sAD3/6wA+/+YAP//sAED/uwBB/+kAQv+7AEP/5ABE/9QARf+6AEb/0ABH/34ASP+SAEn/zQBK/5sAS//nABwAF//RACT//wAy/9EAM//uADT/5wA1/+8ANv/3ADf/7gA4/+gAOf/3ADr/+wA7/9oAPP/vAD3/9wA+/+4AP//vAED/4QBB//cAQv/nAEP/7wBE/+4ARf/QAEb/9wBH/8EASP/MAEn/wwBK/7sAS//nABwAF//QABv/+QAy/8EAM//zADT/6wA1//sANv/zADf/+wA4/+8AOf/zADr//gA7/+EAPP/vAD3/9wA+//kAP//3AED/4gBB//kAQv/jAEP/8wBE/+YARf/VAEb/+QBH/84ASP/JAEn/twBK/8EAS//rAB8ABv/7ABL/3wAX/8kAJf/5ACv/7wAy/7oAM//zADT/6wA1/+8ANv/uADf/8wA4/+oAOf/vADr/7wA7/9QAPP/5AD3//gA+//EAP//vAED/4wBB//MAQv/mAEP/7gBE/+cARf/XAEb/6wBH/8kASP/JAEn/twBK/7cAS//nACAABv/7ACQAAgAl/+8AJ//5AC3//gAv//4AMv/oADP//QA0/+sANf/7ADb/+gA3//sAOP/jADn/9wA6//oAO//kADz//wA9//0APv/+AD8AAABA/+gAQf/7AEL/6ABD//sARP/sAEX/8QBG//sAR//qAEj/6wBJ/+cASv/qAEv/+QAbAAb/+wAl/+8AMv+5ADP/+wA0/+8ANf/7ADb/+wA3//0AOP/vADn/+wA6AAAAO/+7ADz//gA9//4APv/7AED/7ABB//4AQv/nAEP/+QBE//kARf/7AEb/+QBH//MASP/rAEn/4gBK/+8AS//7AB0ABv/2ABf/zgAl/+8AMv+3ADP/9wA0/+sANf/3ADb/8QA3//kAOP/uADn/8wA6//sAO//YADz/8wA9/+4APv/3AD//8wBA/+MAQf/3AEL/6QBD/+8ARP/nAEX/1ABG/+8AR//JAEj/zABJ/6YASv/JAEv/3AAcAAb/+wAX//MAJf/7ADL/6wAz//4ANP/uADX/+wA2//4AN//+ADj/8wA5//0AOv/+ADv/7gA8//4APf/+AD7/+wA///4AQP/uAEL/9wBD//4ARP/+AEX/+QBG//4AR//uAEj/9wBJ/+4ASv/zAEv//gAYAAb/+wAx//YAMv/rADP//wA0//MANf//ADYAAQA3//8AOP/zADv/6AA8//4APf/+AD4AAQBA/+4AQf//AEL/8wBD//4ARP/4AEX//QBH/+wASP/3AEn/7ABK//EASwABABwABv/2ABf/4QAy/8oAM//9ADT/+QA1//4ANv/7ADf//gA4//MAOf/+ADr//wA7/+EAPP/7AD3//gA+//4AP//+AED/7wBB//4AQv/zAEP//gBE//sARf/7AEb//gBH/+8ASP/5AEn/2gBK//oAS//+AB0ABv/nABf/5wAx/7AAMv/hADP/7gA0/7QANf/rADb/5wA3/+4AOP+sADn/6wA6//kAO/+3ADz/6gA9/+8APv/nAD//5wBA/6wAQf/uAEL/rgBD/+cARP+8AEX/3ABG/9oAR//cAEj/0QBJ/9oASv/RAEv/7wAeAAb/9gAX//cAI//9ADH/vwAy/+4AM//5ADT/2gA1//4ANv/3ADf/+wA4/9oAOf/3ADr/+wA7/+cAPP/7AD3/+QA+//cAP//5AED/1ABB//sAQv/cAEP/9wBE/+8ARf/JAEb/6wBH/8QASP++AEn/5wBK/8EAS//+ABwAF//7ADH/7AAy/+QAM//+ADT/7gA1//4ANgAAADf//QA4//cAOf/7ADr//gA7/+4APP/+AD3//gA+//0AP//7AED/7wBB//4AQv/uAEP//gBE//cARf/7AEb/+QBH/+gASP/vAEn/6wBK/+gAS//+AB4ABv/7ABf/8wAa//4AHf/3ACX/9wAq//4AMf/2ADL/5AAz//0ANP/zADX/+wA2//4AN//+ADj/+QA7/+4APf/+AD7/+wA///4AQP/2AEH/+gBC/+4AQ//7AET/+QBF//sARv/+AEf/8wBI/+8ASf/zAEr/6wBL//4AHQAG//EAJP/3ADH/7AAy/7sAM//sADT/4wA1/+8ANv/vADf/9wA4/+QAOf/qADr/9wA7/98APP/vAD3/9wA+/+sAP//uAED/4wBB/+4AQv/mAEP/7wBE/+IARf/VAEb/7gBH/8MASP/GAEn/uwBK/7oAS//fABwABv/sACT//gAy/54AM//rADT/6gA1//EANv/rADf/9wA4/+MAOf/oADr/9wA7/64APP/sAD3/8QA+/+wAP//sAED/4QBB//MAQv/oAEP/5ABE/9gARf/kAEb/7gBH/9EASP/QAEn/uwBK/8QAS//zADAAF//3ABj//wAZ/+kAGv//ABv//QAc//4AHf/pAB7/+wAf//8AIP/iACH//gAi//8AI//+ACT//wAl/+IAJ//uACj//gAp/+cAKv/hACv/+QAs/8MALf/QAC7/5AAv/8wAMP//ADL/4QAz//4ANP/jADX/9wA3//kAOP/fADn/9wA7/+IAPP/5AD3/+gA+//EAP//6AED/2gBB/+8AQv/aAET/7wBF/9cARv/qAEf/xgBI/7sASf/qAEr/tABL//sAHQAG/+cAF//oACT/+gAy/+IAM//xADT/zAA1/+8ANv/sADf/+gA4/8wAOf/3ADr/8wA7/8kAPP/uAD3/7wA+/+wAP//rAED/yQBB//cAQv/MAEP/+ABE/9QARf/KAEb/2gBH/8EASP/EAEn/4gBK/7cAS//vAB0ABv/xABv/+QAl/+4AMv+8ADP/7wA0/9wANf/zADb/6AA3//cAOP/hADn/5gA6//MAO//aADz/6QA9//MAPv/pAD//6wBA/+MAQf/3AEL/2gBD/+kARP/rAEX/1ABG/+kAR//JAEj/zABJ/7QASv+7AEv/5wAbAAb/9gAy/6YAM//9ADT/0wA1//oANv/+ADf//QA4/9UAOf/3ADr//wA7/7kAPP/6AD3//gA+//sAP//7AED/0ABB//oAQv/XAEP/+QBE/+IARf/zAEb/9wBH/+8ASP/vAEn/6gBK/+cAS//6ABwABv/7ACQAAgAy/9UAM//7ADT/7wA1//cANv/9ADf//wA4/+4AOf/7ADr//wA7/+sAPP/+AD3//gA+//0AP//6AED/7gBB//sAQv/sAEP/+wBE/+8ARf/7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ABX/3QAx//YAMv+5ADP/+AA0/+MANf/3ADb/+AA3//kAOP/iADn/+gA6//0AO//OADz//QA9//4APv/5AD///ABA/+YAQv/jAEP/9wBE/+YARf/vAEb//gBH/+cASP/vAEn/0QBK/+YAS//9ACgAB//2AAj/4gAJ/90ACv/sAAv/4gAM/+gADf/iAA7/9QAP/+gAEP/dABH/4AAS/+YAE//OABT/4gAV/90AJP/7ADH/9gAy/8EAM//vADT/3wA2//QAN//4ADj/4wA5/+kAOv/6ADv/0QA8/+YAPf/zAD7/6QA///EAQP/qAEL/3ABD/+gARP/fAEb/+ABH/7sASP+7AEn/rwBK/68AS//jACcACP/xAAn/7AAK//gADP/2AA7/9wAP//YAEP/xABH/5wAS/+cAE//xABT/7AAV/+UAMf/2ADL/6AAz//kANP/qADX/+wA2//oAN//7ADj/6wA5//cAOv//ADv/4wA8//sAPf/+AD7/+wA///oAQP/sAEH/+gBC/+MAQ//5AET/7wBF/+oARv/7AEf/4wBI/+wASf/jAEr/6gBL//4AJgAH//sACP/7AAn/5wAK//oADP/2AA7/9gAP//YAEP/xABH/8QAS//IAE//xABT/5wAV//EAMv/nADP/+wA0//EANf/9ADb//gA3//4AOP/uADn/+wA6//4AO//oAD0AAAA+//sAP//+AED/7wBB//4AQv/qAEP//wBE//EARf/3AEb/+wBH/+YASP/3AEn/2gBK/+QAS//7ACkAB//2AAj/9gAJ/90ACv/yAAz/8QAO//EAD//wABD/6gAR/+wAEv/mABP/9AAU/+wAFf/rABf/zgAx//YAMv/OADP/7wA0/+oANf/5ADb//gA3//0AOP/oADn/+QA6//0AO//YADz//gA9//8APv/6AD//+QBA/+4AQf/5AEL/4wBD//gARP/qAEX/+QBG//oAR//pAEj/6QBJ/9UASv/rAEv/+gAqAAf/sgAI/8kACf+wAAr/ugAL/7UADP+1AA3/3QAO/+QAD/+6ABD/sgAR/7UAEv+xABP/4gAU/6sAFf+mADH/lwAy/9oAM//jADT/qwA1/+IANv/iADf/4wA4/5oAOf/XADr/7gA7/7QAPP/kAD3/6wA+/+4AP//mAED/rQBB/+8AQv+qAEP/6gBE/74ARf/XAEb/2gBH/9AASP/SAEn/1QBK/80AS//qACsAB//nAAj/8QAJ/6YACv/sAAv/nAAM/90ADf+6AA7/9gAP/+IAEP/sABH/3QAS/9oAE//sABT/3QAV/8QAJP/+ADH/pgAy/+sAM//vADT/ygA1//0ANv/zADf/+wA4/9MAOf/vADr/+wA7/9gAPP/3AD3/9wA+//EAP//7AED/1QBB//cAQv/PAEP/8wBE/+YARf+7AEb/5wBH/7UASP/JAEn/2gBK/6UAS//zACkAB//2AAn/7AAK//kAC//sAAz/9gAO//oAD//2ABD/7AAR/+cAEv/vABP/9gAU//EAFf/sABcAAQAx/+YAMv/pADP/+QA0/+oANf/zADb/+wA3//oAOP/nADn/9wA6//4AO//uADz/+QA9//oAPv/7AD//+QBA/+8AQf/3AEL/6QBD//oARP/sAEX/8wBG//gAR//pAEj/6QBJ/+MASv/nAEv//QAqAAf/9gAI//sACf/sAAr/9wAL/+wADP/7AA7/+gAP//EAEP/2ABH/7AAS//EAE//2ABT/9gAV/+QAFwABADH/8QAy/+kAM//3ADT/6QA1//kANv/5ADf/+QA4/+8AOf/6ADr//gA7/+8APP/7AD3/+gA+//oAP//4AED/7wBB//sAQv/rAEP//QBE/+8ARf/3AEb/+gBH/+4ASP/rAEn/4QBK/+wAS//5ACsAB//xAAj/4gAJ/9gACv/sAAv/2AAM//YADf/iAA7/8QAP/90AEP/iABH/0wAS/+IAE//JABT/4gAV/94AJP/7ADH/3QAy/7QAM//pADT/4QA1/+wANv/vADf/6gA4/+IAOf/qADr/+gA7/9oAPP/pAD3/6wA+/+wAP//pAED/4QBB/+sAQv/cAEP/6wBE/+IARf/JAEb/7gBH/7wASP/BAEn/pgBK/7UAS//kACwAB//iAAj/5wAJ/+IACv/OAAv/2AAM/+cADf/nAA7/8AAP/90AEP+6ABH/xAAS/9cAE//XABT/2AAV/9gAG//3ACT/+wAx/+IAMv+gADP/6QA0/+MANf/mADb/7wA3/+sAOP/aADn/6AA6//YAO/+xADz/6wA9/+4APv/oAD//7wBA/9oAQf/oAEL/1wBD/+MARP/aAEX/2ABG/+cAR//PAEj/yQBJ/7kASv/BAEv/6AApAAf/8QAI/+wACf/OAAr/6gAL/84ADP/nAA3/2AAO//YAD//fABD/4gAR/9gAEv/lABP/5wAU/+IAFf/YADH/4gAy/+cAM//3ADT/2gA1//gANv/5ADf/+wA4/9wAOf/3ADr//gA7/+MAPP/3AD3//QA+//cAP//3AED/1QBC/9UAQ//9AET/6QBF/+EARv/pAEf/ugBI/8QASf/aAEr/wgBL//sAKwAH/8kACP/YAAn/xAAK/9MAC/+/AAz/yQAN/9gADv/nAA//xAAQ/7oAEf+1ABL/wQAT/9gAFP+6ABX/vwAk//sAMf+/ADL/2gAz/+gANP/KADX/6QA2/+kAN//oADj/xgA5/+QAOv/nADv/uQA8/+wAPf/uAD7/6QA//+cAQP/GAEH/7ABC/8kAQ//mAET/2ABF/84ARv/VAEf/wQBI/7wASf/GAEr/tABL/+8AKwAH//EACP/2AAn/yQAK/+oAC//TAAz/3QAN/+cADv/sAA//4gAQ/+IAEf/YABL/3wAT/90AFP/dABX/2AAk//sAMf/nADL/xgAz//MANP/iADX/7wA2/+4AN//3ADj/4wA5/+kAOv/vADv/1wA8/+4APf/zAD7/6gA//+0AQP/kAEH/9wBC/98AQ//qAET/5wBF/9AARv/vAEf/yQBI/9AASf/PAEr/xABL/+8AKQAH/+cACP/sAAn/5wAK/+kAC//dAAz/2AAO/+wAD//XABD/qwAR/8kAEv/AABP/9gAU/9MAFf/OADH/2AAy/7AAM//5ADT/2gA1//0ANv/6ADf//gA4/98AOf/3ADr//QA7/8YAPP/7AD3//gA+//gAP//4AED/1QBB//0AQv/VAEP/+ABE/+MARf/zAEb/+QBH/+4ASP/zAEn/4gBK/+cAS//zACkACP/2AAn/5wAK//QAC//sAAz/+wAN//4ADv/2AA//5QAQ/+wAEf/nABL/8wAT//EAFP/nABX/3QAx/+QAMv/KADP/+QA0/+wANf/6ADb/+gA3//sAOP/vADn/+gA6AAAAO//hADz//wA9//0APv/5AD///gBA/+wAQf/7AEL/7ABD//sARP/vAEX/9wBG//sAR//zAEj/6gBJ/+EASv/jAEv/+wArAAf/zgAI/84ACf/YAAr/ygAL/9gADP/JAA3/+wAO/9kAD//JABD/ogAR/7oAEv+5ABP/5wAU/8QAFf+9ACT/+wAx/7oAMv+FADP/+wA0/7sANf/qADb/6wA3/+wAOP++ADn/5gA6/+8AO/+iADz/6AA9/+oAPv/sAD//7wBA/8MAQf/mAEL/uwBD/+YARP/KAEX/6QBG/+8AR//jAEj/3wBJ/9MASv/hAEv/6wApAAf/zgAI/84ACf/TAAv/2AAM/84ADv/eAA//xAAQ/7AAEf/TABL/sQAT/+wAFP/FABX/yQAk//sAMf/JADL/lQAz//MANP/BADX/+QA2//MAN//3ADj/xgA5//sAOv/3ADv/pQA8/+8APf/+AD7/7gA//+oAQP/DAEH/7gBC/8QAQ//vAET/0ABF/+4ARv/uAEf/6QBI/+QASf/aAEr/5gBL//cAKgAH/8QACP/OAAn/pgAL/7oADP+rAA3/3QAO/+cAD/+5ABD/twAR/8QAEv+zABP/0wAU/7AAFf+cACT/+wAx/6EAMv/aADP/4wA0/7cANf/4ADb/4wA3//0AOP+3ADn/7gA6/+8AO/+7ADz/7gA9//EAPv/jAD//6ABA/7oAQf/zAEL/uQBD/+sARP/OAEX/3wBG/+EAR//aAEj/2ABJ/9gASv/MAEv/7gAsAAf/yQAI/84ACf/JAAr/wgAL/8kADP/JAA3//gAO/8kAD/+6ABD/jQAR/7oAEv+gABP/4gAU/7UAFf+6AB7/8QAk//sAMf+1ADL/lwAz/+8ANP+7ADX/5gA2/+4AN//uADj/uQA5/+gAOv/3ADv/hAA8/+8APf/sAD7/7AA//+oAQP+6AEH/7ABC/7kAQ//pAET/ygBF/+8ARv/vAEf/6ABI/+kASf/fAEr/5ABL//EAJgAH//YACf/iAAr/7AAL/+cADP/iAA3//wAO//UAD//nABD/7AAR/+IAEv/gABP/7AAU/90AFf/TADH/4gAy/+sAM//+ADT/6AA1//4ANgAEADf//wA4/9wAOf/6ADv/5gA8//8APf//AD///QBA/+MAQf//AEMAAABE/+8ARf/4AEb/+wBH//cASP/rAEn/6QBK/+kAS//9AAIAAQAGAEsAAAAAAAAAAQAAAADUGBYRAAAAANmXsTQAAAAA2ZexNA==",_=r=>zr("http://www.w3.org/2000/svg",r),ao=(r,t)=>{const e=_("rect");return e.setAttribute("height",`${r}`),e.setAttribute("width",`${t}`),e},no=(r,t,e,a)=>{const n=ce("filter");n.setAttribute("id",a),n.setAttribute("height","200%"),n.setAttribute("width","200%"),n.setAttribute("x","-50%"),n.setAttribute("y","-50%");const i=ce("feOffset");n.appendChild(i),i.setAttribute("result","offOut"),i.setAttribute("in","SourceAlpha"),i.setAttribute("dx",`${r}`),i.setAttribute("dy",`${t}`);const s=ce("feGaussianBlur");n.appendChild(s),s.setAttribute("result","blurOut"),s.setAttribute("in","offOut"),s.setAttribute("stdDeviation",`${e}`);const o=ce("feBlend");return n.appendChild(o),o.setAttribute("in","SourceGraphic"),o.setAttribute("in2","blurOut"),o.setAttribute("mode","normal"),n},ro=r=>{let t=r;return t=t.replace(/feoffset/gi,"feOffset"),t=t.replace(/fegaussianblur/gi,"feGaussianBlur"),t=t.replace(/feblend/gi,"feBlend"),t=t.replace(/lineargradient/gi,"linearGradient"),t=t.replace(/stddeviation/gi,"stdDeviation"),t};function io(r,t,e,a,n,i){const s=n||1,o=i||1,l={x:t[0],y:t[1],width:t[2]-t[0],height:t[3]-t[1]};if(l.width<=0)return;const c=so(l.height,l.width,e*s,a*o),d=(a-c*l.width)/2-c*l.x,A=(e-c*l.height)/2-c*l.y;r.setAttribute("transform",`translate(${d} ${A}) scale(${c} ${c})`)}function so(r,t,e,a){const n=e/r,i=a/t;return n>1&&i>1?Math.min(n,i):n>1&&i<1?i:n<1&&i>1?n:Math.min(n,i)}const Ya={m:["x","y"],z:[],l:["x","y"],h:["x"],v:["y"],c:["x1","y1","x2","y2","x","y"],s:["x2","y2","x","y"],q:["x1","y1","x","y"],t:["x","y"],a:["rx","ry","xRotation","largeArc","sweep","x","y"]};class oo{constructor(t){const e=Array.from(t.querySelectorAll("path"));this.paths=e.map(a=>{const n=a.getAttribute("d")||"",i=this.parsePath(n);return{pathElement:a,pathData:i}})}transform(t){for(const e of this.paths)e.pathData=this.runTransformer(e.pathData,t);this.update()}encodePath(t){let e="";const n=i=>{const s=[],o=i.relative?i.type:i.type.toUpperCase();let l=e!==o;const c=Ya[i.type];l&&(s.push(o),e=o);for(const d of c){const A=i[d];let u;switch(typeof A){case"boolean":u=A|0;break;case"number":u=(A*100|0)/100;break;default:throw new wt("Failed to encode path.")}l||s.push(" "),s.push(u),l=!1}return s.join("")};return t.map(n).join("")}parsePath(t){const e=/([mzlhvcsqta])([^mzlhvcsqta]*)/gi,a=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi,n=[];let i;for(e.lastIndex=0;i=e.exec(t);){const s=i[1].toLowerCase(),o=(i[2].match(a)||[]).map(parseFloat),l=s===i[1],c=Ya[s];if(o.length<c.length)throw new wt(`Path type "${s}" given ${o.length} arguments, expected ${c.length}.`);if(c.length>0){if(o.length%c.length!==0)throw new wt(`Path type "${s}" given ${o.length} arguments, not divisible by ${c.length}`);for(let d=0;d<o.length/c.length;d++){const A={type:s,relative:l};for(let u=0;u<c.length;u++)A[c[u]]=o[d*c.length+u];n.push(A)}}else n.push({type:s,relative:l})}return n}runTransformer(t,e){const a=[["x1","y1"],["x2","y2"],["x","y"]],n=i=>{for(let s=0;s<a.length;s++){const[o,l]=a[s];if(o in i&&l in i){const c=[i[o],i[l]],d=e(c);if(d.length<2)throw new wt("Transformer must return at least 2 points.");i[o]=d[0],i[l]=d[1]}}return i};return this.transformPath(t,n)}transformPath(t,e){const a=[];for(let n=0;n<t.length;n++){const i=JSON.parse(JSON.stringify(t[n])),s=e(i);Array.isArray(s)?a.push(...s):s&&a.push(s)}return a}update(){for(const{pathElement:t,pathData:e}of this.paths){const a=this.encodePath(e);t.setAttribute("d",a)}}}class lo extends to{constructor(){super(...arguments),this.moduleName="Vegemite"}svgPreview(t,e){return this.svgElement(t,e)}svgPrint(t,e){return this.svgElement(t,e)}svgElement(t,e){const a=ps(eo),i=t!==""?(w=>w.charAt(0).toUpperCase()+w.substr(1).toLowerCase())(t):"",s=a.getPath(i,0,72,72),o=s.toSVG(2),l=s.getBoundingBox(),c=l.x2-l.x1,d=s.toPathData(3),A=()=>{const w=_("g");w.classList.add("module-text-group");const y=_("defs");w.appendChild(y),y.appendChild(no(0,2,2,"shadow"));const v=_("path");v.setAttribute("d",d),v.setAttribute("stroke","black"),v.setAttribute("stroke-width","3"),y.appendChild(v);const E=_("g");E.classList.add("module-layer0"),w.appendChild(E),E.setAttribute("filter","url(#shadow)"),E.innerHTML=v.outerHTML;const B=_("g");B.classList.add("module-layer1"),w.appendChild(B),B.setAttribute("stroke-width","3"),B.setAttribute("stroke","rgb(45,41,38)"),B.setAttribute("fill","rgb(45,41,38)"),B.setAttribute("transform","translate(0.5,0)"),B.innerHTML=o;const x=_("g");x.classList.add("module-layer2"),w.appendChild(x),x.setAttribute("fill","rgb(255,209,0)"),x.setAttribute("transform","translate(1,-0.1)"),x.innerHTML=o;const P=_("g");return P.classList.add("module-layer3"),w.appendChild(P),P.setAttribute("fill","white"),P.innerHTML=o,new oo(w).transform(([M,N])=>[M,N+(c/2-M)**2/(c*6)]),w},u=_("g");u.classList.add("module-root");const h=_("defs");u.appendChild(h);const g=_("g");g.classList.add("module-bounds"),u.appendChild(g);const m=ao(e.height,e.width);m.setAttribute("opacity","0"),g.appendChild(m);const f=_("g");f.classList.add("module-text-enclosure"),u.appendChild(f);const p=A();f.appendChild(p);const C=Qr(d);return io(f,C,e.height,e.width,.35,.65),ro(u.outerHTML)}}async function Kn(r){if(r==="Vegemite")return new lo;throw new $(`Failed to resolve Module, Module ${r} not found`)}const Pe=S.gql`
2639
1378
  fragment GlobalPropertyStateAspectFields on GlobalPropertyStateAspect {
2640
1379
  name
2641
1380
  value
@@ -2651,8 +1390,8 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2651
1390
  }
2652
1391
  }
2653
1392
  }
2654
- `,fo=Q.gql`
2655
- ${xe}
1393
+ `,co=S.gql`
1394
+ ${Pe}
2656
1395
  mutation CreateGlobalPropertyState($bundleId: String!) {
2657
1396
  globalPropertyStateCreate(bundleId: $bundleId) {
2658
1397
  id
@@ -2661,8 +1400,8 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2661
1400
  }
2662
1401
  }
2663
1402
  }
2664
- `,Qo=Q.gql`
2665
- ${xe}
1403
+ `,Ao=S.gql`
1404
+ ${Pe}
2666
1405
  mutation UpdateGlobalPropertyState($id: String!, $aspects: [GlobalPropertyStateAspectInput]!) {
2667
1406
  globalPropertyStateUpdate(id: $id, aspects: $aspects) {
2668
1407
  id
@@ -2671,8 +1410,8 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2671
1410
  }
2672
1411
  }
2673
1412
  }
2674
- `;Q.gql`
2675
- ${xe}
1413
+ `;S.gql`
1414
+ ${Pe}
2676
1415
  query GetGlobalPropertyState($bundleId: String!) {
2677
1416
  globalPropertyState(bundleId: $bundleId) {
2678
1417
  id
@@ -2681,8 +1420,8 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2681
1420
  }
2682
1421
  }
2683
1422
  }
2684
- `;const po=Q.gql`
2685
- ${Fe}
1423
+ `;const uo=S.gql`
1424
+ ${be}
2686
1425
  fragment ProductFields on Product {
2687
1426
  id
2688
1427
  basePrice
@@ -2725,8 +1464,8 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2725
1464
  name
2726
1465
  }
2727
1466
  }
2728
- `,bA=Q.gql`
2729
- ${po}
1467
+ `,Pa=S.gql`
1468
+ ${uo}
2730
1469
  fragment ProductCollectionProductFields on ProductCollectionProduct {
2731
1470
  id
2732
1471
  productId
@@ -2735,8 +1474,8 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2735
1474
  ...ProductFields
2736
1475
  }
2737
1476
  }
2738
- `,Ye=n=>Q.gql`
2739
- ${n?bA:""}
1477
+ `,Fe=r=>S.gql`
1478
+ ${r?Pa:""}
2740
1479
  fragment ProductCollectionFields on ProductCollection {
2741
1480
  id
2742
1481
  name
@@ -2761,7 +1500,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2761
1500
  }
2762
1501
  }
2763
1502
  }
2764
- ${n?"productCollectionProducts { ...ProductCollectionProductFields }":""}
1503
+ ${r?"productCollectionProducts { ...ProductCollectionProductFields }":""}
2765
1504
  transformCollection {
2766
1505
  id
2767
1506
  name
@@ -2786,9 +1525,9 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2786
1525
  }
2787
1526
  }
2788
1527
  }
2789
- `,Io=n=>Q.gql`
2790
- ${xe}
2791
- ${Ye(n)}
1528
+ `,ho=r=>S.gql`
1529
+ ${Pe}
1530
+ ${Fe(r)}
2792
1531
  query GetBundle($id: String!) {
2793
1532
  globalPropertyState(bundleId: $id) {
2794
1533
  id
@@ -2826,7 +1565,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2826
1565
  }
2827
1566
  }
2828
1567
  }
2829
- `,ea=Q.gql`
1568
+ `,Ja=S.gql`
2830
1569
  query GetBundleStakeholders($id: String!) {
2831
1570
  bundles(ids: [$id]) {
2832
1571
  id
@@ -2869,7 +1608,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2869
1608
  }
2870
1609
  }
2871
1610
  }
2872
- `,Do=Q.gql`
1611
+ `,go=S.gql`
2873
1612
  query GetBundlesForCustomer($id: String!) {
2874
1613
  customers(ids: [$id]) {
2875
1614
  bundleStakeholders {
@@ -2896,8 +1635,8 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2896
1635
  }
2897
1636
  }
2898
1637
  }
2899
- `,yo=Q.gql`
2900
- ${bA}
1638
+ `,mo=S.gql`
1639
+ ${Pa}
2901
1640
  query GetProductCollectionProducts($id: String!, $productIds: [String!]) {
2902
1641
  productCollections(ids: [$id], productIds: $productIds) {
2903
1642
  id
@@ -2906,7 +1645,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2906
1645
  }
2907
1646
  }
2908
1647
  }
2909
- `,Fo=Q.gql`
1648
+ `,fo=S.gql`
2910
1649
  query GetProductCollectionForFilteredProducts($id: String!, $filters: ProductCollectionProductFilterInput!) {
2911
1650
  productCollections(ids: [$id]) {
2912
1651
  id
@@ -2918,8 +1657,8 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2918
1657
  }
2919
1658
  }
2920
1659
  }
2921
- `,Mo=Q.gql`
2922
- ${bA}
1660
+ `,po=S.gql`
1661
+ ${Pa}
2923
1662
  query GetProductCollectionForProductsFeed(
2924
1663
  $id: String!
2925
1664
  $limit: Int
@@ -2936,8 +1675,8 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2936
1675
  }
2937
1676
  }
2938
1677
  }
2939
- `,So=n=>Q.gql`
2940
- ${Ye(n)}
1678
+ `,Co=r=>S.gql`
1679
+ ${Fe(r)}
2941
1680
  mutation CreateBundle(
2942
1681
  $collectionId: String
2943
1682
  $initialMetadata: [MetadataInput!]
@@ -2965,8 +1704,8 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2965
1704
  }
2966
1705
  }
2967
1706
  }
2968
- `,xo=n=>Q.gql`
2969
- ${Ye(n)}
1707
+ `,wo=r=>S.gql`
1708
+ ${Fe(r)}
2970
1709
  mutation DuplicateBundle(
2971
1710
  $id: String!
2972
1711
  $template: Boolean
@@ -2996,25 +1735,25 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
2996
1735
  }
2997
1736
  }
2998
1737
  }
2999
- `,Yo=Q.gql`
1738
+ `,yo=S.gql`
3000
1739
  mutation UpdateBundle($id: String!, $name: String, $metadata: [MetadataInput!], $bundleStateData: String) {
3001
1740
  bundleUpdate(id: $id, name: $name, metadata: $metadata, bundleStateData: $bundleStateData) {
3002
1741
  id
3003
1742
  }
3004
1743
  }
3005
- `,Po=Q.gql`
1744
+ `,So=S.gql`
3006
1745
  mutation BundleAddTransaction($id: String!, $transactionId: String!) {
3007
1746
  bundleAddTransaction(id: $id, transactionId: $transactionId) {
3008
1747
  id
3009
1748
  }
3010
1749
  }
3011
- `,vo=Q.gql`
1750
+ `,Eo=S.gql`
3012
1751
  mutation BundleAddTransactions($id: String!, $transactionIds: [String!]!, $transactionOwnerIds: [String!]) {
3013
1752
  bundleAddTransactions(id: $id, transactionIds: $transactionIds, transactionOwnerIds: $transactionOwnerIds) {
3014
1753
  id
3015
1754
  }
3016
1755
  }
3017
- `,ko=Q.gql`
1756
+ `,vo=S.gql`
3018
1757
  mutation BundleRemoveTransaction(
3019
1758
  $id: String!
3020
1759
  $transactionId: String!
@@ -3029,7 +1768,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3029
1768
  id
3030
1769
  }
3031
1770
  }
3032
- `,No=Q.gql`
1771
+ `,Bo=S.gql`
3033
1772
  mutation BundleRemoveTransactions(
3034
1773
  $id: String!
3035
1774
  $transactionIds: [String!]!
@@ -3044,7 +1783,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3044
1783
  id
3045
1784
  }
3046
1785
  }
3047
- `,bo=Q.gql`
1786
+ `,Io=S.gql`
3048
1787
  mutation BundleAddStakeholder($id: String!, $details: CustomerDetailsInput!, $type: String!) {
3049
1788
  bundleAddStakeholder(id: $id, details: $details, type: $type) {
3050
1789
  id
@@ -3064,13 +1803,13 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3064
1803
  }
3065
1804
  }
3066
1805
  }
3067
- `,Ro=Q.gql`
1806
+ `,bo=S.gql`
3068
1807
  mutation BundleAddStakeholder($id: String!, $emailAddress: String!) {
3069
1808
  bundleRemoveStakeholder(id: $id, emailAddress: $emailAddress) {
3070
1809
  id
3071
1810
  }
3072
1811
  }
3073
- `,Ho=Q.gql`
1812
+ `,Do=S.gql`
3074
1813
  mutation BundleUpdateStakeholders($id: String!, $input: [BundleStakeholderInput!]!) {
3075
1814
  bundleUpdateStakeholders(id: $id, input: $input) {
3076
1815
  id
@@ -3090,14 +1829,14 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3090
1829
  }
3091
1830
  }
3092
1831
  }
3093
- `,Uo=Q.gql`
1832
+ `,xo=S.gql`
3094
1833
  mutation BundleUpdateTransactionOrder($id: String!, $transactionIds: [String!]!) {
3095
1834
  bundleUpdateTransactionOrder(id: $id, transactionIds: $transactionIds) {
3096
1835
  id
3097
1836
  }
3098
1837
  }
3099
- `,Go=n=>Q.gql`
3100
- ${Ye(n)}
1838
+ `,Po=r=>S.gql`
1839
+ ${Fe(r)}
3101
1840
  mutation BundleAssignProductCollection($id: String!, $productCollectionId: String!) {
3102
1841
  bundleAssignProductCollection(id: $id, collectionId: $productCollectionId) {
3103
1842
  id
@@ -3106,13 +1845,13 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3106
1845
  }
3107
1846
  }
3108
1847
  }
3109
- `,To=Q.gql`
1848
+ `,Fo=S.gql`
3110
1849
  mutation AssignGlobalPropertyConfiguration($bundleId: String!, $globalPropertyConfigurationId: String!) {
3111
1850
  bundleUpdate(id: $bundleId, globalPropertyConfigurationId: $globalPropertyConfigurationId) {
3112
1851
  id
3113
1852
  }
3114
1853
  }
3115
- `,Jo=n=>Q.gql`
1854
+ `,ko=r=>S.gql`
3116
1855
  query CustomerBundlesFeed($id: String!, $limit: Int!, $offset: Int!, $template: Boolean, $templateStatus: BundleTemplateStatus) {
3117
1856
  customerBundlesFeed(id: $id, limit: $limit, offset: $offset, template: $template, templateStatus: $templateStatus) {
3118
1857
  items {
@@ -3130,32 +1869,32 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3130
1869
  fileLink
3131
1870
  }
3132
1871
  }
3133
- ${n?"metadata { key, value }":""}
1872
+ ${r?"metadata { key, value }":""}
3134
1873
  }
3135
1874
  total
3136
1875
  }
3137
1876
  }
3138
- `,Lo=Q.gql`
1877
+ `,Mo=S.gql`
3139
1878
  mutation FinalizeUpdateBundle($bundleId: String!) {
3140
1879
  bundleFinalizeUpdate(bundleId: $bundleId)
3141
1880
  }
3142
- `,Oo=Q.gql`
1881
+ `,To=S.gql`
3143
1882
  mutation ApproveBundle($id: String!, $note: String) {
3144
1883
  bundleApprove(id: $id, note: $note)
3145
1884
  }
3146
- `,zo=Q.gql`
1885
+ `,Qo=S.gql`
3147
1886
  mutation RejectBundle($id: String!, $note: String) {
3148
1887
  bundleReject(id: $id, note: $note)
3149
1888
  }
3150
- `,jo=Q.gql`
1889
+ `,No=S.gql`
3151
1890
  mutation ApproveTransaction($id: String!, $note: String) {
3152
1891
  transactionApprove(id: $id, note: $note)
3153
1892
  }
3154
- `,Vo=Q.gql`
1893
+ `,Ro=S.gql`
3155
1894
  mutation RejectTransaction($id: String!, $note: String) {
3156
1895
  transactionReject(id: $id, note: $note)
3157
1896
  }
3158
- `;var re=(n=>(n.Error="Error",n.Warning="Warning",n.Info="Info",n))(re||{});const Ko=1e3;class Aa extends wA{constructor(t){super(),this.createdAt=new Date,this.update=t}async execute(){await this.update(),await new Promise(t=>{window.setTimeout(()=>{t()},Ko)})}}class Wo{constructor(t,e,A,a,i,s,o,r,c,l,g,d,B=!1,h,C=!1,u=!1,w=!1){this.workflowStatePromiseQueue=new EA(1),this.initialized=!1,this.readOnly=!1,this.isReloadedTransaction=!1,this.singleVariantsRenderable=!1,this.stepTags={},this.renderLayouts=()=>{var f;if(!this.previewService)return;const E=this.getCommandContext().getAllLayouts(),m=(f=this.getLayoutPreviewService())==null?void 0:f.getAll();if(m)for(const[,p]of m)p.render(E)},this.experience=t,this.client=e,this.updateTransaction=o,this.commandContext=s,this.reloadedState=d,this.transaction=r,this.readOnly=B,this.singleVariantsRenderable=u,this.confirmedDesign=!1,this.editedSteps={},this.informationResults=[],this.mandatorySteps={},this.pendingUpdates=[],this.selectionCost=0,this.workflow=A,this.stepSpecificServices={},this.profanityFilter=a,this.pollers=[],this.allScenes=[],this.layouts=i,this.product=c,this.previewService=l,this.modelContainer=h,this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.validationErrors={steps:new Map},this.confirmCallbacks=[],this.editedCallbacks=[],this.elementsCallbacks=[],this.informationResultCallbacks=[],this.initCallbacks=[],this.mandatoryCallbacks=[],this.makingAdjustmentsCallback=[],this.metadataCallbacks=[],this.selectionCallbacks=[],this.stepSpecificStorageCallbacks={},this.storageCallbacks=[],this.validationCallbacks=[],this.currentAdjustingStepId="",this.renderableContextService=g,this.isReloadedTransaction=C,this.workflow.steps.forEach(E=>{this.stepTags[E.stepName]=E.tags??[]}),w&&(this.workflowStatePromiseQueue.enabled=!1),this.initializationPromise=this.initializeDefaultWorkflowState(A),this.initializationPromise.then(()=>{this.initialized=!0}),this.initializationPromise.catch(E=>{throw console.error(E),this.initialized=!1,new Error("Workflow initialization failed due to an error. See console.")}),this.initializationPromise.finally(()=>this.getCommandContext().registerStateCallback(()=>{this.updateStateWithServer(),this.renderLayouts()}))}async initializeDefaultWorkflowState(t){const e=()=>{var l,g;const o=this.workflow.finalizeStepConfig;if(!o)return;const r=o.lookAtAnimation,c=o.modelAnimation;r&&((l=this.previewService)==null||l.executeCameraAnimation(r)),c&&((g=this.modelContainer)==null||g.executeAnimation(c))};this.reloadedState&&this.reloadedState.serializableWorkflow.steps.forEach(o=>{this.storage[o.stepName]=o.storage||{}}),this.allScenes=await ss(t);const a=Ft(this.allScenes,this.stepSelections).map(o=>o.silentSteps).flat(),{stepElements:i,commands:s}=await this.stepElementsForIntroducedSilentSteps(a,!!this.reloadedState);this.commandContext.apply(new G(s),!0),this.stepElements={...this.stepElements,...i},await this.ensureStepsAreLoaded(),!this.isReloadedTransaction&&this.updateStateWithServer(),this.renderLayouts(),this.reloadedState&&e()}getWorkflowExperience(){return this.experience}getClient(){return this.client}setWorkflowStateSyncEnabled(t){this.workflowStatePromiseQueue.enabled=t}getProduct(){return this.product}getInitializationPromise(){return this.initializationPromise}isInitialized(){return this.initialized}addConfirmCallback(t){t(this.confirmedDesign),this.confirmCallbacks.push(t)}addEditedCallback(t){t(this.editedSteps),this.editedCallbacks.push(t)}addElementsCallback(t){t(this.stepElements),this.elementsCallbacks.push(t)}addInformationResultCallback(t){t(this.informationResults),this.informationResultCallbacks.push(t)}addInitCallback(t){t(this.stepInitialised),this.initCallbacks.push(t)}addMandatoryCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}addMetadataCallback(t){t(this.stepMetadata),this.metadataCallbacks.push(t)}async addSelectionCallback(t){t({selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:await this.traversableScenes()}),this.selectionCallbacks.push(t)}addStepSpecificStorageCallback(t,e){Object.keys(this.storage).includes(e)||(this.storage[e]={}),t(this.storage[e]),Object.keys(this.stepSpecificStorageCallbacks).includes(e)||(this.stepSpecificStorageCallbacks[e]=[]),this.stepSpecificStorageCallbacks[e].push(t)}addStorageCallback(t){t(this.storage),this.storageCallbacks.push(t)}addMakingAdjustmentsCallback(t){t(this.currentAdjustingStepId),this.makingAdjustmentsCallback.push(t)}addPoller(t){this.pollers.push(t)}addValidationCallback(t){this.validationCallbacks.push(t),t(this.validationErrors)}getLayouts(){return this.layouts}getAllLayoutData(){return this.commandContext.getAllLayouts().map(t=>t.layoutState)}getLayoutPreviewService(){return this.renderableContextService}getInformationResults(){return this.informationResults}getPreviewService(){return this.previewService}getProfanities(){return this.profanityFilter}getCommandContext(){return this.commandContext}getRegionElements(t){return this.stepElements[t]||[]}getStepSpecificServices(t){return this.stepSpecificServices[t]}getTransaction(){return this.transaction}getTransactionCustomer(){return this.ownerCustomer}setTransactionCustomer(t){this.ownerCustomer=t}setTransactionCustomerDetails(t){this.ownerCustomer={...this.ownerCustomer,emailAddress:t.email}}getModelContainer(){return this.modelContainer}setModelContainer(t){(!t||this.previewService&&this.previewService.getAllModels().includes(t))&&(this.modelContainer=t,t&&t.metadata&&t.metadata instanceof Map&&this.modelContainer.metadata.set("workflowManager",this))}setTransaction(t){this.transaction=t}getWorkflow(){return this.workflow}getCommandDispatcher(){return t=>this.commandContext.apply(t,!this.initialized)}getWorkflowSelections(){const t={};return this.workflow.steps.forEach(e=>{const A=this.stepSelections[e.stepName];A&&A.selectedVariants&&A.selectedVariants.length>0&&(t[e.stepName]={selections:A.selectedVariants})}),t}getStepSelections(){return this.stepSelections}markStepsAsInitialised(t){const e={...this.stepInitialised};t.forEach(A=>{e[A]=!0}),this.stepInitialised=e,this.onInitChange()}getUpdatesPending(){return this.pendingUpdates.length>0}markUpdateCompleted(t){this.pendingUpdates=this.pendingUpdates.filter(e=>e!==t)}markUpdatePending(){const t=b();return this.pendingUpdates=[...this.pendingUpdates,t],t}setEditedStatus(t,e){this.editedSteps={...this.editedSteps,[t]:e},this.onEditedChange()}setInformationResults(t){this.informationResults=[...t],this.onInformationResultChange()}setCurrentAdjustingStepId(t){this.currentAdjustingStepId=t,this.onMakingAdjustmentsChange()}setMandatoryFulfilled(t,e){this.mandatorySteps[t]!==e&&(this.mandatorySteps={...this.mandatorySteps,[t]:e},this.setInformationResults([]),this.onMandatoryChange())}setStepError(t,e,A){let a=!1;if(!this.validationErrors.steps.has(t)&&A)a=!0,this.validationErrors.steps.set(t,new Map([[e,A]]));else if(this.validationErrors.steps.has(t)){const i=this.validationErrors.steps.get(t);A&&A!==i.get(e)?(a=!0,i.set(e,A)):A||(a=!0,i.delete(e),i.size===0&&this.validationErrors.steps.delete(t))}a&&this.onValidationChange()}getStepErrors(t){return this.validationErrors.steps.get(t)}getValidationErrors(){return this.validationErrors}toggleDesignConfirmed(){this.confirmedDesign=!this.confirmedDesign,this.onConfirmChange()}toggleMakingAdjustmentsCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}async injectIntoPreviewService(t,e){if(this.modelContainer)throw new Error("You must eject from the preview service before injecting again.");if(this.previewService=t,!this.getProduct().modelUrl||!this.previewService)return;const A=t.loadModel({model:this.getProduct().modelUrl,contextService:this.getLayoutPreviewService()},{refocusCamera:e});this.setModelContainer(A),Ft(this.allScenes,this.stepSelections).filter(s=>s).map(s=>s.renderableSteps).flat().filter(s=>s.type===M.Model||s.type===M.Material).forEach(s=>{var c,l,g;if(!((c=s.option)!=null&&c.id)){console.error(`Failed to read option id from step: ${s.stepName}`);return}const o=((l=this.stepSelections[s.stepName])==null?void 0:l.selectedVariants)||[];if(o.length===0)return;const r=o[0];if(s.type===M.Model){if(!this.modelContainer)throw new L("We should always have a model container when injecting a preview!");const d=(g=r.asset)==null?void 0:g.fileLink;if(!d){console.error(`Failed to read model url from variant: ${r.id} for step: ${s.stepName}`);return}const B=s.data;this.modelContainer.applyModelVariant(s.stepName,{model:d,contextService:this.getLayoutPreviewService()},B.replaceProductModel||!1)}else{const d=r.material;if(!d){console.error(`Failed to read material from variant: ${r.id} for step: ${s.stepName}`);return}s.data.targetMaterials.forEach(h=>{if(!this.modelContainer)throw new L("We should always have a model container when injecting a preview!");this.modelContainer.applyMaterialVariant(h,s.option.id,d)})}}),await A.getInitializationPromise(),this.renderLayouts()}ejectFromPreviewService(){if(this.modelContainer){if(!this.modelContainer.dispose)throw new Error("This feature is not supported in the current preview service.");this.modelContainer.dispose(),this.modelContainer=void 0}this.previewService=void 0}updateStorage(t,e){const A={...this.storage,[t]:{...this.storage[t],...e}};if(!sa(A,this.storage)){this.storage=A;const a=new $A(this.constructSerializableWorkflow());this.commandContext.apply(a,!0),this.onStepSpecificStorageChange(t),this.onStorageChange()}}constructSerializableWorkflow(){const t=[];return this.allScenes.forEach(e=>{e.renderableSteps.forEach(A=>{var i,s;const a={stepName:A.stepName};a.storage=this.storage[A.stepName],a.selectedVariants=(s=(i=this.stepSelections[A.stepName])==null?void 0:i.selectedVariants)==null?void 0:s.map(o=>({id:o.id,priceModifier:o.priceModifier})),t.push(a)})}),{steps:t}}updateStateWithServer(){if(this.readOnly)return;const t=this.serialize();this.workflowStatePromiseQueue.enqueue(new Aa(async()=>{await new Promise(e=>{setTimeout(()=>{e()},1)}),await this.updateTransaction({variables:{id:this.transaction.id,workflowState:t}})}))}async updateStateWithServerImmediate(){if(this.readOnly)return;const t=this.serialize();return new Aa(async()=>{await this.updateTransaction({variables:{id:this.transaction.id,workflowState:t}})}).execute()}serialize(){const t=this.getCommandContext().getState();if(!t)throw new L("Attempted to serialize state before it was initialized.");const e=xt(t.transaction),A=this.dehydrateState(e);return JSON.stringify(A)}dehydrateState(t){var e;for(const A of Object.values(t.layouts).map(a=>a.elements).flat())A.type==="illustration"&&(delete A.cachedObjectURL,A.src&&delete A.svg),A.type==="frame"&&((e=A.pattern)==null||delete e.svg);return this.deleteFieldNameFromObjectRecursive(t,"__typename"),t}deleteFieldNameFromObjectRecursive(t,e){if(!(typeof t!="object"||t===null))for(const A in t)A===e?delete t[A]:this.deleteFieldNameFromObjectRecursive(t[A],e)}async outstandingRequestsPromise(){return this.workflowStatePromiseQueue.finalize()}updateMetadata(t,e){this.stepMetadata={...this.stepMetadata,[t]:{...this.stepMetadata[t],...e}},this.onMetadataChange()}removeElements(t){const e=(A,a)=>Object.keys(A).reduce((i,s)=>{const o=[...A[s]||[]];return a.forEach(r=>{const c=o.findIndex(l=>l.id===r.id);c>-1&&o.splice(c,1)}),i[s]=o,i},{});this.stepElements=e(this.stepElements,t)}getInvalidCanvasRegions(){return this.workflow.steps.reduce((t,e)=>(ft(e,this.stepSelections)||this.stepElements[e.stepName]&&this.stepElements[e.stepName].forEach(A=>t.push(A)),t),[])}getInvalidModelVariants(){return this.workflow.steps.reduce((t,e)=>(e.type===M.Model&&!ft(e,this.stepSelections)&&t.push(e.stepName),t),[])}async stepElementsForIntroducedSilentSteps(t,e){const A=this.product;if(!A)return Promise.resolve({stepElements:{},commands:[]});const a=async(c,l,g)=>{if(c.type===M.SilentIllustration){const d=await new _A(c,l).trigger();return{step:c,results:d}}else if(c.type===M.ProductOverlay){const d=await new _A(c,l,g).trigger();return{step:c,results:d}}return Promise.reject("Unknown silent step. This is a bug")},i=t.filter(c=>!this.stepInitialised[c.stepName]),s={stepElements:{},commands:[]},o=[];for(const c of i)this.markStepsAsInitialised([c.stepName]),e||o.push(a(c,this.layouts,A));const r=await Promise.all(o);for(const c of r)s.stepElements[c.step.stepName]=c.results.map(l=>l.regionElement),s.commands=[...s.commands,...c.results.map(l=>l.command)];return s}getStepStorage(t){return this.storage[t]}getMetadata(t){return this.stepMetadata[t]}getWorkflowMetadata(){return this.stepMetadata}getStepTags(t){return this.stepTags[t]||[]}getSerializedStep(t,e){return e.find(A=>A.stepName===t)}async updateTransactionShareActions(){const t=await this.client.getShareActionsForTransaction(this.transaction.id);this.transaction.transactionShareActions=t}async updateTransactionStakeholders(){var e;const t=await y.getShadowGraphqlClient().query({query:Vi,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.transaction.id}});!((e=t==null?void 0:t.data)!=null&&e.transactions)||t.data.transactions.length!==1?(this.transaction.currentStakeholder=void 0,this.transaction.stakeholders=void 0):(this.transaction.stakeholders=t.data.transactions[0].stakeholders,this.transaction.currentStakeholder=t.data.transactions[0].currentStakeholder)}async approveTransaction(t){await y.getShadowGraphqlClient().mutate({mutation:jo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.getTransaction().id,note:t}})}async rejectTransaction(t){await y.getShadowGraphqlClient().mutate({mutation:Vo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.getTransaction().id,note:t}})}async reset(){this.commandContext.getAllLayouts().forEach(e=>e.layoutState.elements.forEach(A=>{this.getCommandDispatcher()(new ut(A.id))})),this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},await this.ensureStepsAreLoaded()}async setSelectionsAndElements(t,e,A,a){var p;const i=this.stepSelections;this.stepSelections={...this.stepSelections,[t]:{selectedVariants:e}},this.selectionCost=Object.values(this.stepSelections).reduce((I,D)=>I+D.selectedVariants.map(F=>F.priceModifier||0).reduce((F,x)=>F+x,0),0),this.workflow.steps.forEach(I=>{ft(I,this.stepSelections)||(this.stepInitialised[I.stepName]=!1,delete this.stepMetadata[I.stepName],delete this.stepSelections[I.stepName],delete this.storage[I.stepName])});const s=this.allScenes,o=Ft(s,i),r=Ft(s,this.stepSelections),c=o.map(I=>I.silentSteps).flat(),g=r.map(I=>I.silentSteps).flat().filter(I=>!c.some(D=>D.stepName===I.stepName));c.forEach(I=>{ft(I,this.stepSelections)||(this.stepInitialised[I.stepName]=!1)});const d=this.getInvalidCanvasRegions(),{stepElements:B,commands:h}=await this.stepElementsForIntroducedSilentSteps(g,!1);this.stepElements={...this.stepElements,...B,[t]:A},this.removeElements(d);const C=this.workflow.steps.find(I=>I.stepName===t);if((C==null?void 0:C.type)===M.Frame){const I=(p=this.getWorkflowExperience().getStepById(C.stepName))==null?void 0:p.frameService;I==null||I.setTargetElements(A.map(D=>D.id))}const u=d.map(I=>new ut(I.id)),w=new $A(this.constructSerializableWorkflow()),E=[...h,...u,w];E.length>0&&this.commandContext.apply(new G(E),!0),await this.ensureStepsAreLoaded(),this.onElementsChange();const m=this.getInvalidModelVariants(),f=this.modelContainer;if(f){const I=m.map(D=>f.applyModelVariant(D,{contextService:this.getLayoutPreviewService()},!1));await Promise.all(I)}await this.onSelectionChange(),a&&await a()}async ensureStepsAreLoaded(){const e=Ft(this.allScenes,this.stepSelections).map(r=>r.renderableSteps),A=[],a=e.flat();for(const r of a)if(!this.stepInitialised[r.stepName])switch(this.stepInitialised[r.stepName]=!0,r.type){case M.DigitalContent:A.push(yA.init(r,this,this.reloadedState));break;case M.Frame:A.push(rt.init(r,this,this.reloadedState));break;case M.Illustration:A.push(jt.init(r,this,this.reloadedState));break;case M.Material:A.push(FA.init(r,this,this.reloadedState));break;case M.Model:A.push(MA.init(r,this,this.reloadedState));break;case M.Module:this.stepSpecificServices[r.stepName]={module:await sn(r.data.module)},A.push(SA.init(r,this,this.reloadedState));break;case M.Picture:A.push(xA.init(r,this,this.reloadedState));break;case M.Question:A.push(YA.init(r,this,this.reloadedState));break;case M.Shape:A.push(St.init(r,this,this.reloadedState));break;case M.Text:A.push(W.init(r,this,this.reloadedState));break}const i=(await Promise.allSettled(A)).map(r=>{if(r.status==="rejected")throw new Error(`Step initialization failed: ${r.reason}`);return r.value}),s=i.filter(r=>!!r&&!!r.command).map(r=>r.command),o=i.filter(r=>!!r&&!!r.followup).map(r=>r.followup);s&&s.length>0&&this.commandContext.apply(new G(s),!0);for(const r of o)await r();o.length>0&&await this.ensureStepsAreLoaded(),this.onInitChange()}onConfirmChange(){this.confirmCallbacks.forEach(t=>t(this.confirmedDesign))}onEditedChange(){this.editedCallbacks.forEach(t=>t(this.editedSteps))}onElementsChange(){this.elementsCallbacks.forEach(t=>t(this.stepElements))}onInformationResultChange(){this.informationResultCallbacks.forEach(t=>t(this.informationResults))}onInitChange(){this.initCallbacks.forEach(t=>t(this.stepInitialised))}onMakingAdjustmentsChange(){this.makingAdjustmentsCallback.forEach(t=>{t(this.currentAdjustingStepId)})}onMandatoryChange(){this.mandatoryCallbacks.forEach(t=>t(this.mandatorySteps))}onMetadataChange(){this.metadataCallbacks.forEach(t=>{t(this.stepMetadata)})}async onSelectionChange(){const t=await this.traversableScenes();for(const e of this.selectionCallbacks)e({selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:t})}onStepSpecificStorageChange(t){Object.keys(this.stepSpecificStorageCallbacks).includes(t)||(this.stepSpecificStorageCallbacks[t]=[]),this.stepSpecificStorageCallbacks[t].forEach(e=>e(this.storage[t]))}onStorageChange(){this.storageCallbacks.forEach(t=>t(this.storage))}onValidationChange(){this.validationCallbacks.forEach(t=>t(this.validationErrors))}traversableScenes(){return cs(this.allScenes,this.stepSelections,this.singleVariantsRenderable)}}class nt{constructor(t){this.variantData=t}getType(){var t;return(t=this.variantData.asset)==null?void 0:t.type}getId(){return this.variantData.id}getName(){return this.variantData.name}getPriceFormatted(t,e){return this.variantData.priceModifier.toLocaleString(t||"en-US",{style:"currency",currency:"USD",...e})}getPrice(){return this.variantData.priceModifier}getAsset(){var t,e,A;return(A=(e=(t=this.variantData.asset)==null?void 0:t.versions)==null?void 0:e.find(a=>a.name==="cdn"))==null?void 0:A.link}getAssetResource(){return this.variantData.asset}getThumbnail(){var A,a,i,s;const t=(i=(a=(A=this.variantData.thumbnail)==null?void 0:A.versions)==null?void 0:a.find(o=>o.name==="thumbnail"))==null?void 0:i.link,e=(s=this.variantData.thumbnail)==null?void 0:s.fileLink;return t||e}getColor(){return this.variantData.color}isDefault(){return!!this.variantData.default}getResource(){return this.variantData}isEnabled(){return this.variantData.enabled}}const on=class iA{constructor(t,e,A){this.manager=t,this.step=e,this.tags=A}setUpdateState(t){iA.updateState.set(`${this.step.stepName}-${this.manager.getTransaction().id}`,t)}getUpdateState(){return!!iA.updateState.get(`${this.step.stepName}-${this.manager.getTransaction().id}`)}getCurrentVariant(){const e=this.manager.getWorkflowSelections()[this.step.stepName],A=e==null?void 0:e.selections[0];if(A)return new nt(A)}getAvailableVariants(){var e,A;return(((A=(e=this.step.option)==null?void 0:e.variants)==null?void 0:A.filter(a=>a.enabled))||[]).map(a=>new nt(a))}getAllVariants(){var e;return(((e=this.step.option)==null?void 0:e.variants)||[]).map(A=>new nt(A))}getId(){return this.step.stepName}getName(){return this.step.stepTitle}getHelpText(){return this.step.helpText}getType(){return this.step.type}getRaw(){return this.step}getTags(){return this.tags}hasTag(t){return this.tags.includes(t)||!1}getMandatory(){return this.step.mandatory||!1}getOverrideGlobalPropertyConfiguration(t){var A;return(((A=this.manager.getStepStorage(this.step.stepName))==null?void 0:A.overrideGlobalConfigurations)??{})[t.toString()]??!1}setOverrideGlobalPropertyConfiguration(t,e){var a;const A=((a=this.manager.getStepStorage(this.step.stepName))==null?void 0:a.overrideGlobalConfigurations)??{};this.manager.updateStorage(this.step.stepName,{overrideGlobalConfigurations:{...A,[t.toString()]:e}})}getGlobalPropertyAspects(t){var e;return((e=this.step.globalPropertyAspectConfigurations)==null?void 0:e.filter(A=>A.globalPropertyConfigurationId===t&&A.aspectName).map(A=>A.aspectName))??[]}executeAnimations(){const t=this.manager.getPreviewService(),e=this.manager.getModelContainer(),A=this.step.data.modelAnimation,a=this.step.data.lookAtAnimation;t?a&&t.executeCameraAnimation(a):console.warn("No preview service available, cannot execute camera animations."),e?A&&e.executeAnimation(A):console.warn("No model container available, cannot execute model animations.")}};on.updateState=new Map;let At=on;class rn extends At{constructor(t,e,A){super(t,e,A)}async selectVariant(t){if(!this.getUpdateState()&&this.getCurrentVariant()!==t)return jt.selectVariant(this.step,t.getResource(),this.manager.getRegionElements(this.step.stepName)||[],e=>this.setUpdateState(e),this.manager)}getColors(){const t=this.manager.getRegionElements(this.step.stepName)||[];if(t.length!==0)try{return J(t[0].id,this.manager.getAllLayoutData()).colors}catch(e){console.error(e)}}setColor(t,e,A){const a=new Map;return A?a.set(t,{browserValue:e,pmsValue:A}):a.set(t,e),jt.changeColors(this.step,this.manager.getRegionElements(this.step.stepName),this.manager,()=>this.manager.getCommandContext().getAllLayouts(),a)}async getColorOption(){return this.step.data.colorOption}getAvailableColors(){return this.step.data.colorPickerEnabled?jt.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}isPMSPickerEnabled(){return this.step.data.pmsPickerEnabled??!1}}class cn extends At{constructor(t,e,A){super(t,e,A)}selectVariant(t){return FA.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class ln extends At{constructor(t,e,A){super(t,e,A)}selectVariant(t){return MA.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class gn extends At{constructor(t,e,A){super(t,e,A)}selectVariant(t){return xA.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class dn extends At{constructor(t,e,A){super(t,e,A)}async selectVariant(t){if(!t.getId())throw new Error("Unable to select variant with a null ID");await YA.selectVariant(this.step,t.getId(),this.manager)}getDisplayType(){var t;return this.step.data.displayType||((t=this.step.option)==null?void 0:t.displayType)}}class Bn extends At{constructor(t,e,A){super(t,e,A)}selectVariant(t){const e=t.getResource();return St.selectVariant(this.step,{fill:e.color,stroke:e.color,variant:e},this.manager.getRegionElements(this.step.stepName)||[],this.manager)}setColor(t){return St.selectVariant(this.step,t,this.manager.getRegionElements(this.step.stepName)||[],this.manager)}getColors(){return St.availableColours(this.step)}setCustomColor(t){var e,A;return((e=this.getCurrentVariant())==null?void 0:e.getColor())!=="#custom"&&console.warn(`setting custom color for step ${this.step.stepName} but color is ${(A=this.getCurrentVariant())==null?void 0:A.getColor()}`),St.setCustomColor(t,this.step,this.manager)}getCustomColor(){var e,A,a;((e=this.getCurrentVariant())==null?void 0:e.getColor())!=="#custom"&&console.warn(`setting custom color for step ${this.step.stepName} but color is ${(A=this.getCurrentVariant())==null?void 0:A.getColor()}`);const t=(a=this.manager.getStepStorage(this.step.stepName))==null?void 0:a.colour;if(!t)throw new Error(`Color not available on step ${this.step.stepName}. Set a default on the workflow to fix this.`);return t}}class hn extends At{constructor(t,e,A){super(t,e,A)}async selectVariant(t){W.selectVariant(this.step,t.getResource(),this.manager,e=>{if(e)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:"An issue has occurred with text",messageType:re.Error,stepID:this.step.stepName}]);else{const A=this.manager.getInformationResults().filter(a=>a.stepID!==this.step.stepName);this.manager.setInformationResults(A)}},()=>{})}getAvailableFillColors(){return this.step.data.colorPickerEnabled?W.availableFillColors(this.step):[]}async setFillColor(t){const e=this.manager.getRegionElements(this.step.stepName);await W.changeFillColor(this.step,t,e,this.manager)}getFillColor(){var t;return((t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.color)||"#000000"}getAvailableFillImages(){return W.availableFillImages(this.step)}async setFillImage(t){const e=this.manager.getRegionElements(this.step.stepName);await W.changeFillImage(this.step,t,e,this.manager)}getFillImage(){var t;return(t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.fillImage}getAlignment(){const t=W.findLayoutElements(this.manager,this.step);return t==null?void 0:t[0].align}setAlignment(t){const e=this.manager.getRegionElements(this.step.stepName);W.changeAlignment(this.step,t,e,this.manager)}setFullTextCustomization(t){var s;const e=((s=this.manager.getStepStorage(this.step.stepName))==null?void 0:s.inputText)||"",A=this.step.data.replaceableText!==void 0?this.step.data.replaceableText.replace("{{}}",e):e,a=t?A:this.step.data.defaultText;return this.manager.updateStorage(this.step.stepName,{customiseAllText:t,text:a,defaultCleared:!1}),this.setText(a)}setText(t){var l;const e={input:t,helperData:{}},A=W.findLayoutElements(this.manager,this.step),a=W.filterUnsupportedCharacters(t,(l=A[0])==null?void 0:l.fontData),i=!!this.step.data&&!!this.step.data.maxLength&&a.length>this.step.data.maxLength;i||(e.input=a);const s=A.length<=0,o=s?{inputText:a,text:a}:{inputText:a};this.manager.updateStorage(this.step.stepName,o);const r=this.manager.getStepStorage(this.step.stepName),c=W.getProcessedInput(a,this.step.data,!!r.customiseAllText);if(s)i||this.manager.updateMetadata(this.step.stepName,{text:c});else{const{command:g,errorData:d,helperData:B}=W.updateInputText(a,A,this.step,this.manager);g&&this.manager.getCommandDispatcher()(g),e.helperData=B,e.errorData=d,!i&&!d&&this.manager.updateMetadata(this.step.stepName,{text:c})}return e}getText(){var A;const t=this.step.data.defaultText,e=this.manager.getStepStorage(this.step.stepName);return t&&(e==null?void 0:e.defaultCleared)!==void 0&&!(e!=null&&e.defaultCleared)?t:((A=this.manager.getStepStorage(this.step.stepName))==null?void 0:A.text)||""}isReplaceable(){return this.step.data.userCanReplaceText}newLinesSupported(){return this.step.data.allowNewlines||!1}clearDefaultTextIfNecessary(){const t=this.manager.getStepStorage(this.step.stepName);if(!(t!=null&&t.defaultCleared)&&this.step.data.deleteDefaultOnFocus){const e=this.setText("");this.manager.updateStorage(this.step.stepName,{defaultCleared:!0,inputText:""});const A=W.findLayoutElements(this.manager,this.step);return W.updateInputText("",A,this.step,this.manager),e}}hasColorPicker(){return this.step.data.colorPickerEnabled}getRegions(){return this.step.data.regions}getCharacterLimit(){return this.step.data.maxLength}getCharactersRemaining(){const t=this.step.data.maxLength;if(t===void 0)return;const e=this.getText();return t-e.length}setCustomColor(t){throw new Error("Custom color support is not yet available on text. Check back soon.")}getCustomColor(){throw new Error("Custom color support is not yet available on text. Check back soon.")}getAvailableStrokeColors(){return this.step.data.strokeEnabled?W.availableStrokeColors(this.step):[]}getStrokeColor(){var t,e;return((e=(t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.strokeColor)==null?void 0:e.browserValue)||"#000000"}async setStrokeColor(t){const e=this.manager.getRegionElements(this.step.stepName);await W.changeStrokeColor(this.step,t,e,this.manager)}}class Cn extends At{constructor(t,e,A){super(t,e,A)}async selectVariant(){}getContent(){return this.step.data.content}}class un extends At{constructor(t,e,A){super(t,e,A)}async selectVariant(){}getPreviewURL(){var t;return((t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.videoUrl)||""}async selectVideo(t){return yA.regenerateQRCode(this.manager.getRegionElements(this.step.stepName),t.key,this.manager,this.step)}}class wn extends At{constructor(t,e,A){super(t,e,A)}async selectVariant(){console.info("Text Modules don't support variants.")}getCharactersRemaining(){const t=this.step.data.maxLength;if(t===void 0)return;const e=this.getText();return t-e.length}getCharacterLimit(){return this.step.data.maxLength}getText(){var t;return((t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.text)||""}setText(t){SA.changeText(this.step,t,this.manager,"",e=>{if(e)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:e,messageType:re.Error,stepID:this.step.stepName}]);else{const A=this.manager.getInformationResults().filter(a=>a.stepID!==this.step.stepName);this.manager.setInformationResults(A)}})}}class de{static get(t,e){switch(e.type){case M.DigitalContent:return new un(t,e,t.getStepTags(e.stepName));case M.Information:return new Cn(t,e,t.getStepTags(e.stepName));case M.Question:return new dn(t,e,t.getStepTags(e.stepName));case M.Text:return new hn(t,e,t.getStepTags(e.stepName));case M.Illustration:return new rn(t,e,t.getStepTags(e.stepName));case M.Picture:return new gn(t,e,t.getStepTags(e.stepName));case M.Shape:return new Bn(t,e,t.getStepTags(e.stepName));case M.Material:return new cn(t,e,t.getStepTags(e.stepName));case M.Model:return new ln(t,e,t.getStepTags(e.stepName));case M.Frame:return new Hn(t,e,t.getStepTags(e.stepName));case M.Module:return new wn(t,e,t.getStepTags(e.stepName));default:throw new L(`Step type ${e.type} not yet supported in Core SDK`)}}}const En=Q.gql`
1897
+ `;var le=(r=>(r.Error="Error",r.Warning="Warning",r.Info="Info",r))(le||{});const Oo=1e3;class Ka extends fa{constructor(t){super(),this.createdAt=new Date,this.update=t}async execute(){await this.update(),await new Promise(t=>{window.setTimeout(()=>{t()},Oo)})}}class Uo{constructor(t,e,a,n,i,s,o,l,c,d,A,u,h=!1,g,m=!1,f=!1,p=!1){this.workflowStatePromiseQueue=new pa(1),this.initialized=!1,this.readOnly=!1,this.isReloadedTransaction=!1,this.singleVariantsRenderable=!1,this.stepTags={},this.renderLayouts=()=>{var y;if(!this.previewService)return;const C=this.getCommandContext().getAllLayouts(),w=(y=this.getLayoutPreviewService())==null?void 0:y.getAll();if(w)for(const[,v]of w)v.render(C)},this.experience=t,this.client=e,this.updateTransaction=o,this.commandContext=s,this.reloadedState=u,this.transaction=l,this.readOnly=h,this.singleVariantsRenderable=f,this.confirmedDesign=!1,this.editedSteps={},this.informationResults=[],this.mandatorySteps={},this.pendingUpdates=[],this.selectionCost=0,this.workflow=a,this.stepSpecificServices={},this.profanityFilter=n,this.pollers=[],this.allScenes=[],this.layouts=i,this.product=c,this.previewService=d,this.modelContainer=g,this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.validationErrors={steps:new Map},this.confirmCallbacks=[],this.editedCallbacks=[],this.elementsCallbacks=[],this.informationResultCallbacks=[],this.initCallbacks=[],this.mandatoryCallbacks=[],this.makingAdjustmentsCallback=[],this.metadataCallbacks=[],this.selectionCallbacks=[],this.stepSpecificStorageCallbacks={},this.storageCallbacks=[],this.validationCallbacks=[],this.currentAdjustingStepId="",this.renderableContextService=A,this.isReloadedTransaction=m,this.workflow.steps.forEach(C=>{this.stepTags[C.stepName]=C.tags??[]}),p&&(this.workflowStatePromiseQueue.enabled=!1),this.initializationPromise=this.initializeDefaultWorkflowState(a),this.initializationPromise.then(()=>{this.initialized=!0}),this.initializationPromise.catch(C=>{throw console.error(C),this.initialized=!1,new Error("Workflow initialization failed due to an error. See console.")}),this.initializationPromise.finally(()=>this.getCommandContext().registerStateCallback(()=>{this.updateStateWithServer(),this.renderLayouts()}))}async initializeDefaultWorkflowState(t){const e=()=>{var d,A;const o=this.workflow.finalizeStepConfig;if(!o)return;const l=o.lookAtAnimation,c=o.modelAnimation;l&&((d=this.previewService)==null||d.executeCameraAnimation(l)),c&&((A=this.modelContainer)==null||A.executeAnimation(c))};this.reloadedState&&this.reloadedState.serializableWorkflow.steps.forEach(o=>{this.storage[o.stepName]=o.storage||{}}),this.allScenes=await Xi(t);const n=bt(this.allScenes,this.stepSelections).map(o=>o.silentSteps).flat(),{stepElements:i,commands:s}=await this.stepElementsForIntroducedSilentSteps(n,!!this.reloadedState);this.commandContext.apply(new O(s),!0),this.stepElements={...this.stepElements,...i},await this.ensureStepsAreLoaded(),!this.isReloadedTransaction&&this.updateStateWithServer(),this.renderLayouts(),this.reloadedState&&e()}getWorkflowExperience(){return this.experience}getClient(){return this.client}setWorkflowStateSyncEnabled(t){this.workflowStatePromiseQueue.enabled=t}getProduct(){return this.product}getInitializationPromise(){return this.initializationPromise}isInitialized(){return this.initialized}addConfirmCallback(t){t(this.confirmedDesign),this.confirmCallbacks.push(t)}addEditedCallback(t){t(this.editedSteps),this.editedCallbacks.push(t)}addElementsCallback(t){t(this.stepElements),this.elementsCallbacks.push(t)}addInformationResultCallback(t){t(this.informationResults),this.informationResultCallbacks.push(t)}addInitCallback(t){t(this.stepInitialised),this.initCallbacks.push(t)}addMandatoryCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}addMetadataCallback(t){t(this.stepMetadata),this.metadataCallbacks.push(t)}async addSelectionCallback(t){t({selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:await this.traversableScenes()}),this.selectionCallbacks.push(t)}addStepSpecificStorageCallback(t,e){Object.keys(this.storage).includes(e)||(this.storage[e]={}),t(this.storage[e]),Object.keys(this.stepSpecificStorageCallbacks).includes(e)||(this.stepSpecificStorageCallbacks[e]=[]),this.stepSpecificStorageCallbacks[e].push(t)}addStorageCallback(t){t(this.storage),this.storageCallbacks.push(t)}addMakingAdjustmentsCallback(t){t(this.currentAdjustingStepId),this.makingAdjustmentsCallback.push(t)}addPoller(t){this.pollers.push(t)}addValidationCallback(t){this.validationCallbacks.push(t),t(this.validationErrors)}getLayouts(){return this.layouts}getAllLayoutData(){return this.commandContext.getAllLayouts().map(t=>t.layoutState)}getLayoutPreviewService(){return this.renderableContextService}getInformationResults(){return this.informationResults}getPreviewService(){return this.previewService}getProfanities(){return this.profanityFilter}getCommandContext(){return this.commandContext}getRegionElements(t){return this.stepElements[t]||[]}getStepSpecificServices(t){return this.stepSpecificServices[t]}getTransaction(){return this.transaction}getTransactionCustomer(){return this.ownerCustomer}setTransactionCustomer(t){this.ownerCustomer=t}setTransactionCustomerDetails(t){this.ownerCustomer={...this.ownerCustomer,emailAddress:t.email}}getModelContainer(){return this.modelContainer}setModelContainer(t){(!t||this.previewService&&this.previewService.getAllModels().includes(t))&&(this.modelContainer=t,t&&t.metadata&&t.metadata instanceof Map&&this.modelContainer.metadata.set("workflowManager",this))}setTransaction(t){this.transaction=t}getWorkflow(){return this.workflow}getCommandDispatcher(){return t=>this.commandContext.apply(t,!this.initialized)}getWorkflowSelections(){const t={};return this.workflow.steps.forEach(e=>{const a=this.stepSelections[e.stepName];a&&a.selectedVariants&&a.selectedVariants.length>0&&(t[e.stepName]={selections:a.selectedVariants})}),t}getStepSelections(){return this.stepSelections}markStepsAsInitialised(t){const e={...this.stepInitialised};t.forEach(a=>{e[a]=!0}),this.stepInitialised=e,this.onInitChange()}getUpdatesPending(){return this.pendingUpdates.length>0}markUpdateCompleted(t){this.pendingUpdates=this.pendingUpdates.filter(e=>e!==t)}markUpdatePending(){const t=Q();return this.pendingUpdates=[...this.pendingUpdates,t],t}setEditedStatus(t,e){this.editedSteps={...this.editedSteps,[t]:e},this.onEditedChange()}setInformationResults(t){this.informationResults=[...t],this.onInformationResultChange()}setCurrentAdjustingStepId(t){this.currentAdjustingStepId=t,this.onMakingAdjustmentsChange()}setMandatoryFulfilled(t,e){this.mandatorySteps[t]!==e&&(this.mandatorySteps={...this.mandatorySteps,[t]:e},this.setInformationResults([]),this.onMandatoryChange())}setStepError(t,e,a){let n=!1;if(!this.validationErrors.steps.has(t)&&a)n=!0,this.validationErrors.steps.set(t,new Map([[e,a]]));else if(this.validationErrors.steps.has(t)){const i=this.validationErrors.steps.get(t);a&&a!==i.get(e)?(n=!0,i.set(e,a)):a||(n=!0,i.delete(e),i.size===0&&this.validationErrors.steps.delete(t))}n&&this.onValidationChange()}getStepErrors(t){return this.validationErrors.steps.get(t)}getValidationErrors(){return this.validationErrors}toggleDesignConfirmed(){this.confirmedDesign=!this.confirmedDesign,this.onConfirmChange()}toggleMakingAdjustmentsCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}async injectIntoPreviewService(t,e){if(this.modelContainer)throw new Error("You must eject from the preview service before injecting again.");if(this.previewService=t,!this.getProduct().modelUrl||!this.previewService)return;const a=t.loadModel({model:this.getProduct().modelUrl,contextService:this.getLayoutPreviewService()},{refocusCamera:e});this.setModelContainer(a),bt(this.allScenes,this.stepSelections).filter(s=>s).map(s=>s.renderableSteps).flat().filter(s=>s.type===b.Model||s.type===b.Material).forEach(s=>{var c,d,A;if(!((c=s.option)!=null&&c.id)){console.error(`Failed to read option id from step: ${s.stepName}`);return}const o=((d=this.stepSelections[s.stepName])==null?void 0:d.selectedVariants)||[];if(o.length===0)return;const l=o[0];if(s.type===b.Model){if(!this.modelContainer)throw new $("We should always have a model container when injecting a preview!");const u=(A=l.asset)==null?void 0:A.fileLink;if(!u){console.error(`Failed to read model url from variant: ${l.id} for step: ${s.stepName}`);return}const h=s.data;this.modelContainer.applyModelVariant(s.stepName,{model:u,contextService:this.getLayoutPreviewService()},h.replaceProductModel||!1)}else{const u=l.material;if(!u){console.error(`Failed to read material from variant: ${l.id} for step: ${s.stepName}`);return}s.data.targetMaterials.forEach(g=>{if(!this.modelContainer)throw new $("We should always have a model container when injecting a preview!");this.modelContainer.applyMaterialVariant(g,s.option.id,u)})}}),await a.getInitializationPromise(),this.renderLayouts()}ejectFromPreviewService(){if(this.modelContainer){if(!this.modelContainer.dispose)throw new Error("This feature is not supported in the current preview service.");this.modelContainer.dispose(),this.modelContainer=void 0}this.previewService=void 0}updateStorage(t,e){const a={...this.storage,[t]:{...this.storage[t],...e}};if(!tn(a,this.storage)){this.storage=a;const n=new qa(this.constructSerializableWorkflow());this.commandContext.apply(n,!0),this.onStepSpecificStorageChange(t),this.onStorageChange()}}constructSerializableWorkflow(){const t=[];return this.allScenes.forEach(e=>{e.renderableSteps.forEach(a=>{var i,s;const n={stepName:a.stepName};n.storage=this.storage[a.stepName],n.selectedVariants=(s=(i=this.stepSelections[a.stepName])==null?void 0:i.selectedVariants)==null?void 0:s.map(o=>({id:o.id,priceModifier:o.priceModifier})),t.push(n)})}),{steps:t}}updateStateWithServer(){if(this.readOnly)return;const t=this.serialize();this.workflowStatePromiseQueue.enqueue(new Ka(async()=>{await new Promise(e=>{setTimeout(()=>{e()},1)}),await this.updateTransaction({variables:{id:this.transaction.id,workflowState:t}})}))}async updateStateWithServerImmediate(){if(this.readOnly)return;const t=this.serialize();return new Ka(async()=>{await this.updateTransaction({variables:{id:this.transaction.id,workflowState:t}})}).execute()}serialize(){const t=this.getCommandContext().getState();if(!t)throw new $("Attempted to serialize state before it was initialized.");const e=Pt(t.transaction),a=this.dehydrateState(e);return JSON.stringify(a)}dehydrateState(t){var e;for(const a of Object.values(t.layouts).map(n=>n.elements).flat())a.type==="illustration"&&(delete a.cachedObjectURL,a.src&&delete a.svg),a.type==="frame"&&((e=a.pattern)==null||delete e.svg);return this.deleteFieldNameFromObjectRecursive(t,"__typename"),t}deleteFieldNameFromObjectRecursive(t,e){if(!(typeof t!="object"||t===null))for(const a in t)a===e?delete t[a]:this.deleteFieldNameFromObjectRecursive(t[a],e)}async outstandingRequestsPromise(){return this.workflowStatePromiseQueue.finalize()}updateMetadata(t,e){this.stepMetadata={...this.stepMetadata,[t]:{...this.stepMetadata[t],...e}},this.onMetadataChange()}removeElements(t){const e=(a,n)=>Object.keys(a).reduce((i,s)=>{const o=[...a[s]||[]];return n.forEach(l=>{const c=o.findIndex(d=>d.id===l.id);c>-1&&o.splice(c,1)}),i[s]=o,i},{});this.stepElements=e(this.stepElements,t)}getInvalidCanvasRegions(){return this.workflow.steps.reduce((t,e)=>(yt(e,this.stepSelections)||this.stepElements[e.stepName]&&this.stepElements[e.stepName].forEach(a=>t.push(a)),t),[])}getInvalidModelVariants(){return this.workflow.steps.reduce((t,e)=>(e.type===b.Model&&!yt(e,this.stepSelections)&&t.push(e.stepName),t),[])}async stepElementsForIntroducedSilentSteps(t,e){const a=this.product;if(!a)return Promise.resolve({stepElements:{},commands:[]});const n=async(c,d,A)=>{if(c.type===b.SilentIllustration){const u=await new Ha(c,d).trigger();return{step:c,results:u}}else if(c.type===b.ProductOverlay){const u=await new Ha(c,d,A).trigger();return{step:c,results:u}}return Promise.reject("Unknown silent step. This is a bug")},i=t.filter(c=>!this.stepInitialised[c.stepName]),s={stepElements:{},commands:[]},o=[];for(const c of i)this.markStepsAsInitialised([c.stepName]),e||o.push(n(c,this.layouts,a));const l=await Promise.all(o);for(const c of l)s.stepElements[c.step.stepName]=c.results.map(d=>d.regionElement),s.commands=[...s.commands,...c.results.map(d=>d.command)];return s}getStepStorage(t){return this.storage[t]}getMetadata(t){return this.stepMetadata[t]}getWorkflowMetadata(){return this.stepMetadata}getStepTags(t){return this.stepTags[t]||[]}getSerializedStep(t,e){return e.find(a=>a.stepName===t)}async updateTransactionShareActions(){const t=await this.client.getShareActionsForTransaction(this.transaction.id);this.transaction.transactionShareActions=t}async updateTransactionStakeholders(){var e;const t=await I.getShadowGraphqlClient().query({query:Oi,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.transaction.id}});!((e=t==null?void 0:t.data)!=null&&e.transactions)||t.data.transactions.length!==1?(this.transaction.currentStakeholder=void 0,this.transaction.stakeholders=void 0):(this.transaction.stakeholders=t.data.transactions[0].stakeholders,this.transaction.currentStakeholder=t.data.transactions[0].currentStakeholder)}async approveTransaction(t){await I.getShadowGraphqlClient().mutate({mutation:No,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.getTransaction().id,note:t}})}async rejectTransaction(t){await I.getShadowGraphqlClient().mutate({mutation:Ro,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.getTransaction().id,note:t}})}async reset(){this.commandContext.getAllLayouts().forEach(e=>e.layoutState.elements.forEach(a=>{this.getCommandDispatcher()(new ft(a.id))})),this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},await this.ensureStepsAreLoaded()}async setSelectionsAndElements(t,e,a,n){var v;const i=this.stepSelections;this.stepSelections={...this.stepSelections,[t]:{selectedVariants:e}},this.selectionCost=Object.values(this.stepSelections).reduce((E,B)=>E+B.selectedVariants.map(x=>x.priceModifier||0).reduce((x,P)=>x+P,0),0),this.workflow.steps.forEach(E=>{yt(E,this.stepSelections)||(this.stepInitialised[E.stepName]=!1,delete this.stepMetadata[E.stepName],delete this.stepSelections[E.stepName],delete this.storage[E.stepName])});const s=this.allScenes,o=bt(s,i),l=bt(s,this.stepSelections),c=o.map(E=>E.silentSteps).flat(),A=l.map(E=>E.silentSteps).flat().filter(E=>!c.some(B=>B.stepName===E.stepName));c.forEach(E=>{yt(E,this.stepSelections)||(this.stepInitialised[E.stepName]=!1)});const u=this.getInvalidCanvasRegions(),{stepElements:h,commands:g}=await this.stepElementsForIntroducedSilentSteps(A,!1);this.stepElements={...this.stepElements,...h,[t]:a},this.removeElements(u);const m=this.workflow.steps.find(E=>E.stepName===t);if((m==null?void 0:m.type)===b.Frame){const E=(v=this.getWorkflowExperience().getStepById(m.stepName))==null?void 0:v.frameService;E==null||E.setTargetElements(a.map(B=>B.id))}const f=u.map(E=>new ft(E.id)),p=new qa(this.constructSerializableWorkflow()),C=[...g,...f,p];C.length>0&&this.commandContext.apply(new O(C),!0),await this.ensureStepsAreLoaded(),this.onElementsChange();const w=this.getInvalidModelVariants(),y=this.modelContainer;if(y){const E=w.map(B=>y.applyModelVariant(B,{contextService:this.getLayoutPreviewService()},!1));await Promise.all(E)}await this.onSelectionChange(),n&&await n()}async ensureStepsAreLoaded(){const e=bt(this.allScenes,this.stepSelections).map(l=>l.renderableSteps),a=[],n=e.flat();for(const l of n)if(!this.stepInitialised[l.stepName])switch(this.stepInitialised[l.stepName]=!0,l.type){case b.DigitalContent:a.push(va.init(l,this,this.reloadedState));break;case b.Frame:a.push(lt.init(l,this,this.reloadedState));break;case b.Illustration:a.push(Wt.init(l,this,this.reloadedState));break;case b.Material:a.push(Ba.init(l,this,this.reloadedState));break;case b.Model:a.push(Ia.init(l,this,this.reloadedState));break;case b.Module:this.stepSpecificServices[l.stepName]={module:await Kn(l.data.module)},a.push(ba.init(l,this,this.reloadedState));break;case b.Picture:a.push(Da.init(l,this,this.reloadedState));break;case b.Question:a.push(xa.init(l,this,this.reloadedState));break;case b.Shape:a.push(xt.init(l,this,this.reloadedState));break;case b.Text:a.push(H.init(l,this,this.reloadedState));break}const i=(await Promise.allSettled(a)).map(l=>{if(l.status==="rejected")throw new Error(`Step initialization failed: ${l.reason}`);return l.value}),s=i.filter(l=>!!l&&!!l.command).map(l=>l.command),o=i.filter(l=>!!l&&!!l.followup).map(l=>l.followup);s&&s.length>0&&this.commandContext.apply(new O(s),!0);for(const l of o)await l();o.length>0&&await this.ensureStepsAreLoaded(),this.onInitChange()}onConfirmChange(){this.confirmCallbacks.forEach(t=>t(this.confirmedDesign))}onEditedChange(){this.editedCallbacks.forEach(t=>t(this.editedSteps))}onElementsChange(){this.elementsCallbacks.forEach(t=>t(this.stepElements))}onInformationResultChange(){this.informationResultCallbacks.forEach(t=>t(this.informationResults))}onInitChange(){this.initCallbacks.forEach(t=>t(this.stepInitialised))}onMakingAdjustmentsChange(){this.makingAdjustmentsCallback.forEach(t=>{t(this.currentAdjustingStepId)})}onMandatoryChange(){this.mandatoryCallbacks.forEach(t=>t(this.mandatorySteps))}onMetadataChange(){this.metadataCallbacks.forEach(t=>{t(this.stepMetadata)})}async onSelectionChange(){const t=await this.traversableScenes();for(const e of this.selectionCallbacks)e({selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:t})}onStepSpecificStorageChange(t){Object.keys(this.stepSpecificStorageCallbacks).includes(t)||(this.stepSpecificStorageCallbacks[t]=[]),this.stepSpecificStorageCallbacks[t].forEach(e=>e(this.storage[t]))}onStorageChange(){this.storageCallbacks.forEach(t=>t(this.storage))}onValidationChange(){this.validationCallbacks.forEach(t=>t(this.validationErrors))}traversableScenes(){return ts(this.allScenes,this.stepSelections,this.singleVariantsRenderable)}}class rt{constructor(t){this.variantData=t}getType(){var t;return(t=this.variantData.asset)==null?void 0:t.type}getId(){return this.variantData.id}getName(){return this.variantData.name}getPriceFormatted(t,e){return this.variantData.priceModifier.toLocaleString(t||"en-US",{style:"currency",currency:"USD",...e})}getPrice(){return this.variantData.priceModifier}getAsset(){var t,e,a;return(a=(e=(t=this.variantData.asset)==null?void 0:t.versions)==null?void 0:e.find(n=>n.name==="cdn"))==null?void 0:a.link}getAssetResource(){return this.variantData.asset}getThumbnail(){var a,n,i,s;const t=(i=(n=(a=this.variantData.thumbnail)==null?void 0:a.versions)==null?void 0:n.find(o=>o.name==="thumbnail"))==null?void 0:i.link,e=(s=this.variantData.thumbnail)==null?void 0:s.fileLink;return t||e}getColor(){return this.variantData.color}isDefault(){return!!this.variantData.default}getResource(){return this.variantData}isEnabled(){return this.variantData.enabled}}const Xn=class ia{constructor(t,e,a){this.manager=t,this.step=e,this.tags=a}setUpdateState(t){ia.updateState.set(`${this.step.stepName}-${this.manager.getTransaction().id}`,t)}getUpdateState(){return!!ia.updateState.get(`${this.step.stepName}-${this.manager.getTransaction().id}`)}getCurrentVariant(){const e=this.manager.getWorkflowSelections()[this.step.stepName],a=e==null?void 0:e.selections[0];if(a)return new rt(a)}getAvailableVariants(){var e,a;return(((a=(e=this.step.option)==null?void 0:e.variants)==null?void 0:a.filter(n=>n.enabled))||[]).map(n=>new rt(n))}getAllVariants(){var e;return(((e=this.step.option)==null?void 0:e.variants)||[]).map(a=>new rt(a))}getId(){return this.step.stepName}getName(){return this.step.stepTitle}getHelpText(){return this.step.helpText}getType(){return this.step.type}getRaw(){return this.step}getTags(){return this.tags}hasTag(t){return this.tags.includes(t)||!1}getMandatory(){return this.step.mandatory||!1}getOverrideGlobalPropertyConfiguration(t){var a;return(((a=this.manager.getStepStorage(this.step.stepName))==null?void 0:a.overrideGlobalConfigurations)??{})[t.toString()]??!1}setOverrideGlobalPropertyConfiguration(t,e){var n;const a=((n=this.manager.getStepStorage(this.step.stepName))==null?void 0:n.overrideGlobalConfigurations)??{};this.manager.updateStorage(this.step.stepName,{overrideGlobalConfigurations:{...a,[t.toString()]:e}})}getGlobalPropertyAspects(t){var e;return((e=this.step.globalPropertyAspectConfigurations)==null?void 0:e.filter(a=>a.globalPropertyConfigurationId===t&&a.aspectName).map(a=>a.aspectName))??[]}executeAnimations(){const t=this.manager.getPreviewService(),e=this.manager.getModelContainer(),a=this.step.data.modelAnimation,n=this.step.data.lookAtAnimation;t?n&&t.executeCameraAnimation(n):console.warn("No preview service available, cannot execute camera animations."),e?a&&e.executeAnimation(a):console.warn("No model container available, cannot execute model animations.")}};Xn.updateState=new Map;let at=Xn;class Zn extends at{constructor(t,e,a){super(t,e,a)}async selectVariant(t){if(!this.getUpdateState()&&this.getCurrentVariant()!==t)return Wt.selectVariant(this.step,t.getResource(),this.manager.getRegionElements(this.step.stepName)||[],e=>this.setUpdateState(e),this.manager)}getColors(){const t=this.manager.getRegionElements(this.step.stepName)||[];if(t.length!==0)try{return L(t[0].id,this.manager.getAllLayoutData()).colors}catch(e){console.error(e)}}setColor(t,e,a){const n=new Map;return a?n.set(t,{browserValue:e,pmsValue:a}):n.set(t,e),Wt.changeColors(this.step,this.manager.getRegionElements(this.step.stepName),this.manager,()=>this.manager.getCommandContext().getAllLayouts(),n)}async getColorOption(){return this.step.data.colorOption}getAvailableColors(){return this.step.data.colorPickerEnabled?Wt.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}isPMSPickerEnabled(){return this.step.data.pmsPickerEnabled??!1}}class _n extends at{constructor(t,e,a){super(t,e,a)}selectVariant(t){return Ba.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class tr extends at{constructor(t,e,a){super(t,e,a)}selectVariant(t){return Ia.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class er extends at{constructor(t,e,a){super(t,e,a)}selectVariant(t){return Da.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class ar extends at{constructor(t,e,a){super(t,e,a)}async selectVariant(t){if(!t.getId())throw new Error("Unable to select variant with a null ID");await xa.selectVariant(this.step,t.getId(),this.manager)}getDisplayType(){var t;return this.step.data.displayType||((t=this.step.option)==null?void 0:t.displayType)}}class nr extends at{constructor(t,e,a){super(t,e,a)}selectVariant(t){const e=t.getResource();return xt.selectVariant(this.step,{fill:e.color,stroke:e.color,variant:e},this.manager.getRegionElements(this.step.stepName)||[],this.manager)}setColor(t){return xt.selectVariant(this.step,t,this.manager.getRegionElements(this.step.stepName)||[],this.manager)}getColors(){return xt.availableColours(this.step)}setCustomColor(t){var e,a;return((e=this.getCurrentVariant())==null?void 0:e.getColor())!=="#custom"&&console.warn(`setting custom color for step ${this.step.stepName} but color is ${(a=this.getCurrentVariant())==null?void 0:a.getColor()}`),xt.setCustomColor(t,this.step,this.manager)}getCustomColor(){var e,a,n;((e=this.getCurrentVariant())==null?void 0:e.getColor())!=="#custom"&&console.warn(`setting custom color for step ${this.step.stepName} but color is ${(a=this.getCurrentVariant())==null?void 0:a.getColor()}`);const t=(n=this.manager.getStepStorage(this.step.stepName))==null?void 0:n.colour;if(!t)throw new Error(`Color not available on step ${this.step.stepName}. Set a default on the workflow to fix this.`);return t}}class rr extends at{constructor(t,e,a){super(t,e,a)}async selectVariant(t){H.selectVariant(this.step,t.getResource(),this.manager,e=>{if(e)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:"An issue has occurred with text",messageType:le.Error,stepID:this.step.stepName}]);else{const a=this.manager.getInformationResults().filter(n=>n.stepID!==this.step.stepName);this.manager.setInformationResults(a)}},()=>{})}getAvailableFillColors(){return this.step.data.colorPickerEnabled?H.availableFillColors(this.step):[]}async setFillColor(t){const e=this.manager.getRegionElements(this.step.stepName);await H.changeFillColor(this.step,t,e,this.manager)}getFillColor(){var t;return((t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.color)||"#000000"}getAvailableFillImages(){return H.availableFillImages(this.step)}async setFillImage(t){const e=this.manager.getRegionElements(this.step.stepName);await H.changeFillImage(this.step,t,e,this.manager)}getFillImage(){var t;return(t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.fillImage}getAlignment(){const t=H.findLayoutElements(this.manager,this.step);return t==null?void 0:t[0].align}setAlignment(t){const e=this.manager.getRegionElements(this.step.stepName);H.changeAlignment(this.step,t,e,this.manager)}setFullTextCustomization(t){var s;const e=((s=this.manager.getStepStorage(this.step.stepName))==null?void 0:s.inputText)||"",a=this.step.data.replaceableText!==void 0?this.step.data.replaceableText.replace("{{}}",e):e,n=t?a:this.step.data.defaultText;return this.manager.updateStorage(this.step.stepName,{customiseAllText:t,text:n,defaultCleared:!1}),this.setText(n)}setText(t){var d;const e={input:t,helperData:{}},a=H.findLayoutElements(this.manager,this.step),n=H.filterUnsupportedCharacters(t,(d=a[0])==null?void 0:d.fontData),i=!!this.step.data&&!!this.step.data.maxLength&&n.length>this.step.data.maxLength;i||(e.input=n);const s=a.length<=0,o=s?{inputText:n,text:n}:{inputText:n};this.manager.updateStorage(this.step.stepName,o);const l=this.manager.getStepStorage(this.step.stepName),c=H.getProcessedInput(n,this.step.data,!!l.customiseAllText);if(s)i||this.manager.updateMetadata(this.step.stepName,{text:c});else{const{command:A,errorData:u,helperData:h}=H.updateInputText(n,a,this.step,this.manager);A&&this.manager.getCommandDispatcher()(A),e.helperData=h,e.errorData=u,!i&&!u&&this.manager.updateMetadata(this.step.stepName,{text:c})}return e}getText(){var a;const t=this.step.data.defaultText,e=this.manager.getStepStorage(this.step.stepName);return t&&(e==null?void 0:e.defaultCleared)!==void 0&&!(e!=null&&e.defaultCleared)?t:((a=this.manager.getStepStorage(this.step.stepName))==null?void 0:a.text)||""}isReplaceable(){return this.step.data.userCanReplaceText}newLinesSupported(){return this.step.data.allowNewlines||!1}clearDefaultTextIfNecessary(){const t=this.manager.getStepStorage(this.step.stepName);if(!(t!=null&&t.defaultCleared)&&this.step.data.deleteDefaultOnFocus){const e=this.setText("");this.manager.updateStorage(this.step.stepName,{defaultCleared:!0,inputText:""});const a=H.findLayoutElements(this.manager,this.step);return H.updateInputText("",a,this.step,this.manager),e}}hasColorPicker(){return this.step.data.colorPickerEnabled}getRegions(){return this.step.data.regions}getCharacterLimit(){return this.step.data.maxLength}getCharactersRemaining(){const t=this.step.data.maxLength;if(t===void 0)return;const e=this.getText();return t-e.length}setCustomColor(t){throw new Error("Custom color support is not yet available on text. Check back soon.")}getCustomColor(){throw new Error("Custom color support is not yet available on text. Check back soon.")}getAvailableStrokeColors(){return this.step.data.strokeEnabled?H.availableStrokeColors(this.step):[]}getStrokeColor(){var t,e;return((e=(t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.strokeColor)==null?void 0:e.browserValue)||"#000000"}async setStrokeColor(t){const e=this.manager.getRegionElements(this.step.stepName);await H.changeStrokeColor(this.step,t,e,this.manager)}}class ir extends at{constructor(t,e,a){super(t,e,a)}async selectVariant(){}getContent(){return this.step.data.content}}class sr extends at{constructor(t,e,a){super(t,e,a)}async selectVariant(){}getPreviewURL(){var t;return((t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.videoUrl)||""}async selectVideo(t){return va.regenerateQRCode(this.manager.getRegionElements(this.step.stepName),t.key,this.manager,this.step)}}class or extends at{constructor(t,e,a){super(t,e,a)}async selectVariant(){console.info("Text Modules don't support variants.")}getCharactersRemaining(){const t=this.step.data.maxLength;if(t===void 0)return;const e=this.getText();return t-e.length}getCharacterLimit(){return this.step.data.maxLength}getText(){var t;return((t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.text)||""}setText(t){ba.changeText(this.step,t,this.manager,"",e=>{if(e)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:e,messageType:le.Error,stepID:this.step.stepName}]);else{const a=this.manager.getInformationResults().filter(n=>n.stepID!==this.step.stepName);this.manager.setInformationResults(a)}})}}class ue{static get(t,e){switch(e.type){case b.DigitalContent:return new sr(t,e,t.getStepTags(e.stepName));case b.Information:return new ir(t,e,t.getStepTags(e.stepName));case b.Question:return new ar(t,e,t.getStepTags(e.stepName));case b.Text:return new rr(t,e,t.getStepTags(e.stepName));case b.Illustration:return new Zn(t,e,t.getStepTags(e.stepName));case b.Picture:return new er(t,e,t.getStepTags(e.stepName));case b.Shape:return new nr(t,e,t.getStepTags(e.stepName));case b.Material:return new _n(t,e,t.getStepTags(e.stepName));case b.Model:return new tr(t,e,t.getStepTags(e.stepName));case b.Frame:return new Dr(t,e,t.getStepTags(e.stepName));case b.Module:return new or(t,e,t.getStepTags(e.stepName));default:throw new $(`Step type ${e.type} not yet supported in Core SDK`)}}}const lr=S.gql`
3159
1898
  fragment CreateDesignTransaction on Transaction {
3160
1899
  id
3161
1900
  designName
@@ -3180,8 +1919,8 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3180
1919
  externalProductVariantId
3181
1920
  }
3182
1921
  }
3183
- `,Xo=Q.gql`
3184
- ${En}
1922
+ `,Lo=S.gql`
1923
+ ${lr}
3185
1924
  mutation CreateDesign(
3186
1925
  $name: String!
3187
1926
  $layouts: [LayoutInput]!
@@ -3212,8 +1951,8 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3212
1951
  }
3213
1952
  }
3214
1953
  }
3215
- `,qo=Q.gql`
3216
- ${En}
1954
+ `,$o=S.gql`
1955
+ ${lr}
3217
1956
  mutation CreateDesigns($inputs: [DesignCreateInput]!) {
3218
1957
  designCreateMany(inputs: $inputs) {
3219
1958
  id
@@ -3226,7 +1965,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3226
1965
  }
3227
1966
  }
3228
1967
  }
3229
- `;function fe(n){const t=JSON.parse(atob(n.split(".")[1])).exp;return Math.floor(new Date().getTime()/1e3)>=t}const Zo=async n=>{var s,o;const e=((s=Object.entries(localStorage).find(([r,c])=>r.startsWith("CognitoIdentityServiceProvider")&&r.endsWith("idToken")))==null?void 0:s[0])||"",A=localStorage.getItem(e),a={};return A&&!fe(A)&&(a.Authorization=`Bearer ${A}`),(o=(await y.getShadowGraphqlClient().mutate({mutation:Xo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{name:n.name,layouts:n.layouts,workflowId:n.workflowId,transactionId:n.transactionId,previewImage:n.previewImage,useThreeDimPreview:n.useThreeDimPreview,metadata:n.metadata,selectedVariants:n.selectedVariants},context:{headers:a}})).data)==null?void 0:o.designCreate},$o=async n=>{var s,o;const e=((s=Object.entries(localStorage).find(([r,c])=>r.startsWith("CognitoIdentityServiceProvider")&&r.endsWith("idToken")))==null?void 0:s[0])||"",A=localStorage.getItem(e),a={};return A&&!fe(A)&&(a.Authorization=`Bearer ${A}`),(o=(await y.getShadowGraphqlClient().mutate({mutation:qo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{inputs:n.map(r=>({name:r.name,layouts:r.layouts,workflowId:r.workflowId,transactionId:r.transactionId,previewImage:r.previewImage,useThreeDimPreview:r.useThreeDimPreview,metadata:r.metadata,selectedVariants:r.selectedVariants}))},context:{headers:a}})).data)==null?void 0:o.designCreateMany},sA=(n,t,e)=>{const A=i=>{const s={};if(i.type==="Frame"){const o=n[i.stepName],r=i.data;if(!o||!o.image||r.hideImageInCart&&e)return s;s[`${i.stepTitle} image`]=o.image}if(i.type==="Illustration"){const o=n[i.stepName],r=i.data;if(!o||r.hideColorsInCart&&e||!o.colors)return s;if(o.colors.length>0){const c=o.colors.join(", ").toUpperCase();s[`${i.stepTitle} colors`]=c}}if(i.type==="Module"){const o=n[i.stepName],r=i.data;if(!o||o.text===void 0||o.text===null||r.hideTextInCart&&e)return s;s[`${i.stepTitle} text`]=o.text}if(i.type==="Text"){const o=n[i.stepName];if(!o)return s;const r=i.data;(!r.hideTextInCart||!e&&o.text!==void 0&&o.text!==null)&&(s[`${i.stepTitle} text`]=o.text),o.color&&(!r.hideColorInCart||!e)&&(s[`${i.stepTitle} color`]=o.color),o.strokeColor&&(!r.hideStrokeInCart||!e)&&(s[`${i.stepTitle} stroke`]=o.strokeColor)}return s},a={};return t.steps.forEach(i=>{Object.assign(a,A(i))}),a},_o=(n,t,e,A)=>{const a={};let i={};e?i=sA(e,t,!1):A&&(i=A);const o=t.steps.map(r=>r.stepTitle).filter((r,c,l)=>l.indexOf(r)==c);for(const r of o){if(Object.keys(n).includes(r)){const c=n[r],l=t.steps.find(g=>g.stepTitle===r);a[`${l==null?void 0:l.stepTitle} selection`]={value:c[0].name,priceModifier:c[0].priceModifier}}for(const c of Object.keys(i))[`${r} color`,`${r} colors`,`${r} text`,`${r} image`].includes(c)&&(a[c]={value:i[c],priceModifier:0})}return a},mn=(n,t,e,A,a,i,s,o)=>{var h,C;const r=t.basePrice||0,c=n.priceModifierTotal||0,l=_o(A,e,void 0,i),d=(k.getMap("transactionOwnerIds")||new Map).get(n.id),B={additionalExternalProductId:(h=n.integrationProduct)==null?void 0:h.additionalExternalProductId,additionalExternalVariantId:(C=n.integrationProduct)==null?void 0:C.additionalExternalVariantId,baseCost:r,designExternalVariants:n.designExternalVariants,designProductId:n.externalDesignProductId,designProductVariantId:n.externalDesignProductVariantId,event:"onComplete",exportedData:l,externalCartProductId:n.externalCartProductId,externalCartProductVariantId:n.externalCartProductVariantId,lineItemImageUrl:s||"",optionsCost:c,processExecutionId:o,quantity:n.quantity,transactionId:n.id,transactionOwnerId:d,weight:t.weight,workflowViewerLink:n.workflowViewerLink||"",workflowViewerReadOnlyLink:n.workflowViewerReadOnlyLink||""};return i&&(B.metadata=i),A&&(B.selectedVariants=A),a&&(B.sku=a),B},fn=async(n,t,e,A,a,i,s,o,r,c)=>{var F;await(async()=>{var V;if(c!==void 0)return c;await n.outstandingRequestsPromise();const Y=(k.getMap("transactionOwnerIds")||new Map).get(a.id),v=await y.getShadowGraphqlClient().query({query:Ra,variables:{ids:[a.id]},fetchPolicy:"no-cache",errorPolicy:"all",context:{transactionOwnerId:Y}}),H=(V=v.data)==null?void 0:V.transactions[0].workflowState;return v.errors?(v.errors.forEach(j=>{v.errors&&console.log("Server Error:",j.message)}),null):H??null})()||(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(A())),await n.updateStateWithServerImmediate(A),console.log("Server state is undefined @ Workflow completion"));const d=n.getPreviewService(),B=(F=t==null?void 0:t.finalizeStepConfig)==null?void 0:F.lookAtAnimation,h=d&&t.showModelOnFinishStep&&!!B,C=r&&sA(r,t,!0),u=r&&sA(r,t,!1),w=async x=>{const Y={};let P=0;if(Object.keys(i).length>0)for(const v of Object.keys(i)){const H=i[v],V=t.steps.find(j=>j.stepName===v);for(let j=0;j<H.selections.length;++j){const at=H.selections[j];if(V&&(!x||V.option&&(V.option.variants||[]).length>1&&!V.data.hideSelectionInCart&&!V.data.hideSelectionsInCart)){const ve=V.stepTitle;Y[ve]?Y[ve].push({id:at.id||"",name:at.name,priceModifier:at.priceModifier}):Y[ve]=[{id:at.id||"",name:at.name,priceModifier:at.priceModifier}]}P+=at.priceModifier}}return[Y,P]},[E]=await w(!0),m=Object.fromEntries(Object.keys(E).map(x=>[x,E[x].map(Y=>Y.id)])),[f]=await w(!1),p=Object.fromEntries(Object.keys(f).map(x=>[x,f[x].map(Y=>Y.id)]));let I=await o(h,a.id);if(I){const x=await(await ot(I)).blob();I=(await T.uploadAsset({name:`${a.id}-preview-image.png`,blob:x},Kt.Image,!0,!1)).fileLink}return{designDetails:(()=>{const x={name:s,layouts:e.map(Y=>({index:Y.index,panelId:Y.panelId})),workflowId:t.id,transactionId:a.id,useThreeDimPreview:!!h,previewImage:I};if(u){const Y=[];for(const[P,v]of Object.entries(u))Y.push({key:P,value:v});x.metadata=Y}if(m){const Y=[];for(const[P,v]of Object.entries(p))Y.push({key:P,ids:v});x.selectedVariants=Y}return x})(),cartSelectionsWithPrices:E,cartMetadata:C}},Qn=async(n,t,e,A,a,i,s,o,r,c,l)=>{var w,E;r("workflow.steps.finish.finalize.buildingLayouts");const{designDetails:g,cartSelectionsWithPrices:d,cartMetadata:B}=await fn(n,t,e,A,i,s,o,c,l);r("workflow.steps.finish.finalize.creatingDesign");const h=await Zo(g),C=(w=h==null?void 0:h.transaction)==null?void 0:w.previewImageLink;if(!(h!=null&&h.transaction))throw new Error("Failed to create design");r("workflow.steps.finish.finalize.updatingTransaction");const u=h.transaction;return mn(u,a,t,d,h==null?void 0:h.sku,B,C,(E=h==null?void 0:h.processExecution)==null?void 0:E.id)},tr=async(n,t,e)=>{t("workflow.steps.finish.finalize.buildingLayouts"),await Promise.all(n.map(async o=>{await o.workflowManager.outstandingRequestsPromise()}));const a=await(async()=>{var c;const r=await y.getShadowGraphqlClient().query({query:Ra,variables:{ids:n.map(l=>l.transaction.id)},fetchPolicy:"no-cache",errorPolicy:"all"});return r.errors?(r.errors.forEach(l=>{r.errors&&console.log("Server Error:",l.message)}),null):(c=r.data)!=null&&c.transactions?r.data.transactions.map(l=>l.workflowState??null):null})(),i=await Promise.all(n.map(async(o,r)=>await fn(o.workflowManager,o.workflow,o.layouts,o.getReducerState,o.transaction,o.workflowSelections,o.designName,e??(()=>Promise.resolve(void 0)),o.workflowMetadata,a?a[r]:void 0)));t("workflow.steps.finish.finalize.creatingDesign");const s=await $o(i.map(o=>o.designDetails));if(!s)throw new Error("Failed to create designs");return t("workflow.steps.finish.finalize.updatingTransaction"),s.map((o,r)=>{var d;const c=n[r],l=i[r],g=o.transaction;return mn(g,c.product,c.workflow,l.cartSelectionsWithPrices,o.sku,l.cartMetadata,void 0,(d=o.processExecution)==null?void 0:d.id)})};class er{constructor(){this.localPersistenceKey="designTransactions",this.storageMethod="Local",this.designSavedListeners=[]}attachSaveListener(t){this.designSavedListeners.push(t)}detachSaveListener(t){this.designSavedListeners=this.designSavedListeners.filter(e=>e!==t)}async getSavedDesigns(){if(this.storageMethod==="Local"){const t=k.get(this.localPersistenceKey);return t?JSON.parse(t):[]}throw new L("Unexpected storage method requested")}async getSavedDesignByTransaction(t){return(await this.getSavedDesigns()).find(A=>A.transactionId===t)}async addDesign(t){const A=(await this.getSavedDesigns()).filter(a=>a.transactionId!==t.transactionId);A.unshift(t),await this.setDesigns(A),this.designSavedListeners.forEach(a=>a(t))}async renameDesign(t,e){const A=await this.getSavedDesigns(),a=A.find(i=>i.transactionId===t);if(!a)throw new Error(`No saved design for transaction ${t}.`);a.title=e,await this.setDesigns(A)}async removeDesign(t){const e=await this.getSavedDesigns();await this.setDesigns(e.filter(A=>A.transactionId!==t))}async setDesigns(t){if(this.storageMethod==="Local"){k.set(this.localPersistenceKey,JSON.stringify(t));return}throw new L("Unexpected storage method requested")}}const Ce=new er,Ar=Q.gql`
1968
+ `;function ye(r){const t=JSON.parse(atob(r.split(".")[1])).exp;return Math.floor(new Date().getTime()/1e3)>=t}const Vo=async r=>{var s,o;const e=((s=Object.entries(localStorage).find(([l,c])=>l.startsWith("CognitoIdentityServiceProvider")&&l.endsWith("idToken")))==null?void 0:s[0])||"",a=localStorage.getItem(e),n={};return a&&!ye(a)&&(n.Authorization=`Bearer ${a}`),(o=(await I.getShadowGraphqlClient().mutate({mutation:Lo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{name:r.name,layouts:r.layouts,workflowId:r.workflowId,transactionId:r.transactionId,previewImage:r.previewImage,useThreeDimPreview:r.useThreeDimPreview,metadata:r.metadata,selectedVariants:r.selectedVariants},context:{headers:n}})).data)==null?void 0:o.designCreate},zo=async r=>{var s,o;const e=((s=Object.entries(localStorage).find(([l,c])=>l.startsWith("CognitoIdentityServiceProvider")&&l.endsWith("idToken")))==null?void 0:s[0])||"",a=localStorage.getItem(e),n={};return a&&!ye(a)&&(n.Authorization=`Bearer ${a}`),(o=(await I.getShadowGraphqlClient().mutate({mutation:$o,errorPolicy:"all",fetchPolicy:"no-cache",variables:{inputs:r.map(l=>({name:l.name,layouts:l.layouts,workflowId:l.workflowId,transactionId:l.transactionId,previewImage:l.previewImage,useThreeDimPreview:l.useThreeDimPreview,metadata:l.metadata,selectedVariants:l.selectedVariants}))},context:{headers:n}})).data)==null?void 0:o.designCreateMany},sa=(r,t,e)=>{const a=i=>{const s={};if(i.type==="Frame"){const o=r[i.stepName],l=i.data;if(!o||!o.image||l.hideImageInCart&&e)return s;s[`${i.stepTitle} image`]=o.image}if(i.type==="Illustration"){const o=r[i.stepName],l=i.data;if(!o||l.hideColorsInCart&&e||!o.colors)return s;if(o.colors.length>0){const c=o.colors.join(", ").toUpperCase();s[`${i.stepTitle} colors`]=c}}if(i.type==="Module"){const o=r[i.stepName],l=i.data;if(!o||o.text===void 0||o.text===null||l.hideTextInCart&&e)return s;s[`${i.stepTitle} text`]=o.text}if(i.type==="Text"){const o=r[i.stepName];if(!o)return s;const l=i.data;(!l.hideTextInCart||!e&&o.text!==void 0&&o.text!==null)&&(s[`${i.stepTitle} text`]=o.text),o.color&&(!l.hideColorInCart||!e)&&(s[`${i.stepTitle} color`]=o.color),o.strokeColor&&(!l.hideStrokeInCart||!e)&&(s[`${i.stepTitle} stroke`]=o.strokeColor)}return s},n={};return t.steps.forEach(i=>{Object.assign(n,a(i))}),n},Go=(r,t,e,a)=>{const n={};let i={};e?i=sa(e,t,!1):a&&(i=a);const o=t.steps.map(l=>l.stepTitle).filter((l,c,d)=>d.indexOf(l)==c);for(const l of o){if(Object.keys(r).includes(l)){const c=r[l],d=t.steps.find(A=>A.stepTitle===l);n[`${d==null?void 0:d.stepTitle} selection`]={value:c[0].name,priceModifier:c[0].priceModifier}}for(const c of Object.keys(i))[`${l} color`,`${l} colors`,`${l} text`,`${l} image`].includes(c)&&(n[c]={value:i[c],priceModifier:0})}return n},cr=(r,t,e,a,n,i,s,o)=>{var g,m;const l=t.basePrice||0,c=r.priceModifierTotal||0,d=Go(a,e,void 0,i),u=(k.getMap("transactionOwnerIds")||new Map).get(r.id),h={additionalExternalProductId:(g=r.integrationProduct)==null?void 0:g.additionalExternalProductId,additionalExternalVariantId:(m=r.integrationProduct)==null?void 0:m.additionalExternalVariantId,baseCost:l,designExternalVariants:r.designExternalVariants,designProductId:r.externalDesignProductId,designProductVariantId:r.externalDesignProductVariantId,event:"onComplete",exportedData:d,externalCartProductId:r.externalCartProductId,externalCartProductVariantId:r.externalCartProductVariantId,lineItemImageUrl:s||"",optionsCost:c,processExecutionId:o,quantity:r.quantity,transactionId:r.id,transactionOwnerId:u,weight:t.weight,workflowViewerLink:r.workflowViewerLink||"",workflowViewerReadOnlyLink:r.workflowViewerReadOnlyLink||""};return i&&(h.metadata=i),a&&(h.selectedVariants=a),n&&(h.sku=n),h},dr=async(r,t,e,a,n,i,s,o,l,c)=>{var x;await(async()=>{var W;if(c!==void 0)return c;await r.outstandingRequestsPromise();const F=(k.getMap("transactionOwnerIds")||new Map).get(n.id),N=await I.getShadowGraphqlClient().query({query:kn,variables:{ids:[n.id]},fetchPolicy:"no-cache",errorPolicy:"all",context:{transactionOwnerId:F}}),z=(W=N.data)==null?void 0:W.transactions[0].workflowState;return N.errors?(N.errors.forEach(j=>{N.errors&&console.log("Server Error:",j.message)}),null):z??null})()||(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(a())),await r.updateStateWithServerImmediate(a),console.log("Server state is undefined @ Workflow completion"));const u=r.getPreviewService(),h=(x=t==null?void 0:t.finalizeStepConfig)==null?void 0:x.lookAtAnimation,g=u&&t.showModelOnFinishStep&&!!h,m=l&&sa(l,t,!0),f=l&&sa(l,t,!1),p=async P=>{const F={};let M=0;if(Object.keys(i).length>0)for(const N of Object.keys(i)){const z=i[N],W=t.steps.find(j=>j.stepName===N);for(let j=0;j<z.selections.length;++j){const nt=z.selections[j];if(W&&(!P||W.option&&(W.option.variants||[]).length>1&&!W.data.hideSelectionInCart&&!W.data.hideSelectionsInCart)){const Me=W.stepTitle;F[Me]?F[Me].push({id:nt.id||"",name:nt.name,priceModifier:nt.priceModifier}):F[Me]=[{id:nt.id||"",name:nt.name,priceModifier:nt.priceModifier}]}M+=nt.priceModifier}}return[F,M]},[C]=await p(!0),w=Object.fromEntries(Object.keys(C).map(P=>[P,C[P].map(F=>F.id)])),[y]=await p(!1),v=Object.fromEntries(Object.keys(y).map(P=>[P,y[P].map(F=>F.id)]));let E=await o(g,n.id);if(E){const P=await(await ot(E)).blob();E=(await U.uploadAsset({name:`${n.id}-preview-image.png`,blob:P},Ht.Image,!0,!1)).fileLink}return{designDetails:(()=>{const P={name:s,layouts:e.map(F=>({index:F.index,panelId:F.panelId})),workflowId:t.id,transactionId:n.id,useThreeDimPreview:!!g,previewImage:E};if(f){const F=[];for(const[M,N]of Object.entries(f))F.push({key:M,value:N});P.metadata=F}if(w){const F=[];for(const[M,N]of Object.entries(v))F.push({key:M,ids:N});P.selectedVariants=F}return P})(),cartSelectionsWithPrices:C,cartMetadata:m}},Ar=async(r,t,e,a,n,i,s,o,l,c,d)=>{var p,C;l("workflow.steps.finish.finalize.buildingLayouts");const{designDetails:A,cartSelectionsWithPrices:u,cartMetadata:h}=await dr(r,t,e,a,i,s,o,c,d);l("workflow.steps.finish.finalize.creatingDesign");const g=await Vo(A),m=(p=g==null?void 0:g.transaction)==null?void 0:p.previewImageLink;if(!(g!=null&&g.transaction))throw new Error("Failed to create design");l("workflow.steps.finish.finalize.updatingTransaction");const f=g.transaction;return cr(f,n,t,u,g==null?void 0:g.sku,h,m,(C=g==null?void 0:g.processExecution)==null?void 0:C.id)},jo=async(r,t,e)=>{t("workflow.steps.finish.finalize.buildingLayouts"),await Promise.all(r.map(async o=>{await o.workflowManager.outstandingRequestsPromise()}));const n=await(async()=>{var c;const l=await I.getShadowGraphqlClient().query({query:kn,variables:{ids:r.map(d=>d.transaction.id)},fetchPolicy:"no-cache",errorPolicy:"all"});return l.errors?(l.errors.forEach(d=>{l.errors&&console.log("Server Error:",d.message)}),null):(c=l.data)!=null&&c.transactions?l.data.transactions.map(d=>d.workflowState??null):null})(),i=await Promise.all(r.map(async(o,l)=>await dr(o.workflowManager,o.workflow,o.layouts,o.getReducerState,o.transaction,o.workflowSelections,o.designName,e??(()=>Promise.resolve(void 0)),o.workflowMetadata,n?n[l]:void 0)));t("workflow.steps.finish.finalize.creatingDesign");const s=await zo(i.map(o=>o.designDetails));if(!s)throw new Error("Failed to create designs");return t("workflow.steps.finish.finalize.updatingTransaction"),s.map((o,l)=>{var u;const c=r[l],d=i[l],A=o.transaction;return cr(A,c.product,c.workflow,d.cartSelectionsWithPrices,o.sku,d.cartMetadata,void 0,(u=o.processExecution)==null?void 0:u.id)})};class Wo{constructor(){this.localPersistenceKey="designTransactions",this.storageMethod="Local",this.designSavedListeners=[]}attachSaveListener(t){this.designSavedListeners.push(t)}detachSaveListener(t){this.designSavedListeners=this.designSavedListeners.filter(e=>e!==t)}async getSavedDesigns(){if(this.storageMethod==="Local"){const t=k.get(this.localPersistenceKey);return t?JSON.parse(t):[]}throw new $("Unexpected storage method requested")}async getSavedDesignByTransaction(t){return(await this.getSavedDesigns()).find(a=>a.transactionId===t)}async addDesign(t){const a=(await this.getSavedDesigns()).filter(n=>n.transactionId!==t.transactionId);a.unshift(t),await this.setDesigns(a),this.designSavedListeners.forEach(n=>n(t))}async renameDesign(t,e){const a=await this.getSavedDesigns(),n=a.find(i=>i.transactionId===t);if(!n)throw new Error(`No saved design for transaction ${t}.`);n.title=e,await this.setDesigns(a)}async removeDesign(t){const e=await this.getSavedDesigns();await this.setDesigns(e.filter(a=>a.transactionId!==t))}async setDesigns(t){if(this.storageMethod==="Local"){k.set(this.localPersistenceKey,JSON.stringify(t));return}throw new $("Unexpected storage method requested")}}const me=new Wo,qo=S.gql`
3230
1969
  mutation AddTransactionStakeholder($id: String!, $type: String!, $details: CustomerDetailsInput!) {
3231
1970
  transactionAddStakeholder(id: $id, details: $details, type: $type) {
3232
1971
  id
@@ -3240,7 +1979,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3240
1979
  }
3241
1980
  }
3242
1981
  }
3243
- `;var pn=(n=>(n.QuantityChanged="QuantityChanged",n.PriceBreakChanged="PriceBreakChanged",n))(pn||{});class In{constructor(t,e){var a;if(this.cachedStepHandles=new Map,this.currentPriceBreak=1,this.renderableScenes=[],this.renderableSceneCallbacks=[],this.eventCallbacks=new Map,this.debouncedSavedDesignUpdate=oa(async()=>{await Ce.getSavedDesignByTransaction(this.getWorkflowManager().getTransaction().id)&&this.save()},2500),this.getCanvasObjectURLAsync=async i=>new Promise((s,o)=>{try{i.toBlob(r=>{if(r){const c=URL.createObjectURL(r);s(c)}})}catch(r){o(r)}}),!e.workflow)throw new Error("No Workflow ID provided.");this.client=t;const A=e.layouts;this.commandContext=new Oa,this.commandContext.initialize(A,e.reloadedState),this.isReadOnly=e.transaction.isOrdered||!!e.readOnly,this.workflowManager=new Wo(this,t,e.workflow,((a=e.product.profanities)==null?void 0:a.map(i=>i.word))||[],A,this.commandContext,i=>{try{this.debouncedSavedDesignUpdate()}catch{console.error("Failed to update saved design details.")}return e.stateMutationFunc(i)},e.transaction,e.product,e.previewService,e.renderableContextService,e.reloadedState,e.readOnly,e.modelContainer,e.isReloadedTransaction,e.singleVariantsRenderable,e.delayWorkflowStateSync),this.workflowManager.addSelectionCallback(i=>{const s=i.traversableScenes.map(o=>{const r=o.renderableSteps.map(c=>c.stepName);return{id:o.name,title:o.title,renderableSteps:r,workflowScene:o}});this.renderableScenes=s,this.renderableSceneCallbacks.forEach(o=>o(s))}),this.currentPriceBreak=this.priceBreakToBeApplied()}getBundle(){return this.bundle}setBundle(t){this.bundle=t}getClient(){return this.client}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.commandContext}getWorkflowManager(){return this.workflowManager}async createPreviewImage(t,e){var E,m;const A=this.workflowManager.getWorkflow(),a=(E=A==null?void 0:A.finalizeStepConfig)==null?void 0:E.lookAtAnimation;if(t){if(!a)throw new Error("Failed to generate cart preview image!");return await((m=this.workflowManager.getPreviewService())==null?void 0:m.renderSceneScreenshot(e??512,a))||""}let i=2048;e&&e<=2048&&(i=e);const s=ht(i,i),o=this.commandContext.getAllLayouts(),r=A.defaultPreviewPanelIndex||0,c=A.panels[r],l=o.find(f=>{var p;return((p=f.layoutState)==null?void 0:p.layout.panelId)===(c==null?void 0:c.name)})||o[0],g=l.layoutState.layout.previewRegion?{x:l.layoutState.layout.previewRegion.left,y:l.layoutState.layout.previewRegion.top,width:l.layoutState.layout.previewRegion.width,height:l.layoutState.layout.previewRegion.height}:{x:0,y:0,width:l.layoutState.layout.width,height:l.layoutState.layout.height},d=this.commandContext.getLayoutById(l.layoutState.layout.id),B=s.getContext("2d");if(!B)throw new Ie("Failed to obtain 2D context for preview image creation");const h=Se(d.layoutState.layout,d.layoutState.elements,{renderingConfiguration:{purpose:Pt.Print,region:{left:g.x,top:g.y,width:g.width,height:g.height}}}),C=Ea(h);await(await cA.Pith.from(B,C,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:ht,createImage:Ae,DOMParser:hA(),fetch})).render();const w=await this.getCanvasObjectURLAsync(s);return s.toDataURL(w)}getStepById(t){const e=this.getWorkflowManager().getWorkflow().steps.find(i=>i.stepName===t);if(!e||!this.stepHasHandle(e))return;const A=this.cachedStepHandles.get(e.stepName);if(A)return A;const a=de.get(this.getWorkflowManager(),e);return this.cachedStepHandles.set(e.stepName,a),a}getSteps(){return this.getScenes().flatMap(t=>this.getStepsByScene(t))}getStepsConditionallyActive(){return this.getScenes().flatMap(t=>this.getStepsByScene(t).filter(e=>ft(e.getRaw(),this.getWorkflowManager().getStepSelections())))}getScenes(){return this.getWorkflowManager().getWorkflow().stepGroups.map(e=>({id:e.id,name:e.name,stepIds:e.stepNames}))}getSelectionPriceSubunits(t){const e=this.getWorkflowManager().getWorkflowSelections();let A=0;return Object.values(e).forEach(a=>{A+=a.selections.reduce((i,s)=>i+(s.priceModifier||0),0)}),this.getPriceSubUnitsAfterPriceBreaks(A,t)}getBasePriceSubunits(t,e){const A=this.getPriceSubUnitsAfterPriceBreaks(this.getWorkflowManager().getProduct().basePrice||0,e);if(t){const a=this.getAdditionalProductPriceSubunits(e)||0;return A+a}return A}getAdditionalProductPriceSubunits(t){var A;const e=this.getWorkflowManager().getTransaction().integrationProduct;if((A=e==null?void 0:e.additionalIntegrationProduct)!=null&&A.product){const a=e.additionalIntegrationProduct.product.basePrice||0;return this.getPriceSubUnitsAfterPriceBreaks(a,t)}}getTotalPriceSubunits(t){return this.getBasePriceSubunits(!1,t)+this.getSelectionPriceSubunits(t)}getPriceSubUnitsAfterPriceBreaks(t,e){const A=e?1:this.priceBreakToBeApplied(),a=t*A;return Math.ceil(a)}priceBreakToBeApplied(){const t=(this.getWorkflowManager().getProduct().priceBreaks||[]).sort((a,i)=>-(a.minQty-i.minQty)),A=[...this.getMatchingExperiencesFromBundle(),this].reduce((a,i)=>a+i.getQuantity(),0);for(const a of t)if(a.minQty<=A)return a.percentage;return 1}checkForPriceBreakChanges(){const t=this.priceBreakToBeApplied();this.currentPriceBreak!==t&&(this.updatePriceBreak(t),this.getMatchingExperiencesFromBundle().forEach(e=>e.updatePriceBreak(t)))}getMatchingExperiencesFromBundle(){var t;return(((t=this.bundle)==null?void 0:t.getWorkflowExperiences())||[]).filter(e=>e.getWorkflowManager().getTransaction().id!==this.getWorkflowManager().getTransaction().id&&e.getWorkflowManager().getProduct().id===this.getWorkflowManager().getProduct().id)}updatePriceBreak(t){this.currentPriceBreak=t,this.callEvent("PriceBreakChanged")}async copySelectionsViaGlobalConfiguration(t,e,A){const a=await t.getGlobalProperties(),i=A==null?void 0:A.map(c=>c.getId()),s=this.getSteps().filter(c=>i===void 0||i.includes(c.getId())),o=e.getSteps(),r=c=>a.find(l=>l.getRawProperty().name===c.aspectName);s.forEach(c=>{const l=new Set,g=c.getRaw().globalPropertyAspectConfigurations;g!==void 0&&(g.forEach(d=>l.add(JSON.stringify(d))),o.forEach(d=>{const B=d.getRaw().globalPropertyAspectConfigurations;B!==void 0&&B.forEach(h=>{const C=r(h),u=l.has(JSON.stringify(h));if(u&&(C==null?void 0:C.getType())==="Option"){const w=d.getCurrentVariant();if(!w)return;c.selectVariant(w),l.delete(JSON.stringify(h))}else if(u&&(C==null?void 0:C.getType())==="Text"){const w=d.getText();c.setText(w),l.delete(JSON.stringify(h))}})}))})}getStepByName(t){const e=this.getWorkflowManager().getWorkflow().steps.find(A=>A.stepTitle===t);if(!(!e||!this.stepHasHandle(e)))return de.get(this.getWorkflowManager(),e)}getStepsByType(t){return this.getWorkflowManager().getWorkflow().steps.filter(e=>e.type===t).map(e=>de.get(this.getWorkflowManager(),e))}getStepsByScene(t){if(!this.getWorkflowManager().getWorkflow().stepGroups.find(A=>A.name===t.name))throw new Error("Given scene is not present on workflow! Be careful when persisting scenes that you only use them with the relevant workflow.");return t.stepIds.map(A=>this.getWorkflowManager().getWorkflow().steps.find(a=>a.stepName===A)).filter(A=>this.stepHasHandle(A)).map(A=>de.get(this.getWorkflowManager(),A))}async attachCustomerDetails(t){return this.assignCustomerDetails({emailAddress:t.email})}async assignCustomerDetails(t){var s,o,r;const A=(k.getMap("transactionOwnerIds")||new Map).get(this.getWorkflowManager().getTransaction().id),i=(r=(o=(s=(await y.getShadowGraphqlClient().mutate({mutation:Ar,variables:{id:this.getWorkflowManager().getTransaction().id,details:t,type:"Owner"},context:{transactionOwnerId:A}})).data)==null?void 0:s.transactionAddStakeholder)==null?void 0:o.stakeholders)==null?void 0:r.find(c=>{var l;return((l=c.customer)==null?void 0:l.emailAddress)===t.emailAddress});if(i!=null&&i.customer){this.getWorkflowManager().setTransactionCustomer(i.customer);const c=k.getMap("transactionCustomerIds")||new Map;c.set(this.getWorkflowManager().getTransaction().id,i.customer.id),k.setMap("transactionCustomerIds",c)}}attachRenderableSceneListener(t){this.renderableSceneCallbacks.push(t),t(this.renderableScenes)}detachRenderableSceneListener(t){this.renderableSceneCallbacks=this.renderableSceneCallbacks.filter(e=>e!==t)}async save(t){if(!this.getCommandContext().getState())throw new L("State undefined!");const a={title:await(async()=>{var r;if(t)return t;const i=this.getWorkflowManager().getTransaction().id,o=(r=(await Ce.getSavedDesigns()).find(c=>c.transactionId===i))==null?void 0:r.title;return o||"My design"})(),thumbnail:await this.createPreviewImage(!1,256),transactionId:this.getWorkflowManager().getTransaction().id,productId:this.getWorkflowManager().getProduct().id,integrationProductId:this.getWorkflowManager().getTransaction().integrationProduct.id,workflowName:this.getWorkflowManager().getWorkflow().name,workflowId:this.getWorkflowManager().getWorkflow().id,lastEdited:new Date};return await Ce.addDesign(a),a}async copy(){var s;const t=xt(this.getCommandContext().getState());if(!t)throw new L("Internal state is undefined! Cannot copy experience!");const e=JSON.stringify(t.transaction),A=this.getWorkflowManager().getWorkflow(),a=(s=this.getWorkflowManager().getTransaction().integrationProduct)==null?void 0:s.id;if(!a)throw new L("Integration product id is undefined!");return await this.getClient().getWorkflowExperience({type:"integration",integrationProductId:a,workflowId:A.id,workflowState:e})}async onDesignFinished(t,e=!0){const A=this.workflowManager.getTransaction();return A.completed?(await y.getShadowGraphqlClient().mutate({mutation:Ki,variables:{transactionId:A.id}}),{event:"",exportedData:{},lineItemImageUrl:"",optionsCost:0,transactionId:A.id,workflowViewerLink:"",workflowViewerReadOnlyLink:""}):Qn(this.workflowManager,this.workflowManager.getWorkflow(),this.workflowManager.getLayouts(),()=>this.commandContext.getState(),this.workflowManager.getProduct(),A,this.workflowManager.getWorkflowSelections(),this.workflowManager.getWorkflow().name,t||(()=>{}),a=>e?this.createPreviewImage(a,1024):Promise.resolve(void 0),this.workflowManager.getWorkflowMetadata())}stepHasHandle(t){return t.type!==M.SilentIllustration&&t.type!==M.ProductOverlay}getExportedData(){var a;const t=new Map,e=this.getWorkflowManager().getWorkflowMetadata(),A=this.getWorkflowManager().getWorkflowSelections();return Object.keys(e).forEach(i=>{const s=this.workflowManager.getWorkflow().steps.find(r=>r.stepName===i);if(!s)return;t.has(s.stepTitle)||t.set(s.stepTitle,{});const o=e[i];Object.keys(o).forEach(r=>{t.get(s.stepTitle)[r]=o[r]})}),(a=Object.keys(A))==null||a.forEach(i=>{const s=this.workflowManager.getWorkflow().steps.find(o=>o.stepName===i);s&&(t.has(s.stepTitle)||t.set(s.stepTitle,{}),t.get(s.stepTitle).selection=A[i].selections[0].name)}),t}getQuantity(){return this.getWorkflowManager().getTransaction().quantity||1}async setQuantity(t){if(t<1)throw new RangeError("WorkflowExperience quantity must be greater than zero.");if(this.isReadOnly)throw new Error("Cannot update quantity on a read-only WorkflowExperience");this.getWorkflowManager().getTransaction().quantity=t,this.callEvent("QuantityChanged"),this.checkForPriceBreakChanges();const e=k.getMap("transactionOwnerIds")||new Map,A=this.getWorkflowManager().getTransaction(),a=e.get(A.id)||void 0;await y.getShadowGraphqlClient().mutate({mutation:Ji,variables:{id:A.id,quantity:t},context:{transactionOwnerId:a}})}addEventListener(t,e){const A=this.eventCallbacks.get(t)||[];A.push(e),this.eventCallbacks.set(t,A)}removeEventListener(t,e){const A=this.eventCallbacks.get(t)||[];this.eventCallbacks.set(t,A.filter(a=>a!==e))}callEvent(t){(this.eventCallbacks.get(t)||[]).forEach(e=>e(this))}}const ar=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],nr=async(n,t,e)=>{const A=t.data,a=e.data.baseUrl,i=A.assetUrl.replace("localhost","localstack"),s=a.slice(0,4)==="http"?"":"https://",o=new URL(s+a);o.searchParams.append("video",jA(JSON.stringify([{href:i}]))),o.pathname=o.pathname+(o.pathname.slice(-1)==="/"?"":"/");const r=o.toString(),l=`data:image/svg+xml;base64,${jA(await ia.toString(r,{type:"svg"}))}`,g=B=>{const h=n.find(u=>u.panelId===B.panelId);if(!h)throw new X(B);const C=b();return new z({id:C,src:l,type:N.Image,y:B.top,x:B.left,width:B.width,height:B.height,rotation:0},h)},d=e.data.regions;try{return d.map(g)}catch(B){return console.error(B),[]}},ir=async(n,t,e,A)=>{const a=e.data,i=a.assetUrl,s=await eA(i);try{const o=Hs(a,A.option);o&&(t[A.stepName]={selectedVariants:[o]});const r=async c=>{var C;const l=await ja(c,(C=o==null?void 0:o.asset)==null?void 0:C.fileLink),g=await oe(l),d=b(),B=n.find(u=>u.panelId===c.panelId);if(!B)throw new X(c);const h=pA(s,g,{scale:a.scale,left:a.x,top:a.y},A.data.forceImageCover);return[new z({id:d,path:g.path,type:N.Frame,forceImageCover:A.data.forceImageCover,x:c.left,y:c.top,width:c.width,height:c.height,layer:c.layer,layerIndex:c.layerIndex,rotation:c.rotation,scaleX:c.width/g.width,scaleY:c.height/g.height,pattern:{id:`${d}-pattern`,src:s.src,x:h.x,y:h.y,width:s.width,height:s.height,rotation:0,scaleX:h.zoom,scaleY:h.zoom,svg:s.svg,colors:s.colors}},B)]};return(await Promise.all(A.data.regions.map(c=>r(c)))).flat()}catch(o){return console.error(o),[]}},sr=async(n,t,e,A)=>{var p,I;const a=e.data,i=A.option;if(!i)return console.error(`No option for step ${A.stepName}.`),[];const s=((p=i.variants)==null?void 0:p.find(D=>D.id===a.illustrationVariantId))||se(i);if(!s)return console.error(`No variant with ID: ${a.illustrationVariantId}`),[];if(!s.asset)return console.error(`No asset for variant with ID: ${a.illustrationVariantId}`),[];t[A.stepName]={selectedVariants:[s]};const o=(I=s.asset)==null?void 0:I.fileLink;if(!o)return console.error(`No asset link for variant with ID: ${a.illustrationVariantId}`),[];const r=await _(o,!0),c=/<svg.*?<\/svg>/s,l=r.match(c)||[],g=(l==null?void 0:l.length)>0?l[0]:"",h=it().parseFromString(g,"image/svg+xml").firstElementChild;if(!h)return console.error("Failed to read SVG."),[];ye(h);const C={};Nt(h,D=>{ar.includes(D.tagName)&&!D.attributes.getNamedItem("fill")&&D.setAttribute("fill","#000000");const F=D.attributes.getNamedItem("fill");if(F&&F.value!=="none"){const Y=F.value,v=`spiff-fill-${Y.replace(/\W/g,"")}`;D.classList.add(v),C[v]={browserValue:Y}}const x=D.attributes.getNamedItem("stroke");if(x&&x.value!=="none"){const Y=x.value,v=`spiff-stroke-${Y.replace(/\W/g,"")}`;D.classList.add(v),C[v]={browserValue:Y}}});const w=wt().serializeToString(h),E=a.colors;if(E){for(const[D,F]of Object.entries(C))for(const x of Object.keys(E))if(F.browserValue===x){C[D]={browserValue:E[x]};break}}const m=D=>{const F=n.find(Y=>Y.panelId===D.panelId);if(!F)throw new X(D);const x=b();return new z({colors:C,id:x,svg:w,type:N.Illustration,y:D.top,x:D.left,rotation:D.rotation,width:D.width,height:D.height,layer:D.layer,layerIndex:D.layerIndex,immutable:D.immutable},F)},f=A.data.regions;try{return f.map(m)}catch(D){return console.error(D),[]}},or=async(n,t,e)=>{const A=await sn(e.data.module),a=t.data,i=(o,r)=>{const c=n.find(g=>g.panelId===r.panelId);if(!c)throw new X(r);const l=b();return new z({colors:{},id:l,svg:o,type:N.Illustration,y:r.top,x:r.left,rotation:r.rotation,width:r.width,height:r.height,layer:r.layer,layerIndex:r.layerIndex},c)},s=e.data.regions;try{return s.map(o=>i(A.svgPrint(a.text,o),o))}catch(o){return console.error(o),[]}},rr=async(n,t,e,A)=>{var l,g;const a=e.data,i=A.option;if(!i)return console.error(`No option for step ${A.stepName}.`),[];const s=((l=i.variants)==null?void 0:l.find(d=>d.id===a.pictureVariantId))||se(i);if(!s)return console.error(`No variant with ID: ${a.pictureVariantId}`),[];if(!s.asset)return console.error(`No asset for variant with ID: ${a.pictureVariantId}`),[];t[A.stepName]={selectedVariants:[s]};const o=(g=s.asset)==null?void 0:g.fileLink;if(!o)return console.error(`No asset link for variant with ID: ${a.pictureVariantId}`),[];const r=d=>{const B=n.find(C=>C.panelId===d.panelId);if(!B)throw new X(d);const h=b();return new z({id:h,src:o,type:N.Image,y:d.top,x:d.left,rotation:d.rotation,width:d.width,height:d.height,layer:d.layer,layerIndex:d.layerIndex,immutable:d.immutable,preserveAspectRatio:"none"},B)},c=A.data.regions;try{return c.map(r)}catch(d){return console.error(d),[]}},cr=async(n,t,e,A)=>{var c;const a=e.data,i=A.option;if(!i)return console.error(`No option for step ${A.stepName}.`),[];const s=((c=i.variants)==null?void 0:c.find(l=>l.id===a.colorVariantId))||se(i);if(!s)return console.error(`No variant with ID: ${a.colorVariantId}`),[];t[A.stepName]={selectedVariants:[s]};const o=l=>{const g=n.find(u=>u.panelId===l.panelId);if(!g)throw new X(l);const d=`
1982
+ `;var ur=(r=>(r.QuantityChanged="QuantityChanged",r.PriceBreakChanged="PriceBreakChanged",r))(ur||{});class hr{constructor(t,e){var n;if(this.cachedStepHandles=new Map,this.currentPriceBreak=1,this.renderableScenes=[],this.renderableSceneCallbacks=[],this.eventCallbacks=new Map,this.debouncedSavedDesignUpdate=en(async()=>{await me.getSavedDesignByTransaction(this.getWorkflowManager().getTransaction().id)&&this.save()},2500),this.getCanvasObjectURLAsync=async i=>new Promise((s,o)=>{try{i.toBlob(l=>{if(l){const c=URL.createObjectURL(l);s(c)}})}catch(l){o(l)}}),!e.workflow)throw new Error("No Workflow ID provided.");this.client=t;const a=e.layouts;this.commandContext=new Un,this.commandContext.initialize(a,e.reloadedState),this.isReadOnly=e.transaction.isOrdered||!!e.readOnly,this.workflowManager=new Uo(this,t,e.workflow,((n=e.product.profanities)==null?void 0:n.map(i=>i.word))||[],a,this.commandContext,i=>{try{this.debouncedSavedDesignUpdate()}catch{console.error("Failed to update saved design details.")}return e.stateMutationFunc(i)},e.transaction,e.product,e.previewService,e.renderableContextService,e.reloadedState,e.readOnly,e.modelContainer,e.isReloadedTransaction,e.singleVariantsRenderable,e.delayWorkflowStateSync),this.workflowManager.addSelectionCallback(i=>{const s=i.traversableScenes.map(o=>{const l=o.renderableSteps.map(c=>c.stepName);return{id:o.name,title:o.title,renderableSteps:l,workflowScene:o}});this.renderableScenes=s,this.renderableSceneCallbacks.forEach(o=>o(s))}),this.currentPriceBreak=this.priceBreakToBeApplied()}getBundle(){return this.bundle}setBundle(t){this.bundle=t}getClient(){return this.client}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.commandContext}getWorkflowManager(){return this.workflowManager}async createPreviewImage(t,e){var C,w;const a=this.workflowManager.getWorkflow(),n=(C=a==null?void 0:a.finalizeStepConfig)==null?void 0:C.lookAtAnimation;if(t){if(!n)throw new Error("Failed to generate cart preview image!");return await((w=this.workflowManager.getPreviewService())==null?void 0:w.renderSceneScreenshot(e??512,n))||""}let i=2048;e&&e<=2048&&(i=e);const s=gt(i,i),o=this.commandContext.getAllLayouts(),l=a.defaultPreviewPanelIndex||0,c=a.panels[l],d=o.find(y=>{var v;return((v=y.layoutState)==null?void 0:v.layout.panelId)===(c==null?void 0:c.name)})||o[0],A=d.layoutState.layout.previewRegion?{x:d.layoutState.layout.previewRegion.left,y:d.layoutState.layout.previewRegion.top,width:d.layoutState.layout.previewRegion.width,height:d.layoutState.layout.previewRegion.height}:{x:0,y:0,width:d.layoutState.layout.width,height:d.layoutState.layout.height},u=this.commandContext.getLayoutById(d.layoutState.layout.id),h=s.getContext("2d");if(!h)throw new ve("Failed to obtain 2D context for preview image creation");const g=xe(u.layoutState.layout,u.layoutState.elements,{renderingConfiguration:{purpose:kt.Print,region:{left:A.x,top:A.y,width:A.width,height:A.height}}}),m=hn(g);await(await ca.Pith.from(h,m,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:gt,createImage:ae,DOMParser:ha(),fetch})).render();const p=await this.getCanvasObjectURLAsync(s);return s.toDataURL(p)}getStepById(t){const e=this.getWorkflowManager().getWorkflow().steps.find(i=>i.stepName===t);if(!e||!this.stepHasHandle(e))return;const a=this.cachedStepHandles.get(e.stepName);if(a)return a;const n=ue.get(this.getWorkflowManager(),e);return this.cachedStepHandles.set(e.stepName,n),n}getSteps(){return this.getScenes().flatMap(t=>this.getStepsByScene(t))}getStepsConditionallyActive(){return this.getScenes().flatMap(t=>this.getStepsByScene(t).filter(e=>yt(e.getRaw(),this.getWorkflowManager().getStepSelections())))}getScenes(){return this.getWorkflowManager().getWorkflow().stepGroups.map(e=>({id:e.id,name:e.name,stepIds:e.stepNames}))}getSelectionPriceSubunits(t){const e=this.getWorkflowManager().getWorkflowSelections();let a=0;return Object.values(e).forEach(n=>{a+=n.selections.reduce((i,s)=>i+(s.priceModifier||0),0)}),this.getPriceSubUnitsAfterPriceBreaks(a,t)}getBasePriceSubunits(t,e){const a=this.getPriceSubUnitsAfterPriceBreaks(this.getWorkflowManager().getProduct().basePrice||0,e);if(t){const n=this.getAdditionalProductPriceSubunits(e)||0;return a+n}return a}getAdditionalProductPriceSubunits(t){var a;const e=this.getWorkflowManager().getTransaction().integrationProduct;if((a=e==null?void 0:e.additionalIntegrationProduct)!=null&&a.product){const n=e.additionalIntegrationProduct.product.basePrice||0;return this.getPriceSubUnitsAfterPriceBreaks(n,t)}}getTotalPriceSubunits(t){return this.getBasePriceSubunits(!1,t)+this.getSelectionPriceSubunits(t)}getPriceSubUnitsAfterPriceBreaks(t,e){const a=e?1:this.priceBreakToBeApplied(),n=t*a;return Math.ceil(n)}priceBreakToBeApplied(){const t=(this.getWorkflowManager().getProduct().priceBreaks||[]).sort((n,i)=>-(n.minQty-i.minQty)),a=[...this.getMatchingExperiencesFromBundle(),this].reduce((n,i)=>n+i.getQuantity(),0);for(const n of t)if(n.minQty<=a)return n.percentage;return 1}checkForPriceBreakChanges(){const t=this.priceBreakToBeApplied();this.currentPriceBreak!==t&&(this.updatePriceBreak(t),this.getMatchingExperiencesFromBundle().forEach(e=>e.updatePriceBreak(t)))}getMatchingExperiencesFromBundle(){var t;return(((t=this.bundle)==null?void 0:t.getWorkflowExperiences())||[]).filter(e=>e.getWorkflowManager().getTransaction().id!==this.getWorkflowManager().getTransaction().id&&e.getWorkflowManager().getProduct().id===this.getWorkflowManager().getProduct().id)}updatePriceBreak(t){this.currentPriceBreak=t,this.callEvent("PriceBreakChanged")}async copySelectionsViaGlobalConfiguration(t,e,a){const n=await t.getGlobalProperties(),i=a==null?void 0:a.map(c=>c.getId()),s=this.getSteps().filter(c=>i===void 0||i.includes(c.getId())),o=e.getSteps(),l=c=>n.find(d=>d.getRawProperty().name===c.aspectName);s.forEach(c=>{const d=new Set,A=c.getRaw().globalPropertyAspectConfigurations;A!==void 0&&(A.forEach(u=>d.add(JSON.stringify(u))),o.forEach(u=>{const h=u.getRaw().globalPropertyAspectConfigurations;h!==void 0&&h.forEach(g=>{const m=l(g),f=d.has(JSON.stringify(g));if(f&&(m==null?void 0:m.getType())==="Option"){const p=u.getCurrentVariant();if(!p)return;c.selectVariant(p),d.delete(JSON.stringify(g))}else if(f&&(m==null?void 0:m.getType())==="Text"){const p=u.getText();c.setText(p),d.delete(JSON.stringify(g))}})}))})}getStepByName(t){const e=this.getWorkflowManager().getWorkflow().steps.find(a=>a.stepTitle===t);if(!(!e||!this.stepHasHandle(e)))return ue.get(this.getWorkflowManager(),e)}getStepsByType(t){return this.getWorkflowManager().getWorkflow().steps.filter(e=>e.type===t).map(e=>ue.get(this.getWorkflowManager(),e))}getStepsByScene(t){if(!this.getWorkflowManager().getWorkflow().stepGroups.find(a=>a.name===t.name))throw new Error("Given scene is not present on workflow! Be careful when persisting scenes that you only use them with the relevant workflow.");return t.stepIds.map(a=>this.getWorkflowManager().getWorkflow().steps.find(n=>n.stepName===a)).filter(a=>this.stepHasHandle(a)).map(a=>ue.get(this.getWorkflowManager(),a))}async attachCustomerDetails(t){return this.assignCustomerDetails({emailAddress:t.email})}async assignCustomerDetails(t){var s,o,l;const a=(k.getMap("transactionOwnerIds")||new Map).get(this.getWorkflowManager().getTransaction().id),i=(l=(o=(s=(await I.getShadowGraphqlClient().mutate({mutation:qo,variables:{id:this.getWorkflowManager().getTransaction().id,details:t,type:"Owner"},context:{transactionOwnerId:a}})).data)==null?void 0:s.transactionAddStakeholder)==null?void 0:o.stakeholders)==null?void 0:l.find(c=>{var d;return((d=c.customer)==null?void 0:d.emailAddress)===t.emailAddress});if(i!=null&&i.customer){this.getWorkflowManager().setTransactionCustomer(i.customer);const c=k.getMap("transactionCustomerIds")||new Map;c.set(this.getWorkflowManager().getTransaction().id,i.customer.id),k.setMap("transactionCustomerIds",c)}}attachRenderableSceneListener(t){this.renderableSceneCallbacks.push(t),t(this.renderableScenes)}detachRenderableSceneListener(t){this.renderableSceneCallbacks=this.renderableSceneCallbacks.filter(e=>e!==t)}async save(t){if(!this.getCommandContext().getState())throw new $("State undefined!");const n={title:await(async()=>{var l;if(t)return t;const i=this.getWorkflowManager().getTransaction().id,o=(l=(await me.getSavedDesigns()).find(c=>c.transactionId===i))==null?void 0:l.title;return o||"My design"})(),thumbnail:await this.createPreviewImage(!1,256),transactionId:this.getWorkflowManager().getTransaction().id,productId:this.getWorkflowManager().getProduct().id,integrationProductId:this.getWorkflowManager().getTransaction().integrationProduct.id,workflowName:this.getWorkflowManager().getWorkflow().name,workflowId:this.getWorkflowManager().getWorkflow().id,lastEdited:new Date};return await me.addDesign(n),n}async copy(){var s;const t=Pt(this.getCommandContext().getState());if(!t)throw new $("Internal state is undefined! Cannot copy experience!");const e=JSON.stringify(t.transaction),a=this.getWorkflowManager().getWorkflow(),n=(s=this.getWorkflowManager().getTransaction().integrationProduct)==null?void 0:s.id;if(!n)throw new $("Integration product id is undefined!");return await this.getClient().getWorkflowExperience({type:"integration",integrationProductId:n,workflowId:a.id,workflowState:e})}async onDesignFinished(t,e=!0){const a=this.workflowManager.getTransaction();return a.completed?(await I.getShadowGraphqlClient().mutate({mutation:Ui,variables:{transactionId:a.id}}),{event:"",exportedData:{},lineItemImageUrl:"",optionsCost:0,transactionId:a.id,workflowViewerLink:"",workflowViewerReadOnlyLink:""}):Ar(this.workflowManager,this.workflowManager.getWorkflow(),this.workflowManager.getLayouts(),()=>this.commandContext.getState(),this.workflowManager.getProduct(),a,this.workflowManager.getWorkflowSelections(),this.workflowManager.getWorkflow().name,t||(()=>{}),n=>e?this.createPreviewImage(n,1024):Promise.resolve(void 0),this.workflowManager.getWorkflowMetadata())}stepHasHandle(t){return t.type!==b.SilentIllustration&&t.type!==b.ProductOverlay}getExportedData(){var n;const t=new Map,e=this.getWorkflowManager().getWorkflowMetadata(),a=this.getWorkflowManager().getWorkflowSelections();return Object.keys(e).forEach(i=>{const s=this.workflowManager.getWorkflow().steps.find(l=>l.stepName===i);if(!s)return;t.has(s.stepTitle)||t.set(s.stepTitle,{});const o=e[i];Object.keys(o).forEach(l=>{t.get(s.stepTitle)[l]=o[l]})}),(n=Object.keys(a))==null||n.forEach(i=>{const s=this.workflowManager.getWorkflow().steps.find(o=>o.stepName===i);s&&(t.has(s.stepTitle)||t.set(s.stepTitle,{}),t.get(s.stepTitle).selection=a[i].selections[0].name)}),t}getQuantity(){return this.getWorkflowManager().getTransaction().quantity||1}async setQuantity(t){if(t<1)throw new RangeError("WorkflowExperience quantity must be greater than zero.");if(this.isReadOnly)throw new Error("Cannot update quantity on a read-only WorkflowExperience");this.getWorkflowManager().getTransaction().quantity=t,this.callEvent("QuantityChanged"),this.checkForPriceBreakChanges();const e=k.getMap("transactionOwnerIds")||new Map,a=this.getWorkflowManager().getTransaction(),n=e.get(a.id)||void 0;await I.getShadowGraphqlClient().mutate({mutation:Mi,variables:{id:a.id,quantity:t},context:{transactionOwnerId:n}})}addEventListener(t,e){const a=this.eventCallbacks.get(t)||[];a.push(e),this.eventCallbacks.set(t,a)}removeEventListener(t,e){const a=this.eventCallbacks.get(t)||[];this.eventCallbacks.set(t,a.filter(n=>n!==e))}callEvent(t){(this.eventCallbacks.get(t)||[]).forEach(e=>e(this))}}const Ho=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],Yo=async(r,t,e)=>{const a=t.data,n=e.data.baseUrl,i=a.assetUrl.replace("localhost","localstack"),s=n.slice(0,4)==="http"?"":"https://",o=new URL(s+n);o.searchParams.append("video",La(JSON.stringify([{href:i}]))),o.pathname=o.pathname+(o.pathname.slice(-1)==="/"?"":"/");const l=o.toString(),d=`data:image/svg+xml;base64,${La(await _a.toString(l,{type:"svg"}))}`,A=h=>{const g=r.find(f=>f.panelId===h.panelId);if(!g)throw new Y(h);const m=Q();return new G({id:m,src:d,type:T.Image,y:h.top,x:h.left,width:h.width,height:h.height,rotation:0},g)},u=e.data.regions;try{return u.map(A)}catch(h){return console.error(h),[]}},Jo=async(r,t,e,a)=>{const n=e.data,i=n.assetUrl,s=await ea(i);try{const o=Ps(n,a.option);o&&(t[a.stepName]={selectedVariants:[o]});const l=async c=>{var m;const d=await $n(c,(m=o==null?void 0:o.asset)==null?void 0:m.fileLink),A=await oe(d),u=Q(),h=r.find(f=>f.panelId===c.panelId);if(!h)throw new Y(c);const g=ya(s,A,{scale:n.scale,left:n.x,top:n.y},a.data.forceImageCover);return[new G({id:u,path:A.path,type:T.Frame,forceImageCover:a.data.forceImageCover,x:c.left,y:c.top,width:c.width,height:c.height,layer:c.layer,layerIndex:c.layerIndex,rotation:c.rotation,scaleX:c.width/A.width,scaleY:c.height/A.height,pattern:{id:`${u}-pattern`,src:s.src,x:g.x,y:g.y,width:s.width,height:s.height,rotation:0,scaleX:g.zoom,scaleY:g.zoom,svg:s.svg,colors:s.colors}},h)]};return(await Promise.all(a.data.regions.map(c=>l(c)))).flat()}catch(o){return console.error(o),[]}},Ko=async(r,t,e,a)=>{var v,E;const n=e.data,i=a.option;if(!i)return console.error(`No option for step ${a.stepName}.`),[];const s=((v=i.variants)==null?void 0:v.find(B=>B.id===n.illustrationVariantId))||se(i);if(!s)return console.error(`No variant with ID: ${n.illustrationVariantId}`),[];if(!s.asset)return console.error(`No asset for variant with ID: ${n.illustrationVariantId}`),[];t[a.stepName]={selectedVariants:[s]};const o=(E=s.asset)==null?void 0:E.fileLink;if(!o)return console.error(`No asset link for variant with ID: ${n.illustrationVariantId}`),[];const l=await et(o,!0),c=/<svg.*?<\/svg>/s,d=l.match(c)||[],A=(d==null?void 0:d.length)>0?d[0]:"",g=it().parseFromString(A,"image/svg+xml").firstElementChild;if(!g)return console.error("Failed to read SVG."),[];Ie(g);const m={};Qt(g,B=>{Ho.includes(B.tagName)&&!B.attributes.getNamedItem("fill")&&B.setAttribute("fill","#000000");const x=B.attributes.getNamedItem("fill");if(x&&x.value!=="none"){const F=x.value,N=`spiff-fill-${F.replace(/\W/g,"")}`;B.classList.add(N),m[N]={browserValue:F}}const P=B.attributes.getNamedItem("stroke");if(P&&P.value!=="none"){const F=P.value,N=`spiff-stroke-${F.replace(/\W/g,"")}`;B.classList.add(N),m[N]={browserValue:F}}});const p=pt().serializeToString(g),C=n.colors;if(C){for(const[B,x]of Object.entries(m))for(const P of Object.keys(C))if(x.browserValue===P){m[B]={browserValue:C[P]};break}}const w=B=>{const x=r.find(F=>F.panelId===B.panelId);if(!x)throw new Y(B);const P=Q();return new G({colors:m,id:P,svg:p,type:T.Illustration,y:B.top,x:B.left,rotation:B.rotation,width:B.width,height:B.height,layer:B.layer,layerIndex:B.layerIndex,immutable:B.immutable},x)},y=a.data.regions;try{return y.map(w)}catch(B){return console.error(B),[]}},Xo=async(r,t,e)=>{const a=await Kn(e.data.module),n=t.data,i=(o,l)=>{const c=r.find(A=>A.panelId===l.panelId);if(!c)throw new Y(l);const d=Q();return new G({colors:{},id:d,svg:o,type:T.Illustration,y:l.top,x:l.left,rotation:l.rotation,width:l.width,height:l.height,layer:l.layer,layerIndex:l.layerIndex},c)},s=e.data.regions;try{return s.map(o=>i(a.svgPrint(n.text,o),o))}catch(o){return console.error(o),[]}},Zo=async(r,t,e,a)=>{var d,A;const n=e.data,i=a.option;if(!i)return console.error(`No option for step ${a.stepName}.`),[];const s=((d=i.variants)==null?void 0:d.find(u=>u.id===n.pictureVariantId))||se(i);if(!s)return console.error(`No variant with ID: ${n.pictureVariantId}`),[];if(!s.asset)return console.error(`No asset for variant with ID: ${n.pictureVariantId}`),[];t[a.stepName]={selectedVariants:[s]};const o=(A=s.asset)==null?void 0:A.fileLink;if(!o)return console.error(`No asset link for variant with ID: ${n.pictureVariantId}`),[];const l=u=>{const h=r.find(m=>m.panelId===u.panelId);if(!h)throw new Y(u);const g=Q();return new G({id:g,src:o,type:T.Image,y:u.top,x:u.left,rotation:u.rotation,width:u.width,height:u.height,layer:u.layer,layerIndex:u.layerIndex,immutable:u.immutable,preserveAspectRatio:"none"},h)},c=a.data.regions;try{return c.map(l)}catch(u){return console.error(u),[]}},_o=async(r,t,e,a)=>{var c;const n=e.data,i=a.option;if(!i)return console.error(`No option for step ${a.stepName}.`),[];const s=((c=i.variants)==null?void 0:c.find(d=>d.id===n.colorVariantId))||se(i);if(!s)return console.error(`No variant with ID: ${n.colorVariantId}`),[];t[a.stepName]={selectedVariants:[s]};const o=d=>{const A=r.find(f=>f.panelId===d.panelId);if(!A)throw new Y(d);const u=`
3244
1983
  <svg
3245
1984
  xmlns="http://www.w3.org/2000/svg"
3246
1985
  xmlnsXlink="http://www.w3.org/1999/xlink"
@@ -3260,14 +1999,14 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3260
1999
  fill="${s==null?void 0:s.color}"
3261
2000
  />
3262
2001
  </svg>
3263
- `,h={"spiff-fill-shape":{browserValue:s.color||"#000000"}},C=b();return new z({colors:h,id:C,svg:d,type:N.Illustration,y:l.top,x:l.left,rotation:l.rotation,width:l.width,height:l.height,layer:l.layer,layerIndex:l.layerIndex,immutable:l.immutable},g)},r=A.data.regions;try{return r.map(o)}catch(l){return console.error(l),[]}},lr=async(n,t,e)=>{const A=[],i=(()=>{var c,l;return t.type===M.ProductOverlay?e||((c=t.data.asset)==null?void 0:c.fileLink)||"":((l=t.data.asset)==null?void 0:l.fileLink)||""})(),o=(()=>i.endsWith(".jpeg")||i.endsWith(".jpg")||i.endsWith(".png")?N.Image:(i.endsWith(".svg"),N.Illustration))(),r=t.data.regions;if(o==="image")try{r.forEach(c=>{const l=n.find(d=>d.panelId===c.panelId);if(!l)throw new X(c);const g={id:b(),src:i,type:o,y:c.top,x:c.left,width:c.width,height:c.height,layer:c.layer,layerIndex:c.layerIndex,productOverlay:t.type===M.ProductOverlay?!0:void 0,scaleX:1,scaleY:1,rotation:c.rotation,excludeFromExport:t.data.excludeFromPrint,preserveAspectRatio:"none"};A.push(new z(g,l))})}catch(c){console.error(c)}else{const c=await _(i,!0),l=g=>{const d=/<svg.*?<\/svg>/s,B=g.match(d)||[],h=(B==null?void 0:B.length)>0?B[0]:"",w=it().parseFromString(h,"image/svg+xml").firstElementChild;if(!w)throw new mt("Failed to read SVG.");return ye(w),wt().serializeToString(w)};r.forEach(g=>{const d=n.find(h=>h.panelId===g.panelId);if(!d)throw new X(g);const B={id:b(),src:i,asset_key:i,svg:l(c),colors:{},type:o,y:g.top,x:g.left,width:g.width,height:g.height,layer:g.layer,layerIndex:g.layerIndex,scaleX:1,scaleY:1,rotation:g.rotation,productOverlay:t.type===M.ProductOverlay?!0:void 0,excludeFromExport:t.data.excludeFromPrint};A.push(new z(B,d))})}return A},gr=async(n,t,e,A)=>{const a=[],i=e.data,s=30,o=u=>u.vertical?"center":u.textAlign||"center",r=()=>{var m;const u=A.option;if(!u)return;const w=((m=u.variants)==null?void 0:m.find(f=>f.id===i.fontVariantId))||se(u);if(!w||!w.asset)return;t[A.stepName]={selectedVariants:[w]};const E=w.asset.fileLink;if(E)return E},l=await(async()=>{const u=r();if(!u)return;const w=await It(u);return{assetUrl:u,name:w.names.fullName.en}})(),g=(A.data.replaceableText?A.data.replaceableText.replace("{{}}",i.text):i.text)||"",d=we(g,{vertical:A.data.vertical,uppercase:A.data.uppercase}),B=async u=>{const w=u.colorOption;if(!w)return;const E=$.getDefaultVariant(w);return E==null?void 0:E.color},h=i.color||await B(A.data),C=A.data.regions;for(const u of C){const w=n.find(m=>m.panelId===u.panelId);if(!w)continue;const E={stepName:e.name,id:b(),align:o(A.data),curved:A.data.curved,fill:i.color||h||"#000000",fontData:l,fontSize:A.data.size||s,height:u.height,layer:u.layer,layerIndex:u.layerIndex,paths:A.data.paths,rotation:u.rotation,text:d,type:N.Textbox,vertical:A.data.vertical,verticalAlign:A.data.verticalAlign||"middle",width:u.width,x:u.left,y:u.top};if(l){const[m,f]=Vt(A.data.size||s,l,u,[we(d,{vertical:A.data.vertical,uppercase:A.data.uppercase})],{size:A.data.size,minSize:A.data.minSize,maxSize:A.data.maxSize});a.push(new z({...E,fontSize:m,text:E.curved?E.text:(f||[]).join(`
3264
- `)},w))}else a.push(new z(E,w))}return a},dr=(n,t)=>n.conditions?n.conditions.every(e=>{const A=t[e.targetStepName];if(A&&A.selectedVariants){const a=A.selectedVariants;return e.requiredVariantSelections.some(i=>a.find(s=>s.id===i)!==void 0)}return!1}):!0,Dn=async(n,t,e,A)=>{const a=[],i={};for(const s of n){const o=t.steps.find(r=>r.stepName===s.name);if(o)switch(o.type){case M.DigitalContent:a.push(...await nr(e,s,o));break;case M.Frame:case M.Photo:a.push(...await ir(e,i,s,o));break;case M.Illustration:a.push(...await sr(e,i,s,o));break;case M.Module:a.push(...await or(e,s,o));break;case M.Picture:a.push(...await rr(e,i,s,o));break;case M.Shape:a.push(...await cr(e,i,s,o));break;case M.Text:a.push(...await gr(e,i,s,o));break}}for(const s of t.steps)s.type!==M.SilentIllustration&&s.type!==M.ProductOverlay||dr(s,i)&&a.push(...await lr(e,s,A));return a};class Br{constructor(t){this.handleCompleteRender=null;const e=new Map;t.forEach(A=>e.set(A.id,new ur(A.id,A.name,this,{width:A.width,height:A.height}))),this.layouts=e}setCompleteRenderCallback(t){this.handleCompleteRender=t,t(Array.from(this.layouts.values()))}onCompleteRender(){this.handleCompleteRender&&this.handleCompleteRender(Array.from(this.layouts.values()))}getAll(){return this.layouts}}const hr=()=>new Promise((n,t)=>{try{const A=ht().getContext("webgl2");n(!!A)}catch{n(!1)}}),Cr=hr();class ur{constructor(t,e,A,a){this.hasSetStaticContext=!1,this.interactiveDirty=!1,this.staticCtxDirty=!1,this.lastRequestedRenderArguments=void 0,this.lastCompletedStaticRender=void 0,this.renderQueue=new EA(2),this.id=t,this.name=e,this.service=A,this.panelSize=a}getID(){return this.id}getName(){return this.name}getPanelSize(){return this.panelSize}getStaticContext(){return this.textureCtx}setStaticContext(t){this.textureCtx=t,this.lastRequestedRenderArguments&&this.render(this.lastRequestedRenderArguments)}getStaticContextDirty(){return this.staticCtxDirty}setStaticContextDirty(t){this.staticCtxDirty=t}getInteractiveCanvasDirty(){return this.interactiveDirty}setInteractiveCanvasDirty(t){this.interactiveDirty=t}markLastCompletedStaticRender(){this.lastCompletedStaticRender=Date.now(),this.service.onCompleteRender()}getLastCompletedStaticRender(){return this.lastCompletedStaticRender}async render(t){const e=xt(t);this.lastRequestedRenderArguments=e;const A=this.getStaticContext();if(!A){this.markLastCompletedStaticRender(),this.setStaticContextDirty(!1);return}this.renderQueue.enqueue(new wr(this.getID(),A,await Cr,()=>{this.markLastCompletedStaticRender(),this.setStaticContextDirty(!0)},e))}}class wr extends wA{constructor(t,e,A,a,i){super(),this.layoutId=t,this.ctx=e,this.nonPOTSupport=A,this.onRender=a,this.layouts=i}getDynamicTextureResolution(){return this.getIsMobile()||!this.offscreenRenderingSupported()?{width:1024,height:1024}:{width:2048,height:2048}}getIsMobile(){return window.innerWidth<=480}offscreenRenderingSupported(){return navigator.userAgent.includes("SamsungBrowser")?!1:!!window.Worker&&!!window.OffscreenCanvas}resizeFit(t,e=4096){const A=e/t.width,a=e/t.height,i=Math.min(A,a);return i>1?t:{width:t.width*i,height:t.height*i}}async execute(){const t=this.layouts.find(B=>B.layoutState.layout.id===this.layoutId);if(!t)return;const e=t.layoutState.elements||[],A=t.layoutState.layout.width,a=t.layoutState.layout.height,i=A===1||a===1?{width:1,height:1}:this.getDynamicTextureResolution(),s=i.width,o=i.height;let r,c;if(this.nonPOTSupport){const B=s/o;A/a<B?(r=s,c=a*(s/A)):(r=A*(o/a),c=o);const C=this.resizeFit({width:r,height:c});r=C.width,c=C.height}else r=i.width,c=i.height;const l=Se(t.layoutState.layout,e,{renderingConfiguration:{purpose:Pt.ThreeD}}),g=Ea(l),d=await cA.Pith.from(this.ctx,g,{anonymousCrossOrigin:!0,ignoreDimensions:!this.nonPOTSupport,ignoreAnimation:!0,ignoreClear:!0,ignoreMouse:!0,enableRedraw:!1,createCanvas:ht,createImage:Ae,DOMParser:hA(),fetch});d.resize(r,c),await d.render(),this.onRender()}}const Er=(n,t)=>{const e=[];return n.forEach(A=>{const a=t.steps.find(i=>i.stepName===A.stepName);(a==null?void 0:a.type)===M.Text&&A.stepAspectType==="Text"&&e.push({name:a.stepName,data:{text:A.value}})}),e},mr=async(n,t,e,A)=>{let a={serializableWorkflow:{steps:[]},layouts:{}};a=new G(e.map(r=>new DA(r))).apply(a);const s=await Dn(n,t,e,A);return new G(s).apply(a)};class fr{constructor(t){this.handleCache={},this.bundle=t}async getHandle(t){if(this.handleCache[t.name])return this.handleCache[t.name];const e=await this.createHandle(t);return this.handleCache[t.name]=e,e}async getHandles(){var e;if(!((e=this.bundle.getProductCollection())!=null&&e.getResource().globalPropertyConfiguration))return[];const t=this.bundle.getProductCollection().getResource().globalPropertyConfiguration;return Promise.all(t.aspects.map(A=>this.getHandle(A)))}applyConditionsFromState(t,e){return e?t.filter(A=>this.aspectConditionsSatisfied(A.getRawProperty(),e)):t}aspectConditionsSatisfied(t,e){return!t.conditions||t.conditions.length===0?!0:t.conditions.some(A=>{const a=e.aspects.find(i=>i.name===A.targetAspectName);return a?A.requiredVariantSelections.some(i=>i===a.value):!1})}async createHandle(t){switch(t.type){case et.FileUpload:return new yn(this.bundle,t);case et.ColorOption:return new oA(this.bundle,t,t.entityId?await $.getOption(t.entityId):void 0);case et.Option:{const e=t.entityId?await $.getOption(t.entityId):void 0;return(e==null?void 0:e.type)==="Color"?new oA(this.bundle,t,e):new RA(this.bundle,t,e)}case et.Text:return new Fn(this.bundle,t);default:throw new Error("Unhandled Global Property Aspect Type")}}}class Pe{constructor(t,e){this.bundle=t,this.property=e}getName(){return this.property.name}getTitle(){return this.property.title}getDescription(){return this.property.description}getType(){return this.property.type}getRawProperty(){return this.property}getSharedSteps(t){return(t??this.bundle.getWorkflowExperiences()).flatMap(a=>a.getStepsConditionallyActive().filter(i=>{var s;return i.getOverrideGlobalPropertyConfiguration(this.property.type)?!1:(s=i.getRaw().globalPropertyAspectConfigurations)==null?void 0:s.some(o=>{var r,c;return o.globalPropertyConfigurationId===((c=(r=this.bundle.getProductCollection())==null?void 0:r.getResource().globalPropertyConfiguration)==null?void 0:c.id)&&o.aspectName===this.property.name})}))}getStateValue(){return this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name)}}class yn extends Pe{constructor(t,e){super(t,e)}async selectImage(t){const e=this.bundle.getGlobalPropertyStateManager();await Promise.all([e.setAspect(this.property.name,t.key,{...e.getAspectStorage(this.property.name)||{},originalAssetKey:t.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0}),this.applyImageSelection(t)])}async canUseBackgroundRemover(){return this.bundle.getClient().canUseAddon(Qe.BackgroundRemover)}async removeBackgroundFromImage(t=!0){if(!await this.canUseBackgroundRemover())throw new Error("The current Integration does not have access to the Background Remover. Please call canUseBackgroundRemover to ensure you disable this feature when appropriate.");const e=await this.getOriginalImage();if(!e)throw new Error("You must supply an image selection before attempting to remove the background.");const A=this.bundle.getGlobalPropertyStateManager(),a=await T.removeBackgroundFromAsset(e),s={...A.getAspectStorage(this.property.name),backgroundRemovedAssetKey:a.key,useOriginalAsset:!t},r=[t?A.setAspect(this.property.name,a.key,s):A.setAspectStorage(this.property.name,s)];return t&&r.push(this.applyImageSelection(a,void 0,!1,!1)),await Promise.all(r),this.updateSharedStepStorage(s),a}hasImage(){return!!this.getStateValue()}async getImage(){const t=this.getStateValue();if(t)return T.getLocalOrFromServer(t)}async getOriginalImage(){const t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(t!=null&&t.originalAssetKey)return T.getLocalOrFromServer(t.originalAssetKey)}async getBackgroundRemovedImage(){const t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(t!=null&&t.backgroundRemovedAssetKey)return T.getLocalOrFromServer(t.backgroundRemovedAssetKey)}getUseOriginalImage(){var t;return((t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name))==null?void 0:t.useOriginalAsset)??!1}async setUseOriginalImage(t){const e=await this.getOriginalImage();if(!e)throw new Error("You must select an image before calling setUseOriginalImage");const A=this.bundle.getGlobalPropertyStateManager(),a=A.getAspectStorage(this.property.name);if((a==null?void 0:a.useOriginalAsset)===t)return;const i={...a,useOriginalAsset:t},s=t?a==null?void 0:a.originalAssetKey:a==null?void 0:a.backgroundRemovedAssetKey,o=[A.setAspect(this.property.name,s||"",i)];if(t)o.push(this.applyImageSelection(e,void 0,!1,!1));else{const r=async()=>{const c=await this.getBackgroundRemovedImage();if(!c)throw new Error("You must call removeBackgroundFromImage before attempting to use that version of the image.");this.applyImageSelection(c,void 0,!1,!1)};o.push(r())}this.updateSharedStepStorage(i)}async applyGlobalState(t){const e=this.getStateValue();if(!e)return;const A=await T.getLocalOrFromServer(e);if(!A)return;const a=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);await this.applyImageSelection(A,t,!1,!0),a?this.updateSharedStepStorage({...a}):(this.updateSharedStepStorage({originalAssetKey:e}),await this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name,{originalAssetKey:e}))}async applyImageSelection(t,e,A=!0,a=!0){const s=this.getSharedSteps(e).map(o=>{const r=o;if(r.getFrameService())return r.selectImage(t,A,a)});await Promise.all(s)}updateSharedStepStorage(t){this.bundle.getWorkflowExperiences().forEach(A=>A.getSteps().forEach(a=>{var s;if(a.getOverrideGlobalPropertyConfiguration(this.property.type))return;((s=a.getRaw().globalPropertyAspectConfigurations)==null?void 0:s.some(o=>{var r,c;return o.globalPropertyConfigurationId===((c=(r=this.bundle.getProductCollection())==null?void 0:r.getResource().globalPropertyConfiguration)==null?void 0:c.id)&&o.aspectName===this.property.name}))&&A.getWorkflowManager().updateStorage(a.getId(),{framePatternData:t})}))}}class Fn extends Pe{constructor(t,e){super(t,e)}getText(){const t=this.getStateValue();return t||""}async setText(t){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t),this.applyTextSelection(t)])}async applyGlobalState(t){const e=this.getStateValue();if(!e)return Promise.resolve();await this.applyTextSelection(e,t)}async applyTextSelection(t,e){const a=this.getSharedSteps(e).map(i=>{i.setText(t)});await Promise.all(a)}}class RA extends Pe{constructor(t,e,A){super(t,e),this.optionResource=A}async initDefaultVariant(){var e,A;const t=(A=(e=this.optionResource)==null?void 0:e.variants)==null?void 0:A.find(a=>{var i,s;return a.id===((s=(i=this.optionResource)==null?void 0:i.defaultVariant)==null?void 0:s.id)});t&&await this.selectVariant(new nt(t))}getCurrentVariant(){var e,A;if(!this.optionResource)return;const t=this.getStateValue();if(t){const a=(A=this.optionResource.variants)==null?void 0:A.find(i=>i.id===t);return a?new nt(a):void 0}else{const a=(e=this.optionResource.variants)==null?void 0:e.find(i=>{var s,o;return i.id===((o=(s=this.optionResource)==null?void 0:s.defaultVariant)==null?void 0:o.id)});return a?new nt(a):void 0}}getAvailableVariants(){var e,A;return(((A=(e=this.optionResource)==null?void 0:e.variants)==null?void 0:A.filter(a=>a.enabled))||[]).map(a=>new nt(a))}getAllVariants(){var e;return(((e=this.optionResource)==null?void 0:e.variants)||[]).map(A=>new nt(A))}async selectVariant(t){console.log(`Selecting variant ${t.getId()}`),await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.getId()),this.applyVariantSelection(t)])}async applyGlobalState(t){var a,i;const e=this.getStateValue();if(!e)return Promise.resolve();const A=(i=(a=this.optionResource)==null?void 0:a.variants)==null?void 0:i.find(s=>s.id===e);return A?(console.log(`Applying global state using variant ${A.id} for aspect ${e}`),this.applyVariantSelection(new nt(A),t)):Promise.resolve()}async applyVariantSelection(t,e){const a=this.getSharedSteps(e).map(i=>i.selectVariant(t));await Promise.all(a)}}class oA extends RA{constructor(t,e,A){super(t,e,A)}async selectVariant(t){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.getId()),this.applyColorVariant(t)])}async applyGlobalState(t){var i,s,o;const e=this.getStateValue();if(!e)return Promise.resolve();const A=(s=(i=this.optionResource)==null?void 0:i.variants)==null?void 0:s.find(r=>r.id===e);if(!A)return Promise.resolve();await this.applyColorVariant(new nt(A),t);const a=(o=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name))==null?void 0:o.customColor;a&&this.setCustomColor(a)}async applyColorVariant(t,e){const a=this.getSharedSteps(e).map(i=>{switch(i.getType()){case M.Shape:return i.selectVariant(t);case M.Text:return i.setFillColor({fill:t.getColor(),stroke:t.getColor(),variant:t.getResource()})}});await Promise.all(a)}setCustomColor(t){this.getSharedSteps().forEach(A=>A.setCustomColor(t)),this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name,{customColor:t})}getCustomColor(){var t,e;return((t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name))==null?void 0:t.customColor)||((e=this.getCurrentVariant())==null?void 0:e.getColor())||"#ffffff"}}class Qr{constructor(t,e,A,a,i){this.bundleId=t,this.bundleOwnerId=e,this.configuration=A,this.bundleOptions=i;const s=i==null?void 0:i.existingGlobalPropertyState;this.initPromise=s?Promise.resolve(s).then(()=>{this.globalPropertyState=s}):this.createGlobalPropertyState().then(o=>{this.globalPropertyState=o}),this.onGlobalPropertyStateChange=a}setBundleOptions(t){this.bundleOptions=t}getBundleOptions(){return this.bundleOptions}setConfiguration(t){this.configuration=t}getInitializationPromise(){return this.initPromise}getGlobalPropertyState(){return this.globalPropertyState}async setGlobalPropertyState(t){this.globalPropertyState||await this.initPromise;const e=xt(this.globalPropertyState);this.globalPropertyState={...t,id:e.id},await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(e,this.globalPropertyState)}getAspect(t){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const e=this.globalPropertyState.aspects.find(A=>A.name===t);if(e)return e.value}getAspectStorage(t){var e;if(!this.globalPropertyState)throw new Error("Global property state not initialized");return(e=this.globalPropertyState.aspects.find(A=>A.name===t))==null?void 0:e.storage}async setAspect(t,e,A){if(!this.globalPropertyState)throw new Error("Global property state not initialized");if(!this.configuration)throw new Error("Global property configuration not linked to the state manager.");const a=this.configuration.aspects.find(o=>o.name===t);if(!a)throw new Error(`Failed to find configuration aspect with name: ${t}`);const i=xt(this.globalPropertyState),s=this.globalPropertyState.aspects.find(o=>o.name===t);s?(s.value=e,s.type=a.type,A!==void 0&&(s.storage=A!==null?A:void 0)):this.globalPropertyState.aspects.push({name:t,value:e,type:a.type,storage:A!==null?A:void 0}),await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(i,this.globalPropertyState)}async setAspectStorage(t,e){if(!this.globalPropertyState)throw new Error("Global property state not initialized");if(!this.configuration)throw new Error("Global property configuration not linked to the state manager.");const A=this.configuration.aspects.find(s=>s.name===t);if(!A)throw new Error(`Failed to find configuration aspect with name: ${t}`);const a=xt(this.globalPropertyState),i=this.globalPropertyState.aspects.find(s=>s.name===t);i?(i.storage=e!==null?e:void 0,i.type=A.type):this.globalPropertyState.aspects.push({name:t,value:"",type:A.type,storage:e!==null?e:void 0}),await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(a,this.globalPropertyState)}async updateGlobalPropertyState(){var e,A;if(!this.globalPropertyState)throw new Error("Global property state not initialized");const t=await y.getShadowGraphqlClient().mutate({mutation:Qo,variables:{id:this.globalPropertyState.id,aspects:this.globalPropertyState.aspects.map(a=>{let i=a.type&&a.storage?{}:void 0;if(i)switch(a.type){case et.FileUpload:{i.fileUpload=a.storage;break}case et.Option:{i.option=a.storage;break}case et.ColorOption:{i=a.storage;break}}return{name:a.name,value:a.value,type:a.type,storage:i}})},context:{headers:{bundleOwnerId:this.bundleOwnerId,...(e=this.bundleOptions)==null?void 0:e.additionalHeaders}}});if((A=t.data)!=null&&A.globalPropertyStateUpdate)this.globalPropertyState=t.data.globalPropertyStateUpdate;else throw new Error("Unable to update global property state")}async createGlobalPropertyState(){var e,A;const t=await y.getShadowGraphqlClient().mutate({mutation:fo,variables:{bundleId:this.bundleId},context:{headers:{bundleOwnerId:this.bundleOwnerId,...(e=this.bundleOptions)==null?void 0:e.additionalHeaders}}});if((A=t.data)!=null&&A.globalPropertyStateCreate&&t.data.globalPropertyStateCreate.id)return t.data.globalPropertyStateCreate;throw new Error(`Unable to create global property state for bundle: ${this.bundleId}`)}}class pr{constructor(t){this.setState(t)}setState(t){t&&(this.state=JSON.parse(t))}applyStateToWorkflowExperience(t){var s;if(!this.state||!((s=t==null?void 0:t.getWorkflowManager())!=null&&s.getModelContainer()))return;const e=this.state.transactions.find(o=>o.transactionId===t.getWorkflowManager().getTransaction().id);if(!e)return;const A=this.getTransformToApply(e);if(!A)return;const a=this.flipTransform(A,t.getWorkflowManager().getPreviewService()),i=t.getWorkflowManager().getModelContainer();i.position=a.position,i.rotation=a.rotation,i.scale=a.scale}getTransformToApply(t){return t.activeTransform&&t.transforms?t.transforms[t.activeTransform]:t.transform}updateWorkflowExperienceTransform(t,e,A){const a=t.getWorkflowManager().getTransaction().id;this.state?this.state.transactions||(this.state.transactions=[]):this.state={transactions:[]};const i=this.state.transactions.find(s=>s.transactionId===a);i?(i.transforms||(i.transforms={}),i.transforms[e]=A):this.state.transactions.push({transactionId:a,activeTransform:e,transforms:{[e]:A}})}activateWorkflowExperienceTransform(t,e){var r,c;if(!((r=t==null?void 0:t.getWorkflowManager())!=null&&r.getModelContainer())||!this.state)return;const A=t.getWorkflowManager().getTransaction().id,a=this.state.transactions.find(l=>l.transactionId===A),i=(c=a==null?void 0:a.transforms)==null?void 0:c[e];if(!i)return;const s=this.flipTransform(i,t.getWorkflowManager().getPreviewService()),o=t.getWorkflowManager().getModelContainer();o.position=s.position,o.rotation=s.rotation,o.scale=s.scale,a.activeTransform=e}removeStateForTransaction(t){if(!this.state||!this.state.transactions)return;const e=this.state.transactions.findIndex(A=>A.transactionId===t);e!==-1&&this.state.transactions.splice(e,1)}getSerializedState(){if(this.state)return JSON.stringify(this.state)}flipTransform(t,e){return e&&e.flipTransform?e.flipTransform(t.position,{x:t.rotation.x*Math.PI/180,y:t.rotation.y*Math.PI/180,z:t.rotation.z*Math.PI/180},t.scale):{position:t.position,rotation:{x:t.rotation.x*Math.PI/180,y:t.rotation.y*Math.PI/180,z:t.rotation.z*Math.PI/180},scale:t.scale}}}class Mn{constructor(t){this.fullFetched=!1,this.collection=t;const e=this.collection.productCollectionProducts;e&&e.length>0&&(this.fullFetched=!0)}getId(){return this.collection.id}getName(){return this.collection.name}getDescription(){return this.collection.description||""}getImage(){return this.collection.image}getProducts(){if(!this.collection.productCollectionProducts)throw new Error("Failed to find products on collection. Ensure you fetch them first!");return this.collection.productCollectionProducts.map(t=>new Ot(t))}async fetchProducts(t){if(this.fullFetched)return this.collection.productCollectionProducts.map(A=>new Ot(A));const e=await y.getShadowGraphqlClient().query({query:yo,variables:{id:this.getId(),productIds:t},errorPolicy:"all"});return t||(this.fullFetched=!0),this.collection.productCollectionProducts=e.data.productCollections[0].productCollectionProducts||[],this.collection.productCollectionProducts.map(A=>new Ot(A))}async filterProducts(t){var i,s;const e=await y.getShadowGraphqlClient().query({query:Fo,errorPolicy:"all",variables:{id:this.getId(),filters:{link:"And",metafields:t}}});if(!((i=e.data)!=null&&i.productCollections)||((s=e.data)==null?void 0:s.productCollections.length)===0)throw new Error("Failed to filter product collection products.");const A=this.getProducts(),a=e.data.productCollections[0].productCollectionProducts.map(o=>o.product.id);return A.filter(o=>a.includes(o.getId()))}async fetchProductsFeed(t,e,A){var s,o,r,c,l,g;if(this.fullFetched){const d=await(A?this.filterProducts(A):this.fetchProducts());return{total:d.length,items:d.slice(t,t+e)}}const a=await y.getShadowGraphqlClient().query({query:Mo,variables:{id:this.getId(),limit:e,offset:t,filters:A?{link:"And",metafields:A}:void 0},errorPolicy:"all"});return{items:((r=(o=(s=a==null?void 0:a.data)==null?void 0:s.productCollections)==null?void 0:o[0].productCollectionProductsFeed)==null?void 0:r.items.map(d=>new Ot(d)))||[],total:((g=(l=(c=a==null?void 0:a.data)==null?void 0:c.productCollections)==null?void 0:l[0].productCollectionProductsFeed)==null?void 0:g.total)??0}}getTransformCollection(){if(this.collection.transformCollection)return new Sn(this.collection.transformCollection)}getResource(){return this.collection}}class Ot{constructor(t){this.product=t.product,this.productResource=t}getId(){return this.product.id}getName(){return this.product.name}getIntegrationByType(t,e){const a=(this.product.integrationProducts||[]).find(i=>{var c,l,g;const s=(c=i.integration)==null?void 0:c.type,o=((l=i.integration)==null?void 0:l.type)===t,r=e?((g=i.integration)==null?void 0:g.externalIntegrationId)===e:!0;return s&&o&&r});if(!a)throw new Error("Failed to find requested integration type on product. This is generally due to a configuration error");return a}getCurrentIntegration(){const e=(this.product.integrationProducts||[]).find(A=>{var a;return(a=A.integration)==null?void 0:a.isCurrent});if(!e)throw new Error(`Product: ${this.productResource.id} is not linked to this current integration. This is generally due to a configuration error.`);return e}getDefaultWorkflow(){const t=this.product.workflows;if(t===void 0)throw new lt("Called getDefaultWorkflow() before fetching collection products. Use collection.fetchProducts() first to ensure the data is available.");if(t.length===0)throw new lt("Called getDefaultWorkflow() but no workflows on requested product. Ensure at least 1 workflow is assigned to this product.");const e=this.productResource.workflowId;if(e){const A=t.find(a=>a.workflowName===e);if(A)return new Yt(A)}if(t.length===1)return console.warn("Called getDefaultWorkflow() but no default was configured. There is only one workflow available so we will fall back to using this!"),new Yt(t[0]);throw new lt("Called getDefaultWorkflow() but no default workflow is configured for the requested product. Multiple workflows exist so we can't assume!")}getAllWorkflows(){if((this.product.workflows||[]).length===0)throw new lt("No workflows on configured product. Ensure at least 1 workflow is assigned to this product.");return this.product.workflows.sort((e,A)=>(e.index??0)-(A.index??0)).map(e=>new Yt(e))}getIntegrations(){return this.product.integrationProducts||[]}getResource(){return this.product}getBasePrice(t){var a,i,s,o;const e=this.product.basePrice||0;if(!t)return e;if(!t.integrationType&&!t.externalId&&!t.integrationId)throw new Error("You must provide at least one of the following fields on the includeAdditionalProduct object: integrationType, externalId, integrationId");let A;return t.integrationId?A=(a=this.product.integrationProducts)==null?void 0:a.find(r=>{var c;return((c=r.integration)==null?void 0:c.id)===t.integrationId}):t.externalId?A=(i=this.product.integrationProducts)==null?void 0:i.find(r=>{var c;return((c=r.integration)==null?void 0:c.externalIntegrationId)===t.externalId}):A=(s=this.product.integrationProducts)==null?void 0:s.find(r=>{var c;return((c=r.integration)==null?void 0:c.type)===t.integrationType}),(o=A==null?void 0:A.additionalIntegrationProduct)!=null&&o.product?e+(A.additionalIntegrationProduct.product.basePrice||0):e}}class Yt{constructor(t){this.workflow=t}getId(){return this.workflow.workflowName}getName(){return this.workflow.friendlyName}getThumbnail(){return this.workflow.imageUrl}}class Sn{constructor(t){this.collection=t}getId(){return this.collection.id}getName(){return this.collection.name}getTransforms(){return this.collection.transforms.map(t=>new xn(t))}}class xn{constructor(t){this.transform=t}getId(){return this.transform.id}getName(){return this.transform.name}get(){return{position:this.transform.position,rotation:this.transform.rotation,scale:this.transform.scale}}}class ze{constructor(t,e,A,a,i,s){var c,l,g;this.eventListeners=new Map,this.workflowExperiences=[],this.client=t,this.id=e.id,this.name=e.name||"",this.shareActions=e.bundleShareActions,this.workflowViewerLink=e.workflowViewerLink,this.workflowViewerAmendLink=e.workflowViewerAmendLink,this.ownerId=i,this.metadata=new Map(((c=e.metadata)==null?void 0:c.map(d=>[d.key,d.value]))||[]),this.completed=e.completed??!1,this.productCollection=e.productCollection,this.bundleStateManager=new pr(e.bundleStateData);const o=(l=this.productCollection)==null?void 0:l.globalPropertyConfiguration;this.globalConfigurationPropertyId=o==null?void 0:o.id,this.globalPropertyStateManager=new Qr(this.id,this.ownerId,o,this.checkConditionalHandlesChanged.bind(this),s),this.globalPropertyHandleService=new fr(this),this.setPreviewService(A);const r=new Promise((d,B)=>{this.globalPropertyHandleService.getHandles().then(h=>{const C=h.map(u=>{if(u.getType()===et.ColorOption||u.getType()===et.Option)return u.initDefaultVariant()});Promise.all(C).then(d).catch(B)})});this.initializationPromise=Promise.all([this.loadExistingWorkflowExperiences(((g=e.transactions)==null?void 0:g.map(d=>d.id))||[],{...a,bundleOwnerId:i}),this.globalPropertyStateManager.getInitializationPromise(),r]),this.initializationPromise.catch(d=>{console.error(`Bundle initialization failed: ${d}`)})}setBundleOptions(t){this.globalPropertyStateManager.setBundleOptions(t)}getInitializationPromise(){return this.initializationPromise}addEventListener(t,e){this.eventListeners.set(t,[...this.eventListeners.get(t)||[],e])}removeEventListener(t,e){const A=this.eventListeners.get(t)||[],a=A.indexOf(e);a>-1&&A.splice(a,1)}getClient(){return this.client}getId(){return this.id}getName(){return this.name}setName(t){return this.name=t,this.updateBundle()}getMetadata(){return new Map(this.metadata)}setMetadata(t){return this.metadata=new Map(t),this.updateBundle()}setNameAndMetadata(t,e){return this.name=t,this.metadata=new Map(e),this.updateBundle()}hasGlobalProperties(){var t;return!!((t=this.productCollection)!=null&&t.globalPropertyConfiguration)}getGlobalPropertyConfiguration(){var t;return(t=this.productCollection)==null?void 0:t.globalPropertyConfiguration}async getGlobalProperties(){return this.globalPropertyHandleService.applyConditionsFromState(await this.globalPropertyHandleService.getHandles(),this.getGlobalPropertyStateManager().getGlobalPropertyState())}getGlobalPropertyStateManager(){return this.globalPropertyStateManager}async getGlobalPropertyTotalSubunits(){return(await this.globalPropertyHandleService.getHandles()).filter(A=>A.getType()===et.Option).map(A=>{var a;return((a=A.getCurrentVariant())==null?void 0:a.getPrice())||0}).reduce((A,a)=>A+a,0)}getTotalSubunits(){return this.workflowExperiences.map(t=>t.getTotalPriceSubunits()).reduce((t,e)=>t+e,0)}getProductCollection(){return this.productCollection?new Mn(this.productCollection):void 0}async addWorkflowExperience(t){t.setBundle(this),await this.appendWorkflowExperience(t),await this.injectExperienceIntoPreviewService(t),await t.getWorkflowManager().getInitializationPromise();const e=await this.getGlobalProperties();for(const A of e)await A.applyGlobalState([t])}async addWorkflowExperiences(t){const e=t.map(o=>o.getWorkflowManager().getTransaction().id),A=e.map(o=>this.workflowExperiences.find(r=>r.getWorkflowManager().getTransaction().id===o));if(A.some(o=>!!o))throw new Error("Unable to add transaction to bundle - Already Exists: "+A.filter(o=>!!o).map(o=>o==null?void 0:o.getWorkflowManager().getTransaction().id).join(", "));const a=k.getMap("transactionOwnerIds")||new Map,i=e.map(o=>a.get(o));await y.getShadowGraphqlClient().mutate({mutation:vo,variables:{id:this.id,transactionIds:e,transactionOwnerIds:i},context:{bundleOwnerId:this.ownerId}}).catch(o=>{console.error(o)}),this.workflowExperiences.push(...t);const s=async()=>{for(const r of t)r.setBundle(this),await this.injectExperienceIntoPreviewService(r);await Promise.all(t.map(r=>r.getWorkflowManager().getInitializationPromise()));const o=await this.getGlobalProperties();for(const r of o)await r.applyGlobalState(t)};await Promise.all([this.updateTransactionOrder(),s()]),this.workflowExperiences.forEach(o=>o.checkForPriceBreakChanges())}async appendWorkflowExperience(t,e=!0){const A=t.getWorkflowManager().getTransaction().id;if(this.workflowExperiences.find(o=>o.getWorkflowManager().getTransaction().id===A))throw new Error("Unable to add transaction to bundle - Already Exists!");const s=(k.getMap("transactionOwnerIds")||new Map).get(A);await y.getShadowGraphqlClient().mutate({mutation:Po,variables:{id:this.id,transactionId:A},context:{bundleOwnerId:this.ownerId,transactionOwnerId:s}}),e&&(this.workflowExperiences.push(t),this.workflowExperiences.forEach(o=>o.checkForPriceBreakChanges()))}async removeWorkflowExperience(t){const e=this.workflowExperiences.indexOf(t);await this.removeTransaction(e,this.workflowExperiences[e].getWorkflowManager().getTransaction())}async removeWorkflowExperiences(t){await this.removeTransactions(t.map(e=>e.getWorkflowManager().getTransaction()))}async removeWorkflowExperienceByTransaction(t){const e=this.workflowExperiences.findIndex(A=>A.getWorkflowManager().getTransaction().id===t.id);await this.removeTransaction(e,t)}async removeWorkflowExperiencesByTransactions(t){await this.removeTransactions(t)}async removeTransaction(t,e,A=!0){if(t>-1){const a=this.workflowExperiences.find(i=>i.getWorkflowManager().getTransaction().id===e.id);a.setBundle(void 0),this.previewService&&a.getWorkflowManager().ejectFromPreviewService(),this.bundleStateManager.removeStateForTransaction(e.id),await y.getShadowGraphqlClient().mutate({mutation:ko,variables:{id:this.id,transactionId:e.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([i,s])=>({key:i,value:s})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),A&&(this.workflowExperiences.splice(t,1),this.workflowExperiences.forEach(i=>i.checkForPriceBreakChanges()),a.checkForPriceBreakChanges(),await this.updateTransactionOrder())}else throw new Error("Unable to remove workflow experience from bundle - Not Found! - "+e.id)}async removeTransactions(t){const e=t.map(a=>this.workflowExperiences.findIndex(i=>i.getWorkflowManager().getTransaction().id===a.id));if(e.some(a=>a===-1))throw new Error("Unable to remove workflow experience from bundle - The following aren't included in the bundle: "+t.filter((a,i)=>e[i]===-1).map(a=>a.id).join(", "));const A=t.map(a=>this.workflowExperiences.splice(this.workflowExperiences.findIndex(i=>i.getWorkflowManager().getTransaction().id===a.id),1)[0]);A.forEach(a=>a.setBundle(void 0)),[...this.workflowExperiences,...A].forEach(a=>a.checkForPriceBreakChanges()),this.previewService&&A.forEach(a=>a.getWorkflowManager().ejectFromPreviewService()),t.forEach(a=>this.bundleStateManager.removeStateForTransaction(a.id)),await y.getShadowGraphqlClient().mutate({mutation:No,variables:{id:this.id,transactionIds:t.map(a=>a.id),name:this.name,metadata:Array.from(this.metadata.entries()).map(([a,i])=>({key:a,value:i})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),await this.updateTransactionOrder()}async insertWorkflowExperience(t,e){await this.appendWorkflowExperience(t,!1),this.workflowExperiences.splice(e,0,t),await Promise.all([this.updateTransactionOrder(),(async()=>{await this.injectExperienceIntoPreviewService(t);const A=await this.getGlobalProperties();await Promise.all(A.map(a=>a.applyGlobalState([t])))})()])}async replaceWorkflowExperience(t,e){if(t<0||t>=this.workflowExperiences.length)throw new Error("Unable to replace workflow experience in bundle - Index out of range!");const A=this.workflowExperiences[t];if(A.getWorkflowManager().getTransaction().id===e.getWorkflowManager().getTransaction().id)throw new Error("Unable to replace workflow experience in bundle - Same transaction!");await Promise.all([this.removeTransaction(t,A.getWorkflowManager().getTransaction(),!1),this.appendWorkflowExperience(e,!1)]),this.workflowExperiences[t]=e,await Promise.all([this.updateTransactionOrder(),(async()=>{await this.injectExperienceIntoPreviewService(e);const a=await this.getGlobalProperties();await Promise.all(a.map(i=>i.applyGlobalState([e])))})()])}async swapWorkflowExperiences(t,e){if(t<0||t>=this.workflowExperiences.length||e<0||e>=this.workflowExperiences.length)throw new Error("Unable to swap workflow experiences in bundle - Index out of range!");if(t===e)return;const A=this.workflowExperiences[t];this.workflowExperiences[t]=this.workflowExperiences[e],this.workflowExperiences[e]=A,await this.updateTransactionOrder()}getWorkflowExperiences(){return[...this.workflowExperiences]}async sortWorkflowExperiences(t){this.workflowExperiences=this.workflowExperiences.sort(t),await this.updateTransactionOrder()}getWorkflowExperienceCount(){return this.workflowExperiences.length}async addStakeholder(t,e){var i;const A=await y.getShadowGraphqlClient().mutate({mutation:bo,variables:{id:this.id,details:t,type:e||Wt.Owner},context:{bundleOwnerId:this.ownerId}});if(!((i=A.data)!=null&&i.bundleAddStakeholder))throw new Error("Bundle not found!");const a=A.data.bundleAddStakeholder.bundleStakeholders||[];this.storeStakeholderCustomers(a)}async removeStakeholder(t){var A;if(!((A=(await y.getShadowGraphqlClient().mutate({mutation:Ro,variables:{id:this.id,emailAddress:t},context:{bundleOwnerId:this.ownerId}})).data)!=null&&A.bundleRemoveStakeholder))throw new Error("Bundle not found!")}async updateStakeholders(t){var a;const e=await y.getShadowGraphqlClient().mutate({mutation:Ho,variables:{id:this.id,input:t},context:{bundleOwnerId:this.ownerId}});if(!((a=e.data)!=null&&a.bundleUpdateStakeholders))throw new Error("Bundle not found!");const A=e.data.bundleUpdateStakeholders.bundleStakeholders||[];this.storeStakeholderCustomers(A)}async getAllStakeholders(){const t=await y.getShadowGraphqlClient().query({query:ea,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id},context:{bundleOwnerId:this.ownerId}});if(!t.data.bundles||t.data.bundles.length===0)throw new Error("Bundle not found!");const e=t.data.bundles[0].bundleStakeholders||[];return this.storeStakeholderCustomers(e),e}async getCurrentStakeholder(){const t=await y.getShadowGraphqlClient().query({query:ea,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id},context:{bundleOwnerId:this.ownerId}});if(!t.data.bundles||t.data.bundles.length===0)throw new Error("Bundle not found!");return t.data.bundles[0].currentBundleStakeholder}storeStakeholderCustomers(t){t.forEach(e=>{e.customer&&this.client.storeCustomer(e.customer)})}async finish(t,e){if(this.completed)return await y.getShadowGraphqlClient().mutate({mutation:Lo,variables:{bundleId:this.id}}),{bundleId:this.id,items:[],bundleOwnerId:this.ownerId};const A=await tr(this.workflowExperiences.map(a=>({workflowManager:a.getWorkflowManager(),workflow:a.getWorkflowManager().getWorkflow(),layouts:a.getWorkflowManager().getLayouts(),getReducerState:()=>a.getCommandContext().getState(),product:a.getWorkflowManager().getProduct(),transaction:a.getWorkflowManager().getTransaction(),workflowSelections:a.getWorkflowManager().getWorkflowSelections(),designName:a.getWorkflowManager().getWorkflow().name,workflowMetadata:a.getWorkflowManager().getWorkflowMetadata()})),t??(()=>{}),e?(a,i)=>{const s=this.workflowExperiences.find(o=>o.getWorkflowManager().getTransaction().id===i);return s?e(s):(console.warn("SpiffCommerce - Bundle create design - Unable to find experience for transaction: "+i),Promise.resolve(void 0))}:void 0);return{bundleId:this.id,items:A,bundleOwnerId:this.ownerId}}async placeOrder(){const t=this.workflowExperiences.map(e=>({transactionId:e.getWorkflowManager().getTransaction().id,amountToOrder:e.getWorkflowManager().getTransaction().quantity||1}));return await this.getClient().placeOrder(t)}getPreviewService(){return this.previewService}async setPreviewService(t){if(this.workflowExperiences&&this.workflowExperiences.length>0&&(this.workflowExperiences.forEach(e=>e.getWorkflowManager().ejectFromPreviewService()),t))for(const e of this.workflowExperiences)await this.injectExperienceIntoPreviewService(e);t&&t.registerModelLoadEventListener&&t.registerModelLoadEventListener(this.onModelLoadEvent.bind(this)),this.previewService&&this.previewService!==t&&this.previewService.unregisterModelLoadEventListener&&this.previewService.unregisterModelLoadEventListener(this.onModelLoadEvent.bind(this)),this.previewService=t}updateWorkflowExperienceTransform(t,e,A){return this.bundleStateManager.updateWorkflowExperienceTransform(t,e,A),this.updateBundle()}activateWorkflowExperienceTransform(t,e){return this.bundleStateManager.activateWorkflowExperienceTransform(t,e),this.updateBundle()}async assignGlobalPropertyConfiguration(t){await y.getShadowGraphqlClient().mutate({mutation:To,variables:{bundleId:this.id,globalPropertyConfigurationId:t},context:{bundleOwnerId:this.ownerId}}),this.globalConfigurationPropertyId=t}async assignProductCollection(t){var A,a;const e=await y.getShadowGraphqlClient().mutate({mutation:Go(((A=this.globalPropertyStateManager.getBundleOptions())==null?void 0:A.eagerFetchProducts)??!1),variables:{id:this.id,productCollectionId:t??""},context:{bundleOwnerId:this.ownerId}});if((a=e.data)!=null&&a.bundleAssignProductCollection.productCollection&&!this.globalConfigurationPropertyId){this.productCollection=e.data.bundleAssignProductCollection.productCollection;const i=e.data.bundleAssignProductCollection.productCollection.globalPropertyConfiguration;this.globalPropertyStateManager.setConfiguration(i),this.globalConfigurationPropertyId=i==null?void 0:i.id}}onModelLoadEvent(t){t.eventType==="unload"||!t.modelContainer||(t.modelContainer.registerMaterialSelectedCallback(()=>this.onModelSelectedEvent(t.modelContainer,!0)),t.modelContainer.registerMaterialDeselectedCallback(()=>this.onModelSelectedEvent(t.modelContainer,!1)))}onModelSelectedEvent(t,e){if(t&&t.metadata&&t.metadata instanceof Map&&t.metadata.has("workflowManager")){const a=t.metadata.get("workflowManager").getTransaction(),i=this.workflowExperiences.find(s=>s.getWorkflowManager().getTransaction().id===a.id);i&&this.fireEvent(e?"workflow-experience-hover-enter":"workflow-experience-hover-exit",{workflowExperience:i})}}async injectExperienceIntoPreviewService(t){if(this.previewService){const e=t.getWorkflowManager().injectIntoPreviewService(this.previewService);try{this.bundleStateManager.applyStateToWorkflowExperience(t)}catch(A){console.error(`Unable to apply state to workflow experience: ${A}`)}await e}}async loadExistingWorkflowExperiences(t,e){if(t.length===0)return;const A=await this.client.getWorkflowExperiences(t.map(a=>({type:"transaction",transactionId:a})),e);if(A.forEach(a=>a.setBundle(this)),A.forEach(a=>a.checkForPriceBreakChanges()),this.workflowExperiences=A,this.previewService)for(const a of A)await this.injectExperienceIntoPreviewService(a)}async updateBundle(){var e;if(!((e=(await y.getShadowGraphqlClient().mutate({mutation:Yo,variables:{id:this.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([A,a])=>({key:A,value:a})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}})).data)!=null&&e.bundleUpdate))throw new Error("Bundle not found!")}async updateTransactionOrder(){await y.getShadowGraphqlClient().mutate({mutation:Uo,variables:{id:this.id,transactionIds:this.workflowExperiences.map(t=>t.getWorkflowManager().getTransaction().id)},context:{bundleOwnerId:this.ownerId}})}async checkConditionalHandlesChanged(t,e){const A=await this.globalPropertyHandleService.getHandles(),a=this.globalPropertyHandleService.applyConditionsFromState(A,t),i=this.globalPropertyHandleService.applyConditionsFromState(A,e);if((()=>{if(a.length!==i.length)return!0;for(let o=0;o<a.length;o++)if(a[o].getName()!==i[o].getName())return!0;return!1})()){this.fireEvent("conditional-global-properties-changed",{globalProperties:i});const o=i.filter(r=>!a.includes(r));await Promise.all(o.map(r=>r.applyGlobalState()))}}fireEvent(t,e){(this.eventListeners.get(t)||[]).forEach(a=>a({bundle:this,event:t,data:e}))}getShareActions(){return this.shareActions}getWorkflowViewerLink(){return this.workflowViewerLink}getWorkflowViewerAmendLink(){return this.workflowViewerAmendLink}async approve(t){await y.getShadowGraphqlClient().mutate({mutation:Oo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id,note:t}})}async reject(t){await y.getShadowGraphqlClient().mutate({mutation:zo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id,note:t}})}}const Ir=Q.gql`
2002
+ `,g={"spiff-fill-shape":{browserValue:s.color||"#000000"}},m=Q();return new G({colors:g,id:m,svg:u,type:T.Illustration,y:d.top,x:d.left,rotation:d.rotation,width:d.width,height:d.height,layer:d.layer,layerIndex:d.layerIndex,immutable:d.immutable},A)},l=a.data.regions;try{return l.map(o)}catch(d){return console.error(d),[]}},tl=async(r,t,e)=>{const a=[],i=(()=>{var c,d;return t.type===b.ProductOverlay?e||((c=t.data.asset)==null?void 0:c.fileLink)||"":((d=t.data.asset)==null?void 0:d.fileLink)||""})(),o=(()=>i.endsWith(".jpeg")||i.endsWith(".jpg")||i.endsWith(".png")?T.Image:(i.endsWith(".svg"),T.Illustration))(),l=t.data.regions;if(o==="image")try{l.forEach(c=>{const d=r.find(u=>u.panelId===c.panelId);if(!d)throw new Y(c);const A={id:Q(),src:i,type:o,y:c.top,x:c.left,width:c.width,height:c.height,layer:c.layer,layerIndex:c.layerIndex,productOverlay:t.type===b.ProductOverlay?!0:void 0,scaleX:1,scaleY:1,rotation:c.rotation,excludeFromExport:t.data.excludeFromPrint,preserveAspectRatio:"none"};a.push(new G(A,d))})}catch(c){console.error(c)}else{const c=await et(i,!0),d=A=>{const u=/<svg.*?<\/svg>/s,h=A.match(u)||[],g=(h==null?void 0:h.length)>0?h[0]:"",p=it().parseFromString(g,"image/svg+xml").firstElementChild;if(!p)throw new wt("Failed to read SVG.");return Ie(p),pt().serializeToString(p)};l.forEach(A=>{const u=r.find(g=>g.panelId===A.panelId);if(!u)throw new Y(A);const h={id:Q(),src:i,asset_key:i,svg:d(c),colors:{},type:o,y:A.top,x:A.left,width:A.width,height:A.height,layer:A.layer,layerIndex:A.layerIndex,scaleX:1,scaleY:1,rotation:A.rotation,productOverlay:t.type===b.ProductOverlay?!0:void 0,excludeFromExport:t.data.excludeFromPrint};a.push(new G(h,u))})}return a},el=async(r,t,e,a)=>{const n=[],i=e.data,s=30,o=f=>f.vertical?"center":f.textAlign||"center",l=()=>{var w;const f=a.option;if(!f)return;const p=((w=f.variants)==null?void 0:w.find(y=>y.id===i.fontVariantId))||se(f);if(!p||!p.asset)return;t[a.stepName]={selectedVariants:[p]};const C=p.asset.fileLink;if(C)return C},d=await(async()=>{const f=l();if(!f)return;const p=await vt(f);return{assetUrl:f,name:p.names.fullName.en}})(),A=(a.data.replaceableText?a.data.replaceableText.replace("{{}}",i.text):i.text)||"",u=pe(A,{vertical:a.data.vertical,uppercase:a.data.uppercase}),h=async f=>{const p=f.colorOption;if(!p)return;const C=X.getDefaultVariant(p);return C==null?void 0:C.color},g=i.color||await h(a.data),m=a.data.regions;for(const f of m){const p=r.find(w=>w.panelId===f.panelId);if(!p)continue;const C={stepName:e.name,id:Q(),align:o(a.data),curved:a.data.curved,fill:i.color||g||"#000000",fontData:d,fontSize:a.data.size||s,height:f.height,layer:f.layer,layerIndex:f.layerIndex,paths:a.data.paths,rotation:f.rotation,text:u,type:T.Textbox,vertical:a.data.vertical,verticalAlign:a.data.verticalAlign||"middle",width:f.width,x:f.left,y:f.top};if(d){const[w,y]=qt(a.data.size||s,d,f,[pe(u,{vertical:a.data.vertical,uppercase:a.data.uppercase})],{size:a.data.size,minSize:a.data.minSize,maxSize:a.data.maxSize});n.push(new G({...C,fontSize:w,text:C.curved?C.text:(y||[]).join(`
2003
+ `)},p))}else n.push(new G(C,p))}return n},al=(r,t)=>r.conditions?r.conditions.every(e=>{const a=t[e.targetStepName];if(a&&a.selectedVariants){const n=a.selectedVariants;return e.requiredVariantSelections.some(i=>n.find(s=>s.id===i)!==void 0)}return!1}):!0,gr=async(r,t,e,a)=>{const n=[],i={};for(const s of r){const o=t.steps.find(l=>l.stepName===s.name);if(o)switch(o.type){case b.DigitalContent:n.push(...await Yo(e,s,o));break;case b.Frame:case b.Photo:n.push(...await Jo(e,i,s,o));break;case b.Illustration:n.push(...await Ko(e,i,s,o));break;case b.Module:n.push(...await Xo(e,s,o));break;case b.Picture:n.push(...await Zo(e,i,s,o));break;case b.Shape:n.push(...await _o(e,i,s,o));break;case b.Text:n.push(...await el(e,i,s,o));break}}for(const s of t.steps)s.type!==b.SilentIllustration&&s.type!==b.ProductOverlay||al(s,i)&&n.push(...await tl(e,s,a));return n};class nl{constructor(t){this.handleCompleteRender=null;const e=new Map;t.forEach(a=>e.set(a.id,new sl(a.id,a.name,this,{width:a.width,height:a.height}))),this.layouts=e}setCompleteRenderCallback(t){this.handleCompleteRender=t,t(Array.from(this.layouts.values()))}onCompleteRender(){this.handleCompleteRender&&this.handleCompleteRender(Array.from(this.layouts.values()))}getAll(){return this.layouts}}const rl=()=>new Promise((r,t)=>{try{const a=gt().getContext("webgl2");r(!!a)}catch{r(!1)}}),il=rl();class sl{constructor(t,e,a,n){this.hasSetStaticContext=!1,this.interactiveDirty=!1,this.staticCtxDirty=!1,this.lastRequestedRenderArguments=void 0,this.lastCompletedStaticRender=void 0,this.renderQueue=new pa(2),this.id=t,this.name=e,this.service=a,this.panelSize=n}getID(){return this.id}getName(){return this.name}getPanelSize(){return this.panelSize}getStaticContext(){return this.textureCtx}setStaticContext(t){this.textureCtx=t,this.lastRequestedRenderArguments&&this.render(this.lastRequestedRenderArguments)}getStaticContextDirty(){return this.staticCtxDirty}setStaticContextDirty(t){this.staticCtxDirty=t}getInteractiveCanvasDirty(){return this.interactiveDirty}setInteractiveCanvasDirty(t){this.interactiveDirty=t}markLastCompletedStaticRender(){this.lastCompletedStaticRender=Date.now(),this.service.onCompleteRender()}getLastCompletedStaticRender(){return this.lastCompletedStaticRender}async render(t){const e=Pt(t);this.lastRequestedRenderArguments=e;const a=this.getStaticContext();if(!a){this.markLastCompletedStaticRender(),this.setStaticContextDirty(!1);return}this.renderQueue.enqueue(new ol(this.getID(),a,await il,()=>{this.markLastCompletedStaticRender(),this.setStaticContextDirty(!0)},e))}}class ol extends fa{constructor(t,e,a,n,i){super(),this.layoutId=t,this.ctx=e,this.nonPOTSupport=a,this.onRender=n,this.layouts=i}getDynamicTextureResolution(){return this.getIsMobile()||!this.offscreenRenderingSupported()?{width:1024,height:1024}:{width:2048,height:2048}}getIsMobile(){return window.innerWidth<=480}offscreenRenderingSupported(){return navigator.userAgent.includes("SamsungBrowser")?!1:!!window.Worker&&!!window.OffscreenCanvas}resizeFit(t,e=4096){const a=e/t.width,n=e/t.height,i=Math.min(a,n);return i>1?t:{width:t.width*i,height:t.height*i}}async execute(){const t=this.layouts.find(h=>h.layoutState.layout.id===this.layoutId);if(!t)return;const e=t.layoutState.elements||[],a=t.layoutState.layout.width,n=t.layoutState.layout.height,i=a===1||n===1?{width:1,height:1}:this.getDynamicTextureResolution(),s=i.width,o=i.height;let l,c;if(this.nonPOTSupport){const h=s/o;a/n<h?(l=s,c=n*(s/a)):(l=a*(o/n),c=o);const m=this.resizeFit({width:l,height:c});l=m.width,c=m.height}else l=i.width,c=i.height;const d=xe(t.layoutState.layout,e,{renderingConfiguration:{purpose:kt.ThreeD}}),A=hn(d),u=await ca.Pith.from(this.ctx,A,{anonymousCrossOrigin:!0,ignoreDimensions:!this.nonPOTSupport,ignoreAnimation:!0,ignoreClear:!0,ignoreMouse:!0,enableRedraw:!1,createCanvas:gt,createImage:ae,DOMParser:ha(),fetch});u.resize(l,c),await u.render(),this.onRender()}}const ll=(r,t)=>{const e=[];return r.forEach(a=>{const n=t.steps.find(i=>i.stepName===a.stepName);(n==null?void 0:n.type)===b.Text&&a.stepAspectType==="Text"&&e.push({name:n.stepName,data:{text:a.value}})}),e},cl=async(r,t,e,a)=>{let n={serializableWorkflow:{steps:[]},layouts:{}};n=new O(e.map(l=>new Ea(l))).apply(n);const s=await gr(r,t,e,a);return new O(s).apply(n)};class dl{constructor(t){this.handleCache={},this.bundle=t}async getHandle(t){if(this.handleCache[t.name])return this.handleCache[t.name];const e=await this.createHandle(t);return this.handleCache[t.name]=e,e}async getHandles(){var e;if(!((e=this.bundle.getProductCollection())!=null&&e.getResource().globalPropertyConfiguration))return[];const t=this.bundle.getProductCollection().getResource().globalPropertyConfiguration;return Promise.all(t.aspects.map(a=>this.getHandle(a)))}applyConditionsFromState(t,e){return e?t.filter(a=>this.aspectConditionsSatisfied(a.getRawProperty(),e)):t}aspectConditionsSatisfied(t,e){return!t.conditions||t.conditions.length===0?!0:t.conditions.some(a=>{const n=e.aspects.find(i=>i.name===a.targetAspectName);return n?a.requiredVariantSelections.some(i=>i===n.value):!1})}async createHandle(t){switch(t.type){case tt.FileUpload:return new mr(this.bundle,t);case tt.ColorOption:return new oa(this.bundle,t,t.entityId?await X.getOption(t.entityId):void 0);case tt.Option:{const e=t.entityId?await X.getOption(t.entityId):void 0;return(e==null?void 0:e.type)==="Color"?new oa(this.bundle,t,e):new Fa(this.bundle,t,e)}case tt.Text:return new fr(this.bundle,t);default:throw new Error("Unhandled Global Property Aspect Type")}}}class ke{constructor(t,e){this.bundle=t,this.property=e}getName(){return this.property.name}getTitle(){return this.property.title}getDescription(){return this.property.description}getType(){return this.property.type}getRawProperty(){return this.property}getSharedSteps(t){return(t??this.bundle.getWorkflowExperiences()).flatMap(n=>n.getStepsConditionallyActive().filter(i=>{var s;return i.getOverrideGlobalPropertyConfiguration(this.property.type)?!1:(s=i.getRaw().globalPropertyAspectConfigurations)==null?void 0:s.some(o=>{var l,c;return o.globalPropertyConfigurationId===((c=(l=this.bundle.getProductCollection())==null?void 0:l.getResource().globalPropertyConfiguration)==null?void 0:c.id)&&o.aspectName===this.property.name})}))}getStateValue(){return this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name)}}class mr extends ke{constructor(t,e){super(t,e)}async selectImage(t){const e=this.bundle.getGlobalPropertyStateManager();await Promise.all([e.setAspect(this.property.name,t.key,{...e.getAspectStorage(this.property.name)||{},originalAssetKey:t.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0}),this.applyImageSelection(t)])}async canUseBackgroundRemover(){return this.bundle.getClient().canUseAddon(Se.BackgroundRemover)}async removeBackgroundFromImage(t=!0){if(!await this.canUseBackgroundRemover())throw new Error("The current Integration does not have access to the Background Remover. Please call canUseBackgroundRemover to ensure you disable this feature when appropriate.");const e=await this.getOriginalImage();if(!e)throw new Error("You must supply an image selection before attempting to remove the background.");const a=this.bundle.getGlobalPropertyStateManager(),n=await U.removeBackgroundFromAsset(e),s={...a.getAspectStorage(this.property.name),backgroundRemovedAssetKey:n.key,useOriginalAsset:!t},l=[t?a.setAspect(this.property.name,n.key,s):a.setAspectStorage(this.property.name,s)];return t&&l.push(this.applyImageSelection(n,void 0,!1,!1)),await Promise.all(l),this.updateSharedStepStorage(s),n}hasImage(){return!!this.getStateValue()}async getImage(){const t=this.getStateValue();if(t)return U.getLocalOrFromServer(t)}async getOriginalImage(){const t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(t!=null&&t.originalAssetKey)return U.getLocalOrFromServer(t.originalAssetKey)}async getBackgroundRemovedImage(){const t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(t!=null&&t.backgroundRemovedAssetKey)return U.getLocalOrFromServer(t.backgroundRemovedAssetKey)}getUseOriginalImage(){var t;return((t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name))==null?void 0:t.useOriginalAsset)??!1}async setUseOriginalImage(t){const e=await this.getOriginalImage();if(!e)throw new Error("You must select an image before calling setUseOriginalImage");const a=this.bundle.getGlobalPropertyStateManager(),n=a.getAspectStorage(this.property.name);if((n==null?void 0:n.useOriginalAsset)===t)return;const i={...n,useOriginalAsset:t},s=t?n==null?void 0:n.originalAssetKey:n==null?void 0:n.backgroundRemovedAssetKey,o=[a.setAspect(this.property.name,s||"",i)];if(t)o.push(this.applyImageSelection(e,void 0,!1,!1));else{const l=async()=>{const c=await this.getBackgroundRemovedImage();if(!c)throw new Error("You must call removeBackgroundFromImage before attempting to use that version of the image.");this.applyImageSelection(c,void 0,!1,!1)};o.push(l())}this.updateSharedStepStorage(i)}async applyGlobalState(t){const e=this.getStateValue();if(!e)return;const a=await U.getLocalOrFromServer(e);if(!a)return;const n=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);await this.applyImageSelection(a,t,!1,!0),n?this.updateSharedStepStorage({...n}):(this.updateSharedStepStorage({originalAssetKey:e}),await this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name,{originalAssetKey:e}))}async applyImageSelection(t,e,a=!0,n=!0){const s=this.getSharedSteps(e).map(o=>{const l=o;if(l.getFrameService())return l.selectImage(t,a,n)});await Promise.all(s)}updateSharedStepStorage(t){this.bundle.getWorkflowExperiences().forEach(a=>a.getSteps().forEach(n=>{var s;if(n.getOverrideGlobalPropertyConfiguration(this.property.type))return;((s=n.getRaw().globalPropertyAspectConfigurations)==null?void 0:s.some(o=>{var l,c;return o.globalPropertyConfigurationId===((c=(l=this.bundle.getProductCollection())==null?void 0:l.getResource().globalPropertyConfiguration)==null?void 0:c.id)&&o.aspectName===this.property.name}))&&a.getWorkflowManager().updateStorage(n.getId(),{framePatternData:t})}))}}class fr extends ke{constructor(t,e){super(t,e)}getText(){const t=this.getStateValue();return t||""}async setText(t){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t),this.applyTextSelection(t)])}async applyGlobalState(t){const e=this.getStateValue();if(!e)return Promise.resolve();await this.applyTextSelection(e,t)}async applyTextSelection(t,e){const n=this.getSharedSteps(e).map(i=>{i.setText(t)});await Promise.all(n)}}class Fa extends ke{constructor(t,e,a){super(t,e),this.optionResource=a}async initDefaultVariant(){var e,a;const t=(a=(e=this.optionResource)==null?void 0:e.variants)==null?void 0:a.find(n=>{var i,s;return n.id===((s=(i=this.optionResource)==null?void 0:i.defaultVariant)==null?void 0:s.id)});t&&await this.selectVariant(new rt(t))}getCurrentVariant(){var e,a;if(!this.optionResource)return;const t=this.getStateValue();if(t){const n=(a=this.optionResource.variants)==null?void 0:a.find(i=>i.id===t);return n?new rt(n):void 0}else{const n=(e=this.optionResource.variants)==null?void 0:e.find(i=>{var s,o;return i.id===((o=(s=this.optionResource)==null?void 0:s.defaultVariant)==null?void 0:o.id)});return n?new rt(n):void 0}}getAvailableVariants(){var e,a;return(((a=(e=this.optionResource)==null?void 0:e.variants)==null?void 0:a.filter(n=>n.enabled))||[]).map(n=>new rt(n))}getAllVariants(){var e;return(((e=this.optionResource)==null?void 0:e.variants)||[]).map(a=>new rt(a))}async selectVariant(t){console.log(`Selecting variant ${t.getId()}`),await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.getId()),this.applyVariantSelection(t)])}async applyGlobalState(t){var n,i;const e=this.getStateValue();if(!e)return Promise.resolve();const a=(i=(n=this.optionResource)==null?void 0:n.variants)==null?void 0:i.find(s=>s.id===e);return a?(console.log(`Applying global state using variant ${a.id} for aspect ${e}`),this.applyVariantSelection(new rt(a),t)):Promise.resolve()}async applyVariantSelection(t,e){const n=this.getSharedSteps(e).map(i=>i.selectVariant(t));await Promise.all(n)}}class oa extends Fa{constructor(t,e,a){super(t,e,a)}async selectVariant(t){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.getId()),this.applyColorVariant(t)])}async applyGlobalState(t){var i,s,o;const e=this.getStateValue();if(!e)return Promise.resolve();const a=(s=(i=this.optionResource)==null?void 0:i.variants)==null?void 0:s.find(l=>l.id===e);if(!a)return Promise.resolve();await this.applyColorVariant(new rt(a),t);const n=(o=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name))==null?void 0:o.customColor;n&&this.setCustomColor(n)}async applyColorVariant(t,e){const n=this.getSharedSteps(e).map(i=>{switch(i.getType()){case b.Shape:return i.selectVariant(t);case b.Text:return i.setFillColor({fill:t.getColor(),stroke:t.getColor(),variant:t.getResource()})}});await Promise.all(n)}setCustomColor(t){this.getSharedSteps().forEach(a=>a.setCustomColor(t)),this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name,{customColor:t})}getCustomColor(){var t,e;return((t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name))==null?void 0:t.customColor)||((e=this.getCurrentVariant())==null?void 0:e.getColor())||"#ffffff"}}class Al{constructor(t,e,a,n,i){this.bundleId=t,this.bundleOwnerId=e,this.configuration=a,this.bundleOptions=i;const s=i==null?void 0:i.existingGlobalPropertyState;this.initPromise=s?Promise.resolve(s).then(()=>{this.globalPropertyState=s}):this.createGlobalPropertyState().then(o=>{this.globalPropertyState=o}),this.onGlobalPropertyStateChange=n}setBundleOptions(t){this.bundleOptions=t}getBundleOptions(){return this.bundleOptions}setConfiguration(t){this.configuration=t}getInitializationPromise(){return this.initPromise}getGlobalPropertyState(){return this.globalPropertyState}async setGlobalPropertyState(t){this.globalPropertyState||await this.initPromise;const e=Pt(this.globalPropertyState);this.globalPropertyState={...t,id:e.id},await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(e,this.globalPropertyState)}getAspect(t){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const e=this.globalPropertyState.aspects.find(a=>a.name===t);if(e)return e.value}getAspectStorage(t){var e;if(!this.globalPropertyState)throw new Error("Global property state not initialized");return(e=this.globalPropertyState.aspects.find(a=>a.name===t))==null?void 0:e.storage}async setAspect(t,e,a){if(!this.globalPropertyState)throw new Error("Global property state not initialized");if(!this.configuration)throw new Error("Global property configuration not linked to the state manager.");const n=this.configuration.aspects.find(o=>o.name===t);if(!n)throw new Error(`Failed to find configuration aspect with name: ${t}`);const i=Pt(this.globalPropertyState),s=this.globalPropertyState.aspects.find(o=>o.name===t);s?(s.value=e,s.type=n.type,a!==void 0&&(s.storage=a!==null?a:void 0)):this.globalPropertyState.aspects.push({name:t,value:e,type:n.type,storage:a!==null?a:void 0}),await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(i,this.globalPropertyState)}async setAspectStorage(t,e){if(!this.globalPropertyState)throw new Error("Global property state not initialized");if(!this.configuration)throw new Error("Global property configuration not linked to the state manager.");const a=this.configuration.aspects.find(s=>s.name===t);if(!a)throw new Error(`Failed to find configuration aspect with name: ${t}`);const n=Pt(this.globalPropertyState),i=this.globalPropertyState.aspects.find(s=>s.name===t);i?(i.storage=e!==null?e:void 0,i.type=a.type):this.globalPropertyState.aspects.push({name:t,value:"",type:a.type,storage:e!==null?e:void 0}),await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(n,this.globalPropertyState)}async updateGlobalPropertyState(){var e,a;if(!this.globalPropertyState)throw new Error("Global property state not initialized");const t=await I.getShadowGraphqlClient().mutate({mutation:Ao,variables:{id:this.globalPropertyState.id,aspects:this.globalPropertyState.aspects.map(n=>{let i=n.type&&n.storage?{}:void 0;if(i)switch(n.type){case tt.FileUpload:{i.fileUpload=n.storage;break}case tt.Option:{i.option=n.storage;break}case tt.ColorOption:{i=n.storage;break}}return{name:n.name,value:n.value,type:n.type,storage:i}})},context:{headers:{bundleOwnerId:this.bundleOwnerId,...(e=this.bundleOptions)==null?void 0:e.additionalHeaders}}});if((a=t.data)!=null&&a.globalPropertyStateUpdate)this.globalPropertyState=t.data.globalPropertyStateUpdate;else throw new Error("Unable to update global property state")}async createGlobalPropertyState(){var e,a;const t=await I.getShadowGraphqlClient().mutate({mutation:co,variables:{bundleId:this.bundleId},context:{headers:{bundleOwnerId:this.bundleOwnerId,...(e=this.bundleOptions)==null?void 0:e.additionalHeaders}}});if((a=t.data)!=null&&a.globalPropertyStateCreate&&t.data.globalPropertyStateCreate.id)return t.data.globalPropertyStateCreate;throw new Error(`Unable to create global property state for bundle: ${this.bundleId}`)}}class ul{constructor(t){this.setState(t)}setState(t){t&&(this.state=JSON.parse(t))}applyStateToWorkflowExperience(t){var s;if(!this.state||!((s=t==null?void 0:t.getWorkflowManager())!=null&&s.getModelContainer()))return;const e=this.state.transactions.find(o=>o.transactionId===t.getWorkflowManager().getTransaction().id);if(!e)return;const a=this.getTransformToApply(e);if(!a)return;const n=this.flipTransform(a,t.getWorkflowManager().getPreviewService()),i=t.getWorkflowManager().getModelContainer();i.position=n.position,i.rotation=n.rotation,i.scale=n.scale}getTransformToApply(t){return t.activeTransform&&t.transforms?t.transforms[t.activeTransform]:t.transform}updateWorkflowExperienceTransform(t,e,a){const n=t.getWorkflowManager().getTransaction().id;this.state?this.state.transactions||(this.state.transactions=[]):this.state={transactions:[]};const i=this.state.transactions.find(s=>s.transactionId===n);i?(i.transforms||(i.transforms={}),i.transforms[e]=a):this.state.transactions.push({transactionId:n,activeTransform:e,transforms:{[e]:a}})}activateWorkflowExperienceTransform(t,e){var l,c;if(!((l=t==null?void 0:t.getWorkflowManager())!=null&&l.getModelContainer())||!this.state)return;const a=t.getWorkflowManager().getTransaction().id,n=this.state.transactions.find(d=>d.transactionId===a),i=(c=n==null?void 0:n.transforms)==null?void 0:c[e];if(!i)return;const s=this.flipTransform(i,t.getWorkflowManager().getPreviewService()),o=t.getWorkflowManager().getModelContainer();o.position=s.position,o.rotation=s.rotation,o.scale=s.scale,n.activeTransform=e}removeStateForTransaction(t){if(!this.state||!this.state.transactions)return;const e=this.state.transactions.findIndex(a=>a.transactionId===t);e!==-1&&this.state.transactions.splice(e,1)}getSerializedState(){if(this.state)return JSON.stringify(this.state)}flipTransform(t,e){return e&&e.flipTransform?e.flipTransform(t.position,{x:t.rotation.x*Math.PI/180,y:t.rotation.y*Math.PI/180,z:t.rotation.z*Math.PI/180},t.scale):{position:t.position,rotation:{x:t.rotation.x*Math.PI/180,y:t.rotation.y*Math.PI/180,z:t.rotation.z*Math.PI/180},scale:t.scale}}}class pr{constructor(t){this.fullFetched=!1,this.collection=t;const e=this.collection.productCollectionProducts;e&&e.length>0&&(this.fullFetched=!0)}getId(){return this.collection.id}getName(){return this.collection.name}getDescription(){return this.collection.description||""}getImage(){return this.collection.image}getProducts(){if(!this.collection.productCollectionProducts)throw new Error("Failed to find products on collection. Ensure you fetch them first!");return this.collection.productCollectionProducts.map(t=>new Gt(t))}async fetchProducts(t){if(this.fullFetched)return this.collection.productCollectionProducts.map(a=>new Gt(a));const e=await I.getShadowGraphqlClient().query({query:mo,variables:{id:this.getId(),productIds:t},errorPolicy:"all"});return t||(this.fullFetched=!0),this.collection.productCollectionProducts=e.data.productCollections[0].productCollectionProducts||[],this.collection.productCollectionProducts.map(a=>new Gt(a))}async filterProducts(t){var i,s;const e=await I.getShadowGraphqlClient().query({query:fo,errorPolicy:"all",variables:{id:this.getId(),filters:{link:"And",metafields:t}}});if(!((i=e.data)!=null&&i.productCollections)||((s=e.data)==null?void 0:s.productCollections.length)===0)throw new Error("Failed to filter product collection products.");const a=this.getProducts(),n=e.data.productCollections[0].productCollectionProducts.map(o=>o.product.id);return a.filter(o=>n.includes(o.getId()))}async fetchProductsFeed(t,e,a){var s,o,l,c,d,A;if(this.fullFetched){const u=await(a?this.filterProducts(a):this.fetchProducts());return{total:u.length,items:u.slice(t,t+e)}}const n=await I.getShadowGraphqlClient().query({query:po,variables:{id:this.getId(),limit:e,offset:t,filters:a?{link:"And",metafields:a}:void 0},errorPolicy:"all"});return{items:((l=(o=(s=n==null?void 0:n.data)==null?void 0:s.productCollections)==null?void 0:o[0].productCollectionProductsFeed)==null?void 0:l.items.map(u=>new Gt(u)))||[],total:((A=(d=(c=n==null?void 0:n.data)==null?void 0:c.productCollections)==null?void 0:d[0].productCollectionProductsFeed)==null?void 0:A.total)??0}}getTransformCollection(){if(this.collection.transformCollection)return new Cr(this.collection.transformCollection)}getResource(){return this.collection}}class Gt{constructor(t){this.product=t.product,this.productResource=t}getId(){return this.product.id}getName(){return this.product.name}getIntegrationByType(t,e){const n=(this.product.integrationProducts||[]).find(i=>{var c,d,A;const s=(c=i.integration)==null?void 0:c.type,o=((d=i.integration)==null?void 0:d.type)===t,l=e?((A=i.integration)==null?void 0:A.externalIntegrationId)===e:!0;return s&&o&&l});if(!n)throw new Error("Failed to find requested integration type on product. This is generally due to a configuration error");return n}getCurrentIntegration(){const e=(this.product.integrationProducts||[]).find(a=>{var n;return(n=a.integration)==null?void 0:n.isCurrent});if(!e)throw new Error(`Product: ${this.productResource.id} is not linked to this current integration. This is generally due to a configuration error.`);return e}getDefaultWorkflow(){const t=this.product.workflows;if(t===void 0)throw new dt("Called getDefaultWorkflow() before fetching collection products. Use collection.fetchProducts() first to ensure the data is available.");if(t.length===0)throw new dt("Called getDefaultWorkflow() but no workflows on requested product. Ensure at least 1 workflow is assigned to this product.");const e=this.productResource.workflowId;if(e){const a=t.find(n=>n.workflowName===e);if(a)return new Ft(a)}if(t.length===1)return console.warn("Called getDefaultWorkflow() but no default was configured. There is only one workflow available so we will fall back to using this!"),new Ft(t[0]);throw new dt("Called getDefaultWorkflow() but no default workflow is configured for the requested product. Multiple workflows exist so we can't assume!")}getAllWorkflows(){if((this.product.workflows||[]).length===0)throw new dt("No workflows on configured product. Ensure at least 1 workflow is assigned to this product.");return this.product.workflows.sort((e,a)=>(e.index??0)-(a.index??0)).map(e=>new Ft(e))}getIntegrations(){return this.product.integrationProducts||[]}getResource(){return this.product}getBasePrice(t){var n,i,s,o;const e=this.product.basePrice||0;if(!t)return e;if(!t.integrationType&&!t.externalId&&!t.integrationId)throw new Error("You must provide at least one of the following fields on the includeAdditionalProduct object: integrationType, externalId, integrationId");let a;return t.integrationId?a=(n=this.product.integrationProducts)==null?void 0:n.find(l=>{var c;return((c=l.integration)==null?void 0:c.id)===t.integrationId}):t.externalId?a=(i=this.product.integrationProducts)==null?void 0:i.find(l=>{var c;return((c=l.integration)==null?void 0:c.externalIntegrationId)===t.externalId}):a=(s=this.product.integrationProducts)==null?void 0:s.find(l=>{var c;return((c=l.integration)==null?void 0:c.type)===t.integrationType}),(o=a==null?void 0:a.additionalIntegrationProduct)!=null&&o.product?e+(a.additionalIntegrationProduct.product.basePrice||0):e}}class Ft{constructor(t){this.workflow=t}getId(){return this.workflow.workflowName}getName(){return this.workflow.friendlyName}getThumbnail(){return this.workflow.imageUrl}}class Cr{constructor(t){this.collection=t}getId(){return this.collection.id}getName(){return this.collection.name}getTransforms(){return this.collection.transforms.map(t=>new wr(t))}}class wr{constructor(t){this.transform=t}getId(){return this.transform.id}getName(){return this.transform.name}get(){return{position:this.transform.position,rotation:this.transform.rotation,scale:this.transform.scale}}}class je{constructor(t,e,a,n,i,s){var c,d,A;this.eventListeners=new Map,this.workflowExperiences=[],this.client=t,this.id=e.id,this.name=e.name||"",this.shareActions=e.bundleShareActions,this.workflowViewerLink=e.workflowViewerLink,this.workflowViewerAmendLink=e.workflowViewerAmendLink,this.ownerId=i,this.metadata=new Map(((c=e.metadata)==null?void 0:c.map(u=>[u.key,u.value]))||[]),this.completed=e.completed??!1,this.productCollection=e.productCollection,this.bundleStateManager=new ul(e.bundleStateData);const o=(d=this.productCollection)==null?void 0:d.globalPropertyConfiguration;this.globalConfigurationPropertyId=o==null?void 0:o.id,this.globalPropertyStateManager=new Al(this.id,this.ownerId,o,this.checkConditionalHandlesChanged.bind(this),s),this.globalPropertyHandleService=new dl(this),this.setPreviewService(a);const l=new Promise((u,h)=>{this.globalPropertyHandleService.getHandles().then(g=>{const m=g.map(f=>{if(f.getType()===tt.ColorOption||f.getType()===tt.Option)return f.initDefaultVariant()});Promise.all(m).then(u).catch(h)})});this.initializationPromise=Promise.all([this.loadExistingWorkflowExperiences(((A=e.transactions)==null?void 0:A.map(u=>u.id))||[],{...n,bundleOwnerId:i}),this.globalPropertyStateManager.getInitializationPromise(),l]),this.initializationPromise.catch(u=>{console.error(`Bundle initialization failed: ${u}`)})}setBundleOptions(t){this.globalPropertyStateManager.setBundleOptions(t)}getInitializationPromise(){return this.initializationPromise}addEventListener(t,e){this.eventListeners.set(t,[...this.eventListeners.get(t)||[],e])}removeEventListener(t,e){const a=this.eventListeners.get(t)||[],n=a.indexOf(e);n>-1&&a.splice(n,1)}getClient(){return this.client}getId(){return this.id}getName(){return this.name}setName(t){return this.name=t,this.updateBundle()}getMetadata(){return new Map(this.metadata)}setMetadata(t){return this.metadata=new Map(t),this.updateBundle()}setNameAndMetadata(t,e){return this.name=t,this.metadata=new Map(e),this.updateBundle()}hasGlobalProperties(){var t;return!!((t=this.productCollection)!=null&&t.globalPropertyConfiguration)}getGlobalPropertyConfiguration(){var t;return(t=this.productCollection)==null?void 0:t.globalPropertyConfiguration}async getGlobalProperties(){return this.globalPropertyHandleService.applyConditionsFromState(await this.globalPropertyHandleService.getHandles(),this.getGlobalPropertyStateManager().getGlobalPropertyState())}getGlobalPropertyStateManager(){return this.globalPropertyStateManager}async getGlobalPropertyTotalSubunits(){return(await this.globalPropertyHandleService.getHandles()).filter(a=>a.getType()===tt.Option).map(a=>{var n;return((n=a.getCurrentVariant())==null?void 0:n.getPrice())||0}).reduce((a,n)=>a+n,0)}getTotalSubunits(){return this.workflowExperiences.map(t=>t.getTotalPriceSubunits()).reduce((t,e)=>t+e,0)}getProductCollection(){return this.productCollection?new pr(this.productCollection):void 0}async addWorkflowExperience(t){t.setBundle(this),await this.appendWorkflowExperience(t),await this.injectExperienceIntoPreviewService(t),await t.getWorkflowManager().getInitializationPromise();const e=await this.getGlobalProperties();for(const a of e)await a.applyGlobalState([t])}async addWorkflowExperiences(t){const e=t.map(o=>o.getWorkflowManager().getTransaction().id),a=e.map(o=>this.workflowExperiences.find(l=>l.getWorkflowManager().getTransaction().id===o));if(a.some(o=>!!o))throw new Error("Unable to add transaction to bundle - Already Exists: "+a.filter(o=>!!o).map(o=>o==null?void 0:o.getWorkflowManager().getTransaction().id).join(", "));const n=k.getMap("transactionOwnerIds")||new Map,i=e.map(o=>n.get(o));await I.getShadowGraphqlClient().mutate({mutation:Eo,variables:{id:this.id,transactionIds:e,transactionOwnerIds:i},context:{bundleOwnerId:this.ownerId}}).catch(o=>{console.error(o)}),this.workflowExperiences.push(...t);const s=async()=>{for(const l of t)l.setBundle(this),await this.injectExperienceIntoPreviewService(l);await Promise.all(t.map(l=>l.getWorkflowManager().getInitializationPromise()));const o=await this.getGlobalProperties();for(const l of o)await l.applyGlobalState(t)};await Promise.all([this.updateTransactionOrder(),s()]),this.workflowExperiences.forEach(o=>o.checkForPriceBreakChanges())}async appendWorkflowExperience(t,e=!0){const a=t.getWorkflowManager().getTransaction().id;if(this.workflowExperiences.find(o=>o.getWorkflowManager().getTransaction().id===a))throw new Error("Unable to add transaction to bundle - Already Exists!");const s=(k.getMap("transactionOwnerIds")||new Map).get(a);await I.getShadowGraphqlClient().mutate({mutation:So,variables:{id:this.id,transactionId:a},context:{bundleOwnerId:this.ownerId,transactionOwnerId:s}}),e&&(this.workflowExperiences.push(t),this.workflowExperiences.forEach(o=>o.checkForPriceBreakChanges()))}async removeWorkflowExperience(t){const e=this.workflowExperiences.indexOf(t);await this.removeTransaction(e,this.workflowExperiences[e].getWorkflowManager().getTransaction())}async removeWorkflowExperiences(t){await this.removeTransactions(t.map(e=>e.getWorkflowManager().getTransaction()))}async removeWorkflowExperienceByTransaction(t){const e=this.workflowExperiences.findIndex(a=>a.getWorkflowManager().getTransaction().id===t.id);await this.removeTransaction(e,t)}async removeWorkflowExperiencesByTransactions(t){await this.removeTransactions(t)}async removeTransaction(t,e,a=!0){if(t>-1){const n=this.workflowExperiences.find(i=>i.getWorkflowManager().getTransaction().id===e.id);n.setBundle(void 0),this.previewService&&n.getWorkflowManager().ejectFromPreviewService(),this.bundleStateManager.removeStateForTransaction(e.id),await I.getShadowGraphqlClient().mutate({mutation:vo,variables:{id:this.id,transactionId:e.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([i,s])=>({key:i,value:s})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),a&&(this.workflowExperiences.splice(t,1),this.workflowExperiences.forEach(i=>i.checkForPriceBreakChanges()),n.checkForPriceBreakChanges(),await this.updateTransactionOrder())}else throw new Error("Unable to remove workflow experience from bundle - Not Found! - "+e.id)}async removeTransactions(t){const e=t.map(n=>this.workflowExperiences.findIndex(i=>i.getWorkflowManager().getTransaction().id===n.id));if(e.some(n=>n===-1))throw new Error("Unable to remove workflow experience from bundle - The following aren't included in the bundle: "+t.filter((n,i)=>e[i]===-1).map(n=>n.id).join(", "));const a=t.map(n=>this.workflowExperiences.splice(this.workflowExperiences.findIndex(i=>i.getWorkflowManager().getTransaction().id===n.id),1)[0]);a.forEach(n=>n.setBundle(void 0)),[...this.workflowExperiences,...a].forEach(n=>n.checkForPriceBreakChanges()),this.previewService&&a.forEach(n=>n.getWorkflowManager().ejectFromPreviewService()),t.forEach(n=>this.bundleStateManager.removeStateForTransaction(n.id)),await I.getShadowGraphqlClient().mutate({mutation:Bo,variables:{id:this.id,transactionIds:t.map(n=>n.id),name:this.name,metadata:Array.from(this.metadata.entries()).map(([n,i])=>({key:n,value:i})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),await this.updateTransactionOrder()}async insertWorkflowExperience(t,e){await this.appendWorkflowExperience(t,!1),this.workflowExperiences.splice(e,0,t),await Promise.all([this.updateTransactionOrder(),(async()=>{await this.injectExperienceIntoPreviewService(t);const a=await this.getGlobalProperties();await Promise.all(a.map(n=>n.applyGlobalState([t])))})()])}async replaceWorkflowExperience(t,e){if(t<0||t>=this.workflowExperiences.length)throw new Error("Unable to replace workflow experience in bundle - Index out of range!");const a=this.workflowExperiences[t];if(a.getWorkflowManager().getTransaction().id===e.getWorkflowManager().getTransaction().id)throw new Error("Unable to replace workflow experience in bundle - Same transaction!");await Promise.all([this.removeTransaction(t,a.getWorkflowManager().getTransaction(),!1),this.appendWorkflowExperience(e,!1)]),this.workflowExperiences[t]=e,await Promise.all([this.updateTransactionOrder(),(async()=>{await this.injectExperienceIntoPreviewService(e);const n=await this.getGlobalProperties();await Promise.all(n.map(i=>i.applyGlobalState([e])))})()])}async swapWorkflowExperiences(t,e){if(t<0||t>=this.workflowExperiences.length||e<0||e>=this.workflowExperiences.length)throw new Error("Unable to swap workflow experiences in bundle - Index out of range!");if(t===e)return;const a=this.workflowExperiences[t];this.workflowExperiences[t]=this.workflowExperiences[e],this.workflowExperiences[e]=a,await this.updateTransactionOrder()}getWorkflowExperiences(){return[...this.workflowExperiences]}async sortWorkflowExperiences(t){this.workflowExperiences=this.workflowExperiences.sort(t),await this.updateTransactionOrder()}getWorkflowExperienceCount(){return this.workflowExperiences.length}async addStakeholder(t,e){var i;const a=await I.getShadowGraphqlClient().mutate({mutation:Io,variables:{id:this.id,details:t,type:e||Yt.Owner},context:{bundleOwnerId:this.ownerId}});if(!((i=a.data)!=null&&i.bundleAddStakeholder))throw new Error("Bundle not found!");const n=a.data.bundleAddStakeholder.bundleStakeholders||[];this.storeStakeholderCustomers(n)}async removeStakeholder(t){var a;if(!((a=(await I.getShadowGraphqlClient().mutate({mutation:bo,variables:{id:this.id,emailAddress:t},context:{bundleOwnerId:this.ownerId}})).data)!=null&&a.bundleRemoveStakeholder))throw new Error("Bundle not found!")}async updateStakeholders(t){var n;const e=await I.getShadowGraphqlClient().mutate({mutation:Do,variables:{id:this.id,input:t},context:{bundleOwnerId:this.ownerId}});if(!((n=e.data)!=null&&n.bundleUpdateStakeholders))throw new Error("Bundle not found!");const a=e.data.bundleUpdateStakeholders.bundleStakeholders||[];this.storeStakeholderCustomers(a)}async getAllStakeholders(){const t=await I.getShadowGraphqlClient().query({query:Ja,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id},context:{bundleOwnerId:this.ownerId}});if(!t.data.bundles||t.data.bundles.length===0)throw new Error("Bundle not found!");const e=t.data.bundles[0].bundleStakeholders||[];return this.storeStakeholderCustomers(e),e}async getCurrentStakeholder(){const t=await I.getShadowGraphqlClient().query({query:Ja,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id},context:{bundleOwnerId:this.ownerId}});if(!t.data.bundles||t.data.bundles.length===0)throw new Error("Bundle not found!");return t.data.bundles[0].currentBundleStakeholder}storeStakeholderCustomers(t){t.forEach(e=>{e.customer&&this.client.storeCustomer(e.customer)})}async finish(t,e){if(this.completed)return await I.getShadowGraphqlClient().mutate({mutation:Mo,variables:{bundleId:this.id}}),{bundleId:this.id,items:[],bundleOwnerId:this.ownerId};const a=await jo(this.workflowExperiences.map(n=>({workflowManager:n.getWorkflowManager(),workflow:n.getWorkflowManager().getWorkflow(),layouts:n.getWorkflowManager().getLayouts(),getReducerState:()=>n.getCommandContext().getState(),product:n.getWorkflowManager().getProduct(),transaction:n.getWorkflowManager().getTransaction(),workflowSelections:n.getWorkflowManager().getWorkflowSelections(),designName:n.getWorkflowManager().getWorkflow().name,workflowMetadata:n.getWorkflowManager().getWorkflowMetadata()})),t??(()=>{}),e?(n,i)=>{const s=this.workflowExperiences.find(o=>o.getWorkflowManager().getTransaction().id===i);return s?e(s):(console.warn("SpiffCommerce - Bundle create design - Unable to find experience for transaction: "+i),Promise.resolve(void 0))}:void 0);return{bundleId:this.id,items:a,bundleOwnerId:this.ownerId}}async placeOrder(){const t=this.workflowExperiences.map(e=>({transactionId:e.getWorkflowManager().getTransaction().id,amountToOrder:e.getWorkflowManager().getTransaction().quantity||1}));return await this.getClient().placeOrder(t)}getPreviewService(){return this.previewService}async setPreviewService(t){if(this.workflowExperiences&&this.workflowExperiences.length>0&&(this.workflowExperiences.forEach(e=>e.getWorkflowManager().ejectFromPreviewService()),t))for(const e of this.workflowExperiences)await this.injectExperienceIntoPreviewService(e);t&&t.registerModelLoadEventListener&&t.registerModelLoadEventListener(this.onModelLoadEvent.bind(this)),this.previewService&&this.previewService!==t&&this.previewService.unregisterModelLoadEventListener&&this.previewService.unregisterModelLoadEventListener(this.onModelLoadEvent.bind(this)),this.previewService=t}updateWorkflowExperienceTransform(t,e,a){return this.bundleStateManager.updateWorkflowExperienceTransform(t,e,a),this.updateBundle()}activateWorkflowExperienceTransform(t,e){return this.bundleStateManager.activateWorkflowExperienceTransform(t,e),this.updateBundle()}async assignGlobalPropertyConfiguration(t){await I.getShadowGraphqlClient().mutate({mutation:Fo,variables:{bundleId:this.id,globalPropertyConfigurationId:t},context:{bundleOwnerId:this.ownerId}}),this.globalConfigurationPropertyId=t}async assignProductCollection(t){var a,n;const e=await I.getShadowGraphqlClient().mutate({mutation:Po(((a=this.globalPropertyStateManager.getBundleOptions())==null?void 0:a.eagerFetchProducts)??!1),variables:{id:this.id,productCollectionId:t??""},context:{bundleOwnerId:this.ownerId}});if((n=e.data)!=null&&n.bundleAssignProductCollection.productCollection&&!this.globalConfigurationPropertyId){this.productCollection=e.data.bundleAssignProductCollection.productCollection;const i=e.data.bundleAssignProductCollection.productCollection.globalPropertyConfiguration;this.globalPropertyStateManager.setConfiguration(i),this.globalConfigurationPropertyId=i==null?void 0:i.id}}onModelLoadEvent(t){t.eventType==="unload"||!t.modelContainer||(t.modelContainer.registerMaterialSelectedCallback(()=>this.onModelSelectedEvent(t.modelContainer,!0)),t.modelContainer.registerMaterialDeselectedCallback(()=>this.onModelSelectedEvent(t.modelContainer,!1)))}onModelSelectedEvent(t,e){if(t&&t.metadata&&t.metadata instanceof Map&&t.metadata.has("workflowManager")){const n=t.metadata.get("workflowManager").getTransaction(),i=this.workflowExperiences.find(s=>s.getWorkflowManager().getTransaction().id===n.id);i&&this.fireEvent(e?"workflow-experience-hover-enter":"workflow-experience-hover-exit",{workflowExperience:i})}}async injectExperienceIntoPreviewService(t){if(this.previewService){const e=t.getWorkflowManager().injectIntoPreviewService(this.previewService);try{this.bundleStateManager.applyStateToWorkflowExperience(t)}catch(a){console.error(`Unable to apply state to workflow experience: ${a}`)}await e}}async loadExistingWorkflowExperiences(t,e){if(t.length===0)return;const a=await this.client.getWorkflowExperiences(t.map(n=>({type:"transaction",transactionId:n})),e);if(a.forEach(n=>n.setBundle(this)),a.forEach(n=>n.checkForPriceBreakChanges()),this.workflowExperiences=a,this.previewService)for(const n of a)await this.injectExperienceIntoPreviewService(n)}async updateBundle(){var e;if(!((e=(await I.getShadowGraphqlClient().mutate({mutation:yo,variables:{id:this.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([a,n])=>({key:a,value:n})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}})).data)!=null&&e.bundleUpdate))throw new Error("Bundle not found!")}async updateTransactionOrder(){await I.getShadowGraphqlClient().mutate({mutation:xo,variables:{id:this.id,transactionIds:this.workflowExperiences.map(t=>t.getWorkflowManager().getTransaction().id)},context:{bundleOwnerId:this.ownerId}})}async checkConditionalHandlesChanged(t,e){const a=await this.globalPropertyHandleService.getHandles(),n=this.globalPropertyHandleService.applyConditionsFromState(a,t),i=this.globalPropertyHandleService.applyConditionsFromState(a,e);if((()=>{if(n.length!==i.length)return!0;for(let o=0;o<n.length;o++)if(n[o].getName()!==i[o].getName())return!0;return!1})()){this.fireEvent("conditional-global-properties-changed",{globalProperties:i});const o=i.filter(l=>!n.includes(l));await Promise.all(o.map(l=>l.applyGlobalState()))}}fireEvent(t,e){(this.eventListeners.get(t)||[]).forEach(n=>n({bundle:this,event:t,data:e}))}getShareActions(){return this.shareActions}getWorkflowViewerLink(){return this.workflowViewerLink}getWorkflowViewerAmendLink(){return this.workflowViewerAmendLink}async approve(t){await I.getShadowGraphqlClient().mutate({mutation:To,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id,note:t}})}async reject(t){await I.getShadowGraphqlClient().mutate({mutation:Qo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id,note:t}})}}const hl=S.gql`
3265
2004
  mutation processFlowCreate($processFlowId: String!, $inputs: [String]!) {
3266
2005
  processExecutionCreate(processFlowId: $processFlowId, inputs: $inputs) {
3267
2006
  id
3268
2007
  }
3269
2008
  }
3270
- `;class Yn{async execute(t,e,A){var g,d,B;const i=(d=(g=(await y.getShadowGraphqlClient().mutate({mutation:Ir,variables:{processFlowId:t,inputs:[...e.map(h=>h.getValueForTransmission())]}})).data)==null?void 0:g.processExecutionCreate)==null?void 0:d.id;if(!i)throw new Error("Failed to create process execution.");function s(h){return new Promise(C=>{setTimeout(C,h)})}let o=!1,r=0,c,l;for(;!o;){c=await y.getShadowGraphqlClient().query({query:Q.gql`
2009
+ `;class yr{async execute(t,e,a){var A,u,h;const i=(u=(A=(await I.getShadowGraphqlClient().mutate({mutation:hl,variables:{processFlowId:t,inputs:[...e.map(g=>g.getValueForTransmission())]}})).data)==null?void 0:A.processExecutionCreate)==null?void 0:u.id;if(!i)throw new Error("Failed to create process execution.");function s(g){return new Promise(m=>{setTimeout(m,g)})}let o=!1,l=0,c,d;for(;!o;){c=await I.getShadowGraphqlClient().query({query:S.gql`
3271
2010
  query getProcessFlowExecution($ids: [String]!) {
3272
2011
  processExecutions(ids: $ids) {
3273
2012
  id
@@ -3280,7 +2019,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3280
2019
  }
3281
2020
  }
3282
2021
  }
3283
- `,variables:{ids:[i]}});const h=(B=c.data)==null?void 0:B.processExecutions[0];if(!c||!h)throw new Error("Failed to retrieve server response for execution.");if(h.failedAt)throw new Error("Execution has failed to complete. See Automation > FLows in Flight on partner account on SpiffCommerce Hub.");if(h.completedAt){o=!0,l=new Pn(h);break}r+=1;const C=A!=null&&A.repeats?A==null?void 0:A.repeats:5;if(r>=C)throw new Error("Maximum wait time exceeded for execution result.");await s(A!=null&&A.sleepTime?Math.max(A.sleepTime,500):2e3)}if(!l)throw new Error("Failed to retrieve server response for execution.");return Promise.resolve(l)}}class Pn{constructor(t){this.execution=t}getRaw(){return this.execution}getNodes(){return this.execution.nodes.map(t=>new zt(t))}getNodesByType(t){return this.execution.nodes.filter(e=>e.type===t).map(e=>new zt(e))}getInputs(){return this.execution.nodes.filter(t=>t.type==="StartTerminal").map(t=>new zt(t))}getOutputs(){return this.execution.nodes.filter(t=>t.type==="EndTerminal").map(t=>new zt(t))}getCompletedAt(){if(this.execution.completedAt)return new Date(this.execution.completedAt)}getFailedAt(){if(this.execution.failedAt)return new Date(this.execution.failedAt)}}class zt{constructor(t){this.node=t}getId(){return this.node.id}getType(){return this.node.type}getArtifacts(){return new Map(Object.entries(JSON.parse(this.node.artifacts).value))}getArtifactByName(t){return this.getArtifacts().get(t)}}class HA{constructor(t){this.value=t}getRaw(){return this.value}getValueForTransmission(){const t=this.value;return t.startsWith("[")?JSON.stringify(JSON.parse(t)):t}}var vn=(n=>(n.Transaction="Transaction",n.Bundle="Bundle",n.Product="Product",n.Variant="Variant",n.Option="Option",n.LineItem="LineItem",n.Asset="Asset",n))(vn||{});class Dr extends HA{constructor(t){super(`"${t}"`)}}class UA extends HA{constructor(t,e){if(e!=="Asset"&&!UA.validUUID(t))throw new Error("Invalid ID, must be a valid v4 UUID. https://www.uuidgenerator.net/");super(`{"isSpiffObject": true, "id": "${t}", "type": "${e}"}`)}static validUUID(t){return t.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)}}class yr extends HA{constructor(t){super(`[${t.map(e=>e.getRaw()).join(",")}]`)}}class rA{constructor(t){this.integrationProduct=t}getId(){return this.integrationProduct.id}getResource(){return this.integrationProduct}getBasePrice(){var A;if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.basePrice||0,e=(A=this.integrationProduct)==null?void 0:A.additionalIntegrationProduct;if(!e)return t;if(e&&!e.product)throw new Error("An additional integration product was found, but it does not have a product");return t+(e.product.basePrice||0)}getDefaultWorkflow(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.workflows||[];if(t.length===0)throw new Error("No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product.");return new Yt(t[0])}getAllWorkflows(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.workflows||[];if(t.length===0)throw new Error("No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product.");return t.sort((e,A)=>(e.index??0)-(A.index??0)).map(e=>new Yt(e))}}const aa=Q.gql`
2022
+ `,variables:{ids:[i]}});const g=(h=c.data)==null?void 0:h.processExecutions[0];if(!c||!g)throw new Error("Failed to retrieve server response for execution.");if(g.failedAt)throw new Error("Execution has failed to complete. See Automation > FLows in Flight on partner account on SpiffCommerce Hub.");if(g.completedAt){o=!0,d=new Sr(g);break}l+=1;const m=a!=null&&a.repeats?a==null?void 0:a.repeats:5;if(l>=m)throw new Error("Maximum wait time exceeded for execution result.");await s(a!=null&&a.sleepTime?Math.max(a.sleepTime,500):2e3)}if(!d)throw new Error("Failed to retrieve server response for execution.");return Promise.resolve(d)}}class Sr{constructor(t){this.execution=t}getRaw(){return this.execution}getNodes(){return this.execution.nodes.map(t=>new jt(t))}getNodesByType(t){return this.execution.nodes.filter(e=>e.type===t).map(e=>new jt(e))}getInputs(){return this.execution.nodes.filter(t=>t.type==="StartTerminal").map(t=>new jt(t))}getOutputs(){return this.execution.nodes.filter(t=>t.type==="EndTerminal").map(t=>new jt(t))}getCompletedAt(){if(this.execution.completedAt)return new Date(this.execution.completedAt)}getFailedAt(){if(this.execution.failedAt)return new Date(this.execution.failedAt)}}class jt{constructor(t){this.node=t}getId(){return this.node.id}getType(){return this.node.type}getArtifacts(){return new Map(Object.entries(JSON.parse(this.node.artifacts).value))}getArtifactByName(t){return this.getArtifacts().get(t)}}class ka{constructor(t){this.value=t}getRaw(){return this.value}getValueForTransmission(){const t=this.value;return t.startsWith("[")?JSON.stringify(JSON.parse(t)):t}}var Er=(r=>(r.Transaction="Transaction",r.Bundle="Bundle",r.Product="Product",r.Variant="Variant",r.Option="Option",r.LineItem="LineItem",r.Asset="Asset",r))(Er||{});class gl extends ka{constructor(t){super(`"${t}"`)}}class Ma extends ka{constructor(t,e){if(e!=="Asset"&&!Ma.validUUID(t))throw new Error("Invalid ID, must be a valid v4 UUID. https://www.uuidgenerator.net/");super(`{"isSpiffObject": true, "id": "${t}", "type": "${e}"}`)}static validUUID(t){return t.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)}}class ml extends ka{constructor(t){super(`[${t.map(e=>e.getRaw()).join(",")}]`)}}class la{constructor(t){this.integrationProduct=t}getId(){return this.integrationProduct.id}getResource(){return this.integrationProduct}getBasePrice(){var a;if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.basePrice||0,e=(a=this.integrationProduct)==null?void 0:a.additionalIntegrationProduct;if(!e)return t;if(e&&!e.product)throw new Error("An additional integration product was found, but it does not have a product");return t+(e.product.basePrice||0)}getDefaultWorkflow(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.workflows||[];if(t.length===0)throw new Error("No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product.");return new Ft(t[0])}getAllWorkflows(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.workflows||[];if(t.length===0)throw new Error("No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product.");return t.sort((e,a)=>(e.index??0)-(a.index??0)).map(e=>new Ft(e))}}const Xa=S.gql`
3284
2023
  query GetCustomer($emailAddress: String!) {
3285
2024
  customer(emailAddress: $emailAddress) {
3286
2025
  id
@@ -3291,7 +2030,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3291
2030
  }
3292
2031
  }
3293
2032
  }
3294
- `,Fr=Q.gql`
2033
+ `,fl=S.gql`
3295
2034
  mutation CustomerCreate($details: CustomerDetailsInput!) {
3296
2035
  customerCreate(details: $details) {
3297
2036
  id
@@ -3301,7 +2040,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3301
2040
  }
3302
2041
  }
3303
2042
  }
3304
- `,Mr=Q.gql`
2043
+ `,pl=S.gql`
3305
2044
  mutation CustomerAuthenticate($loginToken: String!) {
3306
2045
  customerAuthenticate(loginToken: $loginToken) {
3307
2046
  id
@@ -3331,11 +2070,11 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3331
2070
  }
3332
2071
  }
3333
2072
  }
3334
- `,Sr=Q.gql`
2073
+ `,Cl=S.gql`
3335
2074
  mutation CustomerGenerateVerificationCode($emailAddress: String!) {
3336
2075
  customerGenerateVerificationCode(emailAddress: $emailAddress)
3337
2076
  }
3338
- `,xr=Q.gql`
2077
+ `,wl=S.gql`
3339
2078
  mutation CustomerVerifyCode($emailAddress: String!, $verificationCode: String!) {
3340
2079
  customerVerifyCode(emailAddress: $emailAddress, verificationCode: $verificationCode) {
3341
2080
  id
@@ -3366,7 +2105,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3366
2105
  }
3367
2106
  }
3368
2107
  }
3369
- `,Yr=Q.gql`
2108
+ `,yl=S.gql`
3370
2109
  query CustomerMetafields($id: String!) {
3371
2110
  metafields(entityId: $id) {
3372
2111
  id
@@ -3384,13 +2123,13 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3384
2123
  }
3385
2124
  }
3386
2125
  }
3387
- `,Pr=async(n,t)=>{var a;const e=await y.getShadowGraphqlClient().query({query:$i(((a=t==null?void 0:t.assets)==null?void 0:a.metadata)||!1),errorPolicy:"all",variables:{ids:n}});if(e.error)throw e.error;if(e.errors)throw e.errors.forEach(i=>console.error(i)),new Error("Unable to read workflows. Consult GraphQL errors.");const A=e.data.workflows;if(A===void 0||A.length!==n.length)throw new Error(`Unable to read workflows: ${e.errors??"Length mismatch in response"}`);return A.forEach(i=>{i.steps.forEach(s=>{var o,r,c;delete s.data.__typename,(o=s.option)!=null&&o.id&&((r=s.option.defaultVariant)!=null&&r.asset&&T.cacheAsset(s.option.defaultVariant.asset),s.option.colorProfile&&T.cacheAsset(s.option.colorProfile),(c=s.option.variants)==null||c.forEach(l=>{l.asset&&T.cacheAsset(l.asset),l.thumbnail&&T.cacheAsset(l.thumbnail),l.material&&T.cacheMaterial(l.material)}),bt.set({id:s.option.id},Promise.resolve(s.option)))}),i.finalizeStepConfig||(i.finalizeStepConfig={}),i.finalizeStepConfig.termsMarkdown=i.partner.termsMarkdown}),A},vr=async(n,t)=>{const A=(await t).find(a=>a.id===n);if(!A)throw new Error(`Workflow not found: ${n}`);return A},GA=async(n,t)=>{const e=n.map(o=>bt.get({id:o,options:t})),A=n.filter((o,r)=>e[r]===void 0);if(A.length===0)return Promise.all(e);const a=Pr(A,t),i=A.map(o=>bt.set({id:o,options:t},vr(o,a))),s=e.filter(o=>o!==void 0);return await Promise.all(s.concat(i))},kr=async(n,t)=>(await GA([n],t))[0],Nr=n=>n.sort((t,e)=>t.index-e.index).map(t=>({id:b(),panelId:t.name,name:t.name,index:t.index,createdAt:new Date,updatedAt:new Date,transparentBackground:t.transparentBackground,height:t.height,width:t.width,previewRegion:t.previewRegion,useEditableArea:t.useEditableArea,editableArea:t.editableArea})),br=(n,t)=>{const e=n.workflowState,A=e?JSON.parse(e):void 0;return A?Object.values(A.layouts).map(a=>a.layout):Nr(t.panels)};class Rr{constructor(t){this.activeIntegration=void 0,this.updateTransactionState=async e=>{try{return y.getShadowGraphqlClient().mutate({...e,mutation:Ti})}catch(A){throw console.error(A),new lt("Critical - Unable to synchronize workflow state with server.")}},this.options=t,this.options.applicationKey&&ni(this.options.applicationKey),console.debug("------------------------"),console.debug("Spiff Commerce Core SDK"),console.debug("Version: 26.7.4"),console.debug(`Application Key Provided: ${!!this.options.applicationKey}`),console.debug("------------------------")}configure(t){dt.setHubUrl(t.hubUrl),dt.setServerUrl(t.serverUrl),dt.setServicesApiUrl(t.servicesApiUrl),this.marketplaceThemeInstallId=t.marketplaceThemeInstallId,this.marketplaceThemeInstallConfigurationId=t.marketplaceThemeInstallConfigurationId,t.bearerAuthenticationToken&&pa(t.bearerAuthenticationToken),this.options.applicationKey&&this.getIntegration()}getAssetManager(){return T}getCurrencyCode(){if(this.currencyCode===void 0)throw new Error("No currency code set.");return this.currencyCode}getFlowService(){if(!ii())throw new Error("Application key required to use Flow Service.");return new Yn}async getIntegration(){if(this.activeIntegration)return this.activeIntegration;if(!this.options.applicationKey)throw new Error("Cannot get current Integration without specifying an Application Key.");return this.activeIntegration=kn(this.options.applicationKey),this.activeIntegration}async canUseAddon(t){var e;try{return((e=(await this.getIntegration()).partner.activeAddons)==null?void 0:e.includes(t))??!1}catch(A){return console.error(A),!1}}async authenticateBundleFromLocalStorage(t){var a,i;const e=k.getMap("bundleOwnerIds");if(e!=null&&e.has(t))return Promise.resolve({success:!0,stakeholderType:Wt.Owner});const A=k.getMap("bundlePartnerIds")||new Map;if(A.has(t)){const s=A.get(t),r=(k.getMap("partnerCustomerIds")||new Map).get(s);if(r&&await this.authenticateCustomerId(r)){const l=(i=(a=this.customer)==null?void 0:a.bundleStakeholders)==null?void 0:i.find(g=>{var d;return((d=g.bundle)==null?void 0:d.id)===t});if(l)return Promise.resolve({success:!0,stakeholderType:l.type})}}return Promise.resolve({success:!1})}async authenticateTransactionFromLocalStorage(t){var l,g,d,B,h,C;const e=y.getShadowGraphqlClient(),A=await e.query({query:_i,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t}});if(!A.data.transactions||A.data.transactions.length===0)throw new Error(`Transaction not found: ${t}`);const a=A.data.transactions[0];if(!((g=(l=a.product)==null?void 0:l.partner)==null?void 0:g.id))throw new Error(`Unable to read transaction: ${t}`);if(a.isOrdered)return Promise.resolve({success:!1,transactionReadOnly:!0});const s=k.getMap("transactionOwnerIds");if(s!=null&&s.has(t))return Promise.resolve({success:!0,stakeholderType:Wt.Owner});const o=k.getMap("transactionCustomerIds");if(o!=null&&o.has(t)){const u=o.get(t);if(u&&await this.authenticateCustomerId(u)){const E=((B=(d=this.customer)==null?void 0:d.bundleStakeholders)==null?void 0:B.find(m=>{var f,p;return(p=(f=m.bundle)==null?void 0:f.transactions)==null?void 0:p.some(I=>I.id===t)}))||((C=(h=this.customer)==null?void 0:h.stakeholders)==null?void 0:C.find(m=>{var f;return((f=m.transaction)==null?void 0:f.id)===t}));if(E)return Promise.resolve({success:!0,stakeholderType:E.type})}}const c=(await e.query({query:ts,errorPolicy:"all",variables:{id:a.workflowId}})).data.workflow;if(!c)throw new Error(`Unable to read workflow: ${a.workflowId}`);return Promise.resolve({success:!1,theme:c.overrideTheme,customLogoLink:a.customLogoLink})}clearCustomer(){this.customer=void 0}clearCustomerForTransaction(t){const e=k.getMap("transactionCustomerIds");e!=null&&e.has(t)&&(e.delete(t),k.setMap("transactionCustomerIds",e))}async customerHasBundleTemplates(t){const a=(await y.getShadowGraphqlClient().query({query:aa,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;return a.id?a.hasBundleTemplates??!1:!1}getStakeholderTypeForTransaction(t){var A,a;const e=(a=(A=this.customer)==null?void 0:A.stakeholders)==null?void 0:a.find(i=>{var s;return((s=i.transaction)==null?void 0:s.id)===t});if(e)return e.type}async getOrCreateCustomer(t){var s;this.customer=void 0;const e=y.getShadowGraphqlClient(),a=(await e.query({query:aa,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;if(!a.id){const r=(s=(await e.mutate({mutation:Fr,errorPolicy:"all",fetchPolicy:"no-cache",variables:{details:{emailAddress:t}}})).data)==null?void 0:s.customerCreate;if(!r)throw new Error("Unable to create customer.");return this.storeCustomer(r),this.customer=r,{customer:r,isAuthenticated:!1}}this.storeCustomer(a);const i=await this.authenticateCustomerId(a.id);return{customer:this.customer||a,isAuthenticated:i}}getCustomer(){return this.customer}async authenticateCustomerId(t){var o;const e=y.getShadowGraphqlClient(),A=k.getMap("customerTokens");if(!(A!=null&&A.has(t)))return!1;const a=A.get(t);if(!a)return!1;const s=(o=(await e.mutate({mutation:Mr,errorPolicy:"all",fetchPolicy:"no-cache",variables:{loginToken:a}})).data)==null?void 0:o.customerAuthenticate;return s?(this.storeCustomer(s),VA(a),this.customer=s,!0):!1}async generateVerificationCode(t){await y.getShadowGraphqlClient().mutate({mutation:Sr,variables:{emailAddress:t}})}async verifyCode(t,e){var i,s;const a=(i=(await y.getShadowGraphqlClient().mutate({mutation:xr,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t,verificationCode:e}})).data)==null?void 0:i.customerVerifyCode;if(a!=null&&a.loginToken){if(!((s=a.partner)!=null&&s.id))throw new Error(`Unable to find customer: ${t}`);const o=k.getMap("customerTokens")||new Map;return o.set(a.id,a.loginToken),k.setMap("customerTokens",o),this.storeCustomer(a),VA(a.loginToken),this.customer={...a,loginToken:void 0},!0}return!1}async getCustomerMetafields(){var e;if(!((e=this.customer)!=null&&e.id))throw new Error("Customer must be logged in before calling this function.");return(await y.getShadowGraphqlClient().query({query:Yr,variables:{id:this.customer.id}})).data.metafields}async getNewBundle(t,e,A){var c,l,g,d,B;const i=(g=(await y.getShadowGraphqlClient().mutate({mutation:So(((l=(c=A==null?void 0:A.graphql)==null?void 0:c.productCollection)==null?void 0:l.eagerFetchProducts)||!1),variables:{collectionId:t,initialMetadata:e?Object.entries(e).map((h,C)=>({key:h[0],value:h[1]})):void 0,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},fetchPolicy:"no-cache"})).data)==null?void 0:g.bundleCreate;if(!(i!=null&&i.id))throw new Error("Unable to create bundle");const s=k.getMap("bundlePartnerIds")||new Map;s.set(i.id,i.partner.id),k.setMap("bundlePartnerIds",s);const o=k.getMap("bundleOwnerIds")||new Map;o.set(i.id,i.bundleOwnerId),k.setMap("bundleOwnerIds",o);const r=new ze(this,i,void 0,void 0,i.bundleOwnerId,{eagerFetchProducts:(B=(d=A==null?void 0:A.graphql)==null?void 0:d.productCollection)==null?void 0:B.eagerFetchProducts});return await r.getInitializationPromise(),r}async getExistingBundle(t,e,A,a){var u,w,E,m,f,p,I,D,F,x,Y;const i=k.getMap("bundleOwnerIds"),s=i==null?void 0:i.get(t),r=((u=Object.entries(localStorage).find(([P,v])=>P.startsWith("CognitoIdentityServiceProvider")&&P.endsWith("idToken")))==null?void 0:u[0])||"",c=localStorage.getItem(r),l={};c&&!fe(c)&&(l.Authorization=`Bearer ${c}`);const g={bundleOwnerId:s,...l,...(w=a==null?void 0:a.graphql)==null?void 0:w.additionalHeaders},d=await y.getShadowGraphqlClient().query({query:Io(((m=(E=a==null?void 0:a.graphql)==null?void 0:E.productCollection)==null?void 0:m.eagerFetchProducts)||!1),variables:{id:t},fetchPolicy:"no-cache",context:{headers:g}});if(!((f=d.data)!=null&&f.bundles)||((p=d.data)==null?void 0:p.bundles.length)===0||!((I=d.data)!=null&&I.bundles[0]))throw new Error(`Unable to find bundle: ${t}`);const B=(D=d.data)==null?void 0:D.bundles[0],h=k.getMap("bundlePartnerIds")||new Map;h.set(B.id,B.partner.id),k.setMap("bundlePartnerIds",h);const C=new ze(this,B,e,A,s,{additionalHeaders:(F=a==null?void 0:a.graphql)==null?void 0:F.additionalHeaders,eagerFetchProducts:(Y=(x=a==null?void 0:a.graphql)==null?void 0:x.productCollection)==null?void 0:Y.eagerFetchProducts,existingGlobalPropertyState:d.data.globalPropertyState});return await C.getInitializationPromise(),C}async duplicateBundle(t,e,A,a){var u,w,E,m,f,p,I,D;const i=(u=k.getMap("bundleOwnerIds"))==null?void 0:u.get(t),o=((w=Object.entries(localStorage).find(([F,x])=>F.startsWith("CognitoIdentityServiceProvider")&&F.endsWith("idToken")))==null?void 0:w[0])||"",r=localStorage.getItem(o),c={};r&&!fe(r)&&(c.Authorization=`Bearer ${r}`);const l={bundleOwnerId:i,...c,...(E=a==null?void 0:a.graphql)==null?void 0:E.additionalHeaders},d=(p=(await y.getShadowGraphqlClient().mutate({mutation:xo(((f=(m=a==null?void 0:a.graphql)==null?void 0:m.productCollection)==null?void 0:f.eagerFetchProducts)||!1),variables:{id:t,template:e,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId,duplicateTransactions:A},context:{headers:l},fetchPolicy:"no-cache"})).data)==null?void 0:p.bundleDuplicate;if(!(d!=null&&d.id))throw new Error("Unable to duplicate bundle");const B=k.getMap("bundlePartnerIds")||new Map;B.set(d.id,d.partner.id),k.setMap("bundlePartnerIds",B);const h=k.getMap("bundleOwnerIds")||new Map;h.set(d.id,d.bundleOwnerId),k.setMap("bundleOwnerIds",h);const C=new ze(this,d,void 0,void 0,d.bundleOwnerId,{eagerFetchProducts:(D=(I=a==null?void 0:a.graphql)==null?void 0:I.productCollection)==null?void 0:D.eagerFetchProducts});return await C.getInitializationPromise(),C}async getBundlesForCustomer(t){var i;if(!((i=this.customer)!=null&&i.id))throw new Error("Customer not authenticated.");const{includeMetadata:e,...A}=t;return(await y.getShadowGraphqlClient().query({query:Jo(e??!1),variables:{...A,id:this.customer.id},fetchPolicy:"no-cache"})).data.customerBundlesFeed}async getBundleStakeholders(){var i;if(!this.customer)throw new Error("Customer not authenticated.");const t=await y.getShadowGraphqlClient().query({query:Do,variables:{id:this.customer.id},fetchPolicy:"no-cache"});if(!((i=t.data)!=null&&i.customers)||t.data.customers.length===0)throw new Error("Unable to find customer.");const A=t.data.customers[0].bundleStakeholders||[],a=k.getMap("bundlePartnerIds")||new Map;return A.forEach(s=>{var o,r;(o=s.bundle)!=null&&o.id&&((r=s.bundle.partner)!=null&&r.id)&&a.set(s.bundle.id,s.bundle.partner.id)}),k.setMap("bundlePartnerIds",a),A}async getWorkflowExperience(t,e){if(!t)throw new Error("getWorkflowExperience has been called without an options object! This is not supported.");const A=await this.getWorkflowExperiences([t],t.graphql),a=A[0];return e&&await a.getWorkflowManager().injectIntoPreviewService(e(a.getWorkflowManager().getWorkflow())),A[0]}async getWorkflowExperiences(t,e){if(t.length===0)throw new lt("No options provided!");const A=y.getShadowGraphqlClient(),a=async p=>{var x,Y,P;if(p.length===0)return[];const I=p.map(v=>v.option.transactionId),D=await A.query({query:Gi,variables:{ids:I},errorPolicy:"all",fetchPolicy:"no-cache"}),F=D.data.transactions;if(F.length!==p.length){const v=((Y=(x=D.errors)==null?void 0:x[0])==null?void 0:Y.message)||"Unknown error";throw new lt(`Not all transactions were found: ${v}`)}return!this.activeIntegration&&((P=F[0].integrationProduct)!=null&&P.integration)&&(this.activeIntegration=Promise.resolve(F[0].integrationProduct.integration)),F.map((v,H)=>{var V;return{transaction:v,workflowId:v.workflowId,readOnly:((V=p.find(j=>j.option.transactionId===v.id))==null?void 0:V.option.readOnly)??!1,index:p[H].index}})},i=async p=>{var F,x,Y;if(p.length===0)return[];const I=await A.mutate({mutation:Ui,variables:{inputs:p.map(P=>({integrationProductId:P.option.type==="integration"?P.option.integrationProductId:void 0,externalIntegrationId:P.option.type==="external"?P.option.externalIntegrationId:void 0,externalProductId:P.option.type==="external"?P.option.externalProductId:void 0,workflowId:P.option.workflowId,designName:P.option.designName,claim:!0})),marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},errorPolicy:"all",fetchPolicy:"no-cache"}),D=(F=I.data)==null?void 0:F.transactionCreateMany;if(!D||D.length===0){const P=((Y=(x=I.errors)==null?void 0:x[0])==null?void 0:Y.message)||"Unknown error";throw new lt(`Failed to create transactions: ${P}`)}return D.map((P,v)=>({transaction:P,workflowId:P.workflowId,readOnly:!1,index:p[v].index}))},s=t.map((p,I)=>({option:p,index:I})),o=s.filter(p=>p.option.type==="transaction"),r=s.filter(p=>p.option.type==="integration"||p.option.type==="external"),c=JA(o,10),l=JA(r,10),g=(await Promise.all([...c.map(a),...l.map(i)])).flat(),d=[...new Set(g.map(p=>p.workflowId))],B=await GA(d,e),h=new Map(B.map(p=>[p.id,p])),C=k.getMap("transactionOwnerIds")||new Map,u=g.map(async p=>{var V;const{transaction:I,workflowId:D,readOnly:F,index:x}=p,Y=h.get(D),P=t[x];!C.get(I.id)&&I.transactionOwnerId&&C.set(I.id,I.transactionOwnerId);const v=C.get(I.id)||void 0,H={product:I.product,transaction:I,layouts:[],singleVariantsRenderable:(V=P==null?void 0:P.workflowConfiguration)==null?void 0:V.singleVariantsRenderable,stateMutationFunc:F?async()=>{throw new L("State mutation is forbidden in read only mode!")}:async j=>this.updateTransactionState({...j,context:{transactionOwnerId:v,bundleOwnerId:e==null?void 0:e.bundleOwnerId}}),readOnly:F,workflow:Y,isReloadedTransaction:P.type==="transaction"};if(P.type==="transaction"&&I.workflowState){const j=JSON.parse(I.workflowState);H.layouts=Object.values(j.layouts||{}).map(at=>at.layout),await AA(j),H.reloadedState=j}else if(!F&&P.workflowState){const j=JSON.parse(P.workflowState);H.layouts=Object.values(j.layouts||{}).map(at=>at.layout),await AA(j),H.reloadedState=j}else H.layouts=br(H.transaction,H.workflow);return H.renderableContextService=new Br(H.layouts),H.delayWorkflowStateSync=!0,{experienceOptions:H,index:x,options:P}}),w=await Promise.all(u);k.setMap("transactionOwnerIds",C);const m=w.sort((p,I)=>p.index-I.index).map(async p=>{const{experienceOptions:I,options:D}=p,F=new In(this,I);return await F.getWorkflowManager().getInitializationPromise(),D.type!=="transaction"&&this.customer&&await F.attachCustomerDetails({email:this.customer.emailAddress}),F}),f=await Promise.all(m);return f.forEach(p=>p.getWorkflowManager().setWorkflowStateSyncEnabled(!0)),f}storeCustomer(t){const e=k.getMap("partnerCustomerIds")||new Map;e.set(t.partner.id,t.id),k.setMap("partnerCustomerIds",e)}async getIntegrationProductById(t){var i,s;const a=(i=(await y.getShadowGraphqlClient().query({query:zi,variables:{ids:[t]},fetchPolicy:"no-cache",errorPolicy:"all"})).data)==null?void 0:i.integrationProducts;if(!a||a.length===0||!((s=a[0])!=null&&s.id))throw new Error("Integration product not found.");return new rA(a[0])}async getIntegrationProductFromExternalIds(t,e){var s;const i=(s=(await y.getShadowGraphqlClient().query({query:ji,variables:{externalProductId:e,externalIntegrationId:t},fetchPolicy:"no-cache",errorPolicy:"all"})).data)==null?void 0:s.integrationProductFromExternalIds;if(!(i!=null&&i.id))throw new Error("Integration product not found.");return new rA(i)}async getIntegrationProduct(t){return t.type==="integration"?this.getIntegrationProductById(t.integrationProductId):this.getIntegrationProductFromExternalIds(t.externalIntegrationId,t.externalProductId)}async getShareActionsForTransaction(t){const A=(k.getMap("transactionOwnerIds")||new Map).get(t)||void 0,a=await y.getShadowGraphqlClient().query({query:Oi,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t},context:{transactionOwnerId:A}});if(!a.data.transactions||a.data.transactions.length!==1)throw new Error(`Failed to fetch share actions for transaction: ${t}`);return a.data.transactions[0].transactionShareActions}async placeOrder(t){const e=await y.getShadowGraphqlClient().mutate({mutation:is,variables:{orderItems:t}});if(e.errors)throw new Error(e.errors[0].message);if(!e.data)throw new Error("Failed to create order: No order data in response.");return{id:e.data.orderCreate.id,internalId:e.data.orderCreate.internalId}}}const kn=async n=>(await y.getShadowGraphqlClient().query({query:As,errorPolicy:"all",fetchPolicy:"no-cache",context:{headers:{"x-application-key":n}}})).data.currentIntegration,Hr=async n=>{const e=await y.getShadowGraphqlClient().query({query:Li,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:n}});if(e.data.transactions.length!==0)return e.data.transactions[0]},Ur=async(n,t)=>{var A;return(A=(await y.getShadowGraphqlClient().query({query:es,errorPolicy:"all",variables:{themeConfigurationId:n,themeInstallId:t}})).data)==null?void 0:A.marketplaceThemeInstallConfiguration},Gr=async n=>{var e,A,a;return(a=(A=(e=(await y.getShadowGraphqlClient().query({query:ns,errorPolicy:"all",variables:{id:n}})).data)==null?void 0:e.bundles)==null?void 0:A[0])==null?void 0:a.marketplaceThemeInstallConfiguration},Tr=async n=>{var e,A,a;return(a=(A=(e=(await y.getShadowGraphqlClient().query({query:as,errorPolicy:"all",variables:{id:n}})).data)==null?void 0:e.transactions)==null?void 0:A[0])==null?void 0:a.marketplaceThemeInstallConfiguration};function Nn(n,t,e,A){const a=e.width*n.zoom,i=e.height*n.zoom;if(A){const o=n,r=Math.max(t.width/e.width,t.height/e.height);o.zoom=Math.max(r,n.zoom);const c=e.width*o.zoom,l=e.height*o.zoom;return o.x=Be(n.x,t.width-c,0),o.y=Be(n.y,t.height-l,0),o}const s=n;return s.x=Be(s.x,-a,t.width),s.y=Be(s.y,-i,t.height),s}function Be(n,t,e){return Math.min(Math.max(n,t),e)}class bn{constructor(t,e){this.minZoomScale=[.03],this.maxZoomScale=[20],this._debouncedUpdateFrameOffsets=oa(this.updateFrameOffsets,200),this.targetElements=[],this.onFrameDataChangeListeners=[],this.onZoomChangeListeners=[],this.forceImageCover=t,this.initialZoom=e,this.thresholdSettings={useThreshold:!1,invertThreshold:!1,threshold:128,thresholdSaturation:.5}}connectWorkflowManager(t,e){e&&t.addStepSpecificStorageCallback(async A=>{if(A){const a=A;if(a.currentFrameSources){let i=!1;for(let s=0;s<a.currentFrameSources.length;s++){const o=a.currentFrameSources[s],r=await oe(o),c=this.frameData?this.frameData[s]:void 0;sa(r,c)||(this.frameData||(this.frameData=new Array(a.currentFrameSources.length)),this.frameData[s]=r,i=!0)}i&&(this.onFrameDataChangeListeners.forEach(s=>s(this.frameData)),this.frameData&&this.imageData&&(this.recalculateOffsets(this.imageData),this.updateOffsets(this.offsets),this.recalculateZoomLimits(this.imageData,this.frameData)))}}},e),this.workflowManager=t,this.stepName=e}setTargetElements(t){this.targetElements=t}getFrameData(){return this.frameData}setFrameData(t){if(!t){this.frameData=void 0;return}t.forEach((e,A)=>{const a=Mt.get(e);a&&(this.frameData||(this.frameData=new Array(t.length)),this.frameData[A]=a)})}getImageData(){return this.imageData}getImageSrc(){if(this.imageData){if(this.imageData.svg){const t=Ya(this.imageData.svg,this.imageData.colors||{},!1);return gA(t)}return this.imageData.src}}getOffsets(){return this.offsets}setOffsets(t){this.offsets=t}setZoom(t,e,A,a){if(this.imageData&&this.offsets&&this.frameData){(!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length));const i=this.frameData.map((s,o)=>{const r=(e[o]-this.offsets[o].x)/this.offsets[o].zoom,c=(A[o]-this.offsets[o].y)/this.offsets[o].zoom,l=e[o]-r*t[o],g=A[o]-c*t[o];return{x:l,y:g,zoom:this.imageData.width*t[o]/this.imageData.width}});this.updateOffsets(i,a),this.onZoomChangeListeners.forEach(s=>s(t))}}setPatternData(t,e=!0){this.imageData=t,t&&this.frameData&&((e||!this.offsets)&&this.recalculateOffsets(t),this.updateOffsets(this.offsets,void 0,!0)),this.imageData&&this.frameData&&this.recalculateZoomLimits(this.imageData,this.frameData)}updateOffsets(t,e,A){const a=this.imageData;if(!a||!this.frameData)return;if(this.frameData.length!==t.length)throw new L("Frame data and offsets are not the same length. This is a bug. Please report it.");if(!this.offsets.some((s,o)=>!(t[o].x===s.x&&t[o].y===s.y&&t[o].zoom===s.zoom))&&!A){e&&e();return}(!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length)),this.frameData.forEach((s,o)=>{this.offsets[o]=Nn(t[o],s,this.imageData,this.forceImageCover)}),this._debouncedUpdateFrameOffsets(this.offsets,a,this.frameData,this.thresholdSettings,e)}getThresholdSettings(){return this.thresholdSettings}setThresholdSettings(t){this.thresholdSettings=t,this.imageData&&this.frameData&&this._debouncedUpdateFrameOffsets(this.offsets,this.imageData,this.frameData,t)}onFrameDataChanged(t){t(this.frameData),this.onFrameDataChangeListeners.push(t)}onZoom(t){this.onZoomChangeListeners.push(t)}updateFrameOffsets(t,e,A,a,i){if(!A||A.length===0||A.some(o=>!o))throw new L("Frame data not set. This is a bug");if(!this.workflowManager)throw new L("No workflow manager set, cannot update offsets.");const s=this.workflowManager.getCommandDispatcher();this.targetElements.forEach((o,r)=>{s(new G([new Ls(o,e,t[r]),new Os(o,a.useThreshold,a.invertThreshold,a.threshold,a.thresholdSaturation)]))}),this.stepName&&this.workflowManager.updateStorage(this.stepName,{frameOffsetsList:t}),i&&i()}recalculateZoomLimits(t,e){(this.minZoomScale.length!==e.length||this.maxZoomScale.length!==e.length)&&(this.minZoomScale=new Array(e.length),this.maxZoomScale=new Array(e.length)),e.forEach((A,a)=>{const i=Math.max(A.width/t.width,A.height/t.height);this.forceImageCover?(this.minZoomScale[a]=i,this.maxZoomScale[a]=i*2.5):(this.minZoomScale[a]=i/10,this.maxZoomScale[a]=i*2.5)})}recalculateOffsets(t){this.frameData&&((!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length)),this.frameData.forEach((e,A)=>{this.offsets[A]=pA(t,e,this.initialZoom&&!this.forceImageCover?{scale:this.initialZoom}:void 0,this.forceImageCover)}),this._debouncedUpdateFrameOffsets(this.offsets,t,this.frameData,this.thresholdSettings))}}class Jr{approveTransaction(t){throw new Error("Method not implemented.")}rejectTransaction(t){throw new Error("Method not implemented.")}getClient(){return this.client??{}}getWorkflowExperience(){return{}}setClient(t){this.client=t}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}async reset(){}updateStateWithServer(t){}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(t){}addPoller(t){}addConfirmCallback(t){}addEditedCallback(t){}addElementsCallback(t){}addInformationResultCallback(t){}addInitCallback(t){}addMakingAdjustmentsCallback(t){}addMandatoryCallback(t){}addMetadataCallback(t){}addSelectionCallback(t){}addStepSpecificStorageCallback(t,e){}addStorageCallback(t){}getCommandDispatcher(){return t=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getModelContainer(){}getProfanities(){return[]}getRegionElements(t){return[]}getSerializedStep(t,e){}getStepSpecificServices(t){}getTransaction(){return{id:""}}getTransactionCustomer(){}setTransactionCustomer(){}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(t){}markUpdateCompleted(t){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}getStepSelections(){return{}}setCurrentAdjustingStepId(t){}setEditedStatus(t,e){}setInformationResults(t){}setMandatoryFulfilled(t,e){}async setSelectionsAndElements(t,e,A){}toggleDesignConfirmed(){}updateMetadata(t,e){}async updateStorage(t,e){}injectIntoPreviewService(t){return Promise.resolve()}ejectFromPreviewService(){}setWorkflowStateSyncEnabled(t){}async updateTransactionShareActions(){}addValidationCallback(t){}setStepError(t,e,A){}getStepErrors(t){}getValidationErrors(){return{steps:new Map}}async updateTransactionStakeholders(){}getStepTags(t){return[]}}var Rn=(n=>(n.SelectFrame="SelectFrame",n.SelectImage="SelectImage",n.Position="Position",n))(Rn||{});class Hn extends At{constructor(t,e,A){super(t,e,A);const a=e.data;this.frameService=new bn(a.forceImageCover,a.initialZoomLevel),this.frameService.connectWorkflowManager(t,e.stepName)}selectVariant(t){const e=this.manager.getRegionElements(this.step.stepName);return rt.selectVariant(this.step,t.getResource(),e,this.manager,A=>this.setUpdateState(A))}onFrameDataChanged(t){this.frameService&&this.frameService.onFrameDataChanged(e=>{e&&t(e)})}async selectImage(t,e=!0,A=!0){var a;if(await rt.selectImage(this.step,t,this.manager,A),e){const i=((a=this.manager.getStepStorage(this.step.stepName))==null?void 0:a.framePatternData)||{};this.manager.updateStorage(this.step.stepName,{framePatternData:{...i,originalAssetKey:t.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0}})}}async canUseBackgroundRemover(){return this.manager.getClient().canUseAddon(Qe.BackgroundRemover)}async canRemoveBackground(){var t,e,A,a;return await this.canUseBackgroundRemover()&&this.hasOriginalImageSelection()&&!!((e=(t=this.frameService)==null?void 0:t.getImageData())!=null&&e.src)&&!((a=(A=this.frameService)==null?void 0:A.getImageData())!=null&&a.svg)}async removeBackgroundFromImageSelection(t=!0){var i;if(!await this.canUseBackgroundRemover())throw new Error("The current Integration does not have access to the Background Remover. Please call canUseBackgroundRemover to ensure you disable this feature when appropriate.");const e=await this.getOriginalImageSelection();if(!e)throw new Error("You must supply an image selection before attempting to remove the background.");const A=await T.removeBackgroundFromAsset(e);t&&await rt.selectImage(this.step,A,this.manager,!1);const a=((i=this.manager.getStepStorage(this.step.stepName))==null?void 0:i.framePatternData)||{};return this.manager.updateStorage(this.step.stepName,{framePatternData:{...a,backgroundRemovedAssetKey:A.key,useOriginalAsset:!t}}),A}changeColors(t){rt.changeColors(this.step,this.manager,t)}getImageData(){if(this.frameService)return this.frameService.getImageData()}async getColorOption(){return this.step.data.colorOption}getAvailableColors(){return this.step.data.colorPickerEnabled?rt.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}async getOriginalImageColors(){const t=this.getImageData();return t!=null&&t.svg?(await st(t.svg)).colors:void 0}getMaxAllowedColors(){return this.step.data.maxColors}getUniqueColorCount(){return rt.getUniqueColorCount(this.step,this.manager)}getCurrentFrameStep(t,e,A,a){return a&&a.length>1&&t===void 0?"SelectFrame":e||A||this.getImageData()?"Position":"SelectImage"}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasOverlayImageUrl(){return this.step.data.overlayImageUrl}getWhitelistedExtensions(){return[...this.step.data.whitelistedExtensions,...this.step.data.whitelistedExtensions.includes(".jpg")?[".jpeg"]:[]]}async getOriginalImageSelection(){var e,A;const t=(A=(e=this.manager.getStepStorage(this.step.stepName))==null?void 0:e.framePatternData)==null?void 0:A.originalAssetKey;if(t)return T.getLocalOrFromServer(t)}async getBackgroundRemovedImageSelection(){var e,A;const t=(A=(e=this.manager.getStepStorage(this.step.stepName))==null?void 0:e.framePatternData)==null?void 0:A.backgroundRemovedAssetKey;if(t)return T.getLocalOrFromServer(t)}hasOriginalImageSelection(){var t,e;return!!((e=(t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.framePatternData)!=null&&e.originalAssetKey)}hasBackgroundRemovedImageSelection(){var t,e;return!!((e=(t=this.getFrameStepStorage())==null?void 0:t.framePatternData)!=null&&e.backgroundRemovedAssetKey)}getUseOriginalImageSelection(){var t,e;return((e=(t=this.getFrameStepStorage())==null?void 0:t.framePatternData)==null?void 0:e.useOriginalAsset)??!1}async setUseOriginalImageSelection(t){var a;const e=((a=this.getFrameStepStorage())==null?void 0:a.framePatternData)||{};if(e.useOriginalAsset===t)return;const A=await this.getOriginalImageSelection();if(!A)throw new Error("You must provide an image selection before calling setUseOriginalImageSelection");if(t)await this.selectImage(A,!1,!1);else{const i=await this.getBackgroundRemovedImageSelection();if(!i)throw new Error("You must call removeBackgroundFromImageSelection before attempting to apply the image.");await this.selectImage(i,!1,!1)}this.manager.updateStorage(this.step.stepName,{framePatternData:{...e,useOriginalAsset:t}})}getFrameStepStorage(){return this.manager.getStepStorage(this.step.stepName)}}const Lr=Q.gql`
2126
+ `,Sl=async(r,t)=>{var n;const e=await I.getShadowGraphqlClient().query({query:Gi(((n=t==null?void 0:t.assets)==null?void 0:n.metadata)||!1),errorPolicy:"all",variables:{ids:r}});if(e.error)throw e.error;if(e.errors)throw e.errors.forEach(i=>console.error(i)),new Error("Unable to read workflows. Consult GraphQL errors.");const a=e.data.workflows;if(a===void 0||a.length!==r.length)throw new Error(`Unable to read workflows: ${e.errors??"Length mismatch in response"}`);return a.forEach(i=>{i.steps.forEach(s=>{var o,l,c;delete s.data.__typename,(o=s.option)!=null&&o.id&&((l=s.option.defaultVariant)!=null&&l.asset&&U.cacheAsset(s.option.defaultVariant.asset),s.option.colorProfile&&U.cacheAsset(s.option.colorProfile),(c=s.option.variants)==null||c.forEach(d=>{d.asset&&U.cacheAsset(d.asset),d.thumbnail&&U.cacheAsset(d.thumbnail),d.material&&U.cacheMaterial(d.material)}),Nt.set({id:s.option.id},Promise.resolve(s.option)))}),i.finalizeStepConfig||(i.finalizeStepConfig={}),i.finalizeStepConfig.termsMarkdown=i.partner.termsMarkdown}),a},El=async(r,t)=>{const a=(await t).find(n=>n.id===r);if(!a)throw new Error(`Workflow not found: ${r}`);return a},Ta=async(r,t)=>{const e=r.map(o=>Nt.get({id:o,options:t})),a=r.filter((o,l)=>e[l]===void 0);if(a.length===0)return Promise.all(e);const n=Sl(a,t),i=a.map(o=>Nt.set({id:o,options:t},El(o,n))),s=e.filter(o=>o!==void 0);return await Promise.all(s.concat(i))},vl=async(r,t)=>(await Ta([r],t))[0],Bl=r=>r.sort((t,e)=>t.index-e.index).map(t=>({id:Q(),panelId:t.name,name:t.name,index:t.index,createdAt:new Date,updatedAt:new Date,transparentBackground:t.transparentBackground,height:t.height,width:t.width,previewRegion:t.previewRegion,useEditableArea:t.useEditableArea,editableArea:t.editableArea})),Il=(r,t)=>{const e=r.workflowState,a=e?JSON.parse(e):void 0;return a?Object.values(a.layouts).map(n=>n.layout):Bl(t.panels)};class bl{constructor(t){this.activeIntegration=void 0,this.updateTransactionState=async e=>{try{return I.getShadowGraphqlClient().mutate({...e,mutation:ki})}catch(a){throw console.error(a),new dt("Critical - Unable to synchronize workflow state with server.")}},this.options=t,this.options.applicationKey&&Jr(this.options.applicationKey),console.debug("------------------------"),console.debug("Spiff Commerce Core SDK"),console.debug("Version: 26.7.6"),console.debug(`Application Key Provided: ${!!this.options.applicationKey}`),console.debug("------------------------")}configure(t){ut.setHubUrl(t.hubUrl),ut.setServerUrl(t.serverUrl),ut.setServicesApiUrl(t.servicesApiUrl),this.marketplaceThemeInstallId=t.marketplaceThemeInstallId,this.marketplaceThemeInstallConfigurationId=t.marketplaceThemeInstallConfigurationId,t.bearerAuthenticationToken&&pn(t.bearerAuthenticationToken),this.options.applicationKey&&this.getIntegration()}getAssetManager(){return U}getCurrencyCode(){if(this.currencyCode===void 0)throw new Error("No currency code set.");return this.currencyCode}getFlowService(){if(!Kr())throw new Error("Application key required to use Flow Service.");return new yr}async getIntegration(){if(this.activeIntegration)return this.activeIntegration;if(!this.options.applicationKey)throw new Error("Cannot get current Integration without specifying an Application Key.");return this.activeIntegration=vr(this.options.applicationKey),this.activeIntegration}async canUseAddon(t){var e;try{return((e=(await this.getIntegration()).partner.activeAddons)==null?void 0:e.includes(t))??!1}catch(a){return console.error(a),!1}}async authenticateBundleFromLocalStorage(t){var n,i;const e=k.getMap("bundleOwnerIds");if(e!=null&&e.has(t))return Promise.resolve({success:!0,stakeholderType:Yt.Owner});const a=k.getMap("bundlePartnerIds")||new Map;if(a.has(t)){const s=a.get(t),l=(k.getMap("partnerCustomerIds")||new Map).get(s);if(l&&await this.authenticateCustomerId(l)){const d=(i=(n=this.customer)==null?void 0:n.bundleStakeholders)==null?void 0:i.find(A=>{var u;return((u=A.bundle)==null?void 0:u.id)===t});if(d)return Promise.resolve({success:!0,stakeholderType:d.type})}}return Promise.resolve({success:!1})}async authenticateTransactionFromLocalStorage(t){var d,A,u,h,g,m;const e=I.getShadowGraphqlClient(),a=await e.query({query:ji,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t}});if(!a.data.transactions||a.data.transactions.length===0)throw new Error(`Transaction not found: ${t}`);const n=a.data.transactions[0];if(!((A=(d=n.product)==null?void 0:d.partner)==null?void 0:A.id))throw new Error(`Unable to read transaction: ${t}`);if(n.isOrdered)return Promise.resolve({success:!1,transactionReadOnly:!0});const s=k.getMap("transactionOwnerIds");if(s!=null&&s.has(t))return Promise.resolve({success:!0,stakeholderType:Yt.Owner});const o=k.getMap("transactionCustomerIds");if(o!=null&&o.has(t)){const f=o.get(t);if(f&&await this.authenticateCustomerId(f)){const C=((h=(u=this.customer)==null?void 0:u.bundleStakeholders)==null?void 0:h.find(w=>{var y,v;return(v=(y=w.bundle)==null?void 0:y.transactions)==null?void 0:v.some(E=>E.id===t)}))||((m=(g=this.customer)==null?void 0:g.stakeholders)==null?void 0:m.find(w=>{var y;return((y=w.transaction)==null?void 0:y.id)===t}));if(C)return Promise.resolve({success:!0,stakeholderType:C.type})}}const c=(await e.query({query:Wi,errorPolicy:"all",variables:{id:n.workflowId}})).data.workflow;if(!c)throw new Error(`Unable to read workflow: ${n.workflowId}`);return Promise.resolve({success:!1,theme:c.overrideTheme,customLogoLink:n.customLogoLink})}clearCustomer(){this.customer=void 0}clearCustomerForTransaction(t){const e=k.getMap("transactionCustomerIds");e!=null&&e.has(t)&&(e.delete(t),k.setMap("transactionCustomerIds",e))}async customerHasBundleTemplates(t){const n=(await I.getShadowGraphqlClient().query({query:Xa,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;return n.id?n.hasBundleTemplates??!1:!1}getStakeholderTypeForTransaction(t){var a,n;const e=(n=(a=this.customer)==null?void 0:a.stakeholders)==null?void 0:n.find(i=>{var s;return((s=i.transaction)==null?void 0:s.id)===t});if(e)return e.type}async getOrCreateCustomer(t){var s;this.customer=void 0;const e=I.getShadowGraphqlClient(),n=(await e.query({query:Xa,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;if(!n.id){const l=(s=(await e.mutate({mutation:fl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{details:{emailAddress:t}}})).data)==null?void 0:s.customerCreate;if(!l)throw new Error("Unable to create customer.");return this.storeCustomer(l),this.customer=l,{customer:l,isAuthenticated:!1}}this.storeCustomer(n);const i=await this.authenticateCustomerId(n.id);return{customer:this.customer||n,isAuthenticated:i}}getCustomer(){return this.customer}async authenticateCustomerId(t){var o;const e=I.getShadowGraphqlClient(),a=k.getMap("customerTokens");if(!(a!=null&&a.has(t)))return!1;const n=a.get(t);if(!n)return!1;const s=(o=(await e.mutate({mutation:pl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{loginToken:n}})).data)==null?void 0:o.customerAuthenticate;return s?(this.storeCustomer(s),$a(n),this.customer=s,!0):!1}async generateVerificationCode(t){await I.getShadowGraphqlClient().mutate({mutation:Cl,variables:{emailAddress:t}})}async verifyCode(t,e){var i,s;const n=(i=(await I.getShadowGraphqlClient().mutate({mutation:wl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t,verificationCode:e}})).data)==null?void 0:i.customerVerifyCode;if(n!=null&&n.loginToken){if(!((s=n.partner)!=null&&s.id))throw new Error(`Unable to find customer: ${t}`);const o=k.getMap("customerTokens")||new Map;return o.set(n.id,n.loginToken),k.setMap("customerTokens",o),this.storeCustomer(n),$a(n.loginToken),this.customer={...n,loginToken:void 0},!0}return!1}async getCustomerMetafields(){var e;if(!((e=this.customer)!=null&&e.id))throw new Error("Customer must be logged in before calling this function.");return(await I.getShadowGraphqlClient().query({query:yl,variables:{id:this.customer.id}})).data.metafields}async getNewBundle(t,e,a){var c,d,A,u,h;const i=(A=(await I.getShadowGraphqlClient().mutate({mutation:Co(((d=(c=a==null?void 0:a.graphql)==null?void 0:c.productCollection)==null?void 0:d.eagerFetchProducts)||!1),variables:{collectionId:t,initialMetadata:e?Object.entries(e).map((g,m)=>({key:g[0],value:g[1]})):void 0,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},fetchPolicy:"no-cache"})).data)==null?void 0:A.bundleCreate;if(!(i!=null&&i.id))throw new Error("Unable to create bundle");const s=k.getMap("bundlePartnerIds")||new Map;s.set(i.id,i.partner.id),k.setMap("bundlePartnerIds",s);const o=k.getMap("bundleOwnerIds")||new Map;o.set(i.id,i.bundleOwnerId),k.setMap("bundleOwnerIds",o);const l=new je(this,i,void 0,void 0,i.bundleOwnerId,{eagerFetchProducts:(h=(u=a==null?void 0:a.graphql)==null?void 0:u.productCollection)==null?void 0:h.eagerFetchProducts});return await l.getInitializationPromise(),l}async getExistingBundle(t,e,a,n){var f,p,C,w,y,v,E,B,x,P,F;const i=k.getMap("bundleOwnerIds"),s=i==null?void 0:i.get(t),l=((f=Object.entries(localStorage).find(([M,N])=>M.startsWith("CognitoIdentityServiceProvider")&&M.endsWith("idToken")))==null?void 0:f[0])||"",c=localStorage.getItem(l),d={};c&&!ye(c)&&(d.Authorization=`Bearer ${c}`);const A={bundleOwnerId:s,...d,...(p=n==null?void 0:n.graphql)==null?void 0:p.additionalHeaders},u=await I.getShadowGraphqlClient().query({query:ho(((w=(C=n==null?void 0:n.graphql)==null?void 0:C.productCollection)==null?void 0:w.eagerFetchProducts)||!1),variables:{id:t},fetchPolicy:"no-cache",context:{headers:A}});if(!((y=u.data)!=null&&y.bundles)||((v=u.data)==null?void 0:v.bundles.length)===0||!((E=u.data)!=null&&E.bundles[0]))throw new Error(`Unable to find bundle: ${t}`);const h=(B=u.data)==null?void 0:B.bundles[0],g=k.getMap("bundlePartnerIds")||new Map;g.set(h.id,h.partner.id),k.setMap("bundlePartnerIds",g);const m=new je(this,h,e,a,s,{additionalHeaders:(x=n==null?void 0:n.graphql)==null?void 0:x.additionalHeaders,eagerFetchProducts:(F=(P=n==null?void 0:n.graphql)==null?void 0:P.productCollection)==null?void 0:F.eagerFetchProducts,existingGlobalPropertyState:u.data.globalPropertyState});return await m.getInitializationPromise(),m}async duplicateBundle(t,e,a,n){var f,p,C,w,y,v,E,B;const i=(f=k.getMap("bundleOwnerIds"))==null?void 0:f.get(t),o=((p=Object.entries(localStorage).find(([x,P])=>x.startsWith("CognitoIdentityServiceProvider")&&x.endsWith("idToken")))==null?void 0:p[0])||"",l=localStorage.getItem(o),c={};l&&!ye(l)&&(c.Authorization=`Bearer ${l}`);const d={bundleOwnerId:i,...c,...(C=n==null?void 0:n.graphql)==null?void 0:C.additionalHeaders},u=(v=(await I.getShadowGraphqlClient().mutate({mutation:wo(((y=(w=n==null?void 0:n.graphql)==null?void 0:w.productCollection)==null?void 0:y.eagerFetchProducts)||!1),variables:{id:t,template:e,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId,duplicateTransactions:a},context:{headers:d},fetchPolicy:"no-cache"})).data)==null?void 0:v.bundleDuplicate;if(!(u!=null&&u.id))throw new Error("Unable to duplicate bundle");const h=k.getMap("bundlePartnerIds")||new Map;h.set(u.id,u.partner.id),k.setMap("bundlePartnerIds",h);const g=k.getMap("bundleOwnerIds")||new Map;g.set(u.id,u.bundleOwnerId),k.setMap("bundleOwnerIds",g);const m=new je(this,u,void 0,void 0,u.bundleOwnerId,{eagerFetchProducts:(B=(E=n==null?void 0:n.graphql)==null?void 0:E.productCollection)==null?void 0:B.eagerFetchProducts});return await m.getInitializationPromise(),m}async getBundlesForCustomer(t){var i;if(!((i=this.customer)!=null&&i.id))throw new Error("Customer not authenticated.");const{includeMetadata:e,...a}=t;return(await I.getShadowGraphqlClient().query({query:ko(e??!1),variables:{...a,id:this.customer.id},fetchPolicy:"no-cache"})).data.customerBundlesFeed}async getBundleStakeholders(){var i;if(!this.customer)throw new Error("Customer not authenticated.");const t=await I.getShadowGraphqlClient().query({query:go,variables:{id:this.customer.id},fetchPolicy:"no-cache"});if(!((i=t.data)!=null&&i.customers)||t.data.customers.length===0)throw new Error("Unable to find customer.");const a=t.data.customers[0].bundleStakeholders||[],n=k.getMap("bundlePartnerIds")||new Map;return a.forEach(s=>{var o,l;(o=s.bundle)!=null&&o.id&&((l=s.bundle.partner)!=null&&l.id)&&n.set(s.bundle.id,s.bundle.partner.id)}),k.setMap("bundlePartnerIds",n),a}async getWorkflowExperience(t,e){if(!t)throw new Error("getWorkflowExperience has been called without an options object! This is not supported.");const a=await this.getWorkflowExperiences([t],t.graphql),n=a[0];return e&&await n.getWorkflowManager().injectIntoPreviewService(e(n.getWorkflowManager().getWorkflow())),a[0]}async getWorkflowExperiences(t,e){if(t.length===0)throw new dt("No options provided!");const a=I.getShadowGraphqlClient(),n=async v=>{var P,F,M;if(v.length===0)return[];const E=v.map(N=>N.option.transactionId),B=await a.query({query:Fi,variables:{ids:E},errorPolicy:"all",fetchPolicy:"no-cache"}),x=B.data.transactions;if(x.length!==v.length){const N=((F=(P=B.errors)==null?void 0:P[0])==null?void 0:F.message)||"Unknown error";throw new dt(`Not all transactions were found: ${N}`)}return!this.activeIntegration&&((M=x[0].integrationProduct)!=null&&M.integration)&&(this.activeIntegration=Promise.resolve(x[0].integrationProduct.integration)),x.map((N,z)=>{var W;return{transaction:N,workflowId:N.workflowId,readOnly:((W=v.find(j=>j.option.transactionId===N.id))==null?void 0:W.option.readOnly)??!1,index:v[z].index}})},i=async v=>{var x,P,F;if(v.length===0)return[];const E=await a.mutate({mutation:Pi,variables:{inputs:v.map(M=>({integrationProductId:M.option.type==="integration"?M.option.integrationProductId:void 0,externalIntegrationId:M.option.type==="external"?M.option.externalIntegrationId:void 0,externalProductId:M.option.type==="external"?M.option.externalProductId:void 0,workflowId:M.option.workflowId,designName:M.option.designName,claim:!0})),marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},errorPolicy:"all",fetchPolicy:"no-cache"}),B=(x=E.data)==null?void 0:x.transactionCreateMany;if(!B||B.length===0){const M=((F=(P=E.errors)==null?void 0:P[0])==null?void 0:F.message)||"Unknown error";throw new dt(`Failed to create transactions: ${M}`)}return B.map((M,N)=>({transaction:M,workflowId:M.workflowId,readOnly:!1,index:v[N].index}))},s=t.map((v,E)=>({option:v,index:E})),o=s.filter(v=>v.option.type==="transaction"),l=s.filter(v=>v.option.type==="integration"||v.option.type==="external"),c=Na(o,10),d=Na(l,10),A=(await Promise.all([...c.map(n),...d.map(i)])).flat(),u=[...new Set(A.map(v=>v.workflowId))],h=await Ta(u,e),g=new Map(h.map(v=>[v.id,v])),m=k.getMap("transactionOwnerIds")||new Map,f=A.map(async v=>{var W;const{transaction:E,workflowId:B,readOnly:x,index:P}=v,F=g.get(B),M=t[P];!m.get(E.id)&&E.transactionOwnerId&&m.set(E.id,E.transactionOwnerId);const N=m.get(E.id)||void 0,z={product:E.product,transaction:E,layouts:[],singleVariantsRenderable:(W=M==null?void 0:M.workflowConfiguration)==null?void 0:W.singleVariantsRenderable,stateMutationFunc:x?async()=>{throw new $("State mutation is forbidden in read only mode!")}:async j=>this.updateTransactionState({...j,context:{transactionOwnerId:N,bundleOwnerId:e==null?void 0:e.bundleOwnerId}}),readOnly:x,workflow:F,isReloadedTransaction:M.type==="transaction"};if(M.type==="transaction"&&E.workflowState){const j=JSON.parse(E.workflowState);z.layouts=Object.values(j.layouts||{}).map(nt=>nt.layout),await aa(j),z.reloadedState=j}else if(!x&&M.workflowState){const j=JSON.parse(M.workflowState);z.layouts=Object.values(j.layouts||{}).map(nt=>nt.layout),await aa(j),z.reloadedState=j}else z.layouts=Il(z.transaction,z.workflow);return z.renderableContextService=new nl(z.layouts),z.delayWorkflowStateSync=!0,{experienceOptions:z,index:P,options:M}}),p=await Promise.all(f);k.setMap("transactionOwnerIds",m);const w=p.sort((v,E)=>v.index-E.index).map(async v=>{const{experienceOptions:E,options:B}=v,x=new hr(this,E);return await x.getWorkflowManager().getInitializationPromise(),B.type!=="transaction"&&this.customer&&await x.attachCustomerDetails({email:this.customer.emailAddress}),x}),y=await Promise.all(w);return y.forEach(v=>v.getWorkflowManager().setWorkflowStateSyncEnabled(!0)),y}storeCustomer(t){const e=k.getMap("partnerCustomerIds")||new Map;e.set(t.partner.id,t.id),k.setMap("partnerCustomerIds",e)}async getIntegrationProductById(t){var i,s;const n=(i=(await I.getShadowGraphqlClient().query({query:Ni,variables:{ids:[t]},fetchPolicy:"no-cache",errorPolicy:"all"})).data)==null?void 0:i.integrationProducts;if(!n||n.length===0||!((s=n[0])!=null&&s.id))throw new Error("Integration product not found.");return new la(n[0])}async getIntegrationProductFromExternalIds(t,e){var s;const i=(s=(await I.getShadowGraphqlClient().query({query:Ri,variables:{externalProductId:e,externalIntegrationId:t},fetchPolicy:"no-cache",errorPolicy:"all"})).data)==null?void 0:s.integrationProductFromExternalIds;if(!(i!=null&&i.id))throw new Error("Integration product not found.");return new la(i)}async getIntegrationProduct(t){return t.type==="integration"?this.getIntegrationProductById(t.integrationProductId):this.getIntegrationProductFromExternalIds(t.externalIntegrationId,t.externalProductId)}async getShareActionsForTransaction(t){const a=(k.getMap("transactionOwnerIds")||new Map).get(t)||void 0,n=await I.getShadowGraphqlClient().query({query:Qi,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t},context:{transactionOwnerId:a}});if(!n.data.transactions||n.data.transactions.length!==1)throw new Error(`Failed to fetch share actions for transaction: ${t}`);return n.data.transactions[0].transactionShareActions}async placeOrder(t){const e=await I.getShadowGraphqlClient().mutate({mutation:Ki,variables:{orderItems:t}});if(e.errors)throw new Error(e.errors[0].message);if(!e.data)throw new Error("Failed to create order: No order data in response.");return{id:e.data.orderCreate.id,internalId:e.data.orderCreate.internalId}}}const vr=async r=>(await I.getShadowGraphqlClient().query({query:Hi,errorPolicy:"all",fetchPolicy:"no-cache",context:{headers:{"x-application-key":r}}})).data.currentIntegration,Dl=async r=>{const e=await I.getShadowGraphqlClient().query({query:Ti,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:r}});if(e.data.transactions.length!==0)return e.data.transactions[0]},xl=async(r,t)=>{var a;return(a=(await I.getShadowGraphqlClient().query({query:qi,errorPolicy:"all",variables:{themeConfigurationId:r,themeInstallId:t}})).data)==null?void 0:a.marketplaceThemeInstallConfiguration},Pl=async r=>{var e,a,n;return(n=(a=(e=(await I.getShadowGraphqlClient().query({query:Ji,errorPolicy:"all",variables:{id:r}})).data)==null?void 0:e.bundles)==null?void 0:a[0])==null?void 0:n.marketplaceThemeInstallConfiguration},Fl=async r=>{var e,a,n;return(n=(a=(e=(await I.getShadowGraphqlClient().query({query:Yi,errorPolicy:"all",variables:{id:r}})).data)==null?void 0:e.transactions)==null?void 0:a[0])==null?void 0:n.marketplaceThemeInstallConfiguration};function Br(r,t,e,a){const n=e.width*r.zoom,i=e.height*r.zoom;if(a){const o=r,l=Math.max(t.width/e.width,t.height/e.height);o.zoom=Math.max(l,r.zoom);const c=e.width*o.zoom,d=e.height*o.zoom;return o.x=he(r.x,t.width-c,0),o.y=he(r.y,t.height-d,0),o}const s=r;return s.x=he(s.x,-n,t.width),s.y=he(s.y,-i,t.height),s}function he(r,t,e){return Math.min(Math.max(r,t),e)}class Ir{constructor(t,e){this.minZoomScale=[.03],this.maxZoomScale=[20],this._debouncedUpdateFrameOffsets=en(this.updateFrameOffsets,200),this.targetElements=[],this.onFrameDataChangeListeners=[],this.onZoomChangeListeners=[],this.forceImageCover=t,this.initialZoom=e,this.thresholdSettings={useThreshold:!1,invertThreshold:!1,threshold:128,thresholdSaturation:.5}}connectWorkflowManager(t,e){e&&t.addStepSpecificStorageCallback(async a=>{if(a){const n=a;if(n.currentFrameSources){let i=!1;for(let s=0;s<n.currentFrameSources.length;s++){const o=n.currentFrameSources[s],l=await oe(o),c=this.frameData?this.frameData[s]:void 0;tn(l,c)||(this.frameData||(this.frameData=new Array(n.currentFrameSources.length)),this.frameData[s]=l,i=!0)}i&&(this.onFrameDataChangeListeners.forEach(s=>s(this.frameData)),this.frameData&&this.imageData&&(this.recalculateOffsets(this.imageData),this.updateOffsets(this.offsets),this.recalculateZoomLimits(this.imageData,this.frameData)))}}},e),this.workflowManager=t,this.stepName=e}setTargetElements(t){this.targetElements=t}getFrameData(){return this.frameData}setFrameData(t){if(!t){this.frameData=void 0;return}t.forEach((e,a)=>{const n=Dt.get(e);n&&(this.frameData||(this.frameData=new Array(t.length)),this.frameData[a]=n)})}getImageData(){return this.imageData}getImageSrc(){if(this.imageData){if(this.imageData.svg){const t=In(this.imageData.svg,this.imageData.colors||{},!1);return da(t)}return this.imageData.src}}getOffsets(){return this.offsets}setOffsets(t){this.offsets=t}setZoom(t,e,a,n){if(this.imageData&&this.offsets&&this.frameData){(!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length));const i=this.frameData.map((s,o)=>{const l=(e[o]-this.offsets[o].x)/this.offsets[o].zoom,c=(a[o]-this.offsets[o].y)/this.offsets[o].zoom,d=e[o]-l*t[o],A=a[o]-c*t[o];return{x:d,y:A,zoom:this.imageData.width*t[o]/this.imageData.width}});this.updateOffsets(i,n),this.onZoomChangeListeners.forEach(s=>s(t))}}setPatternData(t,e=!0){this.imageData=t,t&&this.frameData&&((e||!this.offsets)&&this.recalculateOffsets(t),this.updateOffsets(this.offsets,void 0,!0)),this.imageData&&this.frameData&&this.recalculateZoomLimits(this.imageData,this.frameData)}updateOffsets(t,e,a){const n=this.imageData;if(!n||!this.frameData)return;if(this.frameData.length!==t.length)throw new $("Frame data and offsets are not the same length. This is a bug. Please report it.");if(!this.offsets.some((s,o)=>!(t[o].x===s.x&&t[o].y===s.y&&t[o].zoom===s.zoom))&&!a){e&&e();return}(!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length)),this.frameData.forEach((s,o)=>{this.offsets[o]=Br(t[o],s,this.imageData,this.forceImageCover)}),this._debouncedUpdateFrameOffsets(this.offsets,n,this.frameData,this.thresholdSettings,e)}getThresholdSettings(){return this.thresholdSettings}setThresholdSettings(t){this.thresholdSettings=t,this.imageData&&this.frameData&&this._debouncedUpdateFrameOffsets(this.offsets,this.imageData,this.frameData,t)}onFrameDataChanged(t){t(this.frameData),this.onFrameDataChangeListeners.push(t)}onZoom(t){this.onZoomChangeListeners.push(t)}updateFrameOffsets(t,e,a,n,i){if(!a||a.length===0||a.some(o=>!o))throw new $("Frame data not set. This is a bug");if(!this.workflowManager)throw new $("No workflow manager set, cannot update offsets.");const s=this.workflowManager.getCommandDispatcher();this.targetElements.forEach((o,l)=>{s(new O([new Qs(o,e,t[l]),new Ns(o,n.useThreshold,n.invertThreshold,n.threshold,n.thresholdSaturation)]))}),this.stepName&&this.workflowManager.updateStorage(this.stepName,{frameOffsetsList:t}),i&&i()}recalculateZoomLimits(t,e){(this.minZoomScale.length!==e.length||this.maxZoomScale.length!==e.length)&&(this.minZoomScale=new Array(e.length),this.maxZoomScale=new Array(e.length)),e.forEach((a,n)=>{const i=Math.max(a.width/t.width,a.height/t.height);this.forceImageCover?(this.minZoomScale[n]=i,this.maxZoomScale[n]=i*2.5):(this.minZoomScale[n]=i/10,this.maxZoomScale[n]=i*2.5)})}recalculateOffsets(t){this.frameData&&((!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length)),this.frameData.forEach((e,a)=>{this.offsets[a]=ya(t,e,this.initialZoom&&!this.forceImageCover?{scale:this.initialZoom}:void 0,this.forceImageCover)}),this._debouncedUpdateFrameOffsets(this.offsets,t,this.frameData,this.thresholdSettings))}}class kl{approveTransaction(t){throw new Error("Method not implemented.")}rejectTransaction(t){throw new Error("Method not implemented.")}getClient(){return this.client??{}}getWorkflowExperience(){return{}}setClient(t){this.client=t}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}async reset(){}updateStateWithServer(t){}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(t){}addPoller(t){}addConfirmCallback(t){}addEditedCallback(t){}addElementsCallback(t){}addInformationResultCallback(t){}addInitCallback(t){}addMakingAdjustmentsCallback(t){}addMandatoryCallback(t){}addMetadataCallback(t){}addSelectionCallback(t){}addStepSpecificStorageCallback(t,e){}addStorageCallback(t){}getCommandDispatcher(){return t=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getModelContainer(){}getProfanities(){return[]}getRegionElements(t){return[]}getSerializedStep(t,e){}getStepSpecificServices(t){}getTransaction(){return{id:""}}getTransactionCustomer(){}setTransactionCustomer(){}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(t){}markUpdateCompleted(t){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}getStepSelections(){return{}}setCurrentAdjustingStepId(t){}setEditedStatus(t,e){}setInformationResults(t){}setMandatoryFulfilled(t,e){}async setSelectionsAndElements(t,e,a){}toggleDesignConfirmed(){}updateMetadata(t,e){}async updateStorage(t,e){}injectIntoPreviewService(t){return Promise.resolve()}ejectFromPreviewService(){}setWorkflowStateSyncEnabled(t){}async updateTransactionShareActions(){}addValidationCallback(t){}setStepError(t,e,a){}getStepErrors(t){}getValidationErrors(){return{steps:new Map}}async updateTransactionStakeholders(){}getStepTags(t){return[]}}var br=(r=>(r.SelectFrame="SelectFrame",r.SelectImage="SelectImage",r.Position="Position",r))(br||{});class Dr extends at{constructor(t,e,a){super(t,e,a);const n=e.data;this.frameService=new Ir(n.forceImageCover,n.initialZoomLevel),this.frameService.connectWorkflowManager(t,e.stepName)}selectVariant(t){const e=this.manager.getRegionElements(this.step.stepName);return lt.selectVariant(this.step,t.getResource(),e,this.manager,a=>this.setUpdateState(a))}onFrameDataChanged(t){this.frameService&&this.frameService.onFrameDataChanged(e=>{e&&t(e)})}async selectImage(t,e=!0,a=!0){var n;if(await lt.selectImage(this.step,t,this.manager,a),e){const i=((n=this.manager.getStepStorage(this.step.stepName))==null?void 0:n.framePatternData)||{};this.manager.updateStorage(this.step.stepName,{framePatternData:{...i,originalAssetKey:t.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0}})}}async canUseBackgroundRemover(){return this.manager.getClient().canUseAddon(Se.BackgroundRemover)}async canRemoveBackground(){var t,e,a,n;return await this.canUseBackgroundRemover()&&this.hasOriginalImageSelection()&&!!((e=(t=this.frameService)==null?void 0:t.getImageData())!=null&&e.src)&&!((n=(a=this.frameService)==null?void 0:a.getImageData())!=null&&n.svg)}async removeBackgroundFromImageSelection(t=!0){var i;if(!await this.canUseBackgroundRemover())throw new Error("The current Integration does not have access to the Background Remover. Please call canUseBackgroundRemover to ensure you disable this feature when appropriate.");const e=await this.getOriginalImageSelection();if(!e)throw new Error("You must supply an image selection before attempting to remove the background.");const a=await U.removeBackgroundFromAsset(e);t&&await lt.selectImage(this.step,a,this.manager,!1);const n=((i=this.manager.getStepStorage(this.step.stepName))==null?void 0:i.framePatternData)||{};return this.manager.updateStorage(this.step.stepName,{framePatternData:{...n,backgroundRemovedAssetKey:a.key,useOriginalAsset:!t}}),a}changeColors(t){lt.changeColors(this.step,this.manager,t)}getImageData(){if(this.frameService)return this.frameService.getImageData()}async getColorOption(){return this.step.data.colorOption}getAvailableColors(){return this.step.data.colorPickerEnabled?lt.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}async getOriginalImageColors(){const t=this.getImageData();return t!=null&&t.svg?(await st(t.svg)).colors:void 0}getMaxAllowedColors(){return this.step.data.maxColors}getUniqueColorCount(){return lt.getUniqueColorCount(this.step,this.manager)}getCurrentFrameStep(t,e,a,n){return n&&n.length>1&&t===void 0?"SelectFrame":e||a||this.getImageData()?"Position":"SelectImage"}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasOverlayImageUrl(){return this.step.data.overlayImageUrl}getWhitelistedExtensions(){return[...this.step.data.whitelistedExtensions,...this.step.data.whitelistedExtensions.includes(".jpg")?[".jpeg"]:[]]}async getOriginalImageSelection(){var e,a;const t=(a=(e=this.manager.getStepStorage(this.step.stepName))==null?void 0:e.framePatternData)==null?void 0:a.originalAssetKey;if(t)return U.getLocalOrFromServer(t)}async getBackgroundRemovedImageSelection(){var e,a;const t=(a=(e=this.manager.getStepStorage(this.step.stepName))==null?void 0:e.framePatternData)==null?void 0:a.backgroundRemovedAssetKey;if(t)return U.getLocalOrFromServer(t)}hasOriginalImageSelection(){var t,e;return!!((e=(t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.framePatternData)!=null&&e.originalAssetKey)}hasBackgroundRemovedImageSelection(){var t,e;return!!((e=(t=this.getFrameStepStorage())==null?void 0:t.framePatternData)!=null&&e.backgroundRemovedAssetKey)}getUseOriginalImageSelection(){var t,e;return((e=(t=this.getFrameStepStorage())==null?void 0:t.framePatternData)==null?void 0:e.useOriginalAsset)??!1}async setUseOriginalImageSelection(t){var n;const e=((n=this.getFrameStepStorage())==null?void 0:n.framePatternData)||{};if(e.useOriginalAsset===t)return;const a=await this.getOriginalImageSelection();if(!a)throw new Error("You must provide an image selection before calling setUseOriginalImageSelection");if(t)await this.selectImage(a,!1,!1);else{const i=await this.getBackgroundRemovedImageSelection();if(!i)throw new Error("You must call removeBackgroundFromImageSelection before attempting to apply the image.");await this.selectImage(i,!1,!1)}this.manager.updateStorage(this.step.stepName,{framePatternData:{...e,useOriginalAsset:t}})}getFrameStepStorage(){return this.manager.getStepStorage(this.step.stepName)}}const Ml=S.gql`
3388
2127
  query GetLoggedInCustomer($email: String!) {
3389
2128
  customer(emailAddress: $email) {
3390
2129
  id
3391
2130
  }
3392
2131
  }
3393
- `,TA=Q.gql`
2132
+ `,Qa=S.gql`
3394
2133
  query GetCustomerTransactions(
3395
2134
  $id: String!
3396
2135
  $limit: Int!
@@ -3426,21 +2165,21 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3426
2165
  total
3427
2166
  }
3428
2167
  }
3429
- `,Or=Q.gql`
2168
+ `,Tl=S.gql`
3430
2169
  mutation SetTransactionDesignName($id: String!, $name: String!) {
3431
2170
  transactionUpdate(id: $id, designName: $name) {
3432
2171
  id
3433
2172
  designName
3434
2173
  }
3435
2174
  }
3436
- `,zr=Q.gql`
2175
+ `,Ql=S.gql`
3437
2176
  mutation DuplicateTransaction($id: String!, $template: Boolean!) {
3438
2177
  transactionDuplicate(id: $id, template: $template) {
3439
2178
  id
3440
2179
  workflowViewerLink
3441
2180
  }
3442
2181
  }
3443
- `,jr=Q.gql`
2182
+ `,Nl=S.gql`
3444
2183
  query GetCustomerBundles($id: String!, $limit: Int!, $offset: Int!) {
3445
2184
  customerBundlesFeed(id: $id, limit: $limit, offset: $offset) {
3446
2185
  items {
@@ -3453,7 +2192,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3453
2192
  total
3454
2193
  }
3455
2194
  }
3456
- `,Vr=Q.gql`
2195
+ `,Rl=S.gql`
3457
2196
  query GetTransactionsForBundle($id: String!) {
3458
2197
  bundles(ids: [$id]) {
3459
2198
  id
@@ -3473,21 +2212,21 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3473
2212
  }
3474
2213
  }
3475
2214
  }
3476
- `,Kr=Q.gql`
2215
+ `,Ol=S.gql`
3477
2216
  mutation SetBundleName($id: String!, $name: String!) {
3478
2217
  bundleUpdate(id: $id, name: $name) {
3479
2218
  id
3480
2219
  name
3481
2220
  }
3482
2221
  }
3483
- `,Wr=Q.gql`
2222
+ `,Ul=S.gql`
3484
2223
  mutation DuplicateBundle($id: String!, $template: Boolean!) {
3485
2224
  bundleDuplicate(id: $id, template: $template) {
3486
2225
  id
3487
2226
  workflowViewerLink
3488
2227
  }
3489
2228
  }
3490
- `,Xr=Q.gql`
2229
+ `,Ll=S.gql`
3491
2230
  query GetBundleTemplates($id: String!, $limit: Int!, $offset: Int!) {
3492
2231
  customerBundlesFeed(id: $id, limit: $limit, offset: $offset, template: true) {
3493
2232
  items {
@@ -3500,5 +2239,5 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
3500
2239
  total
3501
2240
  }
3502
2241
  }
3503
- `,qr=async(n,t,e)=>await y.getShadowGraphqlClient().mutate({mutation:Kr,errorPolicy:"all",variables:{id:n,name:t},context:e}),Zr=async(n,t)=>await y.getShadowGraphqlClient().mutate({mutation:Or,errorPolicy:"all",variables:{id:n,name:t}}),$r=async(n,t)=>await y.getShadowGraphqlClient().mutate({mutation:Wr,errorPolicy:"all",variables:{id:n,template:t}}),_r=async(n,t)=>await y.getShadowGraphqlClient().mutate({mutation:zr,errorPolicy:"all",variables:{id:n,template:t}}),tc=async n=>(await y.getShadowGraphqlClient().query({query:Lr,errorPolicy:"all",variables:{email:n}})).data.customer,ec=async(n,t,e)=>await y.getShadowGraphqlClient().query({query:jr,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,offset:e,limit:t}}),Ac=async(n,t)=>await y.getShadowGraphqlClient().query({query:Vr,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n},context:t}),ac=async(n,t,e)=>{var a;const A=await y.getShadowGraphqlClient().query({query:TA,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,quicksearch:"",filters:{link:"and",status:{operator:"isAnyOf",values:["Created","DesignCompleted","ExternallyOrdered"]},template:{value:"false"}},offset:e,limit:t}});return((a=A==null?void 0:A.data.customerTransactionsFeed)==null?void 0:a.items)||[]},nc=async(n,t,e)=>{var a;const A=await y.getShadowGraphqlClient().query({query:TA,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,quicksearch:"",filters:{link:"and",status:{operator:"equals",value:"Ordered"},template:{value:"false"}},offset:e,limit:t}});return((a=A==null?void 0:A.data.customerTransactionsFeed)==null?void 0:a.items)||[]},ic=async(n,t,e)=>{var a;const A=await y.getShadowGraphqlClient().query({query:TA,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,quicksearch:"",filters:{link:"and",template:{value:"true"}},offset:e,limit:t}});return((a=A==null?void 0:A.data.customerTransactionsFeed)==null?void 0:a.items)||[]},sc=async(n,t,e)=>{var a;const A=await y.getShadowGraphqlClient().query({query:Xr,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,offset:e,limit:t}});return((a=A==null?void 0:A.data.customerBundlesFeed)==null?void 0:a.items)||[]};exports.AddonHandle=Qe;exports.ArrayInput=yr;exports.AspectType=et;exports.AssetNotFoundError=Bt;exports.AssetType=Kt;exports.BringForwardCommand=Ws;exports.BringToBackCommand=Ks;exports.BringToFrontCommand=Vs;exports.CanvasCommand=U;exports.CollectionProduct=Ot;exports.ColorOptionGlobalPropertyHandle=oA;exports.CommandContext=Oa;exports.ConversionDataType=Ba;exports.ConversionLocation=da;exports.CreateElementCommand=z;exports.CreateLayoutCommand=DA;exports.DeleteElementCommand=ut;exports.DigitalContentStepHandle=un;exports.FileUploadGlobalPropertyHandle=yn;exports.FlowExecutionNodeResult=zt;exports.FlowExecutionResult=Pn;exports.FlowService=Yn;exports.FontAlignmentCommand=qa;exports.FontColorCommand=Wa;exports.FontSizeCommand=Xa;exports.FontSourceCommand=aA;exports.FrameService=bn;exports.FrameStep=Rn;exports.FrameStepHandle=Hn;exports.GlobalPropertyHandle=Pe;exports.GroupCommand=G;exports.IllustrationStepHandle=rn;exports.InformationMessageType=re;exports.InformationStepHandle=Cn;exports.IntegrationProduct=rA;exports.IntegrationType=la;exports.LayoutElementFactory=Us;exports.LayoutElementType=N;exports.LayoutNotFoundError=X;exports.LayoutRenderingPurpose=Pt;exports.MaterialStepHandle=cn;exports.MisconfigurationError=qt;exports.MockWorkflowManager=Jr;exports.ModelStepHandle=ln;exports.ModuleStepHandle=wn;exports.MoveCommand=Gs;exports.ObjectInput=UA;exports.ObjectInputType=vn;exports.OptionGlobalPropertyHandle=RA;exports.OptionNotFoundError=Xt;exports.ParseError=mt;exports.PictureStepHandle=gn;exports.ProductCameraRig=ga;exports.ProductCollection=Mn;exports.ProductWorkflow=Yt;exports.PromiseCache=bt;exports.PromiseQueue=EA;exports.QuestionStepHandle=dn;exports.QueueablePromise=wA;exports.ResizeCommand=Js;exports.ResourceNotFoundError=vt;exports.RotateCommand=Ts;exports.ScaleAxis=K;exports.SendBackwardsCommand=Xs;exports.ShapeStepHandle=Bn;exports.ShareActionType=ca;exports.SpiffCommerceClient=Rr;exports.StakeholderType=Wt;exports.StepAspectType=ra;exports.StepHandle=At;exports.StepType=M;exports.TextAlgorithm=pt;exports.TextChangeCommand=Za;exports.TextGlobalPropertyHandle=Fn;exports.TextInput=Dr;exports.TextStepHandle=hn;exports.Transform=xn;exports.TransformCollection=Sn;exports.UnhandledBehaviorError=L;exports.UnitOfMeasurement=ha;exports.UpdateImageSourceCommand=zs;exports.Variant=nt;exports.WorkflowExperienceEventType=pn;exports.WorkflowExperienceImpl=In;exports.assetService=T;exports.browserColorToHex=ya;exports.cmPerPixel=ps;exports.createDesign=Qn;exports.currentDirection=ms;exports.dataUrlFromExternalUrl=ti;exports.designService=Ce;exports.determineCorrectFontSizeAndLines=Vt;exports.digitalContentStepService=yA;exports.domParser=it;exports.duplicateBundle=$r;exports.duplicateTransaction=_r;exports.fetchAsString=_;exports.findAngle=ds;exports.findElement=J;exports.findPmsColors=wi;exports.frameDataCache=Mt;exports.frameStepService=rt;exports.generate=b;exports.generateCommands=Dn;exports.generateSVGWithUnknownColors=st;exports.generateStateFromDesignInputSteps=mr;exports.getAttributesFromArrayBuffer=ae;exports.getAxisAlignedBoundingBox=gs;exports.getBoundedOffsets=Nn;exports.getBundleThemeConfiguration=Gr;exports.getCustomer=tc;exports.getCustomerBundles=ec;exports.getElementVertices=fs;exports.getFrameData=oe;exports.getIntegration=kn;exports.getNEPoint=ws;exports.getNWPoint=us;exports.getOrderedTransactions=nc;exports.getOverrideThemeConfiguration=Ur;exports.getPointOfRotation=Cs;exports.getSEPoint=Es;exports.getSvgElement=Se;exports.getTemplateBundles=sc;exports.getTemplateTransactions=ic;exports.getTransaction=Hr;exports.getTransactionThemeConfiguration=Tr;exports.getTransactionsForBundle=Ac;exports.getTrueCoordinates=hs;exports.getUnorderedTransactions=ac;exports.getWorkflow=kr;exports.getWorkflows=GA;exports.graphQlManager=y;exports.illustrationStepService=jt;exports.isCloseToValue=Bs;exports.loadFont=It;exports.matchHexToPms=hi;exports.materialStepService=FA;exports.mmPerPixel=Qs;exports.modelStepService=MA;exports.moduleStepService=SA;exports.nameBundle=qr;exports.nameTransaction=Zr;exports.optionService=$;exports.outlineFontsInSvg=Fs;exports.patternImageDataCache=ct;exports.persistenceService=k;exports.pictureStepService=xA;exports.pmsToRgb=Bi;exports.questionStepService=YA;exports.registerFetchImplementation=Xn;exports.registerWindowImplementation=Wn;exports.rehydrateSerializedLayout=AA;exports.rgbToPms=Da;exports.rotateAroundPoint=Lt;exports.sanitizeSvgTree=ye;exports.setBearerAuthenticationToken=pa;exports.setCanvasModule=BA;exports.shapeStepService=St;exports.shortenUrl=$a;exports.spiffCoreConfiguration=dt;exports.stepAspectValuesToDesignInputSteps=Er;exports.svgColorValueToDefinition=Ze;exports.svgStringDimensions=IA;exports.svgToDataUrl=gA;exports.textStepService=W;exports.toast=tn;exports.xmlSerializer=wt;
2242
+ `,$l=async(r,t,e)=>await I.getShadowGraphqlClient().mutate({mutation:Ol,errorPolicy:"all",variables:{id:r,name:t},context:e}),Vl=async(r,t)=>await I.getShadowGraphqlClient().mutate({mutation:Tl,errorPolicy:"all",variables:{id:r,name:t}}),zl=async(r,t)=>await I.getShadowGraphqlClient().mutate({mutation:Ul,errorPolicy:"all",variables:{id:r,template:t}}),Gl=async(r,t)=>await I.getShadowGraphqlClient().mutate({mutation:Ql,errorPolicy:"all",variables:{id:r,template:t}}),jl=async r=>(await I.getShadowGraphqlClient().query({query:Ml,errorPolicy:"all",variables:{email:r}})).data.customer,Wl=async(r,t,e)=>await I.getShadowGraphqlClient().query({query:Nl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:r,offset:e,limit:t}}),ql=async(r,t)=>await I.getShadowGraphqlClient().query({query:Rl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:r},context:t}),Hl=async(r,t,e)=>{var n;const a=await I.getShadowGraphqlClient().query({query:Qa,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:r,quicksearch:"",filters:{link:"and",status:{operator:"isAnyOf",values:["Created","DesignCompleted","ExternallyOrdered"]},template:{value:"false"}},offset:e,limit:t}});return((n=a==null?void 0:a.data.customerTransactionsFeed)==null?void 0:n.items)||[]},Yl=async(r,t,e)=>{var n;const a=await I.getShadowGraphqlClient().query({query:Qa,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:r,quicksearch:"",filters:{link:"and",status:{operator:"equals",value:"Ordered"},template:{value:"false"}},offset:e,limit:t}});return((n=a==null?void 0:a.data.customerTransactionsFeed)==null?void 0:n.items)||[]},Jl=async(r,t,e)=>{var n;const a=await I.getShadowGraphqlClient().query({query:Qa,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:r,quicksearch:"",filters:{link:"and",template:{value:"true"}},offset:e,limit:t}});return((n=a==null?void 0:a.data.customerTransactionsFeed)==null?void 0:n.items)||[]},Kl=async(r,t,e)=>{var n;const a=await I.getShadowGraphqlClient().query({query:Ll,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:r,offset:e,limit:t}});return((n=a==null?void 0:a.data.customerBundlesFeed)==null?void 0:n.items)||[]};exports.AddonHandle=Se;exports.ArrayInput=ml;exports.AspectType=tt;exports.AssetNotFoundError=ht;exports.AssetType=Ht;exports.BringForwardCommand=$s;exports.BringToBackCommand=Ls;exports.BringToFrontCommand=Us;exports.CanvasCommand=R;exports.CollectionProduct=Gt;exports.ColorOptionGlobalPropertyHandle=oa;exports.CommandContext=Un;exports.ConversionDataType=ln;exports.ConversionLocation=on;exports.CreateElementCommand=G;exports.CreateLayoutCommand=Ea;exports.DeleteElementCommand=ft;exports.DigitalContentStepHandle=sr;exports.FileUploadGlobalPropertyHandle=mr;exports.FlowExecutionNodeResult=jt;exports.FlowExecutionResult=Sr;exports.FlowService=yr;exports.FontAlignmentCommand=Wn;exports.FontColorCommand=Gn;exports.FontSizeCommand=jn;exports.FontSourceCommand=na;exports.FrameService=Ir;exports.FrameStep=br;exports.FrameStepHandle=Dr;exports.GlobalPropertyHandle=ke;exports.GroupCommand=O;exports.IllustrationStepHandle=Zn;exports.InformationMessageType=le;exports.InformationStepHandle=ir;exports.IntegrationProduct=la;exports.IntegrationType=rn;exports.LayoutElementFactory=Fs;exports.LayoutElementType=T;exports.LayoutNotFoundError=Y;exports.LayoutRenderingPurpose=kt;exports.MaterialStepHandle=_n;exports.MisconfigurationError=Kt;exports.MockWorkflowManager=kl;exports.ModelStepHandle=tr;exports.ModuleStepHandle=or;exports.MoveCommand=ks;exports.ObjectInput=Ma;exports.ObjectInputType=Er;exports.OptionGlobalPropertyHandle=Fa;exports.OptionNotFoundError=Jt;exports.ParseError=wt;exports.PictureStepHandle=er;exports.ProductCameraRig=sn;exports.ProductCollection=pr;exports.ProductWorkflow=Ft;exports.PromiseCache=Nt;exports.PromiseQueue=pa;exports.QuestionStepHandle=ar;exports.QueueablePromise=fa;exports.ResizeCommand=Ts;exports.ResourceNotFoundError=Mt;exports.RotateCommand=Ms;exports.ScaleAxis=q;exports.SendBackwardsCommand=Vs;exports.ShapeStepHandle=nr;exports.ShareActionType=nn;exports.SpiffCommerceClient=bl;exports.StakeholderType=Yt;exports.StepAspectType=an;exports.StepHandle=at;exports.StepType=b;exports.TextAlgorithm=Et;exports.TextChangeCommand=qn;exports.TextGlobalPropertyHandle=fr;exports.TextInput=gl;exports.TextStepHandle=rr;exports.Transform=wr;exports.TransformCollection=Cr;exports.UnhandledBehaviorError=$;exports.UnitOfMeasurement=cn;exports.UpdateImageSourceCommand=Rs;exports.Variant=rt;exports.WorkflowExperienceEventType=ur;exports.WorkflowExperienceImpl=hr;exports.assetService=U;exports.browserColorToHex=yn;exports.cmPerPixel=hs;exports.createDesign=Ar;exports.currentDirection=ds;exports.dataUrlFromExternalUrl=Wr;exports.designService=me;exports.determineCorrectFontSizeAndLines=qt;exports.digitalContentStepService=va;exports.domParser=it;exports.duplicateBundle=zl;exports.duplicateTransaction=Gl;exports.fetchAsString=et;exports.findAngle=ns;exports.findElement=L;exports.findPmsColors=li;exports.frameDataCache=Dt;exports.frameStepService=lt;exports.generate=Q;exports.generateCommands=gr;exports.generateSVGWithUnknownColors=st;exports.generateStateFromDesignInputSteps=cl;exports.getAttributesFromArrayBuffer=ne;exports.getAxisAlignedBoundingBox=as;exports.getBoundedOffsets=Br;exports.getBundleThemeConfiguration=Pl;exports.getCustomer=jl;exports.getCustomerBundles=Wl;exports.getElementVertices=As;exports.getFrameData=oe;exports.getIntegration=vr;exports.getNEPoint=ls;exports.getNWPoint=os;exports.getOrderedTransactions=Yl;exports.getOverrideThemeConfiguration=xl;exports.getPointOfRotation=ss;exports.getSEPoint=cs;exports.getSvgElement=xe;exports.getTemplateBundles=Kl;exports.getTemplateTransactions=Jl;exports.getTransaction=Dl;exports.getTransactionThemeConfiguration=Fl;exports.getTransactionsForBundle=ql;exports.getTrueCoordinates=is;exports.getUnorderedTransactions=Hl;exports.getWorkflow=vl;exports.getWorkflows=Ta;exports.graphQlManager=I;exports.illustrationStepService=Wt;exports.isCloseToValue=rs;exports.loadFont=vt;exports.matchHexToPms=ii;exports.materialStepService=Ba;exports.mmPerPixel=us;exports.modelStepService=Ia;exports.moduleStepService=ba;exports.nameBundle=$l;exports.nameTransaction=Vl;exports.optionService=X;exports.outlineFontsInSvg=Cs;exports.patternImageDataCache=ct;exports.persistenceService=k;exports.pictureStepService=Da;exports.pmsToRgb=ri;exports.questionStepService=xa;exports.registerFetchImplementation=$r;exports.registerWindowImplementation=Lr;exports.rehydrateSerializedLayout=aa;exports.rgbToPms=wn;exports.rotateAroundPoint=zt;exports.sanitizeSvgTree=Ie;exports.setBearerAuthenticationToken=pn;exports.setCanvasModule=ua;exports.shapeStepService=xt;exports.shortenUrl=Hn;exports.spiffCoreConfiguration=ut;exports.stepAspectValuesToDesignInputSteps=ll;exports.svgColorValueToDefinition=Xe;exports.svgStringDimensions=Sa;exports.svgToDataUrl=da;exports.textStepService=H;exports.toast=Jn;exports.xmlSerializer=pt;
3504
2243
  //# sourceMappingURL=index.js.map