senangwebs-photobooth 1.0.1 → 2.0.2
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/README.md +219 -235
- package/dist/swp.css +884 -344
- package/dist/swp.js +1 -1
- package/examples/data-attribute.html +69 -0
- package/examples/index.html +56 -51
- package/examples/studio.html +83 -0
- package/package.json +12 -5
- package/src/css/swp.css +884 -344
- package/src/js/core/Canvas.js +398 -0
- package/src/js/core/EventEmitter.js +188 -0
- package/src/js/core/History.js +250 -0
- package/src/js/core/Keyboard.js +323 -0
- package/src/js/filters/FilterManager.js +248 -0
- package/src/js/index.js +48 -0
- package/src/js/io/Clipboard.js +52 -0
- package/src/js/io/FileManager.js +150 -0
- package/src/js/layers/BlendModes.js +342 -0
- package/src/js/layers/Layer.js +415 -0
- package/src/js/layers/LayerManager.js +459 -0
- package/src/js/selection/Selection.js +167 -0
- package/src/js/swp.js +297 -709
- package/src/js/tools/BaseTool.js +264 -0
- package/src/js/tools/BrushTool.js +314 -0
- package/src/js/tools/CropTool.js +400 -0
- package/src/js/tools/EraserTool.js +155 -0
- package/src/js/tools/EyedropperTool.js +184 -0
- package/src/js/tools/FillTool.js +109 -0
- package/src/js/tools/GradientTool.js +141 -0
- package/src/js/tools/HandTool.js +51 -0
- package/src/js/tools/MarqueeTool.js +103 -0
- package/src/js/tools/MoveTool.js +465 -0
- package/src/js/tools/ShapeTool.js +285 -0
- package/src/js/tools/TextTool.js +253 -0
- package/src/js/tools/ToolManager.js +277 -0
- package/src/js/tools/ZoomTool.js +68 -0
- package/src/js/ui/ColorManager.js +71 -0
- package/src/js/ui/UI.js +1211 -0
- package/swp_preview1.png +0 -0
- package/swp_preview2.png +0 -0
- package/webpack.config.js +4 -11
- package/dist/styles.js +0 -1
- package/examples/customization.html +0 -360
- package/spec.md +0 -239
- package/swp_preview.png +0 -0
package/dist/swp.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SWP=t():e.SWP=t()}(this,()=>(()=>{"use strict";var e={d:(t,a)=>{for(var s in a)e.o(a,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:a[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{default:()=>s});class a{constructor(e,t={}){this.container=e,this.options={imageUrl:t.imageUrl||null,width:t.width||800,height:t.height||600,showIcons:void 0===t.showIcons||t.showIcons,showLabels:void 0===t.showLabels||t.showLabels,labels:{upload:void 0!==t.labels?.upload?t.labels.upload:"Upload",rotateLeft:void 0!==t.labels?.rotateLeft?t.labels.rotateLeft:null,rotateRight:void 0!==t.labels?.rotateRight?t.labels.rotateRight:null,flipH:void 0!==t.labels?.flipH?t.labels.flipH:null,flipV:void 0!==t.labels?.flipV?t.labels.flipV:null,resize:void 0!==t.labels?.resize?t.labels.resize:"Resize",adjust:void 0!==t.labels?.adjust?t.labels.adjust:"Adjust",filters:void 0!==t.labels?.filters?t.labels.filters:"Filters",reset:void 0!==t.labels?.reset?t.labels.reset:"Reset",save:void 0!==t.labels?.save?t.labels.save:"Save"}},this.canvas=null,this.ctx=null,this.originalImage=null,this.currentImage=null,this.history=[],this.currentState={brightness:100,contrast:100,saturation:100,rotation:0,flipH:!1,flipV:!1,filter:"none"},this.eventListeners={},this.init()}init(){this.createUI(),this.options.imageUrl&&this.loadImage(this.options.imageUrl)}createUI(){this.container.innerHTML="",this.container.classList.add("swp-container");const e=document.createElement("div");e.className="swp-wrapper";const t=document.createElement("div");t.className="swp-toolbar",t.innerHTML=this.createToolbarHTML();const a=document.createElement("div");a.className="swp-layout-container";const s=document.createElement("div");s.className="swp-control-container";const n=document.createElement("div");n.className="swp-canvas-container",this.canvas=document.createElement("canvas"),this.canvas.width=this.options.width,this.canvas.height=this.options.height,this.canvas.className="swp-canvas",this.ctx=this.canvas.getContext("2d"),n.appendChild(this.canvas);const i=document.createElement("div");i.className="swp-adjustments-panel",i.innerHTML=this.createAdjustmentsPanelHTML();const r=document.createElement("div");r.className="swp-filters-panel",r.innerHTML=this.createFiltersPanelHTML();const l=document.createElement("div");l.className="swp-resize-panel",l.innerHTML=this.createResizePanelHTML(),e.appendChild(t),e.appendChild(a),a.appendChild(n),a.appendChild(s),s.appendChild(i),s.appendChild(r),s.appendChild(l),this.container.appendChild(e),this.bindEvents()}createToolbarHTML(){const{showIcons:e,showLabels:t,labels:a}=this.options,s=(a,s,n,i)=>{const r=t&&null!==n?`<span>${n}</span>`:"";return`<button class="swp-btn${r?"":" swp-btn-icon-only"}" data-action="${a}" title="${i}">${e?`<span class="swp-icon"><i class="${s}"></i></span>`:""}${r}</button>`};return`\n <div class="swp-toolbar-group">\n ${s("upload","fas fa-folder",a.upload,"Upload Image")}\n <input type="file" id="swp-file-input" accept="image/*" style="display: none;">\n </div>\n \n <div class="swp-toolbar-group" style="margin: 0px auto;">\n ${s("rotate-left","fas fa-undo",a.rotateLeft,"Rotate Left")}\n ${s("rotate-right","fas fa-redo",a.rotateRight,"Rotate Right")}\n ${s("flip-h","fas fa-arrows-alt-h",a.flipH,"Flip Horizontal")}\n ${s("flip-v","fas fa-arrows-alt-v",a.flipV,"Flip Vertical")}\n </div>\n\n <div class="swp-toolbar-group">\n ${s("reset","fas fa-history",a.reset,"Reset")}\n </div>\n\n <div class="swp-toolbar-group">\n ${s("toggle-resize","fas fa-expand-arrows-alt",a.resize,"Resize")}\n ${s("toggle-adjustments","fas fa-sliders-h",a.adjust,"Adjustments")}\n ${s("toggle-filters","fas fa-magic",a.filters,"Filters")}\n </div>\n <div class="swp-toolbar-group">\n <button class="swp-btn swp-btn-primary${t&&null!==a.save?"":" swp-btn-icon-only"}" data-action="download" title="Download">\n ${e?'<span class="swp-icon"><i class="fas fa-save"></i></span>':""}\n ${t&&null!==a.save?`<span>${a.save}</span>`:""}\n </button>\n </div>\n `}createAdjustmentsPanelHTML(){return'\n <h3>Adjustments</h3>\n <div class="swp-adjustment">\n <label>Brightness</label>\n <input type="range" id="swp-brightness" min="0" max="200" value="100">\n <span class="swp-value">100%</span>\n </div>\n <div class="swp-adjustment">\n <label>Contrast</label>\n <input type="range" id="swp-contrast" min="0" max="200" value="100">\n <span class="swp-value">100%</span>\n </div>\n <div class="swp-adjustment">\n <label>Saturation</label>\n <input type="range" id="swp-saturation" min="0" max="200" value="100">\n <span class="swp-value">100%</span>\n </div>\n '}createResizePanelHTML(){return'\n <h3>Resize Image</h3>\n <div class="swp-resize-controls">\n <div class="swp-adjustment">\n <label>Width (px)</label>\n <input type="number" id="swp-resize-width" min="1" max="5000" value="800">\n </div>\n <div class="swp-adjustment">\n <label>Height (px)</label>\n <input type="number" id="swp-resize-height" min="1" max="5000" value="600">\n </div>\n <div class="swp-adjustment">\n <label>\n <input type="checkbox" id="swp-maintain-ratio" checked>\n Maintain aspect ratio\n </label>\n </div>\n <button class="swp-btn swp-btn-primary" data-action="apply-resize">Apply Resize</button>\n </div>\n '}createFiltersPanelHTML(){return`\n <h3>Filters</h3>\n <div class="swp-filters-grid">\n ${[{name:"none",label:"None"},{name:"grayscale",label:"Grayscale"},{name:"sepia",label:"Sepia"},{name:"invert",label:"Invert"},{name:"blur",label:"Blur"}].map(e=>`\n <button class="swp-filter-btn ${"none"===e.name?"active":""}" \n data-filter="${e.name}">\n <span class="swp-filter-preview" data-filter="${e.name}"></span>\n <span>${e.label}</span>\n </button>\n `).join("")}\n </div>\n `}bindEvents(){this.container.querySelectorAll("[data-action]").forEach(e=>{e.addEventListener("click",e=>{const t=e.currentTarget.getAttribute("data-action");this.handleAction(t)})});const e=this.container.querySelector("#swp-file-input");e&&e.addEventListener("change",e=>{const t=e.target.files[0];if(t){const e=new FileReader;e.onload=e=>{this.loadImage(e.target.result)},e.readAsDataURL(t)}}),["brightness","contrast","saturation"].forEach(e=>{const t=this.container.querySelector(`#swp-${e}`);t&&t.addEventListener("input",t=>{const a=parseInt(t.target.value);t.target.nextElementSibling.textContent=a+"%",this.setAdjustment(e,a)})}),this.container.querySelectorAll("[data-filter]").forEach(e=>{e.classList.contains("swp-filter-btn")&&e.addEventListener("click",e=>{const t=e.currentTarget.getAttribute("data-filter");this.applyFilter(t),this.container.querySelectorAll(".swp-filter-btn").forEach(e=>{e.classList.remove("active")}),e.currentTarget.classList.add("active")})})}bindResizeInputs(){const e=this.container.querySelector("#swp-resize-width"),t=this.container.querySelector("#swp-resize-height"),a=this.container.querySelector("#swp-maintain-ratio");if(!e||!t||!this.currentImage)return;const s=e.cloneNode(!0),n=t.cloneNode(!0);e.parentNode.replaceChild(s,e),t.parentNode.replaceChild(n,t);const i=this.currentImage.width/this.currentImage.height;s.addEventListener("input",e=>{const t=parseInt(e.target.value);if(a.checked){const e=Math.round(t/i);n.value=e}this.updateCanvasSize(parseInt(s.value),parseInt(n.value))}),n.addEventListener("input",e=>{const t=parseInt(e.target.value);if(a.checked){const e=Math.round(t*i);s.value=e}this.updateCanvasSize(parseInt(s.value),parseInt(n.value))})}updateCanvasSize(e,t){!this.currentImage||!e||!t||e<1||t<1||(this.canvas.width=e,this.canvas.height=t,this.drawImage())}handleAction(e){switch(e){case"upload":this.container.querySelector("#swp-file-input").click();break;case"rotate-left":this.rotate(-90);break;case"rotate-right":this.rotate(90);break;case"flip-h":this.flip("horizontal");break;case"flip-v":this.flip("vertical");break;case"toggle-adjustments":this.togglePanel(".swp-adjustments-panel");break;case"toggle-filters":this.togglePanel(".swp-filters-panel");break;case"toggle-resize":this.togglePanel(".swp-resize-panel");break;case"apply-resize":this.applyResize();break;case"reset":this.reset();break;case"download":this.download()}}togglePanel(e){const t=this.container.querySelector(e);t&&(t.classList.toggle("active"),[".swp-adjustments-panel",".swp-filters-panel",".swp-resize-panel"].forEach(t=>{t!==e&&this.container.querySelector(t)?.classList.remove("active")}))}loadImage(e){const t=new Image;t.crossOrigin="anonymous",t.onload=()=>{this.originalImage=t,this.currentImage=t,this.canvas.width=t.width,this.canvas.height=t.height;const e=this.container.querySelector("#swp-resize-width"),a=this.container.querySelector("#swp-resize-height");e&&(e.value=t.width),a&&(a.value=t.height),this.bindResizeInputs(),this.drawImage(),this.emit("load")},t.onerror=()=>{console.error("Failed to load image")},t.src=e}drawImage(){if(!this.currentImage)return;const e=this.canvas,t=this.ctx;t.clearRect(0,0,e.width,e.height),t.save(),t.translate(e.width/2,e.height/2),t.rotate(this.currentState.rotation*Math.PI/180),t.scale(this.currentState.flipH?-1:1,this.currentState.flipV?-1:1),t.filter=this.getFilterString(),t.drawImage(this.currentImage,-e.width/2,-e.height/2,e.width,e.height),t.restore(),this.emit("change")}getFilterString(){let e=[];switch(100!==this.currentState.brightness&&e.push(`brightness(${this.currentState.brightness}%)`),100!==this.currentState.contrast&&e.push(`contrast(${this.currentState.contrast}%)`),100!==this.currentState.saturation&&e.push(`saturate(${this.currentState.saturation}%)`),this.currentState.filter){case"grayscale":e.push("grayscale(100%)");break;case"sepia":e.push("sepia(100%)");break;case"invert":e.push("invert(100%)");break;case"blur":e.push("blur(5px)")}return e.length>0?e.join(" "):"none"}rotate(e){this.currentImage&&(this.currentState.rotation=(this.currentState.rotation+e)%360,this.drawImage())}flip(e){this.currentImage&&("horizontal"===e?this.currentState.flipH=!this.currentState.flipH:"vertical"===e&&(this.currentState.flipV=!this.currentState.flipV),this.drawImage())}setAdjustment(e,t){this.currentImage&&(this.currentState[e]=t,this.drawImage())}applyFilter(e){this.currentImage&&(this.currentState.filter=e,this.drawImage())}applyResize(){if(!this.currentImage)return;const e=this.container.querySelector("#swp-resize-width"),t=this.container.querySelector("#swp-resize-height"),a=parseInt(e.value),s=parseInt(t.value);if(!a||!s||a<1||s<1)return void alert("Please enter valid dimensions");const n=document.createElement("canvas");n.width=this.canvas.width,n.height=this.canvas.height,n.getContext("2d").drawImage(this.canvas,0,0);const i=new Image;i.onload=()=>{this.currentImage=i,this.originalImage=i,this.bindResizeInputs(),this.drawImage()},i.src=n.toDataURL()}crop(e,t,a,s){if(!this.currentImage)return;const n=document.createElement("canvas");n.width=a,n.height=s,n.getContext("2d").drawImage(this.canvas,e,t,a,s,0,0,a,s);const i=new Image;i.onload=()=>{this.currentImage=i,this.drawImage()},i.src=n.toDataURL()}reset(){this.currentState={brightness:100,contrast:100,saturation:100,rotation:0,flipH:!1,flipV:!1,filter:"none"},["brightness","contrast","saturation"].forEach(e=>{const t=this.container.querySelector(`#swp-${e}`);t&&(t.value=100,t.nextElementSibling.textContent="100%")}),this.container.querySelectorAll(".swp-filter-btn").forEach(e=>{e.classList.remove("active"),"none"===e.getAttribute("data-filter")&&e.classList.add("active")}),this.originalImage&&(this.currentImage=this.originalImage,this.drawImage())}getImageData(e="jpeg",t=.9){if(!this.canvas)return null;const a="png"===e?"image/png":"image/jpeg";return this.canvas.toDataURL(a,t)}download(){const e=this.getImageData("png");if(!e)return;const t=document.createElement("a");t.download=`swp-edited-${Date.now()}.png`,t.href=e,t.click(),this.emit("save")}on(e,t){this.eventListeners[e]||(this.eventListeners[e]=[]),this.eventListeners[e].push(t)}emit(e,t){this.eventListeners[e]&&this.eventListeners[e].forEach(e=>{e(t)})}}"undefined"!=typeof document&&document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("[data-swp]").forEach(e=>{const t={};if(e.dataset.swpImageUrl&&(t.imageUrl=e.dataset.swpImageUrl),e.dataset.swpWidth&&(t.width=parseInt(e.dataset.swpWidth)),e.dataset.swpHeight&&(t.height=parseInt(e.dataset.swpHeight)),void 0!==e.dataset.swpShowIcons&&(t.showIcons="false"!==e.dataset.swpShowIcons),void 0!==e.dataset.swpShowLabels&&(t.showLabels="false"!==e.dataset.swpShowLabels),e.dataset.swpLabels)try{let a=e.dataset.swpLabels.trim();a.startsWith("{")?t.labels=JSON.parse(a):(t.labels={},a.split(";").forEach(e=>{const[a,s]=e.split(":").map(e=>e.trim());if(a&&s){const e=s.replace(/^['"]|['"]$/g,"");t.labels[a]="null"===e?null:e}}))}catch(e){console.error("Failed to parse data-swp-labels:",e)}new a(e,t)})});const s=a;return"undefined"!=typeof window&&(window.SWP=a),t.default})());
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.SWP=e():t.SWP=e()}(this,()=>(()=>{var t={720:function(t){var e;e=()=>(()=>{"use strict";var t={21:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M8.25 18.75a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m3 0h6m-9 0H3.375a1.125 1.125 0 01-1.125-1.125V14.25m17.25 4.5a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m3 0h1.125c.621 0 1.129-.504 1.09-1.124a17.902 17.902 0 00-3.213-9.193 2.056 2.056 0 00-1.58-.86H14.25M16.5 18.75h-2.25m0-11.177v-.958c0-.568-.422-1.048-.987-1.106a48.554 48.554 0 00-10.026 0 1.106 1.106 0 00-.987 1.106v7.635m12-6.677v6.677m0 4.5v-4.5m0 0h-12" /></g>\n</svg>'},44:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 4.5v15m7.5-7.5h-15" /></g>\n</svg>'},152:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z" /></g>\n</svg>'},171:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z" /></g>\n</svg>'},234:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0M3.124 7.5A8.969 8.969 0 015.292 3m13.416 0a8.969 8.969 0 012.168 4.5" /></g>\n</svg>'},246:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 6.5c0 1.933-4.03 3.5-9 3.5s-9-1.567-9-3.5S7.03 3 12 3s9 1.567 9 3.5z M21 6.5v11c0 1.933-4.03 3.5-9 3.5s-9-1.567-9-3.5v-11" /></g>\n</svg>'},357:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 5h16.5M3.75 9h12.75M3.75 13h16.5M3.75 17h12.75" /></g>\n</svg>'},402:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 3 18 6 21 11 20 17 18 21H6L4 17 3 11 6 6zM12 3v6M12 9l-6 5M12 9l6 5M6 14l2 7M18 14l-2 7M18 14 21 11M6 14 3 11" /></g>\n</svg>'},420:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 3V21M3 3V21L21 21 21 3 3 3M10 3V21M15 3V21 21M3 18 21 18M3 14 21 14M3 9 21 9" /></g>\n</svg>'},474:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 3A3 3 0 116 9 3 3 0 116 3M8.12 8.12 19 19M19 5 8.12 15.88M6 15A3 3 0 116 21 3 3 0 116 15M10 14 10 10" /></g>\n</svg>'},477:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z" /></g>\n</svg>'},484:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M14.1213 7.62877C12.9497 6.45719 11.0503 6.45719 9.87868 7.62877C9.37424 8.13321 9.08699 8.7726 9.01694 9.43073C8.9944 9.64251 9.01512 9.85582 9.04524 10.0667L9.5512 13.6084C9.68065 14.5146 9.5307 15.4386 9.12135 16.2573L9 16.5L10.5385 15.9872C11.0003 15.8332 11.4997 15.8332 11.9615 15.9872L12.6158 16.2053C13.182 16.394 13.7999 16.3501 14.3336 16.0832L15 15.75M8.25 12H12M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" /></g>\n</svg>'},515:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M14.25 9.75v-4.5m0 4.5h4.5m-4.5 0l6-6m-3 18c-8.284 0-15-6.716-15-15V4.5A2.25 2.25 0 014.5 2.25h1.372c.516 0 .966.351 1.091.852l1.106 4.423c.11.44-.055.902-.417 1.173l-1.293.97a1.062 1.062 0 00-.38 1.21 12.035 12.035 0 007.143 7.143c.441.162.928-.004 1.21-.38l.97-1.293a1.125 1.125 0 011.173-.417l4.423 1.106c.5.125.852.575.852 1.091V19.5a2.25 2.25 0 01-2.25 2.25h-2.25z" /></g>\n</svg>'},518:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M5 14 5 11C5 9 6 8 8 8M8 13 8 8C8 7 9 5.9 10 6L18 7C19 7.1 20 8 20 9L20 15C20 16.5 18.5 18 17 18L9 18C7 18 5 16 5 14M11 9.5 11 6.2M14 10 14 6.5M17 10.5 17 6.9" /></g>\n</svg>'},548:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M10.5 1.5H8.25A2.25 2.25 0 006 3.75v16.5a2.25 2.25 0 002.25 2.25h7.5A2.25 2.25 0 0018 20.25V3.75a2.25 2.25 0 00-2.25-2.25H13.5m-3 0V3h3V1.5m-3 0h3m-3 18.75h3" /></g>\n</svg>'},588:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21M5.082 11.09l8.828 8.828" /></g>\n</svg>'},601:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4 3h3a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-3a1 1 0 011-1zM17 3h3a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-3a1 1 0 011-1zM4 16h3a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-3a1 1 0 011-1zM20 16h-2a2 2 0 00-2 2v2M12 8v2a2 2 0 01-2 2H8M4 12h0M12 4h0M16 12h5M12 21v-5" /></g>\n</svg>'},613:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M10.5 6a7.5 7.5 0 1 0 7.5 7.5h-7.5V6Z M13.5 10.5H21A7.5 7.5 0 0 0 13.5 3v7.5Z" /></g>\n</svg>'},618:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25M9.5 17.5 14.5 12.5M9.5 12.5l5 5" /></g>\n</svg>'},639:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 12a9 9 0 11-18 0 9 9 0 0118 0zM15.91 11.672a.375.375 0 010 .656l-5.603 3.113a.375.375 0 01-.557-.328V8.887c0-.286.307-.466.557-.327l5.603 3.112z" /></g>\n</svg>'},654:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 002.25-2.25V6.75A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25v10.5A2.25 2.25 0 004.5 19.5z" /></g>\n</svg>'},718:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="m12 3L12 21M8 20 8 4 3 20 8 20M16 4 16 20 21 20 16 4" /></g>\n</svg>'},722:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="m15 11 0 9m4-9-4-7M2 11h20m-18.5 0 1.6 7.4a2 2 0 002 1.6h9.8a2 2 0 002-1.6l1.7-7.4M4.5 15.5h15m-14.5-4.5 4-7m0 7 0 9" /></g>\n</svg>'},737:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M7.5 8.25h9m-9 3H12M2.25 12.76c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.076-4.076a1.526 1.526 0 011.037-.443 48.282 48.282 0 005.68-.494c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z" /></g>\n</svg>'},769:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15 14 15 10Q15 9 14 9L10 9Q9 9 9 10L9 14Q9 15 10 15L14 15Q15 15 15 14M21 12a9 9 0 11-18 0 9 9 0 0118 0Z" /></g>\n</svg>'},781:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 12a8.25 8.25 0 108.25-8.25c-2.3 0-4.5 1-6 2.5L3.75 8.5m0-4.5v4.5h4.5M12 7v5l3 0" /></g>\n</svg>'},834:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 18L18 6M6 6l12 12" /></g>\n</svg>'},879:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 7V5c0-1.1.9-2 2-2h2M17 3h2c1.1 0 2 .9 2 2v2M21 17v2c0 1.1-.9 2-2 2h-2M7 21H5c-1.1 0-2-.9-2-2v-2M8 7h5a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1ZM11 12h5a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1Z" /></g>\n</svg>'},887:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z" /></g>\n</svg>'},900:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z" /></g>\n</svg>'},948:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="m21 12L3 12m1-4L20 8 4 3 4 8M20 16 4 16 4 21 20 16" /></g>\n</svg>'},963:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M17.25 6.75L22.5 12l-5.25 5.25M6.75 17.25L1.5 12l5.25-5.25M14.25 3.75l-4.5 16.5" /></g>\n</svg>'},1017:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21.75 9v.906a2.25 2.25 0 01-1.183 1.981l-6.478 3.488M2.25 9v.906a2.25 2.25 0 001.183 1.981l6.478 3.488m8.839 2.51l-4.66-2.51m0 0l-1.023-.55a2.25 2.25 0 00-2.134 0l-1.022.55m0 0l-4.661 2.51m16.5 1.615a2.25 2.25 0 01-2.25 2.25h-15a2.25 2.25 0 01-2.25-2.25V8.844a2.25 2.25 0 011.183-1.98l7.5-4.04a2.25 2.25 0 012.134 0l7.5 4.04a2.25 2.25 0 011.183 1.98V19.5z" /></g>\n</svg>'},1077:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4.5 18.75l7.5-7.5 7.5 7.5m-15-6L12 5.25l7.5 7.5" /></g>\n</svg>'},1107:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z" /></g>\n</svg>'},1163:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M19.114 5.636a9 9 0 010 12.728M16.463 8.288a5.25 5.25 0 010 7.424M6.75 8.25l4.72-4.72a.75.75 0 011.28.53v15.88a.75.75 0 01-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.01 9.01 0 012.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75z" /></g>\n</svg>'},1228:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M16 21v-3M12 21v-5M9 21l-6 0L8 21v-8H20V20a1 1 180 01-1 1zM20 13a1 1 180 001-1v-1a2 2 180 00-2-2h-2a1 1 180 01-1-1v-2.9a2 2 180 10-4 0V8a1 1 180 01-1 1h-2a2 2 180 00-2 2v1a1 1 180 001 1" /></g>\n</svg>'},1285:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M7 4h6a1 1 0 011 1v4a1 1 0 01-1 1H7a1 1 0 01-1-1V5a1 1 0 011-1ZM12 14h6a1 1 0 011 1v4a1 1 0 01-1 1h-11a1 1 0 01-1-1v-4a1 1 0 011-1ZM3 21 3 3" /></g>\n</svg>'},1329:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 10.5v6m3-3H9m4.06-7.19l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z" /></g>\n</svg>'},1372:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 2.25a7.5 7.5 0 00-7.5 7.5c0 2.5 1.2 4.8 3.1 6.2.8.6 1.4 1.4 1.4 2.4v1.9a.75.75 0 00.75.75h4.5a.75.75 0 00.75-.75v-1.9c0-1 .6-1.8 1.4-2.4 1.9-1.4 3.1-3.7 3.1-6.2a7.5 7.5 0 00-7.5-7.5ZM10 17h4M11 22v0L13 22M9.75 9.75c0-1.25 1.125-2.25 2.25-2.25s2.25 1 2.25 2.25" /></g>\n</svg>'},1381:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z" /></g>\n</svg>'},1411:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M18 18.72a9.094 9.094 0 003.741-.479 3 3 0 00-4.682-2.72m.94 3.198l.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0112 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 016 18.719m12 0a5.971 5.971 0 00-.941-3.197m0 0A5.995 5.995 0 0012 12.75a5.995 5.995 0 00-5.058 2.772m0 0a3 3 0 00-4.681 2.72 8.986 8.986 0 003.74.477m.94-3.197a5.971 5.971 0 00-.94 3.197M15 6.75a3 3 0 11-6 0 3 3 0 016 0zm6 3a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0zm-13.5 0a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0z" /></g>\n</svg>'},1438:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" /></g>\n</svg>'},1445:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25M15 15H9" /></g>\n</svg>'},1480:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 8.25v-1.5m0 1.5c-1.355 0-2.697.056-4.024.166C6.845 8.51 6 9.473 6 10.608v2.513m6-4.871c1.355 0 2.697.056 4.024.166C17.155 8.51 18 9.473 18 10.608v2.513M15 8.25v-1.5m-6 1.5v-1.5m12 9.75l-1.5.75a3.354 3.354 0 01-3 0 3.354 3.354 0 00-3 0 3.354 3.354 0 01-3 0 3.354 3.354 0 00-3 0 3.354 3.354 0 01-3 0L3 16.5m15-3.379a48.474 48.474 0 00-6-.371c-2.032 0-4.034.126-6 .371m12 0c.39.049.777.102 1.163.16 1.07.163 1.837 1.09 1.837 2.175v5.169c0 .621-.504 1.125-1.125 1.125H4.125A1.125 1.125 0 013 20.625v-5.169c0-1.085.768-2.012 1.837-2.175a48.041 48.041 0 011.163-.16" /></g>\n</svg>'},1482:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 2.25a9.75 9.75 0 010 19.5m0-19.5a9.75 9.75 0 000 19.5m0-19.5v19.5M8.7 2.827V21.211M5.5 4.736V19.263" /></g>\n</svg>'},1578:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 12a8.25 8.25 0 108.25-8.25c-2.3 0-4.5 1-6 2.5L3.75 8.5m0-4.5v4.5h4.5m.75 3.5L15 12" /></g>\n</svg>'},1764:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M7 15V9h2a1.5 1.5 0 0 1 0 3H7m2 0l1.5 3M13 15V9l2 3 2-3v6M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></g>\n</svg>'},1766:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 6V12L16 12M21 12A9 9 0 113 12 9 9 0 0121 12Z" /></g>\n</svg>'},1808:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 5c-1-1.5-2.5-2-4-2C5.5 3 4 4.5 4 7c0 2 1.5 4 8 9 6.5-5 8-7 8-9 0-2.5-1.5-4-4-4-1.5 0-3 .5-4 2zM4 7v5c0 2 1.5 4 8 9v-5M20 7v5c0 2-1.5 4-8 9" /></g>\n</svg>'},1902:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Z M3 9h18 M12 9v12" /></g>\n</svg>'},1912:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 7.5 7.5 3m0 0L12 7.5M7.5 3v13.5m13.5 0L16.5 21m0 0L12 16.5m4.5 4.5V7.5" /></g>\n</svg>'},1937:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M8 13h-4v-9h4m0 9v5a2.25 2.25 0 0 0 5 0v-3h5a2.25 2.25 0 0 0 2-2l-1-7a2.25 2.25 0 0 0-2-2h-9L8 13" /></g>\n</svg>'},1959:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 6.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 12.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 18.75a.75.75 0 110-1.5.75.75 0 010 1.5z" /></g>\n</svg>'},2047:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 15h3a1 1 0 011 1v3a1 1 0 01-1 1H9a1 1 0 01-1-1V16a1 1 0 011-1ZM12 7h6a1 1 0 011 1v3a1 1 0 01-1 1h-12a1 1 0 01-1-1v-3a1 1 0 011-1ZM21 4 3 4" /></g>\n</svg>'},2060:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 3l9 18H3L12 3zM12 3v12M12 15l-9 6M12 15l9 6" /></g>\n</svg>'},2119:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0" /></g>\n</svg>'},2174:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="m19 10.5m0 0h3M19 10.5h-3m-2.25-4.125a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zM4 19.235v-.11a6.375 6.375 0 0112.75 0v.109A12.318 12.318 0 0110.374 21c-2.331 0-4.512-.645-6.374-1.766z" /></g>\n</svg>'},2222:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M13.5 10.5V6.75a4.5 4.5 0 119 0v3.75M3.75 21.75h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H3.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z" /></g>\n</svg>'},2229:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99" /></g>\n</svg>'},2233:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6.75 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM12.75 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM18.75 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0z" /></g>\n</svg>'},2299:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 10.5h.375c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125H21M3.75 18h15A2.25 2.25 0 0021 15.75v-6a2.25 2.25 0 00-2.25-2.25h-15A2.25 2.25 0 001.5 9.75v6A2.25 2.25 0 003.75 18zM4.5 10.5h7.5L12 15 4.5 15 4.5 10.5" /></g>\n</svg>'},2487:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75" /></g>\n</svg>'},2496:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M20.25 14.15v4.25c0 1.094-.787 2.036-1.872 2.18-2.087.277-4.216.42-6.378.42s-4.291-.143-6.378-.42c-1.085-.144-1.872-1.086-1.872-2.18v-4.25m16.5 0a2.18 2.18 0 00.75-1.661V8.706c0-1.081-.768-2.015-1.837-2.175a48.114 48.114 0 00-3.413-.387m4.5 8.006c-.194.165-.42.295-.675.38A23.978 23.978 0 0112 15.75c-2.648 0-5.195-.429-7.577-1.22a2.016 2.016 0 01-.675-.38m0 0A2.18 2.18 0 013 12.489V8.706c0-1.081.768-2.015 1.837-2.175a48.111 48.111 0 013.413-.387m7.5 0V5.25A2.25 2.25 0 0013.5 3h-3a2.25 2.25 0 00-2.25 2.25v.894m7.5 0a48.667 48.667 0 00-7.5 0M12 12.75h.008v.008H12v-.008z" /></g>\n</svg>'},2519:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 5a9 3 0 0 1 18 0H3zM3 5v14h18V5M3 19h18" /></g>\n</svg>'},2523:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 9v3.75M12 15.75h.008v.008H12v-.008zM12 2.714A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z" /></g>\n</svg>'},2526:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M19.5 5.25l-7.5 7.5-7.5-7.5m15 6L12 18.75l-7.5-7.5" /></g>\n</svg>'},2538:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M17.982 18.725A7.488 7.488 0 0012 15.75a7.488 7.488 0 00-5.982 2.975m11.963 0a9 9 0 10-11.963 0m11.963 0A8.966 8.966 0 0112 21a8.966 8.966 0 01-5.982-2.275M15 9.75a3 3 0 11-6 0 3 3 0 016 0z" /></g>\n</svg>'},2615:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4 3h6a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z M7 3v18 M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z" /></g>\n</svg>'},2644:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 7V5c0-1.1.9-2 2-2h2M17 3h2c1.1 0 2 .9 2 2v2M21 17v2c0 1.1-.9 2-2 2h-2M7 21H5c-1.1 0-2-.9-2-2v-2M5 3 7 3Z" /></g>\n</svg>'},2669:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15M11 12 5.12 2.2M13 12l5.88-9.8M8 7h8M12 22a5 5 0 100-10 5 5 0 000 10zM12 18v-2h-.5" /></g>\n</svg>'},2675:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 5c5 0 8.7 3 9 6s-1.5 8-9 8-9.3-5-9-8 4-6 9-6zM12 8c2.5 0 4.4 1.3 4.5 3s-2 3-4.5 3-4.6-1.3-4.5-3 2-3 4.5-3z" /></g>\n</svg>'},2691:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 5h18v14H3z" /></g>\n</svg>'},2742:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z" /></g>\n</svg>'},2818:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M 13 13 L 13 4 A 9 9 0 1 0 22 13 Z M 20 8 a 2 2 0 1 1 -4 0 a 2 2 0 0 1 4 0 z M 10 12 a 1.5 1.5 0 1 1 -3 0 a 1.5 1.5 0 0 1 3 0 z" /></g>\n</svg>'},2825:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2.25 12l8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25" /></g>\n</svg>'},2953:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 20.25V3.8M5.2 5.5 5.2 3.8h13.6L18.8 5.5M10 20.3h4" /></g>\n</svg>'},2999:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M 2.25 15 h 19.5 v 1.5 a 2.25 2.25 0 0 1 -2.25 2.25 h -15 A 2.25 2.25 0 0 1 2.25 16.5 V 15 Z m 2.25 0 V 6.75 A 2.25 2.25 0 0 1 6.75 4.5 h 10.5 a 2.25 2.25 0 0 1 2.25 2.25 V 15 M 10 8 L 8 10 l 2 2 m 4 -4 l 2 2 l -2 2" /></g>\n</svg>'},3003:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 7.5l-9-5.25L3 7.5m18 0l-9 5.25m9-5.25v9l-9 5.25M3 7.5l9 5.25M3 7.5v9l9 5.25m0-9v9" /></g>\n</svg>'},3188:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M8.25 4.5l7.5 7.5-7.5 7.5" /></g>\n</svg>'},3200:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2.25 15.75l5.159-5.159a2.25 2.25 0 013.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 013.182 0l2.909 2.909m-18 4.5h16.5a2.25 2.25 0 002.25-2.25V6a2.25 2.25 0 00-2.25-2.25H3.75A2.25 2.25 0 001.5 6v12a2.25 2.25 0 002.25 2.25zm10.5-11.25h.008v.008h-.008V8.25zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z" /></g>\n</svg>'},3213:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 6.5c0 1.933-4.03 3.5-9 3.5s-9-1.567-9-3.5S7 3 12 3s9 1.567 9 3.5zM21 6.5v11c0 1.933-4.03 3.5-9 3.5s-9-1.567-9-3.5v-11M17 6.5c0 .7-2 1.5-5 1.5s-5-.8-5-1.5S9 5 12 5s5 .8 5 1.5zM17 20.4 17 9.5" /></g>\n</svg>'},3247:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15m3 0l3-3m0 0l-3-3m3 3H9" /></g>\n</svg>'},3286:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 3.75l16.5 16.5M12 18.75a6 6 0 006-6v-1.5m-6 7.5a6 6 0 01-6-6v-1.5m6 7.5v3.75m-3.75 0h7.5M15 10.932V4.5a3 3 0 00-6 0v3.068m0 0v5.182a3 3 0 003 3c.944 0 1.794-.437 2.347-1.118" /></g>\n</svg>'},3302:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M17.25 9.75L19.5 12m0 0l2.25 2.25M19.5 12l2.25-2.25M19.5 12l-2.25 2.25m-10.5-6l4.72-4.72a.75.75 0 011.28.53v15.88a.75.75 0 01-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.01 9.01 0 012.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75z" /></g>\n</svg>'},3494:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 5h16.5M3.75 9h16.5M3.75 13h16.5M3.75 17h16.5" /></g>\n</svg>'},3532:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M9 3h5L12 8 18 8 8.5 22l3.5-10h-6l2-9z" /></g>\n</svg>'},3579:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M17.25 8.25L21 12m0 0l-3.75 3.75M21 12H3" /></g>\n</svg>'},3584:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M9 17.25v1.007a3 3 0 01-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0115 18.257V17.25m6-12V15a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 15V5.25m18 0A2.25 2.25 0 0018.75 3H5.25A2.25 2.25 0 003 5.25m18 0V12a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 12V5.25" /></g>\n</svg>'},3619:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4.5 12.75l6 6 9-13.5m-12.5 3.75 3 3 4.6-6.8" /></g>\n</svg>'},3623:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M 3.75 3 v 11.25 A 2.25 2.25 0 0 0 6 16.5 h 2.25 M 3.75 3 h -1.5 m 1.5 0 h 16.5 m 0 0 h 1.5 m -1.5 0 v 11.25 A 2.25 2.25 0 0 1 18 16.5 h -2.25 m -7.5 0 h 7.5 m -7.5 0 l -1 3 m 8.5 -3 l 1 3 m 0 0 l 0.5 1.5 m -0.5 -1.5 h -9.5 m 0 0 l -0.5 1.5 M 10 7 l 5.005 2.487 l -5.005 2.513 z" /></g>\n</svg>'},3636:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M5 7h14a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2h-4l-2.29-2.29a1 1 0 0 0-1.42 0L9 17H5a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2zm2.5 3.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm9 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3z" /></g>\n</svg>'},3640:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M9 3v18 M15 3v18 M3 9h18 M3 15h18" /></g>\n</svg>'},3660:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 18.75a6 6 0 006-6v-1.5m-6 7.5a6 6 0 01-6-6v-1.5m6 7.5v3.75m-3.75 0h7.5M12 15.75a3 3 0 01-3-3V4.5a3 3 0 116 0v8.25a3 3 0 01-3 3z" /></g>\n</svg>'},3693:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 4h3a1 1 0 011 1v4a1 1 0 01-1 1H9a1 1 0 01-1-1V5a1 1 0 011-1ZM12 14h6a1 1 0 011 1v4a1 1 0 01-1 1h-12a1 1 0 01-1-1v-4a1 1 0 011-1ZM12 21 12 3" /></g>\n</svg>'},3723:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zM11 8l2 0-1 1zM9 17l3-1L15 17l0 2L9 19z" /></g>\n</svg>'},3730:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M9 5.25v13.5m6-13.5v13.5" /></g>\n</svg>'},3748:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6.75 15.75L3 12m0 0l3.75-3.75M3 12h18" /></g>\n</svg>'},3797:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z" /></g>\n</svg>'},3801:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 4h6a1 1 0 011 1v3a1 1 0 01-1 1H6a1 1 0 01-1-1V5a1 1 0 011-1ZM12 15h6a1 1 0 011 1v3a1 1 0 01-1 1h-12a1 1 0 01-1-1v-3a1 1 0 011-1ZM21 12 3 12" /></g>\n</svg>'},3807:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88" /></g>\n</svg>'},3831:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 14a9 9 0 0118 0v2c0 1-4 3-9 3s-9-2-9-3v-2zM12 13c-5 0-9 2-9 3S7 19 12 19s9-2 9-3-4-3-9-3" /></g>\n</svg>'},3846:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M19 7.5v3m0 0v3m0-3h3m-3 0h-3m-2.25-4.125a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zM4 19.235v-.11a6.375 6.375 0 0112.75 0v.109A12.318 12.318 0 0110.374 21c-2.331 0-4.512-.645-6.374-1.766z" /></g>\n</svg>'},3868:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 9l0-7L15 5 12 2 9 5M9 12l-7 0L5 9 2 12 5 15M12 15l0 7L9 19 12 22 15 19M15 12l7 0L19 9 22 12 19 15" /></g>\n</svg>'},3912:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 01-.825-.242m9.345-8.334a2.126 2.126 0 00-.476-.095 48.64 48.64 0 00-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0011.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155" /></g>\n</svg>'},4002:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 3v1.5M3 21v-6m0 0l2.77-.693a9 9 0 016.208.682l.108.054a9 9 0 006.086.71l3.114-.732a48.524 48.524 0 01-.005-10.499l-3.11.732a9 9 0 01-6.085-.711l-.108-.054a9 9 0 00-6.208-.682L3 4.5M3 15V4.5" /></g>\n</svg>'},4024:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M7.8 9.8a.75.75 0 11-1.6 0 .75.75 0 011.6 0M12.8 9.8a.75.75 0 11-1.6 0 .75.75 0 011.6 0M17.8 9.8a.75.75 0 11-1.6 0 .75.75 0 011.6 0M21.75 12.76c0 1.6-1.123 2.994-2.707 3.227-1.087.16-2.185.283-3.293.369V21l-4.076-4.076a1.526 1.526 0 01-1.037-.443 48.282 48.282 0 00-5.68-.494c-1.584-.233-2.707-1.626-2.707-3.228V6.741c0-1.602 1.123-2.995 2.707-3.228A48.394 48.394 0 0112 3c2.392 0 4.744.175 7.043.513 1.584.233 2.707 1.627 2.707 3.228v6.018z" /></g>\n</svg>'},4071:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 4h3a1 1 0 011 1v3a1 1 0 01-1 1H9a1 1 0 01-1-1V5a1 1 0 011-1ZM12 12h6a1 1 0 011 1v3a1 1 0 01-1 1h-12a1 1 0 01-1-1v-3a1 1 0 011-1ZM21 20 3 20" /></g>\n</svg>'},4136:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 3l9 9-9 9-9-9 9-9z" /></g>\n</svg>'},4202:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 4h6a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1ZM12 14h6a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1Z" /></g>\n</svg>'},4259:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178zM15 12a3 3 0 11-6 0 3 3 0 016 0z" /></g>\n</svg>'},4308:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zM10 7l4 0-2 2zM9 18l3-1L15 18l0 1L9 19z" /></g>\n</svg>'},4323:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15.75 17.25L12 21m0 0l-3.75-3.75M12 21V3" /></g>\n</svg>'},4380:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M 2.25 15 h 19.5 v 1.5 a 2.25 2.25 0 0 1 -2.25 2.25 h -15 A 2.25 2.25 0 0 1 2.25 16.5 V 15 Z m 2.25 0 V 6.75 A 2.25 2.25 0 0 1 6.75 4.5 h 10.5 a 2.25 2.25 0 0 1 2.25 2.25 V 15" /></g>\n</svg>'},4399:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 10.5h.375c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125H21M3.75 18h15A2.25 2.25 0 0021 15.75v-6a2.25 2.25 0 00-2.25-2.25h-15A2.25 2.25 0 001.5 9.75v6A2.25 2.25 0 003.75 18zM4.5 10.5h3L7.5 15 4.5 15 4.5 10.5" /></g>\n</svg>'},4512:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 9l0-6M12 15l0 6M15 12l6 0M9 12l-6 0M12 6A1 1 0 0012 18 1 1 0 0012 6" /></g>\n</svg>'},4538:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2 12l10 5 10-5-10-5-10 5zM2 12" /></g>\n</svg>'},4597:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 19c0 1-3 3-9 3s-9-2-9-3c0-1 3-3 9-3s9 2 9 3zM3 19 12 3l9 16" /></g>\n</svg>'},4618:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z" /></g>\n</svg>'},4682:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25" /></g>\n</svg>'},4712:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z" /></g>\n</svg>'},4718:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25M10.5 17.5 15 12.5M9 15.5l1.5 2" /></g>\n</svg>'},4770:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 19l4-7 4 7H3zM12.5 11a3 3 0 110-8 3 3 0 010 8zM14 14h7v7h-7z" /></g>\n</svg>'},4882:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.348a1.125 1.125 0 010 1.971l-11.54 6.347a1.125 1.125 0 01-1.667-.985V5.653z" /></g>\n</svg>'},4900:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4.5 7.5a3 3 0 013-3h9a3 3 0 013 3v9a3 3 0 01-3 3h-9a3 3 0 01-3-3v-9z" /></g>\n</svg>'},4931:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2.25 3h1.386c.51 0 .955.343 1.087.835l.383 1.437M7.5 14.25a3 3 0 00-3 3h15.75m-12.75-3h11.218c1.121-2.3 2.1-4.684 2.924-7.138a60.114 60.114 0 00-16.536-1.84M7.5 14.25L5.106 5.272M6 20.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm12.75 0a.75.75 0 11-1.5 0 .75.75 0 011.5 0z" /></g>\n</svg>'},4933:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2 5C8 9 16 9 22 5V19C16 15 8 15 2 19V5ZM8 13 12 11 12 13 16 11" /></g>\n</svg>'},4934:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 11.25v8.25a1.5 1.5 0 01-1.5 1.5H4.5a1.5 1.5 0 01-1.5-1.5v-8.25M12 4.875A2.625 2.625 0 109.375 7.5H12m0-2.625V7.5m0-2.625A2.625 2.625 0 1114.625 7.5H12m0 0V21m-8.625-9.75h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z" /></g>\n</svg>'},4935:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M9 9l10.5-3m0 6.553v3.75a2.25 2.25 0 01-1.632 2.163l-1.32.377a1.803 1.803 0 11-.99-3.467l2.31-.66a2.25 2.25 0 001.632-2.163zm0 0V2.25L9 5.25v10.303m0 0v3.75a2.25 2.25 0 01-1.632 2.163l-1.32.377a1.803 1.803 0 11-.99-3.467l2.31-.66A2.25 2.25 0 009 15.553z" /></g>\n</svg>'},4951:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z" /></g>\n</svg>'},4964:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4.5 12.75l6 6 9-13.5" /></g>\n</svg>'},4992:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 3l9.75 15-9.75 3-9.75-3L12 3z M12 3v18" /></g>\n</svg>'},5006:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 7.5v13.5l6-3 6 3 6-3V4.5l-6 3-6-3-6 3Z M9 4.5v13.5 M15 7.5v13.5" /></g>\n</svg>'},5007:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 9L12 13.5 20.25 9 12 4.5 3.75 9zm0 4.5l8.25 4.5 8.25-4.5M3.75 18l8.25 4.5 8.25-4.5" /></g>\n</svg>'},5140:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 6h12a2.25 2.25 0 0 1 2.25 2.25v7.5A2.25 2.25 0 0 1 18 18H6a2.25 2.25 0 0 1-2.25-2.25v-7.5A2.25 2.25 0 0 1 6 6zM12 3v3M9 3h6M8.25 12a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5zM15.75 12a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5zM9 15h6M7.5 18v3M16.5 18v3" /></g>\n</svg>'},5182:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M8 11h-4v9h4m0-9v-5a2.25 2.25 0 015 0v3h5a2.25 2.25 0 012 2l-1 7a2.25 2.25 0 01-2 2h-9L8 11" /></g>\n</svg>'},5251:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M20.25 12a8.25 8.25 0 11-8.25-8.25c2.3 0 4.5 1 6 2.5L20.25 8.5m0-4.5v4.5h-4.5m-6.75 3.5L15 12m-3 3L12 9" /></g>\n</svg>'},5263:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M14.25 9v6m-4.5 0V9M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" /></g>\n</svg>'},5294:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3" /></g>\n</svg>'},5384:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z M3 12c0 2.5 4.5 4.5 9 4.5s9-2 9-4.5 M12 3c2.5 0 4.5 4.5 4.5 9s-2 9-4.5 9" /></g>\n</svg>'},5513:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4 4h16v16H4z" /></g>\n</svg>'},5551:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M 3 12 h 18 M 12 3 v 18 M 6 15 L 3 12 l 3 -3 M 18 9 L 21 12 l -3 3 M 9 6 L 12 3 l 3 3 M 15 18 L 12 21 l -3 -3" /></g>\n</svg>'},5594:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" /></g>\n</svg>'},5607:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4.5 10.5L12 3m0 0l7.5 7.5M12 3v18" /></g>\n</svg>'},5608:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 21C6 4 18 20 21 3" /></g>\n</svg>'},5672:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M11.25 4.5l7.5 7.5-7.5 7.5m-6-15l7.5 7.5-7.5 7.5" /></g>\n</svg>'},5683:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L6.832 19.82a4.5 4.5 0 01-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 011.13-1.897L16.863 4.487zm0 0L19.5 7.125" /></g>\n</svg>'},5752:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 7.5V18a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 18V7.5V6a2.25 2.25 0 0 1 2.25-2.25H18.75a2.25 2.25 0 0 1 2.25 2.25V7.5H12V3.75" /></g>\n</svg>'},5814:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 8.25V18a2.25 2.25 0 002.25 2.25h13.5A2.25 2.25 0 0021 18V8.25m-18 0V6a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 6v2.25m-18 0h18zM8 13.3h8v3H8z" /></g>\n</svg>'},5839:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 13.5V3.75m0 9.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 3.75V16.5m12-3V3.75m0 9.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 3.75V16.5m-6-9V3.75m0 3.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 9.75V10.5" /></g>\n</svg>'},5884:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4.5 9h4.5v-4.5m0 4.5L3.75 3.75M19.5 9h-4.5v-4.5m0 4.5L20.25 3.75M19.5 15h-4.5v4.5m0-4.5L20.25 20.25M4.5 15h4.5v4.5m0-4.5L3.75 20.25" /></g>\n</svg>'},5889:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 00-1.883 2.542l.857 6a2.25 2.25 0 002.227 1.932H19.05a2.25 2.25 0 002.227-1.932l.857-6a2.25 2.25 0 00-1.883-2.542m-16.5 0V6A2.25 2.25 0 016 3.75h3.879a1.5 1.5 0 011.06.44l2.122 2.12a1.5 1.5 0 001.06.44H18A2.25 2.25 0 0120.25 9v.776" /></g>\n</svg>'},5903:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 13.5 12 13.5m3 0H9m4.06-7.19-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z" /></g>\n</svg>'},5934:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M7 3v14h14M17 21V7h-14" /></g>\n</svg>'},5988:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25" /></g>\n</svg>'},6024:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 002.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 01-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 00-1.091-.852H4.5A2.25 2.25 0 002.25 4.5v2.25z" /></g>\n</svg>'},6042:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M 3 12 h 18 M 7 16 L 3 12 l 4 -4 M 17 8 L 21 12 l -4 4" /></g>\n</svg>'},6144:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></g>\n</svg>'},6151:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 2 L22 12 L12 22 L2 12 Z M12 2 L12 14 L22 12 M12 22 L12 14 L2 12" /></g>\n</svg>'},6173:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 5h16.5M5.625 9h12.75M3.75 13h16.5M5.625 17h12.75" /></g>\n</svg>'},6204:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M8.25 6.75L12 3m0 0l3.75 3.75M12 3v18" /></g>\n</svg>'},6241:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 21 21 3" /></g>\n</svg>'},6248:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 2l7 4v8l-7 4-7-4V6l7-4z" /></g>\n</svg>'},6254:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5" /></g>\n</svg>'},6375:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15.75 10.5l4.72-4.72a.75.75 0 011.28.53v11.38a.75.75 0 01-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25h-9A2.25 2.25 0 002.25 7.5v9a2.25 2.25 0 002.25 2.25z" /></g>\n</svg>'},6376:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z" /></g>\n</svg>'},6389:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z" /></g>\n</svg>'},6396:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.008v.008H12v-.008z" /></g>\n</svg>'},6399:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M7.8 9.8a.75.75 0 11-1.6 0 .75.75 0 011.6 0M12.8 9.8a.75.75 0 11-1.6 0 .75.75 0 011.6-0M17.8 9.8a.75.75 0 11-1.6 0 .75.75 0 011.6 0M2.25 12.76c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.076-4.076a1.526 1.526 0 011.037-.443 48.282 48.282 0 005.68-.494c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z" /></g>\n</svg>'},6415:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2.25 15a4.5 4.5 0 004.5 4.5H18a3.75 3.75 0 001.332-7.257 3 3 0 00-4.232-3.943 5.25 5.25 0 00-10.233 2.33A4.502 4.502 0 002.25 15z" /></g>\n</svg>'},6526:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M8 3l8 0L22 7 16 11 8 11 2 7 8 3M22 7v10M2 7v10M16 11v10M8 11v10M2 17l6 4L16 21 22 17" /></g>\n</svg>'},6564:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z" /></g>\n</svg>'},6589:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="m21 7.5-2.25-1.313M21 7.5v2.25m0-2.25-2.25 1.313M3 7.5l2.25-1.313M3 7.5l2.25 1.313M3 7.5v2.25m9 3 2.25-1.313M12 12.75l-2.25-1.313M12 12.75V15m0 6.75 2.25-1.313M12 21.75V19.5m0 2.25-2.25-1.313m0-16.875L12 2.25l2.25 1.313M21 14.25v2.25l-2.25 1.313m-13.5 0L3 16.5v-2.25" /></g>\n</svg>'},6613:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5zM2 17h20M6 17v4M18 17v4" /></g>\n</svg>'},6721:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607zM10.5 7.4v6m3-2.9h-6" /></g>\n</svg>'},6844:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M 12 3 v 18 M 8 7 L 12 3 l 4 4 M 16 17 L 12 21 l -4 -4" /></g>\n</svg>'},6876:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M7.5 8.25h9m0 3H12M21.75 12.76c0 1.6-1.123 2.994-2.707 3.227-1.087.16-2.185.283-3.293.369V21l-4.076-4.076a1.526 1.526 0 01-1.037-.443 48.282 48.282 0 00-5.68-.494c-1.584-.233-2.707-1.626-2.707-3.228V6.741c0-1.602 1.123-2.995 2.707-3.228A48.394 48.394 0 0112 3c2.392 0 4.744.175 7.043.513 1.584.233 2.707 1.627 2.707 3.228v6.018z" /></g>\n</svg>'},6893:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09zM18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 00-2.456 2.456zM16.894 20.567L16.5 21.75l-.394-1.183a2.25 2.25 0 00-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 001.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 001.423 1.423l1.183.394-1.183.394a2.25 2.25 0 00-1.423 1.423z" /></g>\n</svg>'},6924:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15M12 9l-3 3m0 0l3 3m-3-3h12.75" /></g>\n</svg>'},6947:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4 20.3h4M6 20.25l6-16.5 6 16.5M8 15h8M16 20.3h4" /></g>\n</svg>'},6984:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 5h16.5M7.5 9h12.75M3.75 13h16.5M7.5 17h12.75" /></g>\n</svg>'},6996:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M17.593 3.322c1.1.128 1.907 1.077 1.907 2.185V21L12 17.25 4.5 21V5.507c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0111.186 0z" /></g>\n</svg>'},7107:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 12a8.25 8.25 0 108.25-8.25c-2.3 0-4.5 1-6 2.5L3.75 8.5m0-4.5v4.5h4.5" /></g>\n</svg>'},7115:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4 3v15c0 2 1 3 3 3h13M8 15l3-4 2 2 6-8" /></g>\n</svg>'},7134:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.263l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z" /></g>\n</svg>'},7180:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z" /></g>\n</svg>'},7244:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 3h12M6 21h12M19 8v8a2 2 0 01-2 2H7a2 2 0 01-2-2V8a2 2 0 012-2h10a2 2 0 012 2Z" /></g>\n</svg>'},7351:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5M12 12v6m3-3h-6" /></g>\n</svg>'},7393:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 3h12M6 21h12M18 8v8a2 2 0 01-2 2H8a2 2 0 01-2-2V8a2 2 0 012-2h8a2 2 0 012 2ZM3 6 3 18M21 6 21 18" /></g>\n</svg>'},7468:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M19.5 13.5L12 21m0 0l-7.5-7.5M12 21V3" /></g>\n</svg>'},7476:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 10.5h.375c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125H21M3.75 18h15A2.25 2.25 0 0021 15.75v-6a2.25 2.25 0 00-2.25-2.25h-15A2.25 2.25 0 001.5 9.75v6A2.25 2.25 0 003.75 18z" /></g>\n</svg>'},7537:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 6h12a2.25 2.25 0 012.25 2.25v7.5A2.25 2.25 0 0118 18h-6l-4 3 0-3H6a2.25 2.25 0 01-2.25-2.25v-7.5A2.25 2.25 0 016 6zM12 3v3M9 3h6M8.25 12a.75.75 0 110-1.5.75.75 0 010 1.5zM15.75 12a.75.75 0 110-1.5.75.75 0 010 1.5zM9 15h6" /></g>\n</svg>'},7606:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M7.5 21 3 16.5m0 0 4.5-4.5M3 16.5h13.5m0-13.5L21 7.5m0 0-4.5 4.5M21 7.5H7.5" /></g>\n</svg>'},7680:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zM9 17l3-1L15 17l0 2L9 19z" /></g>\n</svg>'},7700:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 6 3 3 6 3M10 3 14 3M3 10 3 14M10 21 14 21M21 10 21 14M18 3 21 3 21 6M21 18 21 21 18 21M3 18 3 21 6 21" /></g>\n</svg>'},7743:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607zM13.5 10.5H7.5" /></g>\n</svg>'},7764:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 6v12m-3-2.818l.879.659c1.171.879 3.07.879 4.242 0 1.172-.879 1.172-2.303 0-3.182C13.536 12.219 12.768 12 12 12c-.725 0-1.45-.22-2.003-.659-1.106-.879-1.106-2.303 0-3.182s2.9-.879 4.006 0l.415.33M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></g>\n</svg>'},7803:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18" /></g>\n</svg>'},7912:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M20.25 12a8.25 8.25 0 11-8.25-8.25c2.3 0 4.5 1 6 2.5L20.25 8.5m0-4.5v4.5h-4.5" /></g>\n</svg>'},7921:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M19.5 15.75l-7.5-7.5-7.5 7.5" /></g>\n</svg>'},7936:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 5a2 2 0 012-2h14a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V5ZM3 9h18M16 9v12M3 13 21 13M3 17 21 17" /></g>\n</svg>'},7941:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418" /></g>\n</svg>'},7984:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21.75 6.75v10.5a2.25 2.25 0 01-2.25 2.25h-15a2.25 2.25 0 01-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25m19.5 0v.243a2.25 2.25 0 01-1.07 1.916l-7.5 4.615a2.25 2.25 0 01-2.36 0L3.32 8.91a2.25 2.25 0 01-1.07-1.916V6.75" /></g>\n</svg>'},8042:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M13 4h4a1 1 0 011 1v4a1 1 0 01-1 1H11a1 1 0 01-1-1V5a1 1 0 011-1ZM12 14h5a1 1 0 011 1v4a1 1 0 01-1 1h-11a1 1 0 01-1-1v-4a1 1 0 011-1ZM21 21 21 3" /></g>\n</svg>'},8045:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15.75 10.5V6a3.75 3.75 0 10-7.5 0v4.5m11.356-1.993l1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 01-1.12-1.243l1.264-12A1.125 1.125 0 015.513 7.5h12.974c.576 0 1.059.435 1.119 1.007zM8.625 10.5a.375.375 0 11-.75 0 .375.375 0 01.75 0zm7.5 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z" /></g>\n</svg>'},8099:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M 8.25 13.5 a 3.75 3.75 0 0 1 5.25 0 m -8.25 -3 a 7.5 7.5 0 0 1 11.25 0 m -14.25 -3 a 11.25 11.25 0 0 1 17.25 0 M 11 16.5 a 1.125 1.125 0 1 0 0 2.25 a 1.125 1.125 0 0 0 0 -2.25 z" /></g>\n</svg>'},8194:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M18.2 18 14 18m5.228-12.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0M5.8 18 14 18" /></g>\n</svg>'},8204:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 00-1.72 0L2.36 18.64a1.21 1.21 0 000 1.72l1.28 1.28a1.2 1.2 0 001.72 0L21.64 5.36a1.2 1.2 0 000-1.72M10.5 10.5l3 3M5 6v4M19 15v4M10 3v2M7 8H3M21 17h-4M11 4H9" /></g>\n</svg>'},8313:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z" /></g>\n</svg>'},8360:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4 18.5v-13A2.5 2.5 0 016.5 3H19a1 1 0 011 1v16a1 1 0 01-1 1H6.5a1 1 0 010-5H20M7 13.5 7 5.5" /></g>\n</svg>'},8375:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M5 16 4 10C3.5 7 8 7 8 10M8 14 8 6C8 5 9 3.9 10 4L18 5C19 5.1 20 6 20 7L20 17C20 18.5 18.5 20 17 20L9 20C7 20 5.4 18 5 16M11 11 11 4.2M14 11.5 14 4.5M17 12 17 4.9" /></g>\n</svg>'},8615:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M10.5 19.5h3m-6.75 2.25h10.5a2.25 2.25 0 002.25-2.25v-15a2.25 2.25 0 00-2.25-2.25H6.75A2.25 2.25 0 004.5 4.5v15a2.25 2.25 0 002.25 2.25z" /></g>\n</svg>'},8691:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M19 21A2.25 2.25 0 0021 19V7L17 3H5A2.25 2.25 0 003 5V19A2.25 2.25 0 005 21H17ZM12 18A3.75 3.75 0 1012 10.25 3.75 3.75 0 0012 18ZM7 3H13V7H7V5.8Z" /></g>\n</svg>'},8768:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M9 6l3 3 3-3m-3 3L12 2M18 15l-3-3 3-3m-3 3L22 12M15 18l-3-3-3 3m3-3L12 22m-6-13 3 3-3 3m3-3L2 12" /></g>\n</svg>'},8770:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M4.5 8.25l7.5 7.5 7.5-7.5" /></g>\n</svg>'},8828:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M9 3v18M15 3v18M3 9h18M3 15h18M3 21h18M3 3h18M3 3v18M21 3v18" /></g>\n</svg>'},8910:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M9 7.5l3 4.5m0 0l3-4.5M12 12v5.25M15 12H9m6 3H9m12-3a9 9 0 11-18 0 9 9 0 0118 0z" /></g>\n</svg>'},8921:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6.827 6.175A2.31 2.31 0 015.186 7.23c-.38.054-.757.112-1.134.175C2.999 7.58 2.25 8.507 2.25 9.574V18a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9.574c0-1.067-.75-1.994-1.802-2.169a47.865 47.865 0 00-1.134-.175 2.31 2.31 0 01-1.64-1.055l-.822-1.316a2.192 2.192 0 00-1.736-1.039 48.774 48.774 0 00-5.232 0 2.192 2.192 0 00-1.736 1.039l-.821 1.316zM16.5 12.75a4.5 4.5 0 11-9 0 4.5 4.5 0 019 0z" /></g>\n</svg>'},8928:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 8.25V18a2.25 2.25 0 002.25 2.25h13.5A2.25 2.25 0 0021 18V8.25m-18 0V6a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 6v2.25m-18 0h18M5.25 6h.008v.008H5.25V6zM7.5 6h.008v.008H7.5V6zM9.75 6h.008v.008H9.75V6z" /></g>\n</svg>'},8955:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607zM10 7.5 7.5 7.5V10M13.5 11 13.5 13.5H11" /></g>\n</svg>'},8984:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 21H17L3 7V21ZM3 7 17 21m0 0 4-5M3 7 8 3M8 3 21 16" /></g>\n</svg>'},9001:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15.75 19.5L8.25 12l7.5-7.5" /></g>\n</svg>'},9028:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M5 12h14" /></g>\n</svg>'},9060:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.563.045.797.77.364 1.154l-4.22 3.737a.563.563 0 00-.172.527l1.283 5.376c.15.628-.548 1.13-1.066.77l-4.654-3.192a.563.563 0 00-.636 0l-4.654 3.192c-.518.36-1.216-.142-1.066-.77l1.283-5.376a.563.563 0 00-.172-.527l-4.22-3.737c-.433-.384-.199-1.11.364-1.154l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z" /></g>\n</svg>'},9074:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3 6v12M21 6v12M8 5h8a2 2 0 012 2v10a2 2 0 01-2 2H8a2 2 0 01-2-2V7a2 2 0 012-2Z" /></g>\n</svg>'},9215:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2.25 6A2.25 2.25 0 014.5 3.75h15A2.25 2.25 0 0121.75 6v12a2.25 2.25 0 01-2.25 2.25h-15A2.25 2.25 0 012.25 18V6zM7 9l3 3-3 3M12 15h5" /></g>\n</svg>'},9228:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15 10.5a3 3 0 11-6 0 3 3 0 016 0zM19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1115 0z" /></g>\n</svg>'},9230:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M10 7 3 19h14L10 7zM10 7 14 5 21 17 17 19" /></g>\n</svg>'},9264:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z" /></g>\n</svg>'},9265:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zM9 6l6 0-3 3z" /></g>\n</svg>'},9389:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M13.5 6H3.75m9.75 0a1.5 1.5 0 0 1 3 0m-3 0a1.5 1.5 0 0 0 3 0m3.75 0H16.5m-3 12H3.75m9.75 0a1.5 1.5 0 0 1 3 0m-3 0a1.5 1.5 0 0 0 3 0m3.75 0H16.5m-9-6H3.75m3.75 0a1.5 1.5 0 0 1 3 0m-3 0a1.5 1.5 0 0 0 3 0m9.75 0H10.5" /></g>\n</svg>'},9429:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2.25 18.75l15.75 2.25c1 .2 1-0 1.2-1L19.4 18.8M3.75 4.5v.75A.75.75 0 013 6h-.75m0 0v-.375c0-.621.504-1.125 1.125-1.125H20.25M2.25 6v9m18-10.5v.75c0 .414.336.75.75.75h.75m-1.5-1.5h.375c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-.375m1.5-1.5H21a.75.75 0 00-.75.75v.75m0 0H3.75m0 0h-.375a1.125 1.125 0 01-1.125-1.125V15m1.5 1.5v-.75A.75.75 0 003 15h-.75M15 10.5a3 3 0 11-6 0 3 3 0 016 0Zm3 0h.008v.008H18V10.5Zm-12 0h.008v.008H6V10.5Z" /></g>\n</svg>'},9460:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M2.25 13.5h3.86a2.25 2.25 0 012.012 1.244l.256.512a2.25 2.25 0 002.013 1.244h3.218a2.25 2.25 0 002.013-1.244l.256-.512a2.25 2.25 0 012.013-1.244h3.859m-19.5.338V18a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 00-2.15-1.588H6.911a2.25 2.25 0 00-2.15 1.588L2.35 13.177a2.25 2.25 0 00-.1.661z" /></g>\n</svg>'},9466:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15" /></g>\n</svg>'},9596:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 2V6M5 6H19C20.6569 6 22 7.34315 22 9V15C22 16.6569 20.6569 18 19 18H5C3.34315 18 2 16.6569 2 15V9C2 7.34315 3.34315 6 5 6Z M6 12H10M8 10V14 M18 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0z" /></g>\n</svg>'},9702:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M20.8 12.0 L20.7 13.2 L20.3 14.4 L19.7 15.4 L18.9 16.4 L18.0 17.1 L17.0 17.6 L15.9 17.9 L14.8 18.1 L13.8 18.0 L12.9 17.8 L12.1 17.6 L11.3 17.2 L10.7 16.8 L10.1 16.5 L9.7 16.1 L9.2 15.8 L8.7 15.6 L8.3 15.3 L7.7 15.1 L7.2 14.8 L6.5 14.4 L5.9 14.0 L5.2 13.5 L4.6 12.8 L4.0 12.0 L3.5 11.1 L3.2 10.0 L3.1 8.9 L3.2 7.7 L3.5 6.6 L4.1 5.5 L4.8 4.5 L5.8 3.7 L6.8 3.2 L8.0 2.8 L9.2 2.7 L10.4 2.9 L11.6 3.2 L12.6 3.8 L13.4 4.5 L14.1 5.3 L14.7 6.2 L15.0 7.1 L15.2 8.0 L15.3 8.9 L15.3 9.6 L15.3 10.3 L15.3 10.9 L15.2 11.5 L15.2 12.0 L15.2 12.5 L15.3 13.1 L15.3 13.7 L15.3 14.4 L15.3 15.1 L15.2 16.0 L15.0 16.9 L14.7 17.8 L14.1 18.7 L13.4 19.5 L12.6 20.2 L11.6 20.8 L10.4 21.1 L9.2 21.3 L8.0 21.2 L6.8 20.8 L5.8 20.3 L4.8 19.5 L4.1 18.5 L3.5 17.4 L3.2 16.3 L3.1 15.1 L3.2 14.0 L3.5 12.9 L4.0 12.0 L4.6 11.2 L5.2 10.5 L5.9 10.0 L6.5 9.6 L7.2 9.2 L7.7 8.9 L8.3 8.7 L8.7 8.4 L9.2 8.2 L9.7 7.9 L10.1 7.5 L10.7 7.2 L11.3 6.8 L12.1 6.4 L12.9 6.2 L13.8 6.0 L14.8 5.9 L15.9 6.1 L17.0 6.4 L18.0 6.9 L18.9 7.6 L19.7 8.6 L20.3 9.6 L20.7 10.8 L20.8 12.0Z" /></g>\n</svg>'},9773:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M21 10.5h.375c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125H21M3.75 18h15A2.25 2.25 0 0021 15.75v-6a2.25 2.25 0 00-2.25-2.25h-15A2.25 2.25 0 001.5 9.75v6A2.25 2.25 0 003.75 18zM4.5 10.5h13.5L18 15 4.5 15 4.5 10.5" /></g>\n</svg>'},9797:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M14.25 7.756a4.5 4.5 0 100 8.488M7.5 10.5h5.25m-5.25 3h5.25M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></g>\n</svg>'},9813:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M18.75 19.5l-7.5-7.5 7.5-7.5m-6 15L5.25 12l7.5-7.5" /></g>\n</svg>'},9830:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184" /></g>\n</svg>'},9839:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M12 2L21 7L21 17L12 22L3 17L3 7L12 2Z M12 22V15 M12 15L7 9L17 9L12 15Z M12 2L7 9 M12 2L17 9 M21 7L17 9 M21 17L17 9 M21 17L12 15 M3 17L12 15 M3 17L7 9 M3 7L7 9" /></g>\n</svg>'},9914:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M6 9c-1.5 0-3-1.5-3-3V5h3M18 9c1.5 0 3-1.5 3-3V5h-3M6 9V5h12v4c0 3.3-2.7 6-6 6s-6-2.7-6-6zM12 15v3M9 21h6M10 18h4" /></g>\n</svg>'},9918:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M3.75 3v11.25A2.25 2.25 0 006 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0118 16.5h-2.25m-7.5 0h7.5m-7.5 0l-1 3m8.5-3l1 3m0 0l.5 1.5m-.5-1.5h-9.5m0 0l-.5 1.5m.75-9 3-3 2.148 2.148A12.061 12.061 0 0116.5 7.605" /></g>\n</svg>'},9965:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M9.90 5.32 L9.14 2.94 A9.5 9.5 0 0 1 14.86 2.94 L14.10 5.32 A7 7 0 0 1 16.73 6.84 L18.42 5.00 A9.5 9.5 0 0 1 21.27 9.94 L18.83 10.48 A7 7 0 0 1 18.83 13.52 L21.27 14.06 A9.5 9.5 0 0 1 18.42 19.00 L16.73 17.16 A7 7 0 0 1 14.10 18.68 L14.86 21.06 A9.5 9.5 0 0 1 9.14 21.06 L9.90 18.68 A7 7 0 0 1 7.27 17.16 L5.58 19.00 A9.5 9.5 0 0 1 2.73 14.06 L5.17 13.52 A7 7 0 0 1 5.17 10.48 L2.73 9.94 A9.5 9.5 0 0 1 5.58 5.00 L7.27 6.84 A7 7 0 0 1 9.90 5.32 Z M14.5 12 A2.5 2.5 0 1 0 9.5 12 A2.5 2.5 0 1 0 14.5 12 Z" /></g>\n</svg>'},9979:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 01-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 011.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 00-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 01-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 00-3.375-3.375h-1.5a1.125 1.125 0 01-1.125-1.125v-1.5a3.375 3.375 0 00-3.375-3.375H9.75" /></g>\n</svg>'},9989:t=>{t.exports='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">\n <g><path d="M18.375 12.739l-7.693 7.693a4.5 4.5 0 01-6.364-6.364l10.94-10.94A3 3 0 1119.5 7.372L8.552 18.32m.009-.01l-.01.01m5.699-9.941l-7.81 7.81a1.5 1.5 0 002.112 2.13" /></g>\n</svg>'}},e={};function s(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,s),i.exports}s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var n={};s.d(n,{default:()=>w});const o={"bars-3":s(5594),"x-mark":s(834),check:s(4964),"double-tick":s(3619),plus:s(44),minus:s(9028),"magnifying-glass":s(6376),"magnifying-glass-focus":s(8955),"magnifying-glass-plus":s(6721),"magnifying-glass-minus":s(7743),home:s(2825),"cog-6-tooth":s(9965),trash:s(8194),"arrow-left":s(7803),"arrow-right":s(5294),"arrow-up":s(5607),"arrow-down":s(7468),"arrow-long-left":s(3748),"arrow-long-right":s(3579),"arrow-long-up":s(6204),"arrow-long-down":s(4323),"arrow-path":s(2229),"arrow-rotate-cw":s(7912),"arrow-rotate-ccw":s(7107),"rotate-add":s(5251),"rotate-minus":s(1578),"arrow-top-right-on-square":s(4682),"arrow-right-on-rectangle":s(6924),"arrow-left-on-rectangle":s(3247),"chevron-left":s(9001),"chevron-right":s(3188),"chevron-up":s(7921),"chevron-down":s(8770),"chevron-double-left":s(9813),"chevron-double-right":s(5672),"chevron-double-up":s(1077),"chevron-double-down":s(2526),envelope:s(7984),"envelope-open":s(1017),"chat-bubble-left":s(737),"chat-bubble-right":s(6876),"chat-bubble-left-ellipsis":s(6399),"chat-bubble-right-ellipsis":s(4024),"chat-bubble-left-right":s(3912),phone:s(6024),"phone-x-mark":s(515),user:s(477),"user-circle":s(2538),"user-plus":s(3846),"user-minus":s(2174),"user-group":s(1411),users:s(6564),alert:s(5814),play:s(4882),pause:s(3730),stop:s(4900),"play-circle":s(639),"pause-circle":s(5263),"stop-circle":s(769),"speaker-wave":s(1163),"speaker-x-mark":s(3302),microphone:s(3660),"microphone-mute":s(3286),"video-camera":s(6375),camera:s(8921),photo:s(3200),panorama:s(4933),"musical-note":s(4935),code:s(963),console:s(9215),"horizontal-3-dots":s(2233),"vertical-3-dots":s(1959),save:s(8691),"computer-laptop":s(4380),"computer-code":s(2999),"computer-desktop":s(3584),"device-phone-mobile":s(548),"device-tablet":s(8615),"battery-0":s(7476),"battery-10":s(4399),"battery-50":s(2299),"battery-100":s(9773),controller:s(9596),game:s(2818),window:s(8928),"shopping-cart":s(4931),"shopping-bag":s(8045),basket:s(722),"credit-card":s(654),banknotes:s(9429),calendar:s(6254),"calendar-plus":s(7351),"calendar-minus":s(1445),"calendar-approve":s(4718),"calendar-reject":s(618),"calendar-days":s(1438),briefcase:s(2496),"presentation-chart-line":s(9918),"presentation-media":s(3623),whiteboard:s(6613),"chart-line":s(7115),"chart-bar":s(900),"chart-pie":s(613),"currency-dollar":s(7764),"currency-euro":s(9797),"currency-pound":s(484),"currency-yen":s(8910),"currency-ringgit":s(1764),tabs:s(5752),document:s(887),"document-text":s(1381),"document-duplicate":s(9979),folder:s(152),"folder-open":s(5889),"folder-plus":s(1329),"folder-minus":s(5903),clipboard:s(9830),"clipboard-document-check":s(2487),"paper-clip":s(9989),"archive-box":s(2742),inbox:s(9460),"book-open":s(5988),"book-close":s(8360),"book-stacked":s(2615),"lock-closed":s(6389),"lock-open":s(2222),key:s(8313),"shield-check":s(4712),"shield-exclamation":s(2523),"exclamation-circle":s(7180),"exclamation-triangle":s(6396),"information-circle":s(1107),"question-mark-circle":s(171),bell:s(2119),"bell-alert":s(234),eye:s(4259),"eye-slash":s(3807),"light-bulb":s(1372),bolt:s(3797),moon:s(4951),sun:s(7134),cloud:s(6415),thunder:s(3532),star:s(9060),heart:s(9264),"hand-thumb-up":s(5182),"hand-thumb-down":s(1937),hand:s(8375),"hand-grab":s(518),flag:s(4002),bookmark:s(6996),map:s(5006),"map-pin":s(9228),"globe-alt":s(7941),truck:s(21),cake:s(1480),gift:s(4934),trophy:s(9914),medal:s(2669),"qr-code":s(601),wifi:s(8099),vr:s(3636),ar:s(6589),"group-object":s(879),"ungroup-object":s(4202),"align-left-object":s(1285),"align-center-object":s(3693),"align-right-object":s(8042),"align-top-object":s(2047),"align-middle-object":s(3801),"align-bottom-object":s(4071),carousel:s(9074),reel:s(7244),container:s(7393),"flip-horizontal":s(718),"flip-vertical":s(948),grid:s(8828),"tic-tac-toe":s(3640),robot:s(5140),chatbot:s(7537),"arrow-left-arrow-right":s(7606),"arrow-up-arrow-down":s(1912),"arrow-left-right":s(6042),"arrow-up-down":s(6844),"arrow-up-down-left-right":s(5551),maximize:s(9466),minimize:s(5884),compress:s(8768),expand:s(3868),layout:s(1902),table:s(7936),focus:s(2644),crosshair:s(4512),"hourglass-0":s(9265),"hourglass-50":s(4308),"hourglass-80":s(3723),"hourglass-100":s(7680),clock:s(1766),"time-reset":s(781),"layer-stacks":s(5007),cube:s(3003),sphere:s(5384),cylinder:s(246),tube:s(3213),cone:s(4597),pyramid:s(4992),polygon:s(6526),torus:s(2675),plane:s(4538),wedge:s(8984),roof:s(9230),"cylinder-half":s(2519),"sphere-half":s(3831),"heart-extruded":s(1808),"torus-knot":s(9702),tetrahedron:s(2060),octahedron:s(6151),icosahedron:s(9839),dodecahedron:s(402),sparkles:s(6893),"magic-wand":s(8204),contrast:s(1482),gradient:s(420),cursor:s(4618),marquee:s(7700),shapes:s(4770),square:s(5513),rectangle:s(2691),circle:s(6144),diamond:s(4136),hexagon:s(6248),"draw-line":s(6241),"draw-curve":s(5608),pencil:s(5683),brush:s(1228),eraser:s(588),crop:s(5934),scissor:s(474),font:s(6947),text:s(2953),"text-align-center":s(6173),"text-align-left":s(357),"text-align-right":s(6984),"text-align-justify":s(3494),"sliders-horizontal":s(5839),"sliders-vertical":s(9389)};function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function r(t,e){for(var s=0;s<e.length;s++){var n=e[s];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,a(n.key),n)}}function a(t){var e=function(t){if("object"!=i(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var s=e.call(t,"string");if("object"!=i(s))return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==i(e)?e:e+""}function l(t,e,s){return e=d(e),function(t,e){if(e&&("object"==i(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,p()?Reflect.construct(e,s||[],d(t).constructor):e.apply(t,s))}function h(t){var e="function"==typeof Map?new Map:void 0;return h=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return function(t,e,s){if(p())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var o=new(t.bind.apply(t,n));return s&&c(o,s.prototype),o}(t,arguments,d(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),c(s,t)},h(t)}function p(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(p=function(){return!!t})()}function c(t,e){return c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},c(t,e)}function d(t){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},d(t)}var u=function(t){function e(){var t;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(t=l(this,e)).attachShadow({mode:"open"}),t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&c(t,e)}(e,t),s=e,i=[{key:"observedAttributes",get:function(){return["icon","thickness"]}}],(n=[{key:"attributeChangedCallback",value:function(t,e,s){"icon"!==t&&"thickness"!==t||this.render()}},{key:"connectedCallback",value:function(){this.render()}},{key:"render",value:function(){var t=this.getAttribute("icon"),e=o[t];if(e){var s=this.getAttribute("thickness"),n=e;s&&(n=n.replace(/stroke-width="[^"]*"/,'stroke-width="'.concat(s,'"'))),this.shadowRoot.innerHTML="\n <style>\n :host {\n display: inline-flex;\n width: 1em;\n height: 1em;\n vertical-align: middle;\n }\n svg {\n width: 100%;\n height: 100%;\n }\n </style>\n ".concat(n,"\n ")}else this.shadowRoot.innerHTML=""}}])&&r(s.prototype,n),i&&r(s,i),Object.defineProperty(s,"prototype",{writable:!1}),s;var s,n,i}(h(HTMLElement));function v(){document.querySelectorAll("i.ss").forEach(function(t){if(!t.dataset.ssLoaded){var e=Array.from(t.classList).find(function(t){return(t.startsWith("ss-")||t.startsWith("sw-"))&&"ss"!==t});if(e){var s=e.startsWith("sw-")?e:e.replace("ss-",""),n=o[s];n&&(t.innerHTML=n,t.dataset.ssLoaded="true")}}})}customElements.define("ss-icon",u),document.addEventListener("DOMContentLoaded",v);var g=new MutationObserver(function(t){var e=!1;t.forEach(function(t){(t.addedNodes.length||"attributes"===t.type&&"class"===t.attributeName)&&(e=!0)}),e&&v()});document.body?g.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["class"]}):document.addEventListener("DOMContentLoaded",function(){g.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["class"]})});const w={icons:o};return n.default})(),t.exports=e()}},e={};function s(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n].call(i.exports,i,i.exports,s),i.exports}s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var n={};return(()=>{"use strict";s.d(n,{default:()=>Z});class t{constructor(){this.events=new Map,this.onceEvents=new Map}on(t,e){return this.events.has(t)||this.events.set(t,new Set),this.events.get(t).add(e),()=>this.off(t,e)}once(t,e){this.onceEvents.has(t)||this.onceEvents.set(t,new Set),this.onceEvents.get(t).add(e)}off(t,e){this.events.has(t)&&this.events.get(t).delete(e),this.onceEvents.has(t)&&this.onceEvents.get(t).delete(e)}emit(t,e){this.events.has(t)&&this.events.get(t).forEach(s=>{try{s(e)}catch(e){console.error(`Error in event listener for "${t}":`,e)}}),this.onceEvents.has(t)&&(this.onceEvents.get(t).forEach(s=>{try{s(e)}catch(e){console.error(`Error in once listener for "${t}":`,e)}}),this.onceEvents.delete(t)),"*"!==t&&this.emit("*",{event:t,data:e})}removeAllListeners(t){t?(this.events.delete(t),this.onceEvents.delete(t)):(this.events.clear(),this.onceEvents.clear())}listenerCount(t){return(this.events.has(t)?this.events.get(t).size:0)+(this.onceEvents.has(t)?this.onceEvents.get(t).size:0)}}const e="document:open",o="layer:add",i="layer:remove",r="layer:select",a="layer:rename",l="layer:reorder",h="layer:visibility",p="layer:opacity",c="history:push",d="history:undo",u="history:redo",v="selection:create",g="color:foreground",w="color:background",m="change";class x{constructor(t,e={}){this.app=t,this.width=e.width||1920,this.height=e.height||1080,this.zoom=100,this.panX=0,this.panY=0,this.minZoom=1,this.maxZoom=3200,this.container=null,this.viewport=null,this.workCanvas=null,this.workCtx=null,this.displayCanvas=null,this.displayCtx=null,this.overlayCanvas=null,this.overlayCtx=null,this.needsRender=!1,this.renderScheduled=!1,this.checkerboardPattern=null}init(t){this.container=t,this.createCanvasElements(),this.createCheckerboardPattern(),this.bindEvents(),this.render()}createCanvasElements(){this.viewport=document.createElement("div"),this.viewport.className="swp-viewport",this.canvasWrapper=document.createElement("div"),this.canvasWrapper.className="swp-canvas-wrapper",this.workCanvas=document.createElement("canvas"),this.workCanvas.width=this.width,this.workCanvas.height=this.height,this.workCanvas.className="swp-work-canvas",this.workCtx=this.workCanvas.getContext("2d"),this.displayCanvas=document.createElement("canvas"),this.displayCanvas.className="swp-display-canvas",this.displayCtx=this.displayCanvas.getContext("2d"),this.overlayCanvas=document.createElement("canvas"),this.overlayCanvas.className="swp-overlay-canvas",this.overlayCtx=this.overlayCanvas.getContext("2d"),this.canvasWrapper.appendChild(this.displayCanvas),this.canvasWrapper.appendChild(this.overlayCanvas),this.viewport.appendChild(this.canvasWrapper),this.container.appendChild(this.viewport),this.updateDisplaySize()}createCheckerboardPattern(){const t=16,e=document.createElement("canvas");e.width=32,e.height=32;const s=e.getContext("2d");s.fillStyle="#ffffff",s.fillRect(0,0,32,32),s.fillStyle="#e0e0e0",s.fillRect(0,0,t,t),s.fillRect(t,t,t,t),this.checkerboardPattern=this.workCtx.createPattern(e,"repeat")}bindEvents(){this.viewport.addEventListener("wheel",this.handleWheel.bind(this),{passive:!1}),this.resizeObserver=new ResizeObserver(()=>{this.updateDisplaySize(),this.render()}),this.resizeObserver.observe(this.viewport)}handleWheel(t){if(t.ctrlKey||t.metaKey){t.preventDefault();const e=t.deltaY>0?.9:1.1,s=Math.round(this.zoom*e),n=this.displayCanvas.getBoundingClientRect(),o=t.clientX-n.left,i=t.clientY-n.top;this.setZoom(s,o,i)}else t.preventDefault(),this.panX-=t.deltaX,this.panY-=t.deltaY,this.render()}updateDisplaySize(){if(!this.viewport)return;const t=this.viewport.getBoundingClientRect();this.displayCanvas.width=t.width,this.displayCanvas.height=t.height,this.overlayCanvas.width=t.width,this.overlayCanvas.height=t.height}resize(t,e){this.width=t,this.height=e,this.workCanvas.width=t,this.workCanvas.height=e,this.createCheckerboardPattern(),this.render(),this.app.events.emit("document:resize",{width:t,height:e})}setZoom(t,e=null,s=null){const n=this.zoom;if(this.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,t)),null!==e&&null!==s){const t=this.zoom/n;this.panX=e-(e-this.panX)*t,this.panY=s-(s-this.panY)*t}this.render(),this.app.events.emit("canvas:zoom",{zoom:this.zoom})}zoomIn(){const t=[1,2,3,4,5,6.25,8.33,12.5,16.67,25,33.33,50,66.67,100,150,200,300,400,500,600,800,1200,1600,2400,3200].find(t=>t>this.zoom)||this.maxZoom;this.setZoom(t,this.displayCanvas.width/2,this.displayCanvas.height/2)}zoomOut(){const t=[1,2,3,4,5,6.25,8.33,12.5,16.67,25,33.33,50,66.67,100,150,200,300,400,500,600,800,1200,1600,2400,3200].reverse().find(t=>t<this.zoom)||this.minZoom;this.setZoom(t,this.displayCanvas.width/2,this.displayCanvas.height/2)}fitToScreen(){const t=this.displayCanvas.width-80,e=this.displayCanvas.height-80,s=t/this.width,n=e/this.height,o=Math.min(s,n);this.zoom=Math.round(100*o),this.panX=(this.displayCanvas.width-this.width*o)/2,this.panY=(this.displayCanvas.height-this.height*o)/2,this.render()}pan(t,e){this.panX+=t,this.panY+=e,this.render(),this.app.events.emit("canvas:pan",{panX:this.panX,panY:this.panY})}viewportToCanvas(t,e){const s=this.zoom/100;return{x:(t-this.panX)/s,y:(e-this.panY)/s}}canvasToViewport(t,e){const s=this.zoom/100;return{x:t*s+this.panX,y:e*s+this.panY}}scheduleRender(){this.needsRender=!0,this.renderScheduled||(this.renderScheduled=!0,requestAnimationFrame(()=>{this.renderScheduled=!1,this.needsRender&&(this.needsRender=!1,this.render())}))}render(){this.workCtx.clearRect(0,0,this.width,this.height),this.workCtx.fillStyle=this.checkerboardPattern,this.workCtx.fillRect(0,0,this.width,this.height),this.app.layers.render(this.workCtx),this.displayCtx.clearRect(0,0,this.displayCanvas.width,this.displayCanvas.height),"dark"===this.app.options.theme?this.displayCtx.fillStyle="#18181B":this.displayCtx.fillStyle="#f5f5f5",this.displayCtx.fillRect(0,0,this.displayCanvas.width,this.displayCanvas.height);const t=this.zoom/100;this.displayCtx.save(),this.displayCtx.translate(this.panX,this.panY),this.displayCtx.scale(t,t),this.displayCtx.shadowColor="rgba(0, 0, 0, 0.3)",this.displayCtx.shadowBlur=20,this.displayCtx.shadowOffsetX=5,this.displayCtx.shadowOffsetY=5,this.displayCtx.drawImage(this.workCanvas,0,0),this.displayCtx.restore(),this.renderOverlay(),this.app.events.emit("canvas:render")}renderOverlay(){this.overlayCtx.clearRect(0,0,this.overlayCanvas.width,this.overlayCanvas.height);const t=this.zoom/100;this.overlayCtx.save(),this.overlayCtx.translate(this.panX,this.panY),this.overlayCtx.scale(t,t),this.app.selection&&this.app.selection.render(this.overlayCtx),this.app.tools?.currentTool&&this.app.tools.currentTool.renderOverlay(this.overlayCtx),this.overlayCtx.restore()}toDataURL(t="image/png",e=1){return this.workCanvas.toDataURL(t,e)}toBlob(t="image/png",e=1){return new Promise(s=>{this.workCanvas.toBlob(s,t,e)})}destroy(){this.resizeObserver&&this.resizeObserver.disconnect(),this.viewport&&this.viewport.remove()}}class k{constructor(t,e={}){this.app=t,this.maxStates=e.maxStates||50,this.states=[],this.currentIndex=-1,this.isPerformingAction=!1}init(){this.clear(),this.pushState("Initial State")}pushState(t,e=null){if(this.isPerformingAction)return;this.currentIndex<this.states.length-1&&(this.states=this.states.slice(0,this.currentIndex+1));const s=e||this.captureState();this.states.push({name:t,timestamp:Date.now(),state:s}),this.states.length>this.maxStates?this.states.shift():this.currentIndex++,this.app.events.emit(c,{actionName:t,index:this.currentIndex,total:this.states.length})}captureState(){return{layers:this.app.layers.getLayers().map(t=>({id:t.id,name:t.name,type:t.type,visible:t.visible,locked:t.locked,opacity:t.opacity,blendMode:t.blendMode,position:{...t.position},imageData:t.canvas?t.canvas.toDataURL():null})),activeLayerId:this.app.layers.activeLayer?.id,canvasWidth:this.app.canvas.width,canvasHeight:this.app.canvas.height,zoom:this.app.canvas.zoom,panX:this.app.canvas.panX,panY:this.app.canvas.panY}}async restoreState(t){this.isPerformingAction=!0;try{this.app.layers.clear(),this.app.canvas.resize(t.canvasWidth,t.canvasHeight),this.app.canvas.zoom=t.zoom,this.app.canvas.panX=t.panX,this.app.canvas.panY=t.panY;for(const e of t.layers){const t=await this.app.layers.addLayer({id:e.id,name:e.name,type:e.type,visible:e.visible,locked:e.locked,opacity:e.opacity,blendMode:e.blendMode,position:e.position});e.imageData&&await t.loadFromDataURL(e.imageData)}t.activeLayerId&&this.app.layers.setActiveLayer(t.activeLayerId),this.app.canvas.render()}finally{this.isPerformingAction=!1}}async undo(){if(!this.canUndo())return!1;this.currentIndex--;const t=this.states[this.currentIndex];return await this.restoreState(t.state),this.app.events.emit(d,{actionName:t.name,index:this.currentIndex}),!0}async redo(){if(!this.canRedo())return!1;this.currentIndex++;const t=this.states[this.currentIndex];return await this.restoreState(t.state),this.app.events.emit(u,{actionName:t.name,index:this.currentIndex}),!0}canUndo(){return this.currentIndex>0}canRedo(){return this.currentIndex<this.states.length-1}async goToState(t){if(t<0||t>=this.states.length)return!1;this.currentIndex=t;const e=this.states[this.currentIndex];return await this.restoreState(e.state),!0}getStates(){return this.states.map((t,e)=>({index:e,name:t.name,timestamp:t.timestamp,isCurrent:e===this.currentIndex}))}getCurrentIndex(){return this.currentIndex}clear(){this.states=[],this.currentIndex=-1,this.app.events.emit("history:clear")}get count(){return this.states.length}}class y{constructor(t){this.app=t,this.shortcuts=new Map,this.enabled=!0,this.modifiers={ctrl:!1,shift:!1,alt:!1,meta:!1},this.spacePressed=!1,this.init()}init(){this.registerDefaultShortcuts(),document.addEventListener("keydown",this.handleKeyDown.bind(this)),document.addEventListener("keyup",this.handleKeyUp.bind(this)),window.addEventListener("blur",this.resetModifiers.bind(this))}registerDefaultShortcuts(){this.register("v",()=>this.app.tools.setTool("move")),this.register("m",()=>this.app.tools.setTool("marquee")),this.register("l",()=>this.app.tools.setTool("lasso")),this.register("w",()=>this.app.tools.setTool("magicWand")),this.register("b",()=>this.app.tools.setTool("brush")),this.register("e",()=>this.app.tools.setTool("eraser")),this.register("g",()=>this.app.tools.setTool("gradient")),this.register("t",()=>this.app.tools.setTool("text")),this.register("u",()=>this.app.tools.setTool("shape")),this.register("i",()=>this.app.tools.setTool("eyedropper")),this.register("z",()=>this.app.tools.setTool("zoom")),this.register("h",()=>this.app.tools.setTool("hand")),this.register("s",()=>this.app.tools.setTool("cloneStamp")),this.register("c",()=>this.app.tools.setTool("crop")),this.register("ctrl+n",()=>this.app.file.newDocument()),this.register("ctrl+o",()=>this.app.file.open()),this.register("ctrl+s",()=>this.app.file.save()),this.register("ctrl+shift+s",()=>this.app.file.saveAs()),this.register("ctrl+e",()=>this.app.file.export()),this.register("ctrl+shift+e",()=>this.app.file.exportAs()),this.register("ctrl+z",()=>this.app.history.undo()),this.register("ctrl+shift+z",()=>this.app.history.redo()),this.register("ctrl+y",()=>this.app.history.redo()),this.register("ctrl+a",()=>this.app.selection.selectAll()),this.register("ctrl+d",()=>this.app.selection.deselect()),this.register("ctrl+shift+i",()=>this.app.selection.invert()),this.register("ctrl+c",()=>this.app.clipboard.copy()),this.register("ctrl+v",()=>this.app.clipboard.paste()),this.register("ctrl+x",()=>this.app.clipboard.cut()),this.register("ctrl+t",()=>this.app.tools.startTransform()),this.register("delete",()=>this.app.layers.deleteSelection()),this.register("backspace",()=>this.app.layers.deleteSelection()),this.register("ctrl+0",()=>this.app.canvas.fitToScreen()),this.register("ctrl+1",()=>this.app.canvas.setZoom(100)),this.register("ctrl+plus",()=>this.app.canvas.zoomIn()),this.register("ctrl+minus",()=>this.app.canvas.zoomOut()),this.register("tab",()=>this.app.ui.togglePanels()),this.register("f",()=>this.app.ui.toggleFullscreen()),this.register("[",()=>this.app.tools.decreaseBrushSize()),this.register("]",()=>this.app.tools.increaseBrushSize()),this.register("shift+[",()=>this.app.tools.decreaseBrushHardness()),this.register("shift+]",()=>this.app.tools.increaseBrushHardness()),this.register("ctrl+shift+n",()=>this.app.layers.addLayer()),this.register("ctrl+j",()=>this.app.layers.duplicateLayer()),this.register("ctrl+shift+e",()=>this.app.layers.mergeVisible()),this.register("ctrl+e",()=>this.app.layers.mergeDown()),this.register("x",()=>this.app.colors.swap()),this.register("d",()=>this.app.colors.reset()),this.register("escape",()=>this.app.cancelCurrentAction()),this.register("enter",()=>this.app.confirmCurrentAction())}register(t,e,s={}){const n=this.normalizeShortcut(t);this.shortcuts.set(n,{callback:e,preventDefault:!1!==s.preventDefault,allowInInput:s.allowInInput||!1,description:s.description||""})}unregister(t){const e=this.normalizeShortcut(t);this.shortcuts.delete(e)}normalizeShortcut(t){return t.toLowerCase().split("+").sort((t,e)=>{const s=["ctrl","alt","shift","meta"],n=s.indexOf(t),o=s.indexOf(e);return-1===n&&-1===o?t.localeCompare(e):-1===n?1:-1===o?-1:n-o}).join("+")}buildShortcutFromEvent(t){const e=[];(t.ctrlKey||t.metaKey)&&e.push("ctrl"),t.altKey&&e.push("alt"),t.shiftKey&&e.push("shift");let s=t.key.toLowerCase();return s={" ":"space",arrowup:"up",arrowdown:"down",arrowleft:"left",arrowright:"right","=":"plus","-":"minus"}[s]||s,["control","alt","shift","meta"].includes(s)||e.push(s),this.normalizeShortcut(e.join("+"))}handleKeyDown(t){if(this.modifiers.ctrl=t.ctrlKey||t.metaKey,this.modifiers.shift=t.shiftKey,this.modifiers.alt=t.altKey,this.modifiers.meta=t.metaKey,"Space"===t.code&&!this.spacePressed){const e=this.app.tools?.currentTool;if("text"===e?.name&&e?.editingLayer)return;return this.spacePressed=!0,this.app.tools.activateTemporaryTool("hand"),void t.preventDefault()}if(!this.enabled)return;const e=this.app.tools?.currentTool;if("text"===e?.name&&e?.editingLayer&&!t.ctrlKey&&!t.altKey&&!t.metaKey)return;const s=t.target,n="INPUT"===s.tagName||"TEXTAREA"===s.tagName||"true"===s.contentEditable,o=this.buildShortcutFromEvent(t),i=this.shortcuts.get(o);if(i){if(n&&!i.allowInInput)return;i.preventDefault&&t.preventDefault();try{i.callback(t)}catch(t){console.error(`Error executing shortcut "${o}":`,t)}}}handleKeyUp(t){this.modifiers.ctrl=t.ctrlKey||t.metaKey,this.modifiers.shift=t.shiftKey,this.modifiers.alt=t.altKey,this.modifiers.meta=t.metaKey,"Space"===t.code&&(this.spacePressed=!1,this.app.tools.deactivateTemporaryTool())}resetModifiers(){this.modifiers.ctrl=!1,this.modifiers.shift=!1,this.modifiers.alt=!1,this.modifiers.meta=!1,this.spacePressed=!1,this.app.tools.deactivateTemporaryTool()}setEnabled(t){this.enabled=t}isModifierPressed(t){return this.modifiers[t]||!1}getShortcuts(){const t=[];return this.shortcuts.forEach((e,s)=>{t.push({shortcut:s,description:e.description})}),t}destroy(){document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener("keyup",this.handleKeyUp),window.removeEventListener("blur",this.resetModifiers),this.shortcuts.clear()}}let f=0;class b{constructor(t={}){this.id=t.id||`layer_${++f}_${Date.now()}`,this.name=t.name||`Layer ${f}`,this.type=t.type||"raster",this.visible=void 0===t.visible||t.visible,this.locked=t.locked||!1,this.opacity=void 0!==t.opacity?t.opacity:100,this.blendMode=t.blendMode||"normal",this.position=t.position||{x:0,y:0},this.width=t.width||0,this.height=t.height||0,this.canvas=null,this.ctx=null,this.textContent=t.textContent||"",this.textStyle={fontFamily:"Arial",fontSize:48,fontWeight:"normal",fontStyle:"normal",textAlign:"left",color:"#000000",lineHeight:1.2,...t.textStyle},this.shapeType=t.shapeType||null,this.shapeData=t.shapeData||null,this.fillColor=t.fillColor||"#000000",this.strokeColor=t.strokeColor||"transparent",this.strokeWidth=t.strokeWidth||0,this.mask=null,this.maskEnabled=!1,this.filters=t.filters||[],this.app=null}initCanvas(t,e){this.width=t,this.height=e,this.canvas=document.createElement("canvas"),this.canvas.width=t,this.canvas.height=e,this.ctx=this.canvas.getContext("2d")}clear(){this.ctx&&this.ctx.clearRect(0,0,this.width,this.height)}fill(t){this.ctx&&(this.ctx.fillStyle=t,this.ctx.fillRect(0,0,this.width,this.height))}loadImage(t){return new Promise((e,s)=>{const n=t instanceof HTMLImageElement?t:new Image,o=()=>{this.canvas||this.initCanvas(n.width,n.height),this.ctx.drawImage(n,0,0),e(this)};t instanceof HTMLImageElement&&t.complete?o():(n.onload=o,n.onerror=s,"string"==typeof t&&(n.crossOrigin="anonymous",n.src=t))})}loadFromDataURL(t){return this.loadImage(t)}resize(t,e,s=!1){if(!this.canvas)return void this.initCanvas(t,e);const n=document.createElement("canvas");n.width=this.width,n.height=this.height,n.getContext("2d").drawImage(this.canvas,0,0),this.canvas.width=t,this.canvas.height=e,this.width=t,this.height=e,s?this.ctx.drawImage(n,0,0,t,e):this.ctx.drawImage(n,0,0)}getImageData(t=0,e=0,s=this.width,n=this.height){return this.ctx?this.ctx.getImageData(t,e,s,n):null}putImageData(t,e=0,s=0){this.ctx&&this.ctx.putImageData(t,e,s)}draw(t){this.ctx&&(this.ctx.save(),t(this.ctx),this.ctx.restore())}render(t){if(this.visible&&("raster"!==this.type||this.canvas)){switch(t.save(),t.globalAlpha=this.opacity/100,t.globalCompositeOperation=this.getCompositeOperation(),t.translate(this.position.x,this.position.y),this.type){case"text":this.renderText(t);break;case"shape":this.renderShape(t);break;default:this.canvas&&t.drawImage(this.canvas,0,0)}t.restore()}}renderText(t){const{fontFamily:e,fontSize:s,fontWeight:n,fontStyle:o,textAlign:i,color:r,lineHeight:a}=this.textStyle;t.font=`${o} ${n} ${s}px ${e}`,t.fillStyle=r,t.textAlign=i,t.textBaseline="top",this.textContent.split("\n").forEach((e,n)=>{t.fillText(e,0,n*s*a)})}renderShape(t){if(!this.shapeData)return;t.fillStyle=this.fillColor,t.strokeStyle=this.strokeColor,t.lineWidth=this.strokeWidth;const{x:e,y:s,width:n,height:o,points:i}=this.shapeData;switch(this.shapeType){case"rectangle":t.beginPath(),t.rect(e,s,n,o),"transparent"!==this.fillColor&&t.fill(),this.strokeWidth>0&&t.stroke();break;case"ellipse":t.beginPath(),t.ellipse(e+n/2,s+o/2,n/2,o/2,0,0,2*Math.PI),"transparent"!==this.fillColor&&t.fill(),this.strokeWidth>0&&t.stroke();break;case"line":t.beginPath(),t.moveTo(i[0].x,i[0].y),t.lineTo(i[1].x,i[1].y),t.stroke();break;case"polygon":i&&i.length>2&&(t.beginPath(),t.moveTo(i[0].x,i[0].y),i.slice(1).forEach(e=>t.lineTo(e.x,e.y)),t.closePath(),"transparent"!==this.fillColor&&t.fill(),this.strokeWidth>0&&t.stroke())}}getCompositeOperation(){return{normal:"source-over",multiply:"multiply",screen:"screen",overlay:"overlay",darken:"darken",lighten:"lighten","color-dodge":"color-dodge","color-burn":"color-burn","hard-light":"hard-light","soft-light":"soft-light",difference:"difference",exclusion:"exclusion",hue:"hue",saturation:"saturation",color:"color",luminosity:"luminosity"}[this.blendMode]||"source-over"}clone(){const t=new b({name:`${this.name} copy`,type:this.type,visible:this.visible,locked:this.locked,opacity:this.opacity,blendMode:this.blendMode,position:{...this.position},textContent:this.textContent,textStyle:{...this.textStyle},shapeType:this.shapeType,shapeData:this.shapeData?{...this.shapeData}:null,fillColor:this.fillColor,strokeColor:this.strokeColor,strokeWidth:this.strokeWidth,filters:[...this.filters]});return this.canvas&&(t.initCanvas(this.width,this.height),t.ctx.drawImage(this.canvas,0,0)),t}toDataURL(t="image/png",e=1){return this.canvas?this.canvas.toDataURL(t,e):null}toJSON(){return{id:this.id,name:this.name,type:this.type,visible:this.visible,locked:this.locked,opacity:this.opacity,blendMode:this.blendMode,position:this.position,width:this.width,height:this.height,textContent:this.textContent,textStyle:this.textStyle,shapeType:this.shapeType,shapeData:this.shapeData,fillColor:this.fillColor,strokeColor:this.strokeColor,strokeWidth:this.strokeWidth,filters:this.filters,imageData:this.canvas?this.toDataURL():null}}static async fromJSON(t){const e=new b(t);return t.imageData&&await e.loadFromDataURL(t.imageData),e}}class M{constructor(t){this.app=t,this.layers=[],this.activeLayer=null}init(t,e){this.clear();const s=this.addLayer({name:"Background",type:"raster"});s.initCanvas(t,e),s.fill("#ffffff"),this.setActiveLayer(s.id)}addLayer(t={}){const e=new b(t);e.app=this.app,!e.canvas&&this.app.canvas&&e.initCanvas(this.app.canvas.width,this.app.canvas.height);const s=void 0!==t.index?t.index:this.layers.length;return this.layers.splice(s,0,e),this.activeLayer||(this.activeLayer=e),this.app.events.emit(o,{layer:e,index:s}),e}removeLayer(t){const e=this.layers.findIndex(e=>e.id===t);if(-1===e)return!1;if(1===this.layers.length)return console.warn("Cannot remove the last layer"),!1;const s=this.layers.splice(e,1)[0];return this.activeLayer?.id===t&&(this.activeLayer=this.layers[Math.min(e,this.layers.length-1)]),this.app.events.emit(i,{layer:s,index:e}),this.app.canvas.scheduleRender(),!0}getLayer(t){return this.layers.find(e=>e.id===t)||null}getLayers(){return[...this.layers]}getVisibleLayers(){return this.layers.filter(t=>t.visible)}setActiveLayer(t){const e=this.getLayer(t);e&&(this.activeLayer=e,this.app.events.emit(r,{layer:e}))}getActiveLayer(){return this.activeLayer}moveLayer(t,e){const s=this.layers.findIndex(e=>e.id===t);if(-1===s)return;const[n]=this.layers.splice(s,1);this.layers.splice(e,0,n),this.app.events.emit(l,{layer:n,oldIndex:s,newIndex:e}),this.app.canvas.scheduleRender()}moveLayerUp(t){const e=this.layers.findIndex(e=>e.id===t);e<this.layers.length-1&&this.moveLayer(t,e+1)}moveLayerDown(t){const e=this.layers.findIndex(e=>e.id===t);e>0&&this.moveLayer(t,e-1)}renameLayer(t,e){const s=this.getLayer(t);s&&(s.name=e,this.app.events.emit(a,{layer:s,name:e}))}setLayerVisibility(t,e){const s=this.getLayer(t);s&&(s.visible=e,this.app.events.emit(h,{layer:s,visible:e}),this.app.canvas.scheduleRender())}setLayerOpacity(t,e){const s=this.getLayer(t);s&&(s.opacity=Math.max(0,Math.min(100,e)),this.app.events.emit(p,{layer:s,opacity:s.opacity}),this.app.canvas.scheduleRender())}setLayerBlendMode(t,e){const s=this.getLayer(t);s&&(s.blendMode=e,this.app.events.emit("layer:blendMode",{layer:s,blendMode:e}),this.app.canvas.scheduleRender())}setLayerLocked(t,e){const s=this.getLayer(t);s&&(s.locked=e,this.app.events.emit("layer:lock",{layer:s,locked:e}))}duplicateLayer(t){const e=this.getLayer(t);if(!e)return null;const s=e.clone();s.app=this.app;const n=this.layers.findIndex(e=>e.id===t);return this.layers.splice(n+1,0,s),this.app.events.emit("layer:duplicate",{original:e,duplicate:s}),this.app.canvas.scheduleRender(),s}mergeDown(t){const e=this.layers.findIndex(e=>e.id===t);if(e<=0)return;const s=this.layers[e],n=this.layers[e-1];s.locked||n.locked?console.warn("Cannot merge locked layers"):(n.ctx.save(),n.ctx.globalAlpha=s.opacity/100,n.ctx.globalCompositeOperation=s.getCompositeOperation(),n.ctx.translate(s.position.x,s.position.y),n.ctx.drawImage(s.canvas,0,0),n.ctx.restore(),this.layers.splice(e,1),this.activeLayer?.id===t&&(this.activeLayer=n),this.app.events.emit("layer:merge",{merged:n,removed:s}),this.app.canvas.scheduleRender())}mergeVisible(){const t=this.getVisibleLayers();if(0===t.length)return null;const e=new b({name:"Merged",type:"raster"});return e.app=this.app,e.initCanvas(this.app.canvas.width,this.app.canvas.height),t.forEach(t=>{e.ctx.save(),e.ctx.globalAlpha=t.opacity/100,e.ctx.globalCompositeOperation=t.getCompositeOperation(),e.ctx.translate(t.position.x,t.position.y),t.canvas&&e.ctx.drawImage(t.canvas,0,0),e.ctx.restore()}),this.layers=this.layers.filter(t=>!t.visible),this.layers.push(e),this.activeLayer=e,this.app.canvas.scheduleRender(),e}flatten(){const t=new b({name:"Background",type:"raster"});return t.app=this.app,t.initCanvas(this.app.canvas.width,this.app.canvas.height),t.fill("#ffffff"),this.layers.forEach(e=>{e.visible&&(t.ctx.save(),t.ctx.globalAlpha=e.opacity/100,t.ctx.globalCompositeOperation=e.getCompositeOperation(),t.ctx.translate(e.position.x,e.position.y),e.canvas&&t.ctx.drawImage(e.canvas,0,0),t.ctx.restore())}),this.layers=[t],this.activeLayer=t,this.app.canvas.scheduleRender(),t}render(t){this.layers.forEach(e=>{e.visible&&e.render(t)})}clear(){this.layers=[],this.activeLayer=null}deleteSelection(){if(this.activeLayer&&!this.activeLayer.locked)if(this.app.selection?.hasSelection())this.app.selection.clearSelection(this.activeLayer),this.app.canvas.scheduleRender(),this.app.history.pushState("Delete Selection");else if(this.layers.length>1){const t=this.activeLayer.id;this.removeLayer(t),this.app.history.pushState("Delete Layer")}else this.activeLayer.clear(),this.app.canvas.scheduleRender(),this.app.history.pushState("Clear Layer")}toJSON(){return this.layers.map(t=>t.toJSON())}async fromJSON(t){this.clear();for(const e of t){const t=await b.fromJSON(e);t.app=this.app,this.layers.push(t)}this.layers.length>0&&(this.activeLayer=this.layers[this.layers.length-1]),this.app.canvas.scheduleRender()}get count(){return this.layers.length}}class C{constructor(t){this.app=t,this.name="base",this.icon="cursor",this.cursor="default",this.shortcut=null,this.isActive=!1,this.isDrawing=!1,this.startPoint=null,this.lastPoint=null,this.currentPoint=null,this.options={},this.defaultOptions={}}activate(){this.isActive=!0,this.updateCursor(),this.onActivate()}deactivate(){this.isActive=!1,this.isDrawing=!1,this.onDeactivate()}onActivate(){}onDeactivate(){}updateCursor(){this.app.canvas?.displayCanvas&&(this.app.canvas.displayCanvas.style.cursor=this.cursor)}onPointerDown(t){this.isDrawing=!0,this.startPoint=this.getCanvasPoint(t),this.lastPoint=this.startPoint,this.currentPoint=this.startPoint,this.app.events.emit("tool:start",{tool:this.name,point:this.startPoint})}onPointerMove(t){this.lastPoint=this.currentPoint,this.currentPoint=this.getCanvasPoint(t),this.isDrawing&&this.app.events.emit("tool:move",{tool:this.name,point:this.currentPoint,delta:{x:this.currentPoint.x-this.lastPoint.x,y:this.currentPoint.y-this.lastPoint.y}})}onPointerUp(t){this.isDrawing&&(this.currentPoint=this.getCanvasPoint(t),this.app.events.emit("tool:end",{tool:this.name,startPoint:this.startPoint,endPoint:this.currentPoint})),this.isDrawing=!1,this.startPoint=null,this.lastPoint=null}onPointerLeave(t){}getCanvasPoint(t){const e=this.app.canvas.displayCanvas.getBoundingClientRect(),s=t.clientX-e.left,n=t.clientY-e.top;return this.app.canvas.viewportToCanvas(s,n)}getViewportPoint(t){const e=this.app.canvas.displayCanvas.getBoundingClientRect();return{x:t.clientX-e.left,y:t.clientY-e.top}}getPressure(t){return void 0!==t.pressure?t.pressure:.5}renderOverlay(t){}setOption(t,e){t in this.options&&(this.options[t]=e,this.onOptionChange(t,e),this.app.events.emit("tool:optionsChange",{tool:this.name,option:t,value:e}))}getOption(t){return this.options[t]}onOptionChange(t,e){}resetOptions(){this.options={...this.defaultOptions}}getOptionsUI(){return{}}distance(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}angle(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}interpolatePoints(t,e,s){const n=[],o=this.distance(t,e),i=Math.ceil(o/s);for(let s=0;s<=i;s++){const o=s/i;n.push({x:t.x+(e.x-t.x)*o,y:t.y+(e.y-t.y)*o})}return n}}class L extends C{constructor(t){super(t),this.name="move",this.icon="move",this.cursor="move",this.shortcut="v",this.options={autoSelect:!1,showTransform:!0,snapToEdges:!0,snapThreshold:4},this.defaultOptions={...this.options},this.transforming=!1,this.transformHandle=null,this.originalBounds=null,this.originalImageData=null,this.activeSnaps={x:null,y:null}}onPointerDown(t){super.onPointerDown(t);const e=this.app.layers.getActiveLayer();e&&!e.locked&&(this.options.showTransform&&(this.transformHandle=this.hitTestTransformHandles(this.startPoint)),this.transformHandle?(this.transforming=!0,this.originalBounds=this.getLayerBounds(e),e.canvas&&(this.originalImageData=e.ctx.getImageData(0,0,e.width,e.height))):this.options.autoSelect&&this.selectLayerAtPoint(this.startPoint),this.activeSnaps={x:null,y:null})}onPointerMove(t){if(super.onPointerMove(t),!this.isDrawing)return;const e=this.app.layers.getActiveLayer();if(!e||e.locked)return;const s=this.currentPoint.x-this.lastPoint.x,n=this.currentPoint.y-this.lastPoint.y;if(this.transforming&&this.transformHandle)this.applyTransform(e,this.transformHandle,s,n);else if(e.position.x+=s,e.position.y+=n,this.options.snapToEdges){const t=this.calculateSnap(e);null!==t.x&&(e.position.x=t.x),null!==t.y&&(e.position.y=t.y),this.activeSnaps={x:t.snapX,y:t.snapY}}else this.activeSnaps={x:null,y:null};this.app.canvas.scheduleRender()}onPointerUp(t){this.isDrawing&&this.app.history.pushState("Move Layer"),this.transforming=!1,this.transformHandle=null,this.originalBounds=null,this.originalImageData=null,this.activeSnaps={x:null,y:null},super.onPointerUp(t),this.app.canvas.scheduleRender()}calculateSnap(t){const e=this.options.snapThreshold,s=this.app.canvas.width,n=this.app.canvas.height,o=this.getLayerBounds(t),i=o.x,r=o.x+o.width,a=o.y,l=o.y+o.height,h=o.x+o.width/2,p=o.y+o.height/2,c=s/2,d=n/2;let u=null,v=null,g=null,w=null;return Math.abs(i)<e?(g=0,u=0):Math.abs(r-s)<e?(g=s-o.width,u=s):Math.abs(h-c)<e&&(g=c-o.width/2,u=c),Math.abs(a)<e?(w=0,v=0):Math.abs(l-n)<e?(w=n-o.height,v=n):Math.abs(p-d)<e&&(w=d-o.height/2,v=d),{x:g,y:w,snapX:u,snapY:v}}getLayerBounds(t){return{x:t.position.x,y:t.position.y,width:t.width,height:t.height}}hitTestTransformHandles(t){const e=this.app.layers.getActiveLayer();if(!e)return null;const s=this.getLayerBounds(e),n=8/(this.app.canvas.zoom/100),o={nw:{x:s.x,y:s.y},n:{x:s.x+s.width/2,y:s.y},ne:{x:s.x+s.width,y:s.y},e:{x:s.x+s.width,y:s.y+s.height/2},se:{x:s.x+s.width,y:s.y+s.height},s:{x:s.x+s.width/2,y:s.y+s.height},sw:{x:s.x,y:s.y+s.height},w:{x:s.x,y:s.y+s.height/2}};for(const[e,s]of Object.entries(o))if(Math.abs(t.x-s.x)<n&&Math.abs(t.y-s.y)<n)return e;return null}applyTransform(t,e,s,n){if(!this.originalBounds||!this.originalImageData)return;const o=10,i=this.currentPoint.x-this.startPoint.x,r=this.currentPoint.y-this.startPoint.y;let a=this.originalBounds.x,l=this.originalBounds.y,h=this.originalBounds.width,p=this.originalBounds.height;switch(e){case"nw":a+=i,l+=r,h-=i,p-=r;break;case"n":l+=r,p-=r;break;case"ne":l+=r,h+=i,p-=r;break;case"e":h+=i;break;case"se":h+=i,p+=r;break;case"s":p+=r;break;case"sw":a+=i,h-=i,p+=r;break;case"w":a+=i,h-=i}if(h<o&&(e.includes("w")&&(a=this.originalBounds.x+this.originalBounds.width-o),h=o),p<o&&(e.includes("n")&&(l=this.originalBounds.y+this.originalBounds.height-o),p=o),h=Math.round(h),p=Math.round(p),t.position.x=a,t.position.y=l,h!==t.width||p!==t.height){const e=document.createElement("canvas");e.width=this.originalImageData.width,e.height=this.originalImageData.height,e.getContext("2d").putImageData(this.originalImageData,0,0),t.canvas.width=h,t.canvas.height=p,t.width=h,t.height=p,t.ctx.imageSmoothingEnabled=!0,t.ctx.imageSmoothingQuality="high",t.ctx.drawImage(e,0,0,h,p)}}selectLayerAtPoint(t){const e=this.app.layers.getLayers().reverse();for(const s of e){if(!s.visible||!s.canvas)continue;const e=Math.floor(t.x-s.position.x),n=Math.floor(t.y-s.position.y);if(e>=0&&e<s.width&&n>=0&&n<s.height&&s.ctx.getImageData(e,n,1,1).data[3]>0)return void this.app.layers.setActiveLayer(s.id)}}isLayerEmpty(t){if(!t||!t.canvas||!t.ctx)return!0;const e=Math.max(1,Math.floor(t.width/20)),s=Math.max(1,Math.floor(t.height/20));for(let n=0;n<t.height;n+=s)for(let s=0;s<t.width;s+=e)if(t.ctx.getImageData(s,n,1,1).data[3]>0)return!1;return!0}renderOverlay(t){const e=this.app.layers.getActiveLayer();if(!e)return;const s=this.getLayerBounds(e),n=this.app.canvas.width,o=this.app.canvas.height;this.options.snapToEdges&&this.isDrawing&&(t.save(),t.strokeStyle="#00FFFF",t.lineWidth=1,t.setLineDash([4,4]),null!==this.activeSnaps.x&&(t.beginPath(),t.moveTo(this.activeSnaps.x,0),t.lineTo(this.activeSnaps.x,o),t.stroke()),null!==this.activeSnaps.y&&(t.beginPath(),t.moveTo(0,this.activeSnaps.y),t.lineTo(n,this.activeSnaps.y),t.stroke()),t.restore()),this.options.showTransform&&(this.isLayerEmpty(e)||(t.strokeStyle="#0066ff",t.lineWidth=1,t.setLineDash([]),t.strokeRect(s.x,s.y,s.width,s.height),t.fillStyle="#ffffff",t.strokeStyle="#0066ff",[{x:s.x,y:s.y},{x:s.x+s.width/2,y:s.y},{x:s.x+s.width,y:s.y},{x:s.x+s.width,y:s.y+s.height/2},{x:s.x+s.width,y:s.y+s.height},{x:s.x+s.width/2,y:s.y+s.height},{x:s.x,y:s.y+s.height},{x:s.x,y:s.y+s.height/2}].forEach(e=>{t.fillRect(e.x-4,e.y-4,8,8),t.strokeRect(e.x-4,e.y-4,8,8)})))}getOptionsUI(){return{autoSelect:{type:"checkbox",label:"Auto-Select Layer",value:this.options.autoSelect},showTransform:{type:"checkbox",label:"Show Transform Controls",value:this.options.showTransform},snapToEdges:{type:"checkbox",label:"Snap to Edges",value:this.options.snapToEdges}}}}class S extends C{constructor(t){super(t),this.name="brush",this.icon="brush",this.cursor="crosshair",this.shortcut="b",this.options={size:20,hardness:100,opacity:100,flow:100,spacing:25,smoothing:50,pressureSize:!0,pressureOpacity:!1},this.defaultOptions={...this.options},this.points=[],this.brushCanvas=null,this.brushCtx=null}onActivate(){this.createBrushTip(),this.updateCursor()}createBrushTip(){const t=Math.ceil(this.options.size);this.brushCanvas=document.createElement("canvas"),this.brushCanvas.width=t,this.brushCanvas.height=t,this.brushCtx=this.brushCanvas.getContext("2d"),this.updateBrushTip()}updateBrushTip(){const t=this.options.size,e=this.options.hardness/100;this.brushCanvas.width=Math.ceil(t),this.brushCanvas.height=Math.ceil(t);const s=this.brushCtx,n=t/2,o=s.createRadialGradient(n,n,0,n,n,n);if(e>=1)o.addColorStop(0,"rgba(0, 0, 0, 1)"),o.addColorStop(1,"rgba(0, 0, 0, 1)");else{const t=.9*e;o.addColorStop(0,"rgba(0, 0, 0, 1)"),o.addColorStop(t,"rgba(0, 0, 0, 1)"),o.addColorStop(1,"rgba(0, 0, 0, 0)")}s.clearRect(0,0,t,t),s.fillStyle=o,s.beginPath(),s.arc(n,n,n,0,2*Math.PI),s.fill()}onPointerDown(t){super.onPointerDown(t);const e=this.app.layers.getActiveLayer();e&&!e.locked&&(this.points=[{...this.startPoint,pressure:this.getPressure(t)}],this.drawStroke(e.ctx,[this.startPoint],this.getPressure(t)),this.app.canvas.scheduleRender())}onPointerMove(t){if(super.onPointerMove(t),!this.isDrawing)return;const e=this.app.layers.getActiveLayer();if(!e||e.locked)return;const s={...this.currentPoint,pressure:this.getPressure(t)};this.points.push(s),this.drawStroke(e.ctx,[this.lastPoint,this.currentPoint],this.getPressure(t)),this.app.canvas.scheduleRender()}onPointerUp(t){this.isDrawing&&this.points.length>0&&this.app.history.pushState("Brush Stroke"),this.points=[],super.onPointerUp(t)}drawStroke(t,e,s=.5){if(e.length<1)return;const n=this.app.colors?.foreground||"#000000",o=this.options.pressureSize?this.options.size*s:this.options.size,i=this.options.pressureOpacity?this.options.opacity/100*s:this.options.opacity/100,r=this.options.flow/100,a=Math.max(1,this.options.size*this.options.spacing/100);if(t.save(),t.globalAlpha=i*r,t.globalCompositeOperation="source-over",1===e.length)this.drawBrushDab(t,e[0].x,e[0].y,o,n);else for(let s=1;s<e.length;s++){const i=e[s-1],r=e[s];this.interpolatePoints(i,r,a).forEach(e=>{this.drawBrushDab(t,e.x,e.y,o,n)})}t.restore()}drawBrushDab(t,e,s,n,o){const i=n/2;if(this.options.hardness<100){t.save(),t.globalCompositeOperation="source-over";const r=document.createElement("canvas");r.width=this.brushCanvas.width,r.height=this.brushCanvas.height;const a=r.getContext("2d");a.fillStyle=o,a.fillRect(0,0,r.width,r.height),a.globalCompositeOperation="destination-in",a.drawImage(this.brushCanvas,0,0),t.drawImage(r,e-i,s-i,n,n),t.restore()}else t.fillStyle=o,t.beginPath(),t.arc(e,s,i,0,2*Math.PI),t.fill()}onOptionChange(t,e){"size"!==t&&"hardness"!==t||this.updateBrushTip()}updateCursor(){const t=Math.max(4,this.options.size*(this.app.canvas?.zoom||100)/100);if(t>4){const e=document.createElement("canvas");e.width=t+2,e.height=t+2;const s=e.getContext("2d");s.strokeStyle="#000000",s.lineWidth=1,s.beginPath(),s.arc(t/2+1,t/2+1,t/2,0,2*Math.PI),s.stroke(),s.strokeStyle="#ffffff",s.setLineDash([2,2]),s.beginPath(),s.arc(t/2+1,t/2+1,t/2,0,2*Math.PI),s.stroke();const n=e.toDataURL();this.cursor=`url(${n}) ${t/2+1} ${t/2+1}, crosshair`}else this.cursor="crosshair";this.isActive&&this.app.canvas?.displayCanvas&&(this.app.canvas.displayCanvas.style.cursor=this.cursor)}renderOverlay(t){if(this.currentPoint&&!this.isDrawing){const e=this.options.size;t.strokeStyle="rgba(0, 0, 0, 0.5)",t.lineWidth=1,t.setLineDash([2,2]),t.beginPath(),t.arc(this.currentPoint.x,this.currentPoint.y,e/2,0,2*Math.PI),t.stroke()}}getOptionsUI(){return{size:{type:"slider",label:"Size",min:1,max:500,value:this.options.size,unit:"px"},hardness:{type:"slider",label:"Hardness",min:0,max:100,value:this.options.hardness,unit:"%"},opacity:{type:"slider",label:"Opacity",min:1,max:100,value:this.options.opacity,unit:"%"},flow:{type:"slider",label:"Flow",min:1,max:100,value:this.options.flow,unit:"%"},smoothing:{type:"slider",label:"Smoothing",min:0,max:100,value:this.options.smoothing,unit:"%"},pressureSize:{type:"checkbox",label:"Pressure affects Size",value:this.options.pressureSize},pressureOpacity:{type:"checkbox",label:"Pressure affects Opacity",value:this.options.pressureOpacity}}}}class A extends C{constructor(t){super(t),this.name="eraser",this.icon="eraser",this.cursor="crosshair",this.shortcut="e",this.options={size:20,hardness:100,opacity:100,mode:"brush"},this.defaultOptions={...this.options},this.points=[]}onPointerDown(t){super.onPointerDown(t);const e=this.app.layers.getActiveLayer();e&&!e.locked&&(this.points=[this.startPoint],this.eraseAt(e.ctx,this.startPoint),this.app.canvas.scheduleRender())}onPointerMove(t){if(super.onPointerMove(t),!this.isDrawing)return;const e=this.app.layers.getActiveLayer();if(!e||e.locked)return;this.points.push(this.currentPoint);const s=Math.max(1,this.options.size/4);this.interpolatePoints(this.lastPoint,this.currentPoint,s).forEach(t=>{this.eraseAt(e.ctx,t)}),this.app.canvas.scheduleRender()}onPointerUp(t){this.isDrawing&&this.points.length>0&&this.app.history.pushState("Erase"),this.points=[],super.onPointerUp(t)}eraseAt(t,e){const s=this.options.size,n=s/2,o=this.options.opacity/100;if(t.save(),t.globalCompositeOperation="destination-out",t.globalAlpha=o,"block"===this.options.mode)t.fillStyle="rgba(0, 0, 0, 1)",t.fillRect(e.x-n,e.y-n,s,s);else if(this.options.hardness<100){const s=t.createRadialGradient(e.x,e.y,0,e.x,e.y,n),o=this.options.hardness/100;s.addColorStop(0,"rgba(0, 0, 0, 1)"),s.addColorStop(o,"rgba(0, 0, 0, 1)"),s.addColorStop(1,"rgba(0, 0, 0, 0)"),t.fillStyle=s,t.beginPath(),t.arc(e.x,e.y,n,0,2*Math.PI),t.fill()}else t.fillStyle="rgba(0, 0, 0, 1)",t.beginPath(),t.arc(e.x,e.y,n,0,2*Math.PI),t.fill();t.restore()}getOptionsUI(){return{size:{type:"slider",label:"Size",min:1,max:500,value:this.options.size,unit:"px"},hardness:{type:"slider",label:"Hardness",min:0,max:100,value:this.options.hardness,unit:"%"},opacity:{type:"slider",label:"Opacity",min:1,max:100,value:this.options.opacity,unit:"%"},mode:{type:"select",label:"Mode",options:[{value:"brush",label:"Brush"},{value:"block",label:"Block"}],value:this.options.mode}}}}class B extends C{constructor(t){super(t),this.name="shape",this.icon="square",this.cursor="crosshair",this.shortcut="u",this.options={shape:"rectangle",fillColor:"#000000",strokeColor:"transparent",strokeWidth:2,filled:!0,stroked:!1,createNewLayer:!0,cornerRadius:0},this.defaultOptions={...this.options},this.previewShape=null}onPointerDown(t){super.onPointerDown(t),this.previewShape=null}onPointerMove(t){super.onPointerMove(t),this.isDrawing&&(this.previewShape=this.calculateShape(this.startPoint,this.currentPoint,t.shiftKey),this.app.canvas.scheduleRender())}onPointerUp(t){if(this.isDrawing&&this.startPoint){const e=this.calculateShape(this.startPoint,this.currentPoint,t.shiftKey);if(this.options.createNewLayer){const t=this.app.layers.addLayer({name:`${this.options.shape} layer`,type:"shape"});t.shapeType=this.options.shape,t.shapeData=e,t.fillColor=this.options.filled?this.options.fillColor:"transparent",t.strokeColor=this.options.stroked?this.options.strokeColor:"transparent",t.strokeWidth=this.options.strokeWidth,this.app.layers.setActiveLayer(t.id)}else{const t=this.app.layers.getActiveLayer();t&&!t.locked&&this.drawShape(t.ctx,e)}this.app.history.pushState(`Draw ${this.options.shape}`),this.app.canvas.scheduleRender()}this.previewShape=null,super.onPointerUp(t)}calculateShape(t,e,s=!1){let n=Math.min(t.x,e.x),o=Math.min(t.y,e.y),i=Math.abs(e.x-t.x),r=Math.abs(e.y-t.y);if(s){const s=Math.max(i,r);i=s,r=s,e.x<t.x&&(n=t.x-s),e.y<t.y&&(o=t.y-s)}return"line"===this.options.shape?{points:[{x:t.x,y:t.y},{x:s?this.constrainLine(t,e).x:e.x,y:s?this.constrainLine(t,e).y:e.y}]}:{x:n,y:o,width:i,height:r}}constrainLine(t,e){const s=e.x-t.x,n=e.y-t.y,o=Math.atan2(n,s),i=Math.sqrt(s*s+n*n),r=Math.round(o/(Math.PI/4))*(Math.PI/4);return{x:t.x+Math.cos(r)*i,y:t.y+Math.sin(r)*i}}drawShape(t,e){switch(t.save(),t.fillStyle=this.options.filled?this.options.fillColor:"transparent",t.strokeStyle=this.options.stroked?this.options.strokeColor:"transparent",t.lineWidth=this.options.strokeWidth,this.options.shape){case"rectangle":this.drawRectangle(t,e);break;case"ellipse":this.drawEllipse(t,e);break;case"line":this.drawLine(t,e)}t.restore()}drawRectangle(t,e){const{x:s,y:n,width:o,height:i}=e,r=this.options.cornerRadius;if(t.beginPath(),r>0){const e=Math.min(r,o/2,i/2);t.moveTo(s+e,n),t.lineTo(s+o-e,n),t.quadraticCurveTo(s+o,n,s+o,n+e),t.lineTo(s+o,n+i-e),t.quadraticCurveTo(s+o,n+i,s+o-e,n+i),t.lineTo(s+e,n+i),t.quadraticCurveTo(s,n+i,s,n+i-e),t.lineTo(s,n+e),t.quadraticCurveTo(s,n,s+e,n)}else t.rect(s,n,o,i);t.closePath(),this.options.filled&&t.fill(),this.options.stroked&&t.stroke()}drawEllipse(t,e){const{x:s,y:n,width:o,height:i}=e,r=s+o/2,a=n+i/2;t.beginPath(),t.ellipse(r,a,o/2,i/2,0,0,2*Math.PI),this.options.filled&&t.fill(),this.options.stroked&&t.stroke()}drawLine(t,e){const{points:s}=e;t.beginPath(),t.moveTo(s[0].x,s[0].y),t.lineTo(s[1].x,s[1].y),t.stroke()}renderOverlay(t){this.previewShape&&(t.save(),t.fillStyle=this.options.filled?this.options.fillColor:"transparent",t.strokeStyle=this.options.stroked?this.options.strokeColor:"#0066ff",t.lineWidth=this.options.strokeWidth||1,t.setLineDash([5,5]),t.globalAlpha=.7,this.drawShape(t,this.previewShape),t.restore())}getOptionsUI(){return{shape:{type:"select",label:"Shape",options:[{value:"rectangle",label:"Rectangle"},{value:"ellipse",label:"Ellipse"},{value:"line",label:"Line"}],value:this.options.shape},filled:{type:"checkbox",label:"Fill",value:this.options.filled},fillColor:{type:"color",label:"Fill Color",value:this.options.fillColor},stroked:{type:"checkbox",label:"Stroke",value:this.options.stroked},strokeColor:{type:"color",label:"Stroke Color",value:this.options.strokeColor},strokeWidth:{type:"slider",label:"Stroke Width",min:1,max:50,value:this.options.strokeWidth,unit:"px"},cornerRadius:{type:"slider",label:"Corner Radius",min:0,max:100,value:this.options.cornerRadius,unit:"px"},createNewLayer:{type:"checkbox",label:"Create Shape Layer",value:this.options.createNewLayer}}}}class P extends C{constructor(t){super(t),this.name="text",this.icon="font",this.cursor="text",this.shortcut="t",this.options={fontFamily:"Arial",fontSize:48,fontWeight:"normal",fontStyle:"normal",textAlign:"left",color:"#000000",lineHeight:1.2},this.defaultOptions={...this.options},this.editingLayer=null,this.handleKeyDown=this.handleKeyDown.bind(this)}onActivate(){super.onActivate(),document.addEventListener("keydown",this.handleKeyDown)}onDeactivate(){this.commitText(),document.removeEventListener("keydown",this.handleKeyDown),super.onDeactivate()}handleKeyDown(t){if(!this.editingLayer)return;if(t.ctrlKey||t.altKey||t.metaKey)return;t.preventDefault(),t.stopPropagation();const e=t.key;if("Backspace"===e)this.editingLayer.textContent=this.editingLayer.textContent.slice(0,-1);else if("Enter"===e)this.editingLayer.textContent+="\n";else{if("Escape"===e)return void this.commitText();1===e.length&&(this.editingLayer.textContent+=e)}this.app.canvas.scheduleRender()}onPointerDown(t){super.onPointerDown(t);const e=this.findTextLayerAt(this.startPoint);e?this.startEditingLayer(e):(this.commitText(),this.createTextLayer(this.startPoint))}findTextLayerAt(t){const e=this.app.layers.getLayers().reverse();for(const s of e){if("text"!==s.type||!s.visible)continue;const e=this.getTextBounds(s);if(t.x>=e.x&&t.x<=e.x+e.width&&t.y>=e.y&&t.y<=e.y+e.height)return s}return null}getTextBounds(t){const e=this.app.canvas.workCtx;if(!e)return{x:t.position.x,y:t.position.y,width:100,height:t.textStyle.fontSize};e.font=`${t.textStyle.fontStyle} ${t.textStyle.fontWeight} ${t.textStyle.fontSize}px ${t.textStyle.fontFamily}`;const s=(t.textContent||"").split("\n");let n=100;s.forEach(t=>{const s=e.measureText(t||" ");n=Math.max(n,s.width)});const o=Math.max(1,s.length)*t.textStyle.fontSize*t.textStyle.lineHeight;return{x:t.position.x,y:t.position.y,width:n,height:o}}createTextLayer(t){const e=this.app.layers.addLayer({name:"Text Layer",type:"text"});e.position={x:t.x,y:t.y},e.textContent="",e.textStyle={...this.options,color:this.app.colors?.foreground||this.options.color},this.startEditingLayer(e),this.app.layers.setActiveLayer(e.id)}startEditingLayer(t){this.editingLayer=t,this.app.canvas.scheduleRender()}commitText(){this.editingLayer&&(this.editingLayer.textContent&&this.editingLayer.textContent.trim()?this.app.history.pushState("Add Text"):this.app.layers.removeLayer(this.editingLayer.id),this.editingLayer=null,this.app.canvas.scheduleRender())}renderOverlay(t){if(!this.editingLayer)return;const e=this.getTextBounds(this.editingLayer);t.strokeStyle="#3b82f6",t.lineWidth=2,t.setLineDash([5,5]),t.strokeRect(e.x-4,e.y-4,e.width+8,e.height+8);const s=Date.now();if(Math.floor(s/500)%2==0){t.setLineDash([]),t.strokeStyle=this.editingLayer.textStyle.color,t.lineWidth=2;const s=e.x+e.width+2,n=e.y,o=this.editingLayer.textStyle.fontSize;t.beginPath(),t.moveTo(s,n),t.lineTo(s,n+o),t.stroke()}}getOptionsUI(){return{fontFamily:{type:"select",label:"Font",options:[{value:"Arial",label:"Arial"},{value:"Helvetica",label:"Helvetica"},{value:"Times New Roman",label:"Times New Roman"},{value:"Georgia",label:"Georgia"},{value:"Verdana",label:"Verdana"},{value:"Courier New",label:"Courier New"},{value:"Impact",label:"Impact"}],value:this.options.fontFamily},fontSize:{type:"slider",label:"Size",min:8,max:200,value:this.options.fontSize,unit:"px"},fontWeight:{type:"select",label:"Weight",options:[{value:"normal",label:"Regular"},{value:"bold",label:"Bold"}],value:this.options.fontWeight},fontStyle:{type:"select",label:"Style",options:[{value:"normal",label:"Normal"},{value:"italic",label:"Italic"}],value:this.options.fontStyle},textAlign:{type:"select",label:"Align",options:[{value:"left",label:"Left"},{value:"center",label:"Center"},{value:"right",label:"Right"}],value:this.options.textAlign},color:{type:"color",label:"Color",value:this.options.color}}}}class z extends C{constructor(t){super(t),this.name="crop",this.icon="crop",this.cursor="crosshair",this.shortcut="c",this.options={aspectRatio:"free",width:null,height:null},this.defaultOptions={...this.options},this.cropBounds=null,this.activeHandle=null}onActivate(){super.onActivate(),this.cropBounds={x:0,y:0,width:this.app.canvas.width,height:this.app.canvas.height},this.app.canvas.scheduleRender()}onDeactivate(){this.cropBounds=null,super.onDeactivate()}onPointerDown(t){super.onPointerDown(t),this.activeHandle=this.hitTestHandles(this.startPoint),this.activeHandle||(this.cropBounds={x:this.startPoint.x,y:this.startPoint.y,width:0,height:0})}onPointerMove(t){super.onPointerMove(t),this.isDrawing&&(this.activeHandle?this.resizeCropBounds(this.activeHandle,this.currentPoint):this.updateCropBounds(this.startPoint,this.currentPoint),this.app.canvas.scheduleRender())}onPointerUp(t){this.activeHandle=null,super.onPointerUp(t)}updateCropBounds(t,e){let s=Math.min(t.x,e.x),n=Math.min(t.y,e.y),o=Math.abs(e.x-t.x),i=Math.abs(e.y-t.y);const r=this.getAspectRatio();r&&(o/i>r?o=i*r:i=o/r),s=Math.max(0,Math.min(s,this.app.canvas.width-o)),n=Math.max(0,Math.min(n,this.app.canvas.height-i)),o=Math.min(o,this.app.canvas.width-s),i=Math.min(i,this.app.canvas.height-n),this.cropBounds={x:s,y:n,width:o,height:i}}resizeCropBounds(t,e){const s=this.cropBounds;switch(this.getAspectRatio(),t){case"nw":const t=s.x+s.width-e.x,n=s.y+s.height-e.y;s.x=e.x,s.y=e.y,s.width=t,s.height=n;break;case"ne":s.width=e.x-s.x,s.y=e.y,s.height=s.y+s.height-e.y;break;case"se":s.width=e.x-s.x,s.height=e.y-s.y;break;case"sw":s.x=e.x,s.width=s.x+s.width-e.x,s.height=e.y-s.y;break;case"n":s.height=s.y+s.height-e.y,s.y=e.y;break;case"s":s.height=e.y-s.y;break;case"e":s.width=e.x-s.x;break;case"w":s.width=s.x+s.width-e.x,s.x=e.x}s.width<10&&(s.width=10),s.height<10&&(s.height=10)}getAspectRatio(){switch(this.options.aspectRatio){case"1:1":return 1;case"4:3":return 4/3;case"3:4":return 3/4;case"16:9":return 16/9;case"9:16":return 9/16;case"original":return this.app.canvas.width/this.app.canvas.height;default:return null}}setAspectRatio(t){if(null===t?this.options.aspectRatio="free":1===t?this.options.aspectRatio="1:1":Math.abs(t-4/3)<.01?this.options.aspectRatio="4:3":Math.abs(t-16/9)<.01?this.options.aspectRatio="16:9":(this.options.aspectRatio="custom",this.options.customRatio=t),this.cropBounds&&this.cropBounds.width>0){const e=this.cropBounds;if(t){const s=e.width/t;e.height=Math.min(s,this.app.canvas.height-e.y)}this.app.canvas.scheduleRender()}}hitTestHandles(t){if(!this.cropBounds)return null;const e=this.cropBounds,s={nw:{x:e.x,y:e.y},n:{x:e.x+e.width/2,y:e.y},ne:{x:e.x+e.width,y:e.y},e:{x:e.x+e.width,y:e.y+e.height/2},se:{x:e.x+e.width,y:e.y+e.height},s:{x:e.x+e.width/2,y:e.y+e.height},sw:{x:e.x,y:e.y+e.height},w:{x:e.x,y:e.y+e.height/2}};for(const[e,n]of Object.entries(s))if(Math.abs(t.x-n.x)<10&&Math.abs(t.y-n.y)<10)return e;return null}applyCrop(){if(!this.cropBounds||this.cropBounds.width<1||this.cropBounds.height<1)return;const{x:t,y:e,width:s,height:n}=this.cropBounds;this.app.layers.getLayers().forEach(o=>{if(!o.canvas)return;const i=document.createElement("canvas");i.width=s,i.height=n,i.getContext("2d").drawImage(o.canvas,t-o.position.x,e-o.position.y,s,n,0,0,s,n),o.canvas.width=s,o.canvas.height=n,o.width=s,o.height=n,o.ctx.drawImage(i,0,0),o.position={x:0,y:0}}),this.app.canvas.resize(s,n),this.cropBounds={x:0,y:0,width:s,height:n},this.app.history.pushState("Crop"),this.app.canvas.scheduleRender()}cancelCrop(){this.cropBounds={x:0,y:0,width:this.app.canvas.width,height:this.app.canvas.height},this.app.canvas.scheduleRender()}renderOverlay(t){if(!this.cropBounds)return;const{x:e,y:s,width:n,height:o}=this.cropBounds,i=this.app.canvas.width,r=this.app.canvas.height;t.fillStyle="rgba(0, 0, 0, 0.5)",t.fillRect(0,0,i,s),t.fillRect(0,s+o,i,r-s-o),t.fillRect(0,s,e,o),t.fillRect(e+n,s,i-e-n,o),t.strokeStyle="#ffffff",t.lineWidth=1,t.setLineDash([]),t.strokeRect(e,s,n,o),t.strokeStyle="rgba(255, 255, 255, 0.5)",t.beginPath(),t.moveTo(e+n/3,s),t.lineTo(e+n/3,s+o),t.moveTo(e+2*n/3,s),t.lineTo(e+2*n/3,s+o),t.moveTo(e,s+o/3),t.lineTo(e+n,s+o/3),t.moveTo(e,s+2*o/3),t.lineTo(e+n,s+2*o/3),t.stroke(),t.fillStyle="#ffffff",t.strokeStyle="#000000",t.lineWidth=1,[{x:e,y:s},{x:e+n/2,y:s},{x:e+n,y:s},{x:e+n,y:s+o/2},{x:e+n,y:s+o},{x:e+n/2,y:s+o},{x:e,y:s+o},{x:e,y:s+o/2}].forEach(e=>{t.fillRect(e.x-4,e.y-4,8,8),t.strokeRect(e.x-4,e.y-4,8,8)})}getOptionsUI(){return{aspectRatio:{type:"select",label:"Aspect Ratio",options:[{value:"free",label:"Free"},{value:"1:1",label:"1:1 (Square)"},{value:"4:3",label:"4:3"},{value:"3:4",label:"3:4"},{value:"16:9",label:"16:9"},{value:"9:16",label:"9:16"},{value:"original",label:"Original Ratio"}],value:this.options.aspectRatio},apply:{type:"button",label:"Apply Crop",action:()=>this.applyCrop()},cancel:{type:"button",label:"Cancel",action:()=>this.cancelCrop()}}}}class j extends C{constructor(t){super(t),this.name="zoom",this.icon="zoom-in",this.cursor="zoom-in",this.shortcut="z",this.options={zoomIn:!0},this.defaultOptions={...this.options}}onPointerDown(t){super.onPointerDown(t),this.getViewportPoint(t),this.options.zoomIn?this.app.canvas.zoomIn():this.app.canvas.zoomOut()}onPointerMove(t){super.onPointerMove(t),t.altKey||!this.options.zoomIn?this.cursor="zoom-out":this.cursor="zoom-in",this.updateCursor()}getOptionsUI(){return{zoomIn:{type:"checkbox",label:"Zoom In",value:this.options.zoomIn},fitToScreen:{type:"button",label:"Fit to Screen",action:()=>this.app.canvas.fitToScreen()},actualSize:{type:"button",label:"100%",action:()=>this.app.canvas.setZoom(100)}}}}class T extends C{constructor(t){super(t),this.name="hand",this.icon="hand",this.cursor="grab",this.shortcut="h",this.lastViewPoint=null}onPointerDown(t){this.isDrawing=!0,this.lastViewPoint=this.getViewportPoint(t),this.cursor="grabbing",this.updateCursor()}onPointerMove(t){if(!this.isDrawing)return;const e=this.getViewportPoint(t),s=e.x-this.lastViewPoint.x,n=e.y-this.lastViewPoint.y;this.app.canvas.pan(s,n),this.lastViewPoint=e}onPointerUp(t){this.isDrawing=!1,this.cursor="grab",this.updateCursor(),this.lastViewPoint=null}getOptionsUI(){return{}}}class H extends C{constructor(t){super(t),this.name="eyedropper",this.icon="eyedropper",this.cursor="crosshair",this.shortcut="i",this.options={sampleSize:"point",sampleLayers:"current"},this.defaultOptions={...this.options},this.previewColor=null}onPointerDown(t){super.onPointerDown(t),this.pickColor(this.startPoint,!t.altKey)}onPointerMove(t){super.onPointerMove(t),this.isDrawing?this.pickColor(this.currentPoint,!t.altKey):this.previewColor=this.getColorAt(this.currentPoint),this.app.canvas.scheduleRender()}pickColor(t,e=!0){const s=this.getColorAt(t);s&&(e?this.app.colors.setForeground(s):this.app.colors.setBackground(s))}getColorAt(t){const e=Math.floor(t.x),s=Math.floor(t.y);if(e<0||e>=this.app.canvas.width||s<0||s>=this.app.canvas.height)return null;let n;if("current"===this.options.sampleLayers){const t=this.app.layers.getActiveLayer();if(!t?.ctx)return null;n=t.ctx}else n=this.app.canvas.workCtx;const o=this.getSampleSize(),i=Math.floor(o/2);let r=0,a=0,l=0,h=0;for(let t=-i;t<=i;t++)for(let o=-i;o<=i;o++){const i=e+o,p=s+t;if(i>=0&&i<this.app.canvas.width&&p>=0&&p<this.app.canvas.height){const t=n.getImageData(i,p,1,1).data;r+=t[0],a+=t[1],l+=t[2],h++}}return 0===h?null:(r=Math.round(r/h),a=Math.round(a/h),l=Math.round(l/h),`#${r.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}${l.toString(16).padStart(2,"0")}`)}getSampleSize(){switch(this.options.sampleSize){case"3x3":return 3;case"5x5":return 5;default:return 1}}renderOverlay(t){if(!this.previewColor||!this.currentPoint)return;const e=this.currentPoint.x,s=this.currentPoint.y;t.save(),t.beginPath(),t.arc(e,s-50,30,0,2*Math.PI),t.fillStyle=this.previewColor,t.fill(),t.strokeStyle="#ffffff",t.lineWidth=2,t.stroke(),t.strokeStyle="#000000",t.lineWidth=1,t.stroke(),t.fillStyle="#ffffff",t.font="10px monospace",t.textAlign="center",t.fillText(this.previewColor.toUpperCase(),e,s-50+4),t.restore()}getOptionsUI(){return{sampleSize:{type:"select",label:"Sample Size",options:[{value:"point",label:"Point"},{value:"3x3",label:"3×3 Average"},{value:"5x5",label:"5×5 Average"}],value:this.options.sampleSize},sampleLayers:{type:"select",label:"Sample",options:[{value:"current",label:"Current Layer"},{value:"all",label:"All Layers"}],value:this.options.sampleLayers}}}}class D extends C{constructor(t){super(t),this.name="gradient",this.icon="gradient",this.cursor="crosshair",this.shortcut="g",this.options={type:"linear",opacity:100,reverse:!1,dither:!1},this.defaultOptions={...this.options}}onPointerUp(t){if(this.isDrawing&&this.startPoint&&this.currentPoint){const t=this.app.layers.getActiveLayer();t&&!t.locked&&(this.drawGradient(t.ctx,this.startPoint,this.currentPoint),this.app.history.pushState("Gradient"),this.app.canvas.scheduleRender())}super.onPointerUp(t)}drawGradient(t,e,s){const n=this.app.colors?.foreground||"#000000",o=this.app.colors?.background||"#ffffff",i=this.options.reverse?o:n,r=this.options.reverse?n:o;let a;switch(this.options.type){case"radial":const n=this.distance(e,s);a=t.createRadialGradient(e.x,e.y,0,e.x,e.y,n);break;case"angle":a=t.createConicGradient(this.angle(e,s),e.x,e.y);break;default:a=t.createLinearGradient(e.x,e.y,s.x,s.y)}a.addColorStop(0,i),a.addColorStop(1,r),t.save(),t.globalAlpha=this.options.opacity/100,t.fillStyle=a,t.fillRect(0,0,t.canvas.width,t.canvas.height),t.restore()}renderOverlay(t){this.isDrawing&&this.startPoint&&this.currentPoint&&(t.save(),t.strokeStyle="#000000",t.lineWidth=2,t.setLineDash([5,5]),t.beginPath(),t.moveTo(this.startPoint.x,this.startPoint.y),t.lineTo(this.currentPoint.x,this.currentPoint.y),t.stroke(),t.fillStyle=this.app.colors?.foreground||"#000000",t.beginPath(),t.arc(this.startPoint.x,this.startPoint.y,5,0,2*Math.PI),t.fill(),t.fillStyle=this.app.colors?.background||"#ffffff",t.beginPath(),t.arc(this.currentPoint.x,this.currentPoint.y,5,0,2*Math.PI),t.fill(),t.strokeStyle="#000000",t.lineWidth=1,t.setLineDash([]),t.stroke(),t.restore())}getOptionsUI(){return{type:{type:"select",label:"Type",options:[{value:"linear",label:"Linear"},{value:"radial",label:"Radial"},{value:"angle",label:"Angle"}],value:this.options.type},opacity:{type:"slider",label:"Opacity",min:1,max:100,value:this.options.opacity,unit:"%"},reverse:{type:"checkbox",label:"Reverse",value:this.options.reverse}}}}class I extends C{constructor(t){super(t),this.name="fill",this.icon="fill",this.cursor="crosshair",this.shortcut="g",this.options={tolerance:32,contiguous:!0,opacity:100},this.defaultOptions={...this.options}}onPointerDown(t){super.onPointerDown(t);const e=this.app.layers.getActiveLayer();if(!e||e.locked||!e.ctx)return;const s=Math.floor(this.startPoint.x),n=Math.floor(this.startPoint.y);if(s<0||s>=e.width||n<0||n>=e.height)return;const o=this.app.colors?.foreground||"#000000";this.floodFill(e,s,n,o),this.app.history.pushState("Fill"),this.app.canvas.scheduleRender()}floodFill(t,e,s,n){const o=t.ctx,i=o.getImageData(0,0,t.width,t.height),r=i.data,a=t.width,l=t.height,h=4*(s*a+e),p=r[h],c=r[h+1],d=r[h+2],u=r[h+3],v=this.hexToRgb(n),g=Math.round(this.options.opacity/100*255),w=this.options.tolerance,m=new Uint8Array(a*l),x=[[e,s]];for(;x.length>0;){const[t,e]=x.pop(),s=e*a+t;if(t<0||t>=a||e<0||e>=l)continue;if(m[s])continue;const n=4*s;this.colorsMatch(p,c,d,u,r[n],r[n+1],r[n+2],r[n+3],w)&&(m[s]=1,r[n]=v.r,r[n+1]=v.g,r[n+2]=v.b,r[n+3]=g,x.push([t+1,e],[t-1,e],[t,e+1],[t,e-1]))}o.putImageData(i,0,0)}colorsMatch(t,e,s,n,o,i,r,a,l){return Math.abs(t-o)<=l&&Math.abs(e-i)<=l&&Math.abs(s-r)<=l&&Math.abs(n-a)<=l}hexToRgb(t){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:{r:0,g:0,b:0}}getOptionsUI(){return{tolerance:{type:"slider",label:"Tolerance",min:0,max:255,value:this.options.tolerance},contiguous:{type:"checkbox",label:"Contiguous",value:this.options.contiguous},opacity:{type:"slider",label:"Opacity",min:1,max:100,value:this.options.opacity,unit:"%"}}}}class V extends C{constructor(t){super(t),this.name="marquee",this.icon="square-dashed",this.cursor="crosshair",this.shortcut="m",this.options={shape:"rectangle",feather:0,fixed:!1,fixedWidth:100,fixedHeight:100},this.defaultOptions={...this.options},this.previewBounds=null}onPointerDown(t){super.onPointerDown(t),t.shiftKey||t.altKey||this.app.selection?.clear(),this.previewBounds=null}onPointerMove(t){super.onPointerMove(t),this.isDrawing&&(this.previewBounds=this.calculateBounds(this.startPoint,this.currentPoint,t.shiftKey),this.app.canvas.scheduleRender())}onPointerUp(t){if(this.isDrawing&&this.previewBounds){const t=this.previewBounds;t.width>1&&t.height>1&&this.app.selection?.setRect(t.x,t.y,t.width,t.height,this.options.shape)}this.previewBounds=null,super.onPointerUp(t),this.app.canvas.scheduleRender()}calculateBounds(t,e,s){let n=Math.min(t.x,e.x),o=Math.min(t.y,e.y),i=Math.abs(e.x-t.x),r=Math.abs(e.y-t.y);if(s){const s=Math.max(i,r);i=r=s,e.x<t.x&&(n=t.x-s),e.y<t.y&&(o=t.y-s)}return{x:n,y:o,width:i,height:r}}renderOverlay(t){const e=this.previewBounds;e&&(t.save(),t.strokeStyle="#000000",t.lineWidth=1,t.setLineDash([5,5]),"ellipse"===this.options.shape?(t.beginPath(),t.ellipse(e.x+e.width/2,e.y+e.height/2,e.width/2,e.height/2,0,0,2*Math.PI),t.stroke()):t.strokeRect(e.x,e.y,e.width,e.height),t.restore())}getOptionsUI(){return{shape:{type:"select",label:"Shape",options:[{value:"rectangle",label:"Rectangle"},{value:"ellipse",label:"Ellipse"}],value:this.options.shape},feather:{type:"slider",label:"Feather",min:0,max:100,value:this.options.feather,unit:"px"}}}}class E{constructor(t){this.app=t,this.tools=new Map,this.currentTool=null,this.previousTool=null,this.temporaryTool=null,this.init()}init(){this.registerTool("move",new L(this.app)),this.registerTool("marquee",new V(this.app)),this.registerTool("brush",new S(this.app)),this.registerTool("eraser",new A(this.app)),this.registerTool("shape",new B(this.app)),this.registerTool("text",new P(this.app)),this.registerTool("crop",new z(this.app)),this.registerTool("zoom",new j(this.app)),this.registerTool("hand",new T(this.app)),this.registerTool("eyedropper",new H(this.app)),this.registerTool("gradient",new D(this.app)),this.registerTool("fill",new I(this.app)),this.setTool("move")}registerTool(t,e){this.tools.set(t,e)}getTool(t){return this.tools.get(t)||null}setTool(t){const e=this.getTool(t);e?(this.currentTool&&(this.currentTool.deactivate(),this.previousTool=this.currentTool),this.currentTool=e,this.currentTool.activate(),this.app.events.emit("tool:select",{tool:t})):console.warn(`Tool "${t}" not found`)}activateTemporaryTool(t){if(this.temporaryTool)return;const e=this.getTool(t);e&&(this.temporaryTool=this.currentTool,this.currentTool.deactivate(),this.currentTool=e,this.currentTool.activate())}deactivateTemporaryTool(){this.temporaryTool&&(this.currentTool.deactivate(),this.currentTool=this.temporaryTool,this.currentTool.activate(),this.temporaryTool=null)}getAllTools(){return this.tools}getCurrentToolName(){for(const[t,e]of this.tools)if(e===this.currentTool)return t;return null}switchToPreviousTool(){if(this.previousTool)for(const[t,e]of this.tools)if(e===this.previousTool)return void this.setTool(t)}increaseBrushSize(){if(void 0!==this.currentTool?.options?.size){const t=this.currentTool.options.size,e=Math.min(500,t+(t<10?1:t<100?5:20));this.currentTool.setOption("size",e)}}decreaseBrushSize(){if(void 0!==this.currentTool?.options?.size){const t=this.currentTool.options.size,e=Math.max(1,t-(t<=10?1:t<=100?5:20));this.currentTool.setOption("size",e)}}increaseBrushHardness(){if(void 0!==this.currentTool?.options?.hardness){const t=this.currentTool.options.hardness;this.currentTool.setOption("hardness",Math.min(100,t+10))}}decreaseBrushHardness(){if(void 0!==this.currentTool?.options?.hardness){const t=this.currentTool.options.hardness;this.currentTool.setOption("hardness",Math.max(0,t-10))}}startTransform(){console.log("Transform mode")}bindCanvasEvents(t){t.addEventListener("pointerdown",this.handlePointerDown.bind(this)),t.addEventListener("pointermove",this.handlePointerMove.bind(this)),t.addEventListener("pointerup",this.handlePointerUp.bind(this)),t.addEventListener("pointerleave",this.handlePointerLeave.bind(this)),t.addEventListener("contextmenu",t=>t.preventDefault())}handlePointerDown(t){this.currentTool&&(t.target.setPointerCapture(t.pointerId),this.currentTool.onPointerDown(t))}handlePointerMove(t){this.currentTool&&this.currentTool.onPointerMove(t)}handlePointerUp(t){this.currentTool&&(t.target.releasePointerCapture(t.pointerId),this.currentTool.onPointerUp(t))}handlePointerLeave(t){this.currentTool&&this.currentTool.onPointerLeave(t)}destroy(){this.tools.forEach(t=>{t.destroy&&t.destroy()}),this.tools.clear(),this.currentTool=null,this.previousTool=null}}class R{constructor(t){this.app=t,this.path=null,this.bounds=null,this.shape="rectangle",this.feather=0,this.marchingAntsOffset=0,this.animationId=null}hasSelection(){return null!==this.path||null!==this.bounds}setRect(t,e,s,n,o="rectangle"){this.bounds={x:t,y:e,width:s,height:n},this.shape=o,this.path=null,this.startMarchingAnts(),this.app.events.emit(v,{bounds:this.bounds,shape:o})}setPath(t){this.path=t,this.bounds=this.calculatePathBounds(t),this.shape="freeform",this.startMarchingAnts(),this.app.events.emit(v,{bounds:this.bounds,path:this.path})}calculatePathBounds(t){if(!t||0===t.length)return null;let e=1/0,s=1/0,n=-1/0,o=-1/0;return t.forEach(t=>{e=Math.min(e,t.x),s=Math.min(s,t.y),n=Math.max(n,t.x),o=Math.max(o,t.y)}),{x:e,y:s,width:n-e,height:o-s}}clear(){this.path=null,this.bounds=null,this.stopMarchingAnts(),this.app.events.emit("selection:clear"),this.app.canvas.scheduleRender()}selectAll(){this.setRect(0,0,this.app.canvas.width,this.app.canvas.height)}deselect(){this.clear()}invert(){this.app.events.emit("selection:invert")}isPointInSelection(t,e){if(!this.hasSelection())return!0;if("ellipse"===this.shape&&this.bounds){const s=this.bounds.x+this.bounds.width/2,n=this.bounds.y+this.bounds.height/2,o=this.bounds.width/2,i=this.bounds.height/2;return Math.pow(t-s,2)/Math.pow(o,2)+Math.pow(e-n,2)/Math.pow(i,2)<=1}return!this.bounds||t>=this.bounds.x&&t<=this.bounds.x+this.bounds.width&&e>=this.bounds.y&&e<=this.bounds.y+this.bounds.height}startMarchingAnts(){this.stopMarchingAnts();const t=()=>{this.marchingAntsOffset=(this.marchingAntsOffset+.5)%10,this.app.canvas.scheduleRender(),this.animationId=requestAnimationFrame(t)};this.animationId=requestAnimationFrame(t)}stopMarchingAnts(){this.animationId&&(cancelAnimationFrame(this.animationId),this.animationId=null)}render(t){this.hasSelection()&&(t.save(),t.strokeStyle="#000000",t.lineWidth=1,t.setLineDash([5,5]),t.lineDashOffset=-this.marchingAntsOffset,"ellipse"===this.shape&&this.bounds?(t.beginPath(),t.ellipse(this.bounds.x+this.bounds.width/2,this.bounds.y+this.bounds.height/2,this.bounds.width/2,this.bounds.height/2,0,0,2*Math.PI),t.stroke()):this.path?(t.beginPath(),t.moveTo(this.path[0].x,this.path[0].y),this.path.slice(1).forEach(e=>t.lineTo(e.x,e.y)),t.closePath(),t.stroke()):this.bounds&&t.strokeRect(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height),t.strokeStyle="#ffffff",t.lineDashOffset=5-this.marchingAntsOffset,"ellipse"===this.shape&&this.bounds?(t.beginPath(),t.ellipse(this.bounds.x+this.bounds.width/2,this.bounds.y+this.bounds.height/2,this.bounds.width/2,this.bounds.height/2,0,0,2*Math.PI),t.stroke()):this.bounds&&t.strokeRect(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height),t.restore())}clearSelection(t){if(!this.hasSelection()||!t.ctx)return;const e=t.ctx;e.save(),e.globalCompositeOperation="destination-out","ellipse"===this.shape&&this.bounds?(e.beginPath(),e.ellipse(this.bounds.x+this.bounds.width/2,this.bounds.y+this.bounds.height/2,this.bounds.width/2,this.bounds.height/2,0,0,2*Math.PI),e.fill()):this.bounds&&e.fillRect(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height),e.restore()}destroy(){this.stopMarchingAnts()}}class O{constructor(t){this.app=t,this.previewActive=!1,this.originalImageData=null}startPreview(){const t=this.app.layers.getActiveLayer();t?.ctx&&(this.originalImageData=t.ctx.getImageData(0,0,t.width,t.height),this.previewActive=!0)}cancelPreview(){if(!this.previewActive||!this.originalImageData)return;const t=this.app.layers.getActiveLayer();t?.ctx&&(t.ctx.putImageData(this.originalImageData,0,0),this.app.canvas.scheduleRender()),this.originalImageData=null,this.previewActive=!1,this.app.events.emit("filter:cancel")}applyFilter(t,e={}){const s=this.app.layers.getActiveLayer();if(!s?.ctx)return;const n=this.originalImageData?new ImageData(new Uint8ClampedArray(this.originalImageData.data),this.originalImageData.width,this.originalImageData.height):s.ctx.getImageData(0,0,s.width,s.height),o=this.processFilter(t,n,e);s.ctx.putImageData(o,0,0),this.originalImageData=null,this.previewActive=!1,this.app.history.pushState(`Filter: ${t}`),this.app.canvas.scheduleRender(),this.app.events.emit("filter:apply",{filter:t,options:e})}previewFilter(t,e={}){this.previewActive||this.startPreview();const s=this.app.layers.getActiveLayer();if(!s?.ctx||!this.originalImageData)return;const n=this.processFilter(t,new ImageData(new Uint8ClampedArray(this.originalImageData.data),this.originalImageData.width,this.originalImageData.height),e);s.ctx.putImageData(n,0,0),this.app.canvas.scheduleRender(),this.app.events.emit("filter:preview",{filter:t,options:e})}processFilter(t,e,s){switch(t){case"brightness":return this.adjustBrightness(e,s.value||0);case"contrast":return this.adjustContrast(e,s.value||0);case"saturation":return this.adjustSaturation(e,s.value||0);case"grayscale":return this.grayscale(e);case"sepia":return this.sepia(e);case"invert":return this.invert(e);case"blur":return this.blur(e,s.radius||5);case"sharpen":return this.sharpen(e,s.amount||1);case"hueRotate":return this.hueRotate(e,s.angle||0);default:return e}}adjustBrightness(t,e){const s=t.data;for(let t=0;t<s.length;t+=4)s[t]=Math.min(255,Math.max(0,s[t]+e)),s[t+1]=Math.min(255,Math.max(0,s[t+1]+e)),s[t+2]=Math.min(255,Math.max(0,s[t+2]+e));return t}adjustContrast(t,e){const s=t.data,n=259*(e+255)/(255*(259-e));for(let t=0;t<s.length;t+=4)s[t]=Math.min(255,Math.max(0,n*(s[t]-128)+128)),s[t+1]=Math.min(255,Math.max(0,n*(s[t+1]-128)+128)),s[t+2]=Math.min(255,Math.max(0,n*(s[t+2]-128)+128));return t}adjustSaturation(t,e){const s=t.data,n=1+e/100;for(let t=0;t<s.length;t+=4){const e=.299*s[t]+.587*s[t+1]+.114*s[t+2];s[t]=Math.min(255,Math.max(0,e+n*(s[t]-e))),s[t+1]=Math.min(255,Math.max(0,e+n*(s[t+1]-e))),s[t+2]=Math.min(255,Math.max(0,e+n*(s[t+2]-e)))}return t}grayscale(t){const e=t.data;for(let t=0;t<e.length;t+=4){const s=.299*e[t]+.587*e[t+1]+.114*e[t+2];e[t]=e[t+1]=e[t+2]=s}return t}sepia(t){const e=t.data;for(let t=0;t<e.length;t+=4){const s=e[t],n=e[t+1],o=e[t+2];e[t]=Math.min(255,.393*s+.769*n+.189*o),e[t+1]=Math.min(255,.349*s+.686*n+.168*o),e[t+2]=Math.min(255,.272*s+.534*n+.131*o)}return t}invert(t){const e=t.data;for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[t+2]=255-e[t+2];return t}blur(t,e){const s=t.data,n=t.width,o=t.height,i=new Uint8ClampedArray(s);for(let t=0;t<o;t++)for(let r=0;r<n;r++){let a=0,l=0,h=0,p=0;for(let i=-e;i<=e;i++)for(let c=-e;c<=e;c++){const e=r+c,d=t+i;if(e>=0&&e<n&&d>=0&&d<o){const t=4*(d*n+e);a+=s[t],l+=s[t+1],h+=s[t+2],p++}}const c=4*(t*n+r);i[c]=a/p,i[c+1]=l/p,i[c+2]=h/p}return new ImageData(i,n,o)}sharpen(t,e){const s=[0,-e,0,-e,1+4*e,-e,0,-e,0];return this.convolve(t,s)}hueRotate(t,e){const s=t.data,n=Math.cos(e*Math.PI/180),o=Math.sin(e*Math.PI/180);for(let t=0;t<s.length;t+=4){const e=s[t],i=s[t+1],r=s[t+2];s[t]=Math.min(255,Math.max(0,e*(.213+.787*n-.213*o)+i*(.715-.715*n-.715*o)+r*(.072-.072*n+.928*o))),s[t+1]=Math.min(255,Math.max(0,e*(.213-.213*n+.143*o)+i*(.715+.285*n+.14*o)+r*(.072-.072*n-.283*o))),s[t+2]=Math.min(255,Math.max(0,e*(.213-.213*n-.787*o)+i*(.715-.715*n+.715*o)+r*(.072+.928*n+.072*o)))}return t}convolve(t,e){const s=t.data,n=t.width,o=t.height,i=new Uint8ClampedArray(s),r=Math.sqrt(e.length),a=Math.floor(r/2);for(let t=a;t<o-a;t++)for(let o=a;o<n-a;o++){let l=0,h=0,p=0;for(let i=0;i<r;i++)for(let c=0;c<r;c++){const d=4*((t+i-a)*n+(o+c-a)),u=e[i*r+c];l+=s[d]*u,h+=s[d+1]*u,p+=s[d+2]*u}const c=4*(t*n+o);i[c]=Math.min(255,Math.max(0,l)),i[c+1]=Math.min(255,Math.max(0,h)),i[c+2]=Math.min(255,Math.max(0,p))}return new ImageData(i,n,o)}getAvailableFilters(){return[{name:"brightness",label:"Brightness",hasOptions:!0},{name:"contrast",label:"Contrast",hasOptions:!0},{name:"saturation",label:"Saturation",hasOptions:!0},{name:"hueRotate",label:"Hue/Saturation",hasOptions:!0},{name:"grayscale",label:"Grayscale",hasOptions:!1},{name:"sepia",label:"Sepia",hasOptions:!1},{name:"invert",label:"Invert",hasOptions:!1},{name:"blur",label:"Blur",hasOptions:!0},{name:"sharpen",label:"Sharpen",hasOptions:!0}]}}class F{constructor(t){this.app=t,this.foreground="#000000",this.background="#ffffff",this.swatches=["#000000","#ffffff","#ff0000","#00ff00","#0000ff","#ffff00","#00ffff","#ff00ff","#ff8800","#8800ff","#888888","#444444","#cccccc","#880000","#008800"]}setForeground(t){this.foreground=t,this.app.events.emit(g,{color:t})}setBackground(t){this.background=t,this.app.events.emit(w,{color:t})}swap(){const t=this.foreground;this.foreground=this.background,this.background=t,this.app.events.emit("color:swap",{foreground:this.foreground,background:this.background})}reset(){this.foreground="#000000",this.background="#ffffff",this.app.events.emit(g,{color:this.foreground}),this.app.events.emit(w,{color:this.background})}addSwatch(t){this.swatches.includes(t)||this.swatches.push(t)}removeSwatch(t){this.swatches.splice(t,1)}hexToRgb(t){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}rgbToHex(t,e,s){return"#"+[t,e,s].map(t=>t.toString(16).padStart(2,"0")).join("")}}s(720);class q{constructor(t){this.app=t,this.container=null,this.currentMenu=null,this.isFullscreen=!1}init(t){this.container=t,this.container.classList.add("swp-app"),this.createLayout(),this.bindEvents()}createLayout(){this.container.innerHTML='\n \x3c!-- Header Bar --\x3e\n <div class="swp-header">\n <div class="swp-header-left">\n <button class="swp-header-btn" data-action="load" title="Load Image">\n <ss-icon icon="folder-open" thickness="2"></ss-icon>\n <span>Load</span>\n </button>\n <div class="swp-download-dropdown">\n <button class="swp-header-btn" data-action="toggle-download" title="Download">\n <ss-icon icon="save" thickness="2"></ss-icon>\n <span>Download</span>\n <ss-icon icon="chevron-down" thickness="2" class="swp-dropdown-arrow"></ss-icon>\n </button>\n <div class="swp-dropdown-menu" hidden>\n <button class="swp-dropdown-item" data-format="png">PNG</button>\n <button class="swp-dropdown-item" data-format="jpeg">JPEG</button>\n <button class="swp-dropdown-item" data-format="webp">WebP</button>\n </div>\n </div>\n </div>\n <div class="swp-header-center">\n <button class="swp-icon-btn" data-action="undo" title="Undo (Ctrl+Z)">\n <ss-icon icon="arrow-rotate-ccw" thickness="2"></ss-icon>\n </button>\n <button class="swp-icon-btn" data-action="redo" title="Redo (Ctrl+Shift+Z)">\n <ss-icon icon="arrow-rotate-cw" thickness="2"></ss-icon>\n </button>\n <div class="swp-divider"></div>\n <button class="swp-icon-btn" data-action="history" title="History">\n <ss-icon icon="clock" thickness="2"></ss-icon>\n </button>\n <button class="swp-icon-btn" data-action="layers" title="Layers">\n <ss-icon icon="layer-stacks" thickness="2"></ss-icon>\n </button>\n <div class="swp-divider"></div>\n <button class="swp-icon-btn" data-action="reset" title="Reset">\n <ss-icon icon="time-reset" thickness="2"></ss-icon>\n </button>\n </div>\n <div class="swp-header-right">\n <button class="swp-icon-btn" data-action="center" title="Center Canvas">\n <ss-icon icon="container" thickness="2"></ss-icon>\n </button>\n <button class="swp-icon-btn" data-action="fullscreen" title="Fullscreen">\n <ss-icon icon="focus" thickness="2"></ss-icon>\n </button>\n </div>\n </div>\n\n \x3c!-- Main Workspace (full width canvas) --\x3e\n <div class="swp-workspace"></div>\n\n \x3c!-- Side Panel (History / Layers) --\x3e\n <div class="swp-side-panel" hidden>\n <div class="swp-side-panel-header">\n <span class="swp-side-panel-title">Panel</span>\n <button class="swp-icon-btn swp-side-panel-close" data-action="close-panel">\n <ss-icon icon="cross" thickness="2"></ss-icon>\n </button>\n </div>\n <div class="swp-side-panel-content"></div>\n </div>\n \x3c!-- Sub-menu Panel (contextual options) --\x3e\n <div class="swp-submenu" hidden></div>\n\n \x3c!-- Bottom Menu Bar --\x3e\n <div class="swp-menu-bar">\n <button class="swp-menu-item" data-menu="crop">\n <ss-icon icon="crop" thickness="2"></ss-icon>\n <span>Crop</span>\n </button>\n <button class="swp-menu-item" data-menu="rotate">\n <ss-icon icon="arrow-path" thickness="2"></ss-icon>\n <span>Rotate</span>\n </button>\n <button class="swp-menu-item" data-menu="flip">\n <ss-icon icon="arrow-left-arrow-right" thickness="2"></ss-icon>\n <span>Flip</span>\n </button>\n <button class="swp-menu-item" data-menu="resize">\n <ss-icon icon="sliders-vertical" thickness="2"></ss-icon>\n <span>Resize</span>\n </button>\n <button class="swp-menu-item" data-menu="draw">\n <ss-icon icon="pencil" thickness="2"></ss-icon>\n <span>Draw</span>\n </button>\n <button class="swp-menu-item" data-menu="shape">\n <ss-icon icon="shapes" thickness="2"></ss-icon>\n <span>Shape</span>\n </button>\n <button class="swp-menu-item" data-menu="text">\n <ss-icon icon="text" thickness="2"></ss-icon>\n <span>Text</span>\n </button>\n <button class="swp-menu-item" data-menu="filter">\n <ss-icon icon="magic-wand" thickness="2"></ss-icon>\n <span>Filter</span>\n </button>\n </div>\n ',this.bindHeaderActions(),this.bindMenuActions()}bindHeaderActions(){const t=this.container.querySelector(".swp-header"),e=this.container.querySelector(".swp-side-panel");e?.querySelector('[data-action="close-panel"]')?.addEventListener("click",()=>{this.closeSidePanel()});const s=this.container.querySelector(".swp-download-dropdown"),n=s?.querySelector(".swp-dropdown-menu");n?.querySelectorAll("[data-format]").forEach(t=>{t.addEventListener("click",e=>{e.stopPropagation();const s=t.dataset.format;this.app.file.export(s),n.hidden=!0})}),document.addEventListener("click",t=>{n&&!s.contains(t.target)&&(n.hidden=!0)}),t.addEventListener("click",t=>{const e=t.target.closest("[data-action]");if(e)switch(e.dataset.action){case"load":this.openFileDialog();break;case"toggle-download":n&&(n.hidden=!n.hidden);break;case"undo":this.app.history.undo();break;case"redo":this.app.history.redo();break;case"history":this.toggleSidePanel("history");break;case"layers":this.toggleSidePanel("layers");break;case"reset":this.resetCanvas();break;case"center":this.app.canvas.fitToScreen();break;case"fullscreen":this.toggleFullscreen()}})}bindMenuActions(){this.container.querySelector(".swp-menu-bar").addEventListener("click",t=>{const e=t.target.closest(".swp-menu-item");if(!e)return;const s=e.dataset.menu;this.selectMenu(s)})}selectMenu(t){this.currentMenu!==t?(this.currentMenu=t,this.container.querySelectorAll(".swp-menu-item").forEach(e=>{e.classList.toggle("active",e.dataset.menu===t)}),this.activateToolForMenu(t),this.showSubmenu(t)):this.closeSubmenu()}activateToolForMenu(t){const e={crop:"crop",rotate:"move",flip:"move",resize:"move",draw:"brush",shape:"shape",text:"text",filter:"move"}[t];e&&this.app.tools.setTool(e)}showSubmenu(t){const e=this.container.querySelector(".swp-submenu");switch(e.hidden=!1,t){case"crop":this.renderCropSubmenu(e);break;case"rotate":this.renderRotateSubmenu(e);break;case"flip":this.renderFlipSubmenu(e);break;case"resize":this.renderResizeSubmenu(e);break;case"draw":this.renderDrawSubmenu(e);break;case"shape":this.renderShapeSubmenu(e);break;case"text":this.renderTextSubmenu(e);break;case"filter":this.renderFilterSubmenu(e)}}closeSubmenu(){this.currentMenu=null,this.container.querySelectorAll(".swp-menu-item").forEach(t=>{t.classList.remove("active")});const t=this.container.querySelector(".swp-submenu");t.hidden=!0,t.innerHTML="",this.app.tools.setTool("move")}renderCropSubmenu(t){t.innerHTML='\n <div class="swp-submenu-content">\n <div class="swp-submenu-title">Crop</div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Preset</label>\n <div class="swp-btn-group">\n <button class="swp-submenu-btn active" data-ratio="free">Free</button>\n <button class="swp-submenu-btn" data-ratio="1:1">1:1</button>\n <button class="swp-submenu-btn" data-ratio="4:3">4:3</button>\n <button class="swp-submenu-btn" data-ratio="16:9">16:9</button>\n </div>\n </div>\n <div class="swp-submenu-actions">\n <button class="swp-btn" data-action="cancel">Cancel</button>\n <button class="swp-btn swp-btn-primary" data-action="apply">Apply</button>\n </div>\n </div>\n ',this.bindCropSubmenuEvents(t)}bindCropSubmenuEvents(t){t.querySelectorAll("[data-ratio]").forEach(e=>{e.addEventListener("click",()=>{t.querySelectorAll("[data-ratio]").forEach(t=>t.classList.remove("active")),e.classList.add("active");const s=e.dataset.ratio,n=this.app.tools.getTool("crop");if(n)if("free"===s)n.setAspectRatio(null);else{const[t,e]=s.split(":").map(Number);n.setAspectRatio(t/e)}})}),t.querySelector('[data-action="cancel"]')?.addEventListener("click",()=>{this.closeSubmenu()}),t.querySelector('[data-action="apply"]')?.addEventListener("click",()=>{const t=this.app.tools.getTool("crop");t?.applyCrop&&t.applyCrop(),this.closeSubmenu()})}renderRotateSubmenu(t){t.innerHTML='\n <div class="swp-submenu-content">\n <div class="swp-submenu-title">Rotate</div>\n <div class="swp-submenu-group">\n <div class="swp-btn-group" style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px;">\n <button class="swp-submenu-btn" data-rotate="-90">\n <ss-icon icon="rotate-minus" thickness="2"></ss-icon>\n <span>-90°</span>\n </button>\n <button class="swp-submenu-btn" data-rotate="90">\n <ss-icon icon="rotate-add" thickness="2"></ss-icon>\n <span>+90°</span>\n </button>\n </div>\n </div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Custom Angle</label>\n <div class="swp-range-wrap">\n <input type="range" class="swp-slider" id="rotateAngle" min="-180" max="180" value="0">\n <span class="swp-range-value">0°</span>\n </div>\n </div>\n <div class="swp-submenu-actions">\n <button class="swp-btn" data-action="cancel">Cancel</button>\n <button class="swp-btn swp-btn-primary" data-action="apply">Apply</button>\n </div>\n </div>\n ',this.bindRotateSubmenuEvents(t)}bindRotateSubmenuEvents(t){let e=0;t.querySelectorAll("[data-rotate]").forEach(t=>{t.addEventListener("click",()=>{const e=parseInt(t.dataset.rotate);this.rotateCanvas(e)})});const s=t.querySelector("#rotateAngle"),n=t.querySelector(".swp-range-value");s?.addEventListener("input",t=>{e=parseInt(t.target.value),n.textContent=`${e}°`}),t.querySelector('[data-action="cancel"]')?.addEventListener("click",()=>{this.closeSubmenu()}),t.querySelector('[data-action="apply"]')?.addEventListener("click",()=>{0!==e&&this.rotateCanvas(e),this.closeSubmenu()})}renderFlipSubmenu(t){t.innerHTML='\n <div class="swp-submenu-content">\n <div class="swp-submenu-title">Flip</div>\n <div class="swp-submenu-group">\n <div class="swp-btn-group swp-btn-group-lg">\n <button class="swp-submenu-btn" data-flip="horizontal">\n <ss-icon icon="flip-horizontal" thickness="2"></ss-icon>\n <span>Horizontal</span>\n </button>\n <button class="swp-submenu-btn" data-flip="vertical">\n <ss-icon icon="flip-vertical" thickness="2"></ss-icon>\n <span>Vertical</span>\n </button>\n </div>\n </div>\n </div>\n ',t.querySelectorAll("[data-flip]").forEach(t=>{t.addEventListener("click",()=>{const e=t.dataset.flip;this.flipCanvas(e)})})}renderResizeSubmenu(t){const e=this.app.canvas.width,s=this.app.canvas.height;t.innerHTML=`\n <div class="swp-submenu-content">\n <div class="swp-submenu-title">Resize Canvas</div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Dimensions</label>\n <div class="swp-resize-inputs">\n <div class="swp-input-group">\n <label>Width</label>\n <input type="number" class="swp-input" id="resizeWidth" value="${e}" min="1" max="10000">\n </div>\n <div class="swp-input-group">\n <label>Height</label>\n <input type="number" class="swp-input" id="resizeHeight" value="${s}" min="1" max="10000">\n </div>\n </div>\n </div>\n <div class="swp-submenu-group">\n <label class="swp-checkbox-label">\n <input type="checkbox" id="lockAspectRatio" checked>\n <span>Lock aspect ratio</span>\n </label>\n </div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Presets</label>\n <div class="swp-btn-group swp-btn-group-wrap">\n <button class="swp-submenu-btn swp-preset-btn" data-width="1920" data-height="1080">1920×1080</button>\n <button class="swp-submenu-btn swp-preset-btn" data-width="1280" data-height="720">1280×720</button>\n <button class="swp-submenu-btn swp-preset-btn" data-width="800" data-height="600">800×600</button>\n <button class="swp-submenu-btn swp-preset-btn" data-width="500" data-height="500">500×500</button>\n </div>\n </div>\n <div class="swp-submenu-actions">\n <button class="swp-btn" data-action="cancel">Cancel</button>\n <button class="swp-btn swp-btn-primary" data-action="apply">Apply</button>\n </div>\n </div>\n `,this.bindResizeSubmenuEvents(t,e,s)}bindResizeSubmenuEvents(t,e,s){const n=t.querySelector("#resizeWidth"),o=t.querySelector("#resizeHeight"),i=t.querySelector("#lockAspectRatio"),r=e/s;n?.addEventListener("input",()=>{if(i?.checked){const t=parseInt(n.value)||1;o.value=Math.round(t/r)}}),o?.addEventListener("input",()=>{if(i?.checked){const t=parseInt(o.value)||1;n.value=Math.round(t*r)}}),t.querySelectorAll(".swp-preset-btn").forEach(t=>{t.addEventListener("click",()=>{n.value=t.dataset.width,o.value=t.dataset.height,i.checked=!1})}),t.querySelector('[data-action="cancel"]')?.addEventListener("click",()=>{this.closeSubmenu()}),t.querySelector('[data-action="apply"]')?.addEventListener("click",()=>{const t=parseInt(n.value)||e,i=parseInt(o.value)||s;t===e&&i===s||this.resizeCanvas(t,i),this.closeSubmenu()})}resizeCanvas(t,e){this.app.history.pushState(`Resize to ${t}×${e}`),this.app.canvas.resize(t,e),this.app.canvas.fitToScreen(),this.app.canvas.render()}renderDrawSubmenu(t){const e=this.app.colors.foreground,s=this.app.tools.getTool("brush"),n=s?.size||10;t.innerHTML=`\n <div class="swp-submenu-content">\n <div class="swp-submenu-title">Draw</div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Brush Size</label>\n <div class="swp-range-wrap">\n <input type="range" class="swp-slider" id="brushSize" min="1" max="100" value="${n}">\n <span class="swp-range-value">${n}px</span>\n </div>\n </div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Color</label>\n <input type="color" class="swp-color-input" id="brushColor" value="${e}">\n </div>\n </div>\n `,this.bindDrawSubmenuEvents(t)}bindDrawSubmenuEvents(t){const e=t.querySelector("#brushSize"),s=t.querySelector(".swp-range-value"),n=t.querySelector("#brushColor");e?.addEventListener("input",t=>{const e=parseInt(t.target.value);s.textContent=`${e}px`;const n=this.app.tools.getTool("brush");n&&(n.size=e)}),n?.addEventListener("input",t=>{this.app.colors.setForeground(t.target.value)})}renderShapeSubmenu(t){const e=this.app.tools.getTool("shape"),s=e?.options?.shape||"rectangle",n=e?.options?.fillColor||this.app.colors.foreground,o=e?.options?.strokeWidth||2;t.innerHTML=`\n <div class="swp-submenu-content">\n <div class="swp-submenu-title">Shape</div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Shape Type</label>\n <div class="swp-btn-group">\n <button class="swp-submenu-btn ${"rectangle"===s?"active":""}" data-shape="rectangle">\n <ss-icon icon="square" thickness="2"></ss-icon>\n </button>\n <button class="swp-submenu-btn ${"ellipse"===s?"active":""}" data-shape="ellipse">\n <ss-icon icon="circle" thickness="2"></ss-icon>\n </button>\n <button class="swp-submenu-btn ${"line"===s?"active":""}" data-shape="line">\n <ss-icon icon="minus" thickness="2"></ss-icon>\n </button>\n </div>\n </div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Fill Color</label>\n <input type="color" class="swp-color-input" id="shapeFill" value="${n}">\n </div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Stroke Width</label>\n <div class="swp-range-wrap">\n <input type="range" class="swp-slider" id="shapeStroke" min="0" max="20" value="${o}">\n <span class="swp-range-value">2px</span>\n </div>\n </div>\n </div>\n `,this.bindShapeSubmenuEvents(t)}bindShapeSubmenuEvents(t){t.querySelectorAll("[data-shape]").forEach(e=>{e.addEventListener("click",()=>{t.querySelectorAll("[data-shape]").forEach(t=>t.classList.remove("active")),e.classList.add("active");const s=this.app.tools.getTool("shape");s&&(s.options.shape=e.dataset.shape)})});const e=t.querySelector("#shapeFill");e?.addEventListener("input",t=>{const e=this.app.tools.getTool("shape");e&&(e.options.fillColor=t.target.value,e.options.filled=!0),this.app.colors.setForeground(t.target.value)});const s=t.querySelector("#shapeStroke"),n=t.querySelectorAll(".swp-range-value")[0];s?.addEventListener("input",t=>{const e=parseInt(t.target.value);n&&(n.textContent=`${e}px`);const s=this.app.tools.getTool("shape");s&&(s.options.strokeWidth=e,e>0&&(s.options.stroked=!0,s.options.strokeColor=this.app.colors.foreground))})}renderTextSubmenu(t){const e=this.app.colors.foreground;t.innerHTML=`\n <div class="swp-submenu-content">\n <div class="swp-submenu-title">Text</div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Font Size</label>\n <div class="swp-range-wrap">\n <input type="range" class="swp-slider" id="textSize" min="12" max="120" value="32">\n <span class="swp-range-value">32px</span>\n </div>\n </div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Font</label>\n <select class="swp-select" id="textFont">\n <option value="Arial">Arial</option>\n <option value="Helvetica">Helvetica</option>\n <option value="Georgia">Georgia</option>\n <option value="Times New Roman">Times New Roman</option>\n <option value="Courier New">Courier New</option>\n <option value="Impact">Impact</option>\n </select>\n </div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Color</label>\n <input type="color" class="swp-color-input" id="textColor" value="${e}">\n </div>\n <div class="swp-submenu-group">\n <label class="swp-submenu-label">Style</label>\n <div class="swp-btn-group">\n <button class="swp-submenu-btn" data-style="bold">\n <strong>B</strong>\n </button>\n <button class="swp-submenu-btn" data-style="italic">\n <em>I</em>\n </button>\n </div>\n </div>\n </div>\n `,this.bindTextSubmenuEvents(t)}bindTextSubmenuEvents(t){const e=t.querySelector("#textSize"),s=t.querySelector(".swp-range-value");e?.addEventListener("input",t=>{const e=parseInt(t.target.value);s.textContent=`${e}px`;const n=this.app.tools.getTool("text");n&&(n.fontSize=e)});const n=t.querySelector("#textFont");n?.addEventListener("change",t=>{const e=this.app.tools.getTool("text");e&&(e.fontFamily=t.target.value)});const o=t.querySelector("#textColor");o?.addEventListener("input",t=>{this.app.colors.setForeground(t.target.value)}),t.querySelectorAll("[data-style]").forEach(t=>{t.addEventListener("click",()=>{t.classList.toggle("active");const e=this.app.tools.getTool("text");e&&("bold"===t.dataset.style?e.bold=t.classList.contains("active"):"italic"===t.dataset.style&&(e.italic=t.classList.contains("active")))})})}renderFilterSubmenu(t){t.innerHTML='\n <div class="swp-submenu-content swp-submenu-wide">\n <div class="swp-submenu-title">Filter</div>\n <div class="swp-submenu-group">\n <div class="swp-filter-grid">\n <button class="swp-filter-btn" data-filter="none">\n <div class="swp-filter-preview"></div>\n <span>None</span>\n </button>\n <button class="swp-filter-btn" data-filter="grayscale">\n <div class="swp-filter-preview swp-filter-grayscale"></div>\n <span>Grayscale</span>\n </button>\n <button class="swp-filter-btn" data-filter="sepia">\n <div class="swp-filter-preview swp-filter-sepia"></div>\n <span>Sepia</span>\n </button>\n <button class="swp-filter-btn" data-filter="invert">\n <div class="swp-filter-preview swp-filter-invert"></div>\n <span>Invert</span>\n </button>\n <button class="swp-filter-btn" data-filter="blur">\n <div class="swp-filter-preview swp-filter-blur"></div>\n <span>Blur</span>\n </button>\n <button class="swp-filter-btn" data-filter="brightness">\n <div class="swp-filter-preview swp-filter-brightness"></div>\n <span>Brighten</span>\n </button>\n <button class="swp-filter-btn" data-filter="contrast">\n <div class="swp-filter-preview swp-filter-contrast"></div>\n <span>Contrast</span>\n </button>\n <button class="swp-filter-btn" data-filter="sharpen">\n <div class="swp-filter-preview swp-filter-sharpen"></div>\n <span>Sharpen</span>\n </button>\n </div>\n </div>\n <div class="swp-submenu-group swp-filter-intensity" hidden>\n <label class="swp-submenu-label">Intensity</label>\n <div class="swp-range-wrap">\n <input type="range" class="swp-slider" id="filterIntensity" min="0" max="100" value="50">\n <span class="swp-range-value">50%</span>\n </div>\n </div>\n <div class="swp-submenu-actions">\n <button class="swp-btn" data-action="cancel">Cancel</button>\n <button class="swp-btn swp-btn-primary" data-action="apply">Apply</button>\n </div>\n </div>\n ',this.bindFilterSubmenuEvents(t)}bindFilterSubmenuEvents(t){let e="none",s=50;const n=t.querySelector(".swp-filter-intensity"),o=t.querySelector("#filterIntensity"),i=t.querySelector(".swp-filter-intensity .swp-range-value");t.querySelectorAll(".swp-filter-btn").forEach(o=>{o.addEventListener("click",()=>{t.querySelectorAll(".swp-filter-btn").forEach(t=>t.classList.remove("active")),o.classList.add("active"),e=o.dataset.filter,"none"!==e?(n.hidden=!1,this.previewFilter(e,s)):(n.hidden=!0,this.app.filters.cancelPreview())})}),o?.addEventListener("input",t=>{s=parseInt(t.target.value),i.textContent=`${s}%`,"none"!==e&&this.previewFilter(e,s)}),t.querySelector('[data-action="cancel"]')?.addEventListener("click",()=>{this.app.filters.cancelPreview(),this.closeSubmenu()}),t.querySelector('[data-action="apply"]')?.addEventListener("click",()=>{"none"!==e&&this.applyFilter(e,s),this.closeSubmenu()})}rotateCanvas(t){const e=this.app.layers.getActiveLayer();if(!e)return;this.app.history.pushState(`Rotate ${t}°`);const s=document.createElement("canvas"),n=s.getContext("2d"),o=t*Math.PI/180,i=Math.abs(Math.sin(o)),r=Math.abs(Math.cos(o)),a=e.width,l=e.height,h=Math.round(a*r+l*i),p=Math.round(a*i+l*r);s.width=h,s.height=p,n.translate(h/2,p/2),n.rotate(o),n.drawImage(e.canvas,-a/2,-l/2),90!==t&&-90!==t||this.app.canvas.resize(p,h),e.clear(),e.ctx.drawImage(s,0,0),this.app.canvas.render()}flipCanvas(t){const e=this.app.layers.getActiveLayer();if(!e)return;this.app.history.pushState(`Flip ${t}`);const s=document.createElement("canvas"),n=s.getContext("2d");s.width=e.width,s.height=e.height,"horizontal"===t?(n.translate(e.width,0),n.scale(-1,1)):(n.translate(0,e.height),n.scale(1,-1)),n.drawImage(e.canvas,0,0),e.clear(),e.ctx.drawImage(s,0,0),this.app.canvas.render()}previewFilter(t,e){let s={};switch(t){case"brightness":case"contrast":s.value=Math.round(2.56*(e-50));break;case"saturation":s.value=2*(e-50);break;case"blur":s.radius=Math.max(1,Math.round(e/10));break;case"sharpen":s.amount=e/50;break;case"hueRotate":s.angle=3.6*e;break;default:s.value=e}this.app.filters.previewFilter(t,s)}applyFilter(t,e){let s={};switch(t){case"brightness":case"contrast":s.value=Math.round(2.56*(e-50));break;case"saturation":s.value=2*(e-50);break;case"blur":s.radius=Math.max(1,Math.round(e/10));break;case"sharpen":s.amount=e/50;break;case"hueRotate":s.angle=3.6*e;break;default:s.value=e}this.app.filters.applyFilter(t,s)}resetCanvas(){confirm("Reset all changes?")&&(this.app.file.newDocument({width:this.app.options.width,height:this.app.options.height}),this.closeSubmenu())}openFileDialog(){const t=document.createElement("input");t.type="file",t.accept="image/*",t.onchange=t=>{const e=t.target.files[0];if(e){const t=new FileReader;t.onload=t=>{this.app.loadImage(t.target.result)},t.readAsDataURL(e)}},t.click()}toggleFullscreen(){document.fullscreenElement?(document.exitFullscreen(),this.isFullscreen=!1):(this.container.requestFullscreen(),this.isFullscreen=!0)}toggleSidePanel(t){const e=this.container.querySelector(".swp-side-panel");if(!e)return;if(!e.hidden&&this.currentPanel===t)return void this.closeSidePanel();e.hidden=!1,this.currentPanel=t;const s=e.querySelector(".swp-side-panel-title");s&&(s.textContent=t.charAt(0).toUpperCase()+t.slice(1));const n=e.querySelector(".swp-side-panel-content");"history"===t?this.renderHistorySidePanel(n):"layers"===t&&this.renderLayersSidePanel(n),this.container.querySelectorAll('[data-action="history"], [data-action="layers"]').forEach(e=>{e.classList.toggle("active",e.dataset.action===t)})}closeSidePanel(){const t=this.container.querySelector(".swp-side-panel");t&&(t.hidden=!0),this.currentPanel=null,this.container.querySelectorAll('[data-action="history"], [data-action="layers"]').forEach(t=>{t.classList.remove("active")})}renderHistorySidePanel(t){const e=this.app.history.getStates();t.innerHTML=`\n <div class="swp-panel-list">\n ${0===e.length?'<div class="swp-panel-empty">No history yet</div>':""}\n ${e.map(t=>`\n <div class="swp-panel-item ${t.isCurrent?"active":""}" data-index="${t.index}">\n <ss-icon icon="clock" thickness="2"></ss-icon>\n <span>${t.name}</span>\n </div>\n `).join("")}\n </div>\n `,t.querySelectorAll(".swp-panel-item").forEach(e=>{e.addEventListener("click",()=>{this.app.history.goToState(parseInt(e.dataset.index)),this.renderHistorySidePanel(t)})})}renderLayersSidePanel(t){const e=this.app.layers.getLayers().slice().reverse(),s=this.app.layers.getActiveLayer();t.innerHTML=`\n <div class="swp-panel-list">\n ${0===e.length?'<div class="swp-panel-empty">No layers</div>':""}\n ${e.map(t=>`\n <div class="swp-panel-item ${t.id===s?.id?"active":""}" data-id="${t.id}">\n <button class="swp-layer-vis-btn ${t.visible?"visible":""}" data-action="toggle-visibility">\n <ss-icon icon="${t.visible?"eye":"eye-slash"}" thickness="2"></ss-icon>\n </button>\n <span class="swp-layer-name">${t.name}</span>\n <span class="swp-layer-opacity">${t.opacity}%</span>\n </div>\n `).join("")}\n </div>\n <div class="swp-panel-actions">\n <button class="swp-btn swp-btn-sm" data-action="add-layer">\n <ss-icon icon="plus" thickness="2"></ss-icon> Add\n </button>\n <button class="swp-btn swp-btn-sm swp-btn-danger" data-action="delete-layer">\n <ss-icon icon="trash" thickness="2"></ss-icon> Delete\n </button>\n </div>\n `,t.querySelectorAll(".swp-panel-item").forEach(e=>{e.addEventListener("click",s=>{s.target.closest("[data-action]")||(this.app.layers.setActiveLayer(e.dataset.id),this.renderLayersSidePanel(t))}),e.querySelector('[data-action="toggle-visibility"]')?.addEventListener("click",s=>{s.stopPropagation();const n=this.app.layers.getLayer(e.dataset.id);n&&(this.app.layers.setLayerVisibility(e.dataset.id,!n.visible),this.renderLayersSidePanel(t))})}),t.querySelector('[data-action="add-layer"]')?.addEventListener("click",()=>{this.app.layers.addLayer(),this.renderLayersSidePanel(t)}),t.querySelector('[data-action="delete-layer"]')?.addEventListener("click",()=>{const e=this.app.layers.getActiveLayer();e&&(this.app.layers.removeLayer(e.id),this.renderLayersSidePanel(t))})}bindEvents(){this.app.events.on(c,()=>{this.updateHistoryButtons(),this.updateHistoryPanel()}),this.app.events.on(d,()=>{this.updateHistoryButtons(),this.updateHistoryPanel()}),this.app.events.on(u,()=>{this.updateHistoryButtons(),this.updateHistoryPanel()}),this.app.events.on(o,()=>this.updateLayersPanel()),this.app.events.on(i,()=>this.updateLayersPanel()),this.app.events.on(r,()=>this.updateLayersPanel()),this.app.events.on(h,()=>this.updateLayersPanel()),this.app.events.on("layer:update",()=>this.updateLayersPanel()),this.app.events.on(a,()=>this.updateLayersPanel()),this.app.events.on(l,()=>this.updateLayersPanel()),this.app.events.on(p,()=>this.updateLayersPanel())}updateHistoryButtons(){const t=this.container.querySelector('[data-action="undo"]'),e=this.container.querySelector('[data-action="redo"]');t&&(t.disabled=!this.app.history.canUndo()),e&&(e.disabled=!this.app.history.canRedo())}updateLayersPanel(){if("layers"===this.currentPanel){const t=this.container.querySelector(".swp-side-panel-content");t&&this.renderLayersSidePanel(t)}}updateHistoryPanel(){if("history"===this.currentPanel){const t=this.container.querySelector(".swp-side-panel-content");t&&this.renderHistorySidePanel(t)}}updateToolbox(){}getWorkspace(){return this.container.querySelector(".swp-workspace")}}class U{constructor(t){this.app=t,this.projectName="Untitled",this.projectData=null,this.hasUnsavedChanges=!1,this.app.events.on(m,()=>{this.hasUnsavedChanges=!0})}newDocument(t={}){const e=t.width||1920,s=t.height||1080,n=t.background||"#ffffff";if(this.app.canvas.resize(e,s),this.app.layers.init(e,s),"transparent"!==n){const t=this.app.layers.getLayers()[0];t&&t.fill(n)}this.app.history.init(),this.projectName="Untitled",this.hasUnsavedChanges=!1,this.app.canvas.fitToScreen(),this.app.events.emit("document:new",{width:e,height:s})}async open(){const t=document.createElement("input");return t.type="file",t.accept="image/*,.sws",new Promise(e=>{t.onchange=async t=>{const s=t.target.files[0];if(!s)return e(null);s.name.endsWith(".sws")?await this.openProject(s):await this.openImage(s),e(s)},t.click()})}async openImage(t){const s=URL.createObjectURL(t),n=new Image;return new Promise((o,i)=>{n.onload=()=>{this.newDocument({width:n.width,height:n.height});const i=this.app.layers.getActiveLayer();i&&(i.ctx.drawImage(n,0,0),this.app.history.pushState("Open Image")),URL.revokeObjectURL(s),this.projectName=t.name.replace(/\.[^/.]+$/,""),this.app.events.emit(e,{name:this.projectName}),o()},n.onerror=i,n.src=s})}async openProject(t){const s=await t.text(),n=JSON.parse(s);this.app.canvas.resize(n.width,n.height),await this.app.layers.fromJSON(n.layers),this.projectName=n.name||t.name.replace(".sws",""),this.hasUnsavedChanges=!1,this.app.history.init(),this.app.canvas.fitToScreen(),this.app.events.emit(e,{name:this.projectName})}async save(){const t={name:this.projectName,version:"2.0.0",width:this.app.canvas.width,height:this.app.canvas.height,layers:this.app.layers.toJSON()},e=new Blob([JSON.stringify(t)],{type:"application/json"});this.downloadBlob(e,`${this.projectName}.sws`),this.hasUnsavedChanges=!1,this.app.events.emit("document:save",{name:this.projectName})}async saveAs(){const t=prompt("Project name:",this.projectName);t&&(this.projectName=t,await this.save())}async export(t="png",e=1){const s=this.app.canvas.toDataURL(`image/${t}`,e),n=document.createElement("a");n.download=`${this.projectName}.${t}`,n.href=s,n.click(),this.app.events.emit("document:export",{format:t,name:this.projectName})}async exportAs(){const t=prompt("Format (png, jpeg, webp):","png");if(t&&["png","jpeg","webp"].includes(t)){const e="png"===t?1:parseFloat(prompt("Quality (0.1-1.0):","0.9"))||.9;await this.export(t,e)}}downloadBlob(t,e){const s=URL.createObjectURL(t),n=document.createElement("a");n.download=e,n.href=s,n.click(),URL.revokeObjectURL(s)}}class W{constructor(t){this.app=t,this.data=null,this.type=null}copy(){const t=this.app.layers.getActiveLayer();if(!t?.canvas)return;const e=this.app.selection;if(e?.hasSelection()&&e.bounds){const{x:s,y:n,width:o,height:i}=e.bounds;this.data=t.ctx.getImageData(s,n,o,i),this.type="imageData"}else this.data=t.canvas.toDataURL(),this.type="dataURL"}cut(){this.copy(),this.app.layers.deleteSelection()}async paste(){if(!this.data)return;const t=this.app.layers.addLayer({name:"Pasted Layer"});"imageData"===this.type?(t.initCanvas(this.data.width,this.data.height),t.ctx.putImageData(this.data,0,0)):"dataURL"===this.type&&await t.loadFromDataURL(this.data),this.app.layers.setActiveLayer(t.id),this.app.history.pushState("Paste"),this.app.canvas.scheduleRender()}}class ${constructor(e,s={}){if(this.container="string"==typeof e?document.querySelector(e):e,!this.container)throw new Error("SWP: Container element not found");this.options={width:s.width||1920,height:s.height||1080,theme:s.theme||"dark",accentColor:s.accentColor||"#00FF99",...s},this.events=new t,this.canvas=new x(this,{width:this.options.width,height:this.options.height}),this.history=new k(this),this.keyboard=new y(this),this.layers=new M(this),this.tools=new E(this),this.selection=new R(this),this.filters=new O(this),this.colors=new F(this),this.file=new U(this),this.clipboard=new W(this),this.ui=new q(this),this.init()}init(){this.ui.init(this.container),this.applyTheme(this.options.theme),this.applyAccentColor(this.options.accentColor);const t=this.ui.getWorkspace();this.canvas.init(t),this.tools.bindCanvasEvents(this.canvas.displayCanvas),this.file.newDocument({width:this.options.width,height:this.options.height}),this.ui.updateLayersPanel(),this.ui.updateHistoryPanel(),this.ui.updateToolbox(),this.events.emit("ready")}loadImage(t){return new Promise((e,s)=>{const n=new Image;n.crossOrigin="anonymous",n.onload=()=>{this.file.newDocument({width:n.width,height:n.height});const t=this.layers.getActiveLayer();t&&(t.ctx.drawImage(n,0,0),this.canvas.render(),this.history.pushState("Load Image")),e()},n.onerror=s,n.src=t})}newDocument(t,e,s="#ffffff"){this.file.newDocument({width:t,height:e,background:s})}getImageData(t="png",e=1){return this.canvas.toDataURL(`image/${t}`,e)}export(t="png",e=1){return this.file.export(t,e)}undo(){return this.history.undo()}redo(){return this.history.redo()}setTool(t){this.tools.setTool(t)}applyFilter(t,e){this.filters.applyFilter(t,e)}on(t,e){return this.events.on(t,e)}off(t,e){this.events.off(t,e)}cancelCurrentAction(){this.filters.cancelPreview(),this.selection.clear()}confirmCurrentAction(){const t=this.tools.currentTool;"crop"===t?.name&&t.applyCrop&&t.applyCrop(),"text"===t?.name&&t.commitText&&t.commitText()}applyTheme(t){const e=this.container.classList.contains("swp-app")?this.container:this.container.querySelector(".swp-app");e&&(e.classList.remove("swp-theme-dark","swp-theme-light"),e.classList.add(`swp-theme-${t}`)),this.options.theme=t}applyAccentColor(t){const e=this.container.classList.contains("swp-app")?this.container:this.container.querySelector(".swp-app");if(e&&t){const s=t.replace("#",""),n=parseInt(s.substring(0,2),16),o=parseInt(s.substring(2,4),16),i=parseInt(s.substring(4,6),16),r=t=>Math.min(255,Math.round(t+.2*(255-t))),a=r(n),l=r(o),h=r(i),p=`#${a.toString(16).padStart(2,"0")}${l.toString(16).padStart(2,"0")}${h.toString(16).padStart(2,"0")}`,c=t=>{const e=t/255;return e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)},d=.2126*c(n)+.7152*c(o)+.0722*c(i)>.179?"#000000":"#ffffff";e.style.setProperty("--swp-accent",t),e.style.setProperty("--swp-accent-hover",p),e.style.setProperty("--swp-accent-dim",`rgba(${n}, ${o}, ${i}, 0.2)`),e.style.setProperty("--swp-accent-contrast",d)}this.options.accentColor=t}setAccentColor(t){this.applyAccentColor(t),this.events.emit(m,{type:"accentColor",color:t})}setTheme(t){"light"!==t&&"dark"!==t||(this.applyTheme(t),this.events.emit(m,{type:"theme",theme:t}))}destroy(){this.keyboard.destroy(),this.selection.destroy(),this.canvas.destroy(),this.container.innerHTML=""}}$.parseDataAttributes=function(t){const e={},s=t.dataset;s.swpWidth&&(e.width=parseInt(s.swpWidth,10)),s.swpHeight&&(e.height=parseInt(s.swpHeight,10)),s.swpTheme&&(e.theme=s.swpTheme);for(const t in s)if(t.startsWith("swp")&&"swp"!==t){const n=t.slice(3).charAt(0).toLowerCase()+t.slice(4);if(!(n in e)){let o=s[t];"true"===o?o=!0:"false"===o?o=!1:isNaN(o)||""===o||(o=parseFloat(o)),e[n]=o}}return e},$.autoInit=function(){const t=document.querySelectorAll("[data-swp]"),e=[];return t.forEach(t=>{if(t.swpInstance)return;const s=$.parseDataAttributes(t),n=new $(t,s);t.swpInstance=n,e.push(n)}),e},$.instances=[];const Z=$;"undefined"!=typeof window&&(window.SWP=$,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{$.instances=$.autoInit()}):$.instances=$.autoInit())})(),n.default})());
|