@kb-labs/release-manager-cli 2.12.0 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/cli/commands/publish.js +99 -1
  2. package/dist/cli/commands/publish.js.map +1 -1
  3. package/dist/cli/commands/run.js +99 -1
  4. package/dist/cli/commands/run.js.map +1 -1
  5. package/package.json +7 -7
  6. package/dist/widgets/117.js +0 -2
  7. package/dist/widgets/117.js.map +0 -1
  8. package/dist/widgets/297.js +0 -2
  9. package/dist/widgets/297.js.map +0 -1
  10. package/dist/widgets/338.js +0 -2
  11. package/dist/widgets/338.js.map +0 -1
  12. package/dist/widgets/370.js +0 -2
  13. package/dist/widgets/370.js.map +0 -1
  14. package/dist/widgets/451.js +0 -2
  15. package/dist/widgets/451.js.map +0 -1
  16. package/dist/widgets/50.js +0 -2
  17. package/dist/widgets/50.js.map +0 -1
  18. package/dist/widgets/586.js +0 -39
  19. package/dist/widgets/586.js.map +0 -1
  20. package/dist/widgets/59.js +0 -2
  21. package/dist/widgets/59.js.map +0 -1
  22. package/dist/widgets/607.js +0 -2
  23. package/dist/widgets/607.js.map +0 -1
  24. package/dist/widgets/626.js +0 -2
  25. package/dist/widgets/626.js.map +0 -1
  26. package/dist/widgets/669.js +0 -2
  27. package/dist/widgets/669.js.map +0 -1
  28. package/dist/widgets/678.js +0 -2
  29. package/dist/widgets/678.js.map +0 -1
  30. package/dist/widgets/781.js +0 -2
  31. package/dist/widgets/781.js.map +0 -1
  32. package/dist/widgets/842.js +0 -446
  33. package/dist/widgets/842.js.map +0 -1
  34. package/dist/widgets/968.js +0 -10
  35. package/dist/widgets/968.js.map +0 -1
  36. package/dist/widgets/997.js +0 -35
  37. package/dist/widgets/997.js.map +0 -1
  38. package/dist/widgets/@mf-types.d.ts +0 -3
  39. package/dist/widgets/@mf-types.zip +0 -0
  40. package/dist/widgets/__federation_expose_ReleasePage.js +0 -2
  41. package/dist/widgets/__federation_expose_ReleasePage.js.map +0 -1
  42. package/dist/widgets/mf-manifest.json +0 -262
  43. package/dist/widgets/mf-stats.json +0 -304
  44. package/dist/widgets/remoteEntry.js +0 -7
  45. package/dist/widgets/remoteEntry.js.map +0 -1
@@ -1,3 +0,0 @@
1
-
2
- export type RemoteKeys = 'REMOTE_ALIAS_IDENTIFIER/ReleasePage';
3
- type PackageType<T> = T extends 'REMOTE_ALIAS_IDENTIFIER/ReleasePage' ? typeof import('REMOTE_ALIAS_IDENTIFIER/ReleasePage') :any;
Binary file
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_kb_labs_release_manager_cli=self.webpackChunk_kb_labs_release_manager_cli||[]).push([["135"],{572(e,n,t){var r=t(5259),a=Symbol.for("react.element"),s=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function c(e,n,t){var r,s={},c=null,u=null;for(r in void 0!==t&&(c=""+t),void 0!==n.key&&(c=""+n.key),void 0!==n.ref&&(u=n.ref),n)o.call(n,r)&&!i.hasOwnProperty(r)&&(s[r]=n[r]);if(e&&e.defaultProps)for(r in n=e.defaultProps)void 0===s[r]&&(s[r]=n[r]);return{$$typeof:a,type:e,key:c,ref:u,props:s,_owner:l.current}}n.Fragment=s,n.jsx=c,n.jsxs=c},8048(e,n,t){e.exports=t(572)},7165(e,n,t){t.r(n),t.d(n,{default:()=>K});var r=t(8048),a=t(5259),s=t(4391),o=t(2383),l=t(1349);function i(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function c(e,n,t,r,a,s,o){try{var l=e[s](o),i=l.value}catch(e){t(e);return}l.done?n(i):Promise.resolve(i).then(r,a)}function u(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t,r,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var s=[],o=!0,l=!1;try{for(a=a.call(e);!(o=(t=a.next()).done)&&(s.push(t.value),!n||s.length!==n);o=!0);}catch(e){l=!0,r=e}finally{try{o||null==a.return||a.return()}finally{if(l)throw r}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return i(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return i(e,n)}}(e,n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e){var n,t,s,i,d,p,h=e.selectedScope,f=e.selectedScopePath,y=e.onPlanReady,g=u(a.useState(!0),2),m=g[0],x=g[1],I=u(a.useState(!1),2),j=I[0],b=I[1],v=h?"/v1/plugins/release/status?scope=".concat(encodeURIComponent(h)):"",U=h?"/v1/plugins/release/plan?scope=".concat(encodeURIComponent(h)):"",S=h?"/v1/plugins/release/git-timeline?scope=".concat(encodeURIComponent(h)):"",k=(0,o.useData)(v),T=k.data,w=k.isLoading,C=k.refetch,O=(0,o.useData)(U),E=O.data,P=O.isLoading,A=O.refetch,R=(0,o.useData)(S).data,z=(0,o.useMutateData)("/v1/plugins/release/generate","POST"),M=z.mutateAsync,D=z.isLoading;a.useEffect(function(){y(!!((null==E?void 0:E.plan)&&E.plan.packages.length>0))},[E,y]);var B=function(){var e;return(e=function(){var e,n,t,r,a;return function(e,n){var t,r,a,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(o,"next",{value:i(0)}),l(o,"throw",{value:i(1)}),l(o,"return",{value:i(2)}),"function"==typeof Symbol&&l(o,Symbol.iterator,{value:function(){return this}}),o;function i(l){return function(i){var c=[l,i];if(t)throw TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(s=0)),s;)try{if(t=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return s.label++,{value:c[1],done:!1};case 5:s.label++,r=c[1],c=[0];continue;case 7:c=s.ops.pop(),s.trys.pop();continue;default:if(!(a=(a=s.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){s=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){s.label=c[1];break}if(6===c[0]&&s.label<a[1]){s.label=a[1],a=c;break}if(a&&s.label<a[2]){s.label=a[2],s.ops.push(c);break}a[2]&&s.ops.pop(),s.trys.pop();continue}c=n.call(e,s)}catch(e){c=[6,e],r=0}finally{t=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(s){switch(s.label){case 0:return s.trys.push([0,2,,3]),[4,M({scope:h,scopePath:f,useLLM:m})];case 1:return e=s.sent(),C(),A(),n=e.confidence?Math.round(100*e.confidence):0,t=e.tokensUsed?", ".concat(e.tokensUsed," tokens"):"",r=m?"AI-powered":"Simple",l.UIMessage.success("".concat(r," plan generated (").concat(n,"% confidence").concat(t,")")),[3,3];case 2:var o;return a=s.sent(),l.UIMessage.error("Failed to generate plan: ".concat((null!=(o=Error)&&"u">typeof Symbol&&o[Symbol.hasInstance]?!!o[Symbol.hasInstance](a):a instanceof o)?a.message:"Unknown error")),[3,3];case 3:return[2]}})},function(){var n=this,t=arguments;return new Promise(function(r,a){var s=e.apply(n,t);function o(e){c(s,r,a,o,l,"next",e)}function l(e){c(s,r,a,o,l,"throw",e)}o(void 0)})})()};if(w)return(0,r.jsx)(l.UISpin,{size:"large",style:{display:"block",margin:"48px auto"}});if(!(null==T?void 0:T.hasPlan)&&!(null==E?void 0:E.plan))return void 0===R||R.hasUnreleasedChanges?(0,r.jsx)(l.UICard,{children:(0,r.jsx)(l.UIEmptyState,{description:"No release plan generated yet",image:l.UIEmptyState.PRESENTED_IMAGE_SIMPLE,children:(0,r.jsxs)(l.UISpace,{direction:"vertical",size:"middle",style:{display:"flex",alignItems:"center"},children:[(0,r.jsx)(l.UICheckbox,{checked:m,onChange:function(e){return x(e)},children:"Use AI-powered analysis (requires LLM)"}),(0,r.jsx)(l.UIButton,{variant:"primary",icon:(0,r.jsx)(l.UIIcon,{name:"ThunderboltOutlined"}),onClick:function(){B()},loading:D,size:"large",children:"Generate Release Plan"}),(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{fontSize:12},children:m?"AI will analyze git history and provide intelligent reasoning for version bumps":"Generate plan using conventional commits analysis"})]})})}):(0,r.jsx)(l.UICard,{children:(0,r.jsx)(l.UIEmptyState,{description:"No unreleased changes since ".concat(null!=(p=null==R?void 0:R.lastTag)?p:"last release"),image:l.UIEmptyState.PRESENTED_IMAGE_SIMPLE})});if(P||!(null==E?void 0:E.plan))return(0,r.jsx)(l.UISpin,{size:"large",style:{display:"block",margin:"48px auto"}});var L=E.plan;if(0===L.packages.length)return(0,r.jsx)(l.UICard,{children:(0,r.jsx)(l.UIEmptyState,{description:"Plan exists but contains no packages",image:l.UIEmptyState.PRESENTED_IMAGE_SIMPLE,children:(0,r.jsxs)(l.UISpace,{direction:"vertical",size:"middle",style:{display:"flex",alignItems:"center"},children:[(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{fontSize:12},children:"This may happen if there are no changes to release or the scope has no packages."}),(0,r.jsx)(l.UICheckbox,{checked:m,onChange:function(e){return x(e)},children:"Use AI-powered analysis"}),(0,r.jsx)(l.UIButton,{variant:"primary",icon:(0,r.jsx)(l.UIIcon,{name:"ThunderboltOutlined"}),onClick:function(){B()},loading:D,children:"Regenerate Plan"})]})})});var _=[{title:"Package",dataIndex:"name",key:"name",width:280,ellipsis:!0,render:function(e){return(0,r.jsx)(l.UITypographyText,{strong:!0,ellipsis:{tooltip:e},children:e})}},{title:"Current",dataIndex:"currentVersion",key:"currentVersion",width:90,render:function(e){return e?(0,r.jsx)(l.UITag,{color:"blue",children:e}):"-"}},{title:"Next",dataIndex:"nextVersion",key:"nextVersion",width:90,render:function(e){return e?(0,r.jsx)(l.UITag,{color:"green",children:e}):"-"}},{title:"Bump",dataIndex:"bump",key:"bump",width:80,render:function(e){return e?(0,r.jsx)(l.UITag,{color:{major:"red",minor:"orange",patch:"blue"}[e]||"default",children:e}):"-"}},{title:"Reason",dataIndex:"reason",key:"reason",ellipsis:!0,render:function(e){return(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{fontSize:12},children:e||"-"})}}];return(0,r.jsxs)(l.UICard,{title:(0,r.jsxs)(l.UISpace,{children:[(0,r.jsx)(l.UIIcon,{name:"CheckCircleOutlined",style:{color:"#52c41a"}}),(0,r.jsx)("span",{children:"Release Plan Ready"}),(0,r.jsxs)(l.UITag,{color:"blue",children:[L.packages.length," package(s)"]})]}),extra:(0,r.jsxs)(l.UISpace,{children:[(0,r.jsx)(l.UICheckbox,{checked:m,onChange:function(e){return x(e)},children:"Use AI"}),(0,r.jsx)(l.UIButton,{icon:(0,r.jsx)(l.UIIcon,{name:"ThunderboltOutlined"}),onClick:function(){B()},loading:D,size:"small",children:"Regenerate"})]}),children:[(null==R?void 0:R.hasUnreleasedChanges)&&(0,r.jsx)(l.UIAccordion,{size:"small",style:{marginBottom:16},defaultActiveKey:["timeline"],items:[{key:"timeline",label:"Git Timeline",extra:(0,r.jsx)(l.UISpace,{children:(0,r.jsxs)(l.UITag,{children:[R.unreleased," commits"]})}),children:(0,r.jsxs)(r.Fragment,{children:[R.suggestedVersion&&(0,r.jsx)("div",{style:{marginBottom:16,padding:"8px 12px",background:"#f6ffed",borderRadius:4},children:(0,r.jsxs)(l.UISpace,{children:[(0,r.jsx)(l.UIIcon,{name:"ArrowUpOutlined"}),(0,r.jsxs)(l.UITypographyText,{strong:!0,children:[R.currentVersion||"0.0.0"," → ",R.suggestedVersion]}),(0,r.jsx)(l.UITag,{color:"major"===R.suggestedBump?"red":"minor"===R.suggestedBump?"orange":"blue",children:R.suggestedBump})]})}),(0,r.jsx)(l.UITimeline,{mode:"left",items:(null!=(n=R.commits)?n:[]).slice(0,j?void 0:5).map(function(e){return{color:"feat"===e.type?"green":"fix"===e.type?"red":"BREAKING"===e.type?"volcano":"gray",children:(0,r.jsxs)("div",{children:[(0,r.jsxs)(l.UISpace,{size:"small",children:[(0,r.jsx)(l.UITag,{color:"feat"===e.type?"green":"fix"===e.type?"red":"BREAKING"===e.type?"volcano":"default",style:{fontSize:10},children:e.type}),(0,r.jsx)(l.UITypographyText,{code:!0,style:{fontSize:10},children:e.shortSha})]}),(0,r.jsx)("div",{style:{marginTop:2},children:(0,r.jsx)(l.UITypographyText,{style:{fontSize:12},children:e.message})})]})}})}),(null!=(t=null==(i=R.commits)?void 0:i.length)?t:0)>5&&(0,r.jsx)(l.UIButton,{variant:"link",size:"small",icon:j?(0,r.jsx)(l.UIIcon,{name:"UpOutlined"}):(0,r.jsx)(l.UIIcon,{name:"DownOutlined"}),onClick:function(){return b(!j)},style:{padding:0},children:j?"Show less":"Show ".concat((null!=(s=null==(d=R.commits)?void 0:d.length)?s:0)-5," more")})]})}]}),(0,r.jsx)(l.UITable,{columns:_,dataSource:L.packages,rowKey:"name",pagination:!1,size:"small"})]})}function p(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function h(e,n,t,r,a,s,o){try{var l=e[s](o),i=l.value}catch(e){t(e);return}l.done?n(i):Promise.resolve(i).then(r,a)}function f(e){return function(){var n=this,t=arguments;return new Promise(function(r,a){var s=e.apply(n,t);function o(e){h(s,r,a,o,l,"next",e)}function l(e){h(s,r,a,o,l,"throw",e)}o(void 0)})}}function y(e,n){return null!=n&&"u">typeof Symbol&&n[Symbol.hasInstance]?!!n[Symbol.hasInstance](e):e instanceof n}function g(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t,r,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var s=[],o=!0,l=!1;try{for(a=a.call(e);!(o=(t=a.next()).done)&&(s.push(t.value),!n||s.length!==n);o=!0);}catch(e){l=!0,r=e}finally{try{o||null==a.return||a.return()}finally{if(l)throw r}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return p(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return p(e,n)}}(e,n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,n){var t,r,a,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(o,"next",{value:i(0)}),l(o,"throw",{value:i(1)}),l(o,"return",{value:i(2)}),"function"==typeof Symbol&&l(o,Symbol.iterator,{value:function(){return this}}),o;function i(l){return function(i){var c=[l,i];if(t)throw TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(s=0)),s;)try{if(t=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return s.label++,{value:c[1],done:!1};case 5:s.label++,r=c[1],c=[0];continue;case 7:c=s.ops.pop(),s.trys.pop();continue;default:if(!(a=(a=s.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){s=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){s.label=c[1];break}if(6===c[0]&&s.label<a[1]){s.label=a[1],a=c;break}if(a&&s.label<a[2]){s.label=a[2],s.ops.push(c);break}a[2]&&s.ops.pop(),s.trys.pop();continue}c=n.call(e,s)}catch(e){c=[6,e],r=0}finally{t=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function x(e){var n=e.selectedScope,t=e.onChangelogReady,s=g(a.useState(!0),2),i=s[0],c=s[1],u=g(a.useState(""),2),d=u[0],p=u[1],h=g(a.useState(!1),2),x=h[0],I=h[1],j=g(a.useState(!0),2),b=j[0],v=j[1],U=n?"/v1/plugins/release/changelog?scope=".concat(encodeURIComponent(n)):"",S=(0,o.useData)(U),k=S.data,T=S.isLoading,w=(0,o.useMutateData)("/v1/plugins/release/changelog/generate","POST"),C=w.mutateAsync,O=w.isLoading,E=(0,o.useMutateData)("/v1/plugins/release/changelog/save","POST"),P=E.mutateAsync,A=E.isLoading;a.useEffect(function(){(null==k?void 0:k.markdown)?p(k.markdown):p(""),I(!1)},[k]),a.useEffect(function(){t(!!(d&&!x))},[d,x,t]);var R=function(){return f(function(){var e,t,r,a,s;return m(this,function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),[4,C({scope:n,useLLM:b})];case 1:return p((e=o.sent()).markdown),I(!0),t=[],e.commitsCount&&t.push("".concat(e.commitsCount," commits")),e.tokensUsed&&t.push("".concat(e.tokensUsed," tokens")),r=e.usedLLM?"AI-enhanced":b?"Template":"Simple",a=t.length>0?" (".concat(t.join(", "),")"):"",l.UIMessage.success("".concat(r," changelog generated").concat(a)),[3,3];case 2:return s=o.sent(),l.UIMessage.error("Failed to generate changelog: ".concat(y(s,Error)?s.message:"Unknown error")),[3,3];case 3:return[2]}})})()};return T?(0,r.jsx)(l.UISpin,{size:"large",style:{display:"block",margin:"48px auto"}}):(null==k?void 0:k.markdown)||d?(0,r.jsxs)(l.UICard,{title:(0,r.jsxs)(l.UISpace,{children:[x?(0,r.jsx)(l.UITag,{color:"warning",children:"Unsaved"}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(l.UIIcon,{name:"CheckCircleOutlined",style:{color:"#52c41a"}}),(0,r.jsx)(l.UITag,{color:"success",children:"Saved"})]}),(0,r.jsx)("span",{children:"Changelog"})]}),extra:(0,r.jsxs)(l.UISpace,{children:[(0,r.jsx)(l.UICheckbox,{checked:b,onChange:function(e){return v(e)},children:"Use AI"}),(0,r.jsx)(l.UIButton,{icon:(0,r.jsx)(l.UIIcon,{name:"ThunderboltOutlined"}),onClick:function(){R()},loading:O,size:"small",children:"Regenerate"}),(0,r.jsx)(l.UIButton,{icon:i?(0,r.jsx)(l.UIIcon,{name:"EyeOutlined"}):(0,r.jsx)(l.UIIcon,{name:"EditOutlined"}),onClick:function(){return c(!i)},size:"small",children:i?"Preview":"Edit"}),(0,r.jsx)(l.UIButton,{variant:"primary",icon:(0,r.jsx)(l.UIIcon,{name:"SaveOutlined"}),onClick:function(){f(function(){var e;return m(this,function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,P({scope:n,markdown:d})];case 1:return t.sent(),I(!1),l.UIMessage.success("Changelog saved"),[3,3];case 2:return e=t.sent(),l.UIMessage.error("Failed to save: ".concat(y(e,Error)?e.message:"Unknown error")),[3,3];case 3:return[2]}})})()},loading:A,disabled:!x,size:"small",children:"Save"})]}),children:[(0,r.jsxs)(l.UIRow,{gutter:16,children:[(0,r.jsx)(l.UICol,{span:i?12:24,children:i?(0,r.jsx)(l.UIInputTextArea,{value:d,onChange:function(e){p(e.target.value),I(!0)},rows:20,style:{fontFamily:"monospace",fontSize:13,height:450},placeholder:"Write your changelog in Markdown..."}):(0,r.jsx)("div",{style:{maxHeight:500,overflow:"auto"},children:(0,r.jsx)(l.UIMarkdownViewer,{content:d})})}),i&&(0,r.jsx)(l.UICol,{span:12,children:(0,r.jsxs)("div",{style:{border:"1px solid #d9d9d9",borderRadius:4,height:450,overflow:"auto",padding:12,background:"#fafafa"},children:[(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{fontSize:11,display:"block",marginBottom:8},children:"Preview"}),(0,r.jsx)(l.UIMarkdownViewer,{content:d})]})})]}),x&&(0,r.jsx)("div",{style:{marginTop:16,textAlign:"center"},children:(0,r.jsx)(l.UITypographyText,{type:"warning",style:{fontSize:12},children:"Save changelog to proceed to the next step"})})]}):(0,r.jsx)(l.UICard,{children:(0,r.jsx)(l.UIEmptyState,{description:"No changelog generated yet",image:l.UIEmptyState.PRESENTED_IMAGE_SIMPLE,children:(0,r.jsxs)(l.UISpace,{direction:"vertical",size:"middle",style:{display:"flex",alignItems:"center"},children:[(0,r.jsx)(l.UICheckbox,{checked:b,onChange:function(e){return v(e)},children:"Use AI-powered generation (requires LLM)"}),(0,r.jsx)(l.UIButton,{variant:"primary",icon:(0,r.jsx)(l.UIIcon,{name:"ThunderboltOutlined"}),onClick:function(){R()},loading:O,size:"large",children:"Generate Changelog"}),(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{fontSize:12},children:b?"AI will analyze git commits and generate a detailed changelog":"Generate a simple changelog from package versions"})]})})})}function I(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function j(e,n,t,r,a,s,o){try{var l=e[s](o),i=l.value}catch(e){t(e);return}l.done?n(i):Promise.resolve(i).then(r,a)}function b(e,n){return null!=n&&"u">typeof Symbol&&n[Symbol.hasInstance]?!!n[Symbol.hasInstance](e):e instanceof n}function v(e){if(0===e)return"0 B";var n=Math.floor(Math.log(e)/Math.log(1024));return"".concat(parseFloat((e/Math.pow(1024,n)).toFixed(1))," ").concat(["B","KB","MB","GB"][n])}function U(e){var n,t=e.split(".");return t.length>1&&null!=(n=t[t.length-1])?n:""}function S(e){switch(U(e)){case"js":case"mjs":case"cjs":return"#f5a623";case"ts":case"tsx":return"#3178c6";case"d.ts":return"#235a97";case"json":return"#5a9c5a";case"md":return"#083fa1";case"map":return"#8c8c8c";default:return"#595959"}}function k(e){var n,t,s=e.selectedScope,i=e.onPreviewReady,c=s?"/v1/plugins/release/preview?scope=".concat(encodeURIComponent(s)):"",u=(0,o.useData)(c),d=u.data,p=u.isLoading,h=u.error,f=u.refetch,y=(0,o.useMutateData)("/v1/plugins/release/build","POST"),g=y.mutateAsync,m=y.isLoading,x=null!=(n=null==d?void 0:d.packages.some(function(e){return"ready"!==e.buildStatus}))&&n,k=null!=(t=null==d?void 0:d.allBuilt)&&t;a.useEffect(function(){d&&d.packages.length>0&&k?i(!0):i(!1)},[d,k,i]);var T=function(){var e;return(e=function(){var e,n;return function(e,n){var t,r,a,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(o,"next",{value:i(0)}),l(o,"throw",{value:i(1)}),l(o,"return",{value:i(2)}),"function"==typeof Symbol&&l(o,Symbol.iterator,{value:function(){return this}}),o;function i(l){return function(i){var c=[l,i];if(t)throw TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(s=0)),s;)try{if(t=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return s.label++,{value:c[1],done:!1};case 5:s.label++,r=c[1],c=[0];continue;case 7:c=s.ops.pop(),s.trys.pop();continue;default:if(!(a=(a=s.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){s=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){s.label=c[1];break}if(6===c[0]&&s.label<a[1]){s.label=a[1],a=c;break}if(a&&s.label<a[2]){s.label=a[2],s.ops.push(c);break}a[2]&&s.ops.pop(),s.trys.pop();continue}c=n.call(e,s)}catch(e){c=[6,e],r=0}finally{t=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,g({scope:s})];case 1:return(e=t.sent()).success?(l.UIMessage.success("Build completed: ".concat(e.builtCount,"/").concat(e.totalCount," packages")),f()):l.UIMessage.error("Build failed"),[3,3];case 2:return n=t.sent(),l.UIMessage.error("Build failed: ".concat(b(n,Error)?n.message:"Unknown error")),[3,3];case 3:return[2]}})},function(){var n=this,t=arguments;return new Promise(function(r,a){var s=e.apply(n,t);function o(e){j(s,r,a,o,l,"next",e)}function l(e){j(s,r,a,o,l,"throw",e)}o(void 0)})})()};if(p)return(0,r.jsx)(l.UICard,{children:(0,r.jsxs)("div",{style:{textAlign:"center",padding:48},children:[(0,r.jsx)(l.UISpin,{size:"large"}),(0,r.jsx)("div",{style:{marginTop:16},children:(0,r.jsx)(l.UITypographyText,{type:"secondary",children:"Analyzing package contents..."})})]})});if(h)return(0,r.jsx)(l.UICard,{children:(0,r.jsx)(l.UIEmptyState,{description:"Failed to load package preview: ".concat(b(h,Error)?h.message:"Unknown error")})});if(!d||0===d.packages.length)return(0,r.jsx)(l.UICard,{children:(0,r.jsx)(l.UIEmptyState,{description:"No packages found in release plan. Generate a plan first."})});var w=d.totalFiles,C=d.totalSize,O=new Map;d.packages.forEach(function(e){e.files.forEach(function(e){var n=U(e.path)||"other",t=O.get(n)||{count:0,size:0};O.set(n,{count:t.count+1,size:t.size+e.size})})});var E=Array.from(O.entries()).sort(function(e,n){return n[1].size-e[1].size}).slice(0,6),P=[{title:"File",dataIndex:"path",key:"path",render:function(e){return(0,r.jsxs)(l.UISpace,{size:4,children:[(0,r.jsx)(l.UIIcon,{name:"FileOutlined",style:{color:S(e)}}),(0,r.jsx)(l.UITypographyText,{code:!0,style:{fontSize:12},children:e})]})}},{title:"Size",dataIndex:"size",key:"size",width:100,align:"right",render:function(e){return(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{fontSize:12},children:v(e)})}}];return(0,r.jsxs)("div",{children:[(0,r.jsxs)(l.UICard,{style:{marginBottom:16},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,r.jsxs)(l.UISpace,{size:"large",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{display:"block",fontSize:12},children:"Total Files"}),(0,r.jsx)(l.UITitle,{level:3,style:{margin:0},children:w})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{display:"block",fontSize:12},children:"Total Size"}),(0,r.jsx)(l.UITitle,{level:3,style:{margin:0},children:v(C)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{display:"block",fontSize:12},children:"Packages"}),(0,r.jsx)(l.UITitle,{level:3,style:{margin:0},children:d.packages.length})]})]}),(0,r.jsx)(l.UISpace,{children:k?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(l.UIIcon,{name:"CheckCircleOutlined",style:{color:"#52c41a",fontSize:24}}),(0,r.jsx)(l.UITypographyText,{strong:!0,style:{color:"#52c41a"},children:"Ready to publish"})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(l.UIIcon,{name:"WarningOutlined",style:{color:"#faad14",fontSize:24}}),(0,r.jsx)(l.UITypographyText,{strong:!0,style:{color:"#faad14"},children:"Build required"})]})})]}),(0,r.jsxs)("div",{style:{marginTop:16},children:[(0,r.jsxs)(l.UISpace,{children:[(0,r.jsx)(l.UIButton,{variant:"primary",icon:(0,r.jsx)(l.UIIcon,{name:"BuildOutlined"}),onClick:function(){T()},loading:m,size:"small",children:m?"Building...":x?"Build":"Rebuild"}),(0,r.jsx)(l.UIButton,{icon:(0,r.jsx)(l.UIIcon,{name:"ReloadOutlined"}),onClick:function(){return f()},disabled:m,size:"small",children:"Refresh"})]}),x&&(0,r.jsx)(l.UIAlert,{variant:"warning",message:"Some packages need to be built before publishing",style:{marginTop:12},showIcon:!0})]}),(0,r.jsxs)("div",{style:{marginTop:24},children:[(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{display:"block",marginBottom:8,fontSize:12},children:"File Types"}),(0,r.jsx)(l.UISpace,{wrap:!0,children:E.map(function(e){var n=function(e){if(Array.isArray(e))return e}(e)||function(e){var n,t,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var a=[],s=!0,o=!1;try{for(r=r.call(e);!(s=(n=r.next()).done)&&(a.push(n.value),2!==a.length);s=!0);}catch(e){o=!0,t=e}finally{try{s||null==r.return||r.return()}finally{if(o)throw t}}return a}}(e)||function(e){if(e){if("string"==typeof e)return I(e,2);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return I(e,2)}}(e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),t=n[0],a=n[1];return(0,r.jsxs)(l.UITag,{style:{margin:0},children:[(0,r.jsxs)("span",{style:{color:S(".".concat(t))},children:[".",t]})," ",a.count," (",v(a.size),")"]},t)})})]})]}),d.packages.map(function(e){return(0,r.jsxs)(l.UICard,{title:(0,r.jsxs)(l.UISpace,{children:[(0,r.jsx)(l.UIIcon,{name:"FolderOutlined"}),(0,r.jsx)(l.UITypographyText,{strong:!0,children:e.name}),(0,r.jsxs)(l.UITag,{color:"blue",children:["v",e.version]})]}),extra:(0,r.jsxs)(l.UISpace,{children:["ready"===e.buildStatus?(0,r.jsx)(l.UITag,{color:"success",children:"Built"}):"building"===e.buildStatus?(0,r.jsx)(l.UITag,{color:"processing",children:"Building..."}):(0,r.jsx)(l.UITag,{color:"warning",children:"Not built"}),(0,r.jsxs)(l.UITag,{children:[e.fileCount," files"]}),(0,r.jsx)(l.UITag,{color:"green",children:v(e.totalSize)})]}),style:{marginBottom:16},size:"small",children:[(0,r.jsx)("div",{style:{marginBottom:16},children:(0,r.jsx)(l.UIProgress,{percent:100,success:{percent:e.files.filter(function(e){return e.path.endsWith(".js")||e.path.endsWith(".mjs")}).reduce(function(e,n){return e+n.size},0)/e.totalSize*100},strokeColor:"#3178c6",trailColor:"#f0f0f0",showInfo:!1,size:"small"})}),(0,r.jsx)(l.UITable,{dataSource:e.files,columns:P,rowKey:"path",size:"small",pagination:e.files.length>10&&{pageSize:10}})]},e.name)})]})}function T(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function w(e,n,t,r,a,s,o){try{var l=e[s](o),i=l.value}catch(e){t(e);return}l.done?n(i):Promise.resolve(i).then(r,a)}function C(e){return function(){var n=this,t=arguments;return new Promise(function(r,a){var s=e.apply(n,t);function o(e){w(s,r,a,o,l,"next",e)}function l(e){w(s,r,a,o,l,"throw",e)}o(void 0)})}}function O(e,n){return null!=n&&"u">typeof Symbol&&n[Symbol.hasInstance]?!!n[Symbol.hasInstance](e):e instanceof n}function E(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){var r;r=t[n],n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r})}return e}function P(e,n){return n=null!=n?n:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):(function(e){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n.push.apply(n,t)}return n})(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}),e}function A(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t,r,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var s=[],o=!0,l=!1;try{for(a=a.call(e);!(o=(t=a.next()).done)&&(s.push(t.value),!n||s.length!==n);o=!0);}catch(e){l=!0,r=e}finally{try{o||null==a.return||a.return()}finally{if(l)throw r}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return T(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return T(e,n)}}(e,n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function R(e,n){var t,r,a,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(o,"next",{value:i(0)}),l(o,"throw",{value:i(1)}),l(o,"return",{value:i(2)}),"function"==typeof Symbol&&l(o,Symbol.iterator,{value:function(){return this}}),o;function i(l){return function(i){var c=[l,i];if(t)throw TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(s=0)),s;)try{if(t=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return s.label++,{value:c[1],done:!1};case 5:s.label++,r=c[1],c=[0];continue;case 7:c=s.ops.pop(),s.trys.pop();continue;default:if(!(a=(a=s.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){s=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){s.label=c[1];break}if(6===c[0]&&s.label<a[1]){s.label=a[1],a=c;break}if(a&&s.label<a[2]){s.label=a[2],s.ops.push(c);break}a[2]&&s.ops.pop(),s.trys.pop();continue}c=n.call(e,s)}catch(e){c=[6,e],r=0}finally{t=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function z(e){var n,t,s=e.selectedScope,i=e.onReleaseComplete,c=A(a.useState(""),2),u=c[0],d=c[1],p=A(a.useState(""),2),h=p[0],f=p[1],y=A(a.useState([]),2),g=y[0],m=y[1],x=A(a.useState(!1),2),I=x[0],j=x[1],b=A(a.useState(!1),2),v=b[0],U=b[1],S=A(a.useState(!1),2),k=S[0],T=S[1],w=A(a.useState(!1),2),z=w[0],M=w[1],D=A(a.useState(null),2),B=D[0],L=D[1],_=s?"/v1/plugins/release/plan?scope=".concat(encodeURIComponent(s)):"",F=s?"/v1/plugins/release/checks?scope=".concat(encodeURIComponent(s)):"",N=(0,o.useData)(_).data,V=(0,o.useData)(F),G=V.data,$=V.isLoading,K=(0,o.useMutateData)("/v1/plugins/release/checks/run","POST").mutateAsync,H=(0,o.useMutateData)("/v1/plugins/release/run","POST"),W=H.mutateAsync,q=H.isLoading,Y=(0,o.useMutateData)("/v1/plugins/release/plan","DELETE"),J=Y.mutateAsync,Q=Y.isLoading;a.useEffect(function(){!G||I||v||0!==g.length||m(G.checks.map(function(e){return{id:e.id,name:e.name,status:"pending",optional:e.optional}}))},[G,I,v,g.length]);var X=g.length>0&&g.every(function(e){return"success"===e.status}),Z=g.some(function(e){return"error"===e.status}),ee=function(e){switch(e){case"running":return(0,r.jsx)(l.UIIcon,{name:"LoadingOutlined",style:{color:"#1890ff"}});case"success":return(0,r.jsx)(l.UIIcon,{name:"CheckCircleOutlined",style:{color:"#52c41a"}});case"error":return(0,r.jsx)(l.UIIcon,{name:"CloseCircleOutlined",style:{color:"#ff4d4f"}});default:return(0,r.jsx)(l.UIIcon,{name:"SafetyCertificateOutlined",style:{color:"#8c8c8c"}})}};return z?(0,r.jsx)(l.UICard,{children:(0,r.jsx)(l.UIResult,{status:"success",title:"Release Published!",subTitle:"".concat(null!=(n=null==N||null==(t=N.plan)?void 0:t.packages.length)?n:0," package(s) published to npm"),extra:[(0,r.jsx)(l.UIPopconfirm,{title:"Rollback Release",description:"This will unpublish the packages. Are you sure?",icon:(0,r.jsx)(l.UIIcon,{name:"ExclamationCircleOutlined",style:{color:"#ff4d4f"}}),onConfirm:function(){C(function(){var e;return R(this,function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,J({scope:s})];case 1:return n.sent(),l.UIMessage.success("Rollback completed successfully"),M(!1),T(!1),L(null),j(!1),m(function(e){return e.map(function(e){return P(E({},e),{status:"pending",error:void 0,duration:void 0})})}),[3,3];case 2:return e=n.sent(),l.UIMessage.error("Rollback failed: ".concat(O(e,Error)?e.message:"Unknown error")),[3,3];case 3:return[2]}})})()},okText:"Yes, Rollback",okButtonProps:{danger:!0},cancelText:"Cancel",children:(0,r.jsx)(l.UIButton,{icon:(0,r.jsx)(l.UIIcon,{name:"RollbackOutlined"}),loading:Q,danger:!0,children:"Rollback"})},"rollback")]})}):(0,r.jsxs)("div",{children:[(0,r.jsx)(l.UICard,{title:(0,r.jsxs)(l.UISpace,{children:[(0,r.jsx)(l.UIIcon,{name:"BuildOutlined"}),(0,r.jsx)("span",{children:"Pre-release Checks"}),X&&(0,r.jsx)(l.UITag,{color:"success",children:"All Passed"}),Z&&(0,r.jsx)(l.UITag,{color:"error",children:"Failed"})]}),style:{marginBottom:16},children:(0,r.jsxs)(l.UISpace,{direction:"vertical",style:{width:"100%"},size:"middle",children:[$&&0===g.length&&(0,r.jsx)(l.UISkeleton,{active:!0,lines:4,title:!1}),!$&&0===g.length&&(0,r.jsx)(l.UITypographyText,{type:"secondary",children:"No checks configured in kb.config.json release.checks"}),g.map(function(e){return(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 16px",background:"error"===e.status?"#fff2f0":"success"===e.status?"#f6ffed":"#fafafa",borderRadius:8,border:"1px solid ".concat("error"===e.status?"#ffccc7":"success"===e.status?"#b7eb8f":"#d9d9d9")},children:[(0,r.jsxs)(l.UISpace,{children:[ee(e.status),(0,r.jsxs)("div",{children:[(0,r.jsxs)(l.UISpace,{children:[(0,r.jsx)(l.UITypographyText,{strong:!0,children:e.name}),e.optional&&(0,r.jsx)(l.UITag,{children:"optional"})]}),e.error&&(0,r.jsx)("div",{style:{marginTop:4},children:(0,r.jsx)("pre",{style:{margin:0,padding:"8px 12px",fontSize:11,lineHeight:1.5,color:"#cf1322",background:"#fff1f0",borderRadius:4,maxHeight:200,overflow:"auto",whiteSpace:"pre-wrap",wordBreak:"break-all"},children:e.error})})]})]}),e.duration&&(0,r.jsxs)(l.UITag,{children:[(e.duration/1e3).toFixed(1),"s"]})]},e.id)}),(0,r.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,r.jsx)(l.UIButton,{variant:"primary",icon:(0,r.jsx)(l.UIIcon,{name:"BuildOutlined"}),onClick:function(){C(function(){var e,n;return R(this,function(t){switch(t.label){case 0:U(!0),j(!1),m(function(e){return e.map(function(e){return P(E({},e),{status:"running",error:void 0,duration:void 0})})}),t.label=1;case 1:return t.trys.push([1,3,4,5]),[4,K({scope:s})];case 2:return e=t.sent(),m(function(n){var t=new Map(e.checks.map(function(e){return[e.id,e]}));return n.map(function(e){var n=t.get(e.id);return n?P(E({},e),{status:n.success?"success":"error",error:n.error,duration:n.durationMs}):P(E({},e),{status:"pending"})})}),j(e.success),e.success||l.UIMessage.error("Some checks failed"),[3,5];case 3:return n=t.sent(),m(function(e){return e.map(function(e){return P(E({},e),{status:"pending"})})}),l.UIMessage.error("Checks failed: ".concat(O(n,Error)?n.message:"Unknown error")),[3,5];case 4:return U(!1),[7];case 5:return[2]}})})()},loading:v,disabled:I,children:v?"Running Checks...":"Run Checks"}),(I||Z)&&(0,r.jsx)(l.UIButton,{onClick:function(){m(function(e){return e.map(function(e){return P(E({},e),{status:"pending",error:void 0,duration:void 0})})}),j(!1)},children:"Reset"})]})]})}),(0,r.jsxs)(l.UICard,{title:(0,r.jsxs)(l.UISpace,{children:[(0,r.jsx)(l.UIIcon,{name:"LockOutlined"}),(0,r.jsx)("span",{children:"npm Publish"})]}),children:[!X&&(0,r.jsx)(l.UIAlert,{message:"Complete pre-release checks first",description:"All checks must pass before you can publish to npm.",variant:"info",showIcon:!0,style:{marginBottom:16}}),B&&(0,r.jsx)(l.UIAlert,{message:"Release Failed",description:B,variant:"error",showIcon:!0,closable:!0,onClose:function(){return L(null)},style:{marginBottom:16}}),(0,r.jsxs)(l.UISpace,{direction:"vertical",style:{width:"100%"},size:"middle",children:[(null==N?void 0:N.plan)&&(0,r.jsx)(l.UIAccordion,{size:"small",items:[{key:"summary",label:"Release Summary",extra:(0,r.jsxs)(l.UITag,{color:"blue",children:[N.plan.packages.length," package(s)"]}),children:(0,r.jsx)("div",{children:N.plan.packages.map(function(e){return(0,r.jsxs)("div",{style:{marginBottom:4},children:[(0,r.jsx)(l.UITypographyText,{code:!0,children:e.name}),(0,r.jsxs)(l.UITypographyText,{type:"secondary",children:[" ",e.currentVersion," → "]}),(0,r.jsx)(l.UITypographyText,{strong:!0,style:{color:"#52c41a"},children:e.nextVersion})]},e.name)})})}]}),(0,r.jsx)(l.UIDivider,{style:{margin:"8px 0"}}),(0,r.jsxs)("div",{children:[(0,r.jsxs)(l.UITypographyText,{strong:!0,style:{display:"block",marginBottom:8},children:["npm One-Time Password (OTP)"," ",(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{fontWeight:"normal"},children:"— optional"})]}),(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{display:"block",marginBottom:8,fontSize:12},children:"Required only if your npm account uses 2FA. Leave empty to publish via NPM_TOKEN."}),(0,r.jsx)(l.UIInput,{prefix:(0,r.jsx)(l.UIIcon,{name:"LockOutlined"}),placeholder:"123456",value:u,onChange:function(e){d(e.replace(/\D/g,"").slice(0,6)),f("")},maxLength:6,style:{width:200,fontSize:18,letterSpacing:8},status:h?"error":void 0,disabled:!X||k}),h&&(0,r.jsx)(l.UITypographyText,{type:"danger",style:{display:"block",marginTop:4,fontSize:12},children:h})]}),(0,r.jsx)(l.UIDivider,{style:{margin:"8px 0"}}),(0,r.jsx)(l.UIButton,{variant:"primary",size:"large",icon:(0,r.jsx)(l.UIIcon,{name:"RocketOutlined"}),onClick:function(){C(function(){var e,n,t,r,a;return R(this,function(o){switch(o.label){case 0:if(!(u&&!/^\d{6}$/.test(u)?(f("OTP must be 6 digits"),!1):(f(""),!0)))return[2];T(!0),L(null),o.label=1;case 1:return o.trys.push([1,3,,4]),[4,W({scope:s,dryRun:!1,otp:u})];case 2:return(e=o.sent()).success?(M(!0),l.UIMessage.success("Release published successfully!"),i()):(L(t=(null==(n=e.errors)?void 0:n.join(", "))||"Unknown publish error"),T(!1),l.UIMessage.error("Release failed: ".concat(t))),[3,4];case 3:return L(a=O(r=o.sent(),Error)?r.message:"Unknown error"),T(!1),l.UIMessage.error("Release failed: ".concat(a)),[3,4];case 4:return[2]}})})()},loading:q,disabled:!X||k,block:!0,children:"Publish to npm"}),(0,r.jsx)(l.UITypographyText,{type:"secondary",style:{textAlign:"center",display:"block",fontSize:12},children:"This action will publish packages to the npm registry"})]})]})]})}function M(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function D(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t,r,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var s=[],o=!0,l=!1;try{for(a=a.call(e);!(o=(t=a.next()).done)&&(s.push(t.value),!n||s.length!==n);o=!0);}catch(e){l=!0,r=e}finally{try{o||null==a.return||a.return()}finally{if(l)throw r}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return M(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return M(e,n)}}(e,n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var B=["plan","changelog","preview","release"],L={plan:0,changelog:1,preview:2,release:3};function _(e){var n,t=e.selectedScope,i=e.selectedScopePath,c=D((0,s.useSearchParams)(),2),u=c[0],p=c[1],h=(0,o.useMutateData)("/v1/plugins/release/plan","DELETE").mutateAsync,f=null!=(n=L[u.get("step")])?n:0,y=function(e){p(function(n){var t,r=new URLSearchParams(n);return r.set("step",null!=(t=B[e])?t:"plan"),r})},g=D(a.useState(!1),2),m=g[0],I=g[1],j=D(a.useState(!1),2),b=j[0],v=j[1],U=D(a.useState(!1),2),S=U[0],T=U[1],w=D(a.useState(!1),2),C=w[0],O=w[1],E=[{title:"Plan",icon:(0,r.jsx)(l.UIIcon,{name:"FileTextOutlined"})},{title:"Changelog",icon:(0,r.jsx)(l.UIIcon,{name:"EditOutlined"})},{title:"Preview",icon:(0,r.jsx)(l.UIIcon,{name:"FolderOutlined"})},{title:"Release",icon:(0,r.jsx)(l.UIIcon,{name:"RocketOutlined"})}];return t?m?(0,r.jsx)(l.UICard,{children:(0,r.jsx)(l.UIResult,{status:"success",title:"Release Complete!",subTitle:"Your packages have been published successfully.",extra:[(0,r.jsx)(l.UIButton,{variant:"primary",onClick:function(){h({scope:t}),y(0),I(!1),v(!1),T(!1),O(!1)},children:"Start New Release"},"new")]})}):(0,r.jsxs)("div",{children:[(0,r.jsx)(l.UICard,{size:"small",style:{marginBottom:16},children:(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,r.jsx)(l.UISteps,{current:f,items:E,type:"navigation",size:"small",onChange:function(e){e<f&&y(e)},style:{flex:1}}),(0,r.jsxs)("div",{style:{display:"flex",gap:8,marginLeft:32,flexShrink:0},children:[(0,r.jsx)(l.UIButton,{icon:(0,r.jsx)(l.UIIcon,{name:"ArrowLeftOutlined"}),onClick:function(){f>0&&y(f-1)},disabled:0===f,size:"small",children:"Back"}),f<E.length-1&&(0,r.jsxs)(l.UIButton,{variant:"primary",onClick:function(){f<E.length-1&&y(f+1)},disabled:!(0===f?b:1===f?S:2===f&&C),size:"small",children:["Next ",(0,r.jsx)(l.UIIcon,{name:"ArrowRightOutlined"})]})]})]})}),function(){switch(f){case 0:return(0,r.jsx)(d,{selectedScope:t,selectedScopePath:i,onPlanReady:v});case 1:return(0,r.jsx)(x,{selectedScope:t,onChangelogReady:T});case 2:return(0,r.jsx)(k,{selectedScope:t,onPreviewReady:O});case 3:return(0,r.jsx)(z,{selectedScope:t,onReleaseComplete:function(){return I(!0)}});default:return null}}()]}):(0,r.jsx)(l.UICard,{children:(0,r.jsx)(l.UIResult,{status:"info",title:"Select a scope",subTitle:"Please select a package or monorepo scope to start the release process."})})}function F(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function N(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t,r,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var s=[],o=!0,l=!1;try{for(a=a.call(e);!(o=(t=a.next()).done)&&(s.push(t.value),!n||s.length!==n);o=!0);}catch(e){l=!0,r=e}finally{try{o||null==a.return||a.return()}finally{if(l)throw r}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return F(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return F(e,n)}}(e,n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function V(e){var n,t,a,s,i=e.releaseId,c=e.releaseScope,u=(0,o.useData)("/v1/plugins/release/history/".concat(encodeURIComponent(c),"/").concat(encodeURIComponent(i),"/report")).data,d=(0,o.useData)("/v1/plugins/release/history/".concat(encodeURIComponent(c),"/").concat(encodeURIComponent(i),"/plan")).data,p=(0,o.useData)("/v1/plugins/release/history/".concat(encodeURIComponent(c),"/").concat(encodeURIComponent(i),"/changelog")).data,h=[{key:"report",label:"Report",children:(null==u?void 0:u.report)?(0,r.jsxs)(l.UIDescriptions,{bordered:!0,column:1,size:"small",children:[(0,r.jsx)(l.UIDescriptionsItem,{label:"Release ID",children:u.id}),(0,r.jsx)(l.UIDescriptionsItem,{label:"Scope",children:u.report.scope}),(0,r.jsx)(l.UIDescriptionsItem,{label:"Stage",children:u.report.stage}),(0,r.jsx)(l.UIDescriptionsItem,{label:"Timestamp",children:new Date(u.report.ts).toLocaleString()}),(0,r.jsx)(l.UIDescriptionsItem,{label:"Status",children:(0,r.jsx)(l.UITag,{color:(null==(n=u.report.result)?void 0:n.ok)?"success":"error",children:(null==(t=u.report.result)?void 0:t.ok)?"Success":"Failed"})}),(null==(a=u.report.result)?void 0:a.timingMs)&&(0,r.jsxs)(l.UIDescriptionsItem,{label:"Duration",children:[u.report.result.timingMs,"ms"]}),(null==(s=u.report.result)?void 0:s.published)&&(0,r.jsx)(l.UIDescriptionsItem,{label:"Packages Published",children:u.report.result.published.length})]}):(0,r.jsx)(l.UISpin,{})},{key:"plan",label:"Plan",children:(null==d?void 0:d.plan)?(0,r.jsxs)("div",{children:[(0,r.jsxs)(l.UIDescriptions,{bordered:!0,column:2,size:"small",style:{marginBottom:16},children:[(0,r.jsx)(l.UIDescriptionsItem,{label:"Scope",children:d.plan.scope}),(0,r.jsx)(l.UIDescriptionsItem,{label:"Strategy",children:d.plan.strategy}),(0,r.jsx)(l.UIDescriptionsItem,{label:"Packages",children:d.plan.packages.length}),(0,r.jsx)(l.UIDescriptionsItem,{label:"Rollback",children:d.plan.rollbackEnabled?"Enabled":"Disabled"})]}),d.plan.packages.map(function(e,n){return(0,r.jsx)(l.UICard,{size:"small",style:{marginBottom:8},children:(0,r.jsxs)(l.UISpace,{direction:"vertical",size:"small",children:[(0,r.jsx)(l.UITypographyText,{strong:!0,children:e.name}),(0,r.jsxs)(l.UISpace,{children:[(0,r.jsx)(l.UITag,{color:"blue",children:e.currentVersion}),"→",(0,r.jsx)(l.UITag,{color:"green",children:e.nextVersion}),(0,r.jsx)(l.UITag,{children:e.bump})]}),(0,r.jsx)(l.UITypographyText,{type:"secondary",children:e.reason})]})},n)})]}):(0,r.jsx)(l.UISpin,{})},{key:"changelog",label:"Changelog",children:(null==p?void 0:p.markdown)?(0,r.jsx)(l.UIMarkdownViewer,{content:p.markdown}):(0,r.jsx)(l.UISpin,{})}];return(0,r.jsx)(l.UITabs,{items:h})}function G(e){var n,t=e.selectedScope,s=N((0,a.useState)(null),2),i=s[0],c=s[1],u=N((0,a.useState)(""),2),d=u[0],p=u[1],h=N((0,a.useState)(!1),2),f=h[0],y=h[1],g=(0,o.useData)("/v1/plugins/release/history"),m=g.data,x=g.isLoading,I=g.error,j=function(e,n){c(e),p(n),y(!0)};if(x)return(0,r.jsx)(l.UISpin,{size:"large",style:{display:"block",margin:"48px auto"}});if(I)return(0,r.jsx)(l.UICard,{children:(0,r.jsx)(l.UIEmptyState,{description:"Failed to load history: ".concat((null!=(n=Error)&&"u">typeof Symbol&&n[Symbol.hasInstance]?!!n[Symbol.hasInstance](I):I instanceof n)?I.message:"Unknown error"),image:l.UIEmptyState.PRESENTED_IMAGE_SIMPLE})});var b=(null==m?void 0:m.releases)?t?m.releases.filter(function(e){return e.scope===t}):m.releases:[];if(0===b.length)return(0,r.jsx)(l.UICard,{children:(0,r.jsx)(l.UIEmptyState,{description:t?'No release history for scope "'.concat(t,'" yet'):"No release history yet",image:l.UIEmptyState.PRESENTED_IMAGE_SIMPLE})});var v=b.map(function(e){return{dot:e.success?(0,r.jsx)(l.UIIcon,{name:"CheckCircleOutlined",style:{color:"#52c41a"}}):(0,r.jsx)(l.UIIcon,{name:"CloseCircleOutlined",style:{color:"#ff4d4f"}}),children:(0,r.jsx)(l.UICard,{size:"small",style:{marginBottom:16},children:(0,r.jsxs)(l.UISpace,{direction:"vertical",style:{width:"100%"},children:[(0,r.jsxs)(l.UISpace,{children:[(0,r.jsx)(l.UITag,{color:"blue",children:e.scope}),(0,r.jsx)(l.UITag,{color:e.success?"success":"error",children:e.success?"Success":"Failed"}),(0,r.jsx)(l.UITypographyText,{type:"secondary",children:new Date(e.timestamp).toLocaleString()})]}),(0,r.jsxs)(l.UITypographyText,{children:["Released ",e.packages.length," package(s)"]}),(0,r.jsx)(l.UIButton,{icon:(0,r.jsx)(l.UIIcon,{name:"EyeOutlined"}),onClick:function(){return j(e.id,e.scope)},size:"small",children:"View Details"})]})})}});return(0,r.jsxs)(l.UICard,{title:(0,r.jsx)(l.UITitle,{level:4,style:{margin:0},children:"Release History"}),children:[(0,r.jsx)(l.UITimeline,{items:v}),(0,r.jsx)(l.UIModal,{title:"Release Details - ".concat(i),open:f,onCancel:function(){y(!1),c(null),p("")},footer:null,width:800,children:i&&d&&(0,r.jsx)(V,{releaseId:i,releaseScope:d})})]})}function $(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}let K=function(){var e,n,t,i,c,u=function(e){if(Array.isArray(e))return e}(e=(0,s.useSearchParams)())||function(e){var n,t,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var a=[],s=!0,o=!1;try{for(r=r.call(e);!(s=(n=r.next()).done)&&(a.push(n.value),2!==a.length);s=!0);}catch(e){o=!0,t=e}finally{try{s||null==r.return||r.return()}finally{if(o)throw t}}return a}}(e)||function(e){if(e){if("string"==typeof e)return $(e,2);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return $(e,2)}}(e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),d=u[0],p=u[1],h=null!=(n=d.get("scope"))?n:"",f=function(e){p(function(n){var t=new URLSearchParams(n);return t.set("scope",e),t.delete("step"),t})},y=(0,o.useData)("/v1/plugins/release/scopes"),g=y.data,m=y.isLoading;a.useEffect(function(){if((null==g?void 0:g.scopes)&&g.scopes.length>0&&!h){var e,n,t=g.scopes.find(function(e){return"root"===e.id}),r=g.scopes[0];f(null!=(e=null!=(n=null==t?void 0:t.id)?n:null==r?void 0:r.id)?e:"")}},[g]);var x=null==g||null==(i=g.scopes)?void 0:i.find(function(e){return e.id===h}),I=function(e){switch(e){case"monorepo":return"blue";case"package":return"green";case"root":return"purple";default:return"default"}},j=(0,r.jsx)(l.UITabs,{syncUrl:"search",items:[{key:"overview",label:"Release",children:(0,r.jsxs)(r.Fragment,{children:[x&&(0,r.jsx)(l.UIAccordion,{size:"small",style:{marginBottom:16},items:[{key:"scope-info",label:x.currentVersion?"".concat(x.name," v").concat(x.currentVersion):x.name,extra:(0,r.jsx)(l.UITag,{color:I(x.type),children:x.type}),children:(0,r.jsxs)(l.UIDescriptions,{size:"small",column:1,bordered:!0,children:[(0,r.jsx)(l.UIDescriptionsItem,{label:"Package Name",children:x.id}),x.currentVersion&&(0,r.jsx)(l.UIDescriptionsItem,{label:"Current Version",children:x.currentVersion}),x.description&&(0,r.jsx)(l.UIDescriptionsItem,{label:"Description",children:x.description}),(0,r.jsx)(l.UIDescriptionsItem,{label:"Path",children:(0,r.jsx)("code",{style:{fontSize:12},children:x.path})}),(0,r.jsx)(l.UIDescriptionsItem,{label:"Type",children:(0,r.jsx)(l.UITag,{color:I(x.type),children:x.type})})]})}]}),(0,r.jsx)(_,{selectedScope:h,selectedScopePath:null==x?void 0:x.path})]})},{key:"history",label:"History",children:(0,r.jsx)(G,{selectedScope:h})}]});return(0,r.jsx)(l.UIPage,{children:(0,r.jsx)(l.UIPageHeader,{title:"Release Manager",description:"Plan, execute, and audit releases across your workspace",actions:(0,r.jsx)(l.UISelect,{style:{width:400},placeholder:"Select scope (package or monorepo)",value:h||void 0,onChange:function(e){return f(e)},loading:m,showSearch:!0,optionFilterProp:"label",options:null!=(t=null==g||null==(c=g.scopes)?void 0:c.map(function(e){return{label:"".concat(e.name," (").concat(e.type,")"),value:e.id}}))?t:[]}),tabs:j})})}}}]);
2
- //# sourceMappingURL=__federation_expose_ReleasePage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__federation_expose_ReleasePage.js","sources":["webpack://@kb-labs/release-manager-cli/../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://@kb-labs/release-manager-cli/../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","webpack://@kb-labs/release-manager-cli/./src/studio/components/steps/PlanStep.tsx","webpack://@kb-labs/release-manager-cli/./src/studio/components/steps/ChangelogStep.tsx","webpack://@kb-labs/release-manager-cli/./src/studio/components/steps/PreviewStep.tsx","webpack://@kb-labs/release-manager-cli/./src/studio/components/steps/ReleaseStep.tsx","webpack://@kb-labs/release-manager-cli/./src/studio/components/ReleaseStepper.tsx","webpack://@kb-labs/release-manager-cli/./src/studio/components/HistoryTab.tsx","webpack://@kb-labs/release-manager-cli/./src/studio/pages/ReleasePage.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * Step 1: Generate and review release plan\n */\n\nimport * as React from 'react';\nimport {\n UIButton,\n UICard,\n UIEmptyState,\n UISpin,\n UITable,\n UITypographyText,\n UISpace,\n UITag,\n UIMessage,\n UICheckbox,\n UIAccordion,\n UITimeline,\n UIIcon,\n} from '@kb-labs/sdk/studio';\nimport { useData, useMutateData } from '@kb-labs/sdk/studio';\nimport type {\n StatusResponse,\n PlanResponse,\n GitTimelineResponse,\n GeneratePlanRequest,\n GeneratePlanResponse,\n} from '@kb-labs/release-manager-contracts';\n\ninterface PlanStepProps {\n selectedScope: string;\n selectedScopePath?: string;\n onPlanReady: (ready: boolean) => void;\n}\n\nconst INITIAL_COMMITS_COUNT = 5;\n\nexport function PlanStep({ selectedScope, selectedScopePath, onPlanReady }: PlanStepProps) {\n const [useLLM, setUseLLM] = React.useState(true);\n const [showAllCommits, setShowAllCommits] = React.useState(false);\n\n const statusUrl = selectedScope ? `/v1/plugins/release/status?scope=${encodeURIComponent(selectedScope)}` : '';\n const planUrl = selectedScope ? `/v1/plugins/release/plan?scope=${encodeURIComponent(selectedScope)}` : '';\n const timelineUrl = selectedScope ? `/v1/plugins/release/git-timeline?scope=${encodeURIComponent(selectedScope)}` : '';\n\n const { data: statusData, isLoading: statusLoading, refetch: refetchStatus } = useData<StatusResponse>(statusUrl);\n const { data: planData, isLoading: planLoading, refetch: refetchPlan } = useData<PlanResponse>(planUrl);\n const { data: gitTimelineData } = useData<GitTimelineResponse>(timelineUrl);\n\n const { mutateAsync: generatePlan, isLoading: generateLoading } = useMutateData<GeneratePlanRequest, GeneratePlanResponse>(\n '/v1/plugins/release/generate',\n 'POST',\n );\n\n React.useEffect(() => {\n const hasPlan = !!(planData?.plan && planData.plan.packages.length > 0);\n onPlanReady(hasPlan);\n }, [planData, onPlanReady]);\n\n const handleGenerate = async () => {\n try {\n const result = await generatePlan({ scope: selectedScope, scopePath: selectedScopePath, useLLM });\n refetchStatus();\n refetchPlan();\n const confidencePercent = result.confidence ? Math.round(result.confidence * 100) : 0;\n const tokensInfo = result.tokensUsed ? `, ${result.tokensUsed} tokens` : '';\n const method = useLLM ? 'AI-powered' : 'Simple';\n UIMessage.success(`${method} plan generated (${confidencePercent}% confidence${tokensInfo})`);\n } catch (error) {\n UIMessage.error(`Failed to generate plan: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n };\n\n if (statusLoading) {\n return <UISpin size=\"large\" style={{ display: 'block', margin: '48px auto' }} />;\n }\n\n if (!statusData?.hasPlan && !planData?.plan) {\n const noChanges = gitTimelineData !== undefined && !gitTimelineData.hasUnreleasedChanges;\n if (noChanges) {\n return (\n <UICard>\n <UIEmptyState\n description={`No unreleased changes since ${gitTimelineData?.lastTag ?? 'last release'}`}\n image={UIEmptyState.PRESENTED_IMAGE_SIMPLE}\n />\n </UICard>\n );\n }\n return (\n <UICard>\n <UIEmptyState\n description=\"No release plan generated yet\"\n image={UIEmptyState.PRESENTED_IMAGE_SIMPLE}\n >\n <UISpace direction=\"vertical\" size=\"middle\" style={{ display: 'flex', alignItems: 'center' }}>\n <UICheckbox checked={useLLM} onChange={(checked) => setUseLLM(checked)}>\n Use AI-powered analysis (requires LLM)\n </UICheckbox>\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"ThunderboltOutlined\" />}\n onClick={() => void handleGenerate()}\n loading={generateLoading}\n size=\"large\"\n >\n Generate Release Plan\n </UIButton>\n <UITypographyText type=\"secondary\" style={{ fontSize: 12 }}>\n {useLLM\n ? 'AI will analyze git history and provide intelligent reasoning for version bumps'\n : 'Generate plan using conventional commits analysis'}\n </UITypographyText>\n </UISpace>\n </UIEmptyState>\n </UICard>\n );\n }\n\n if (planLoading || !planData?.plan) {\n return <UISpin size=\"large\" style={{ display: 'block', margin: '48px auto' }} />;\n }\n\n const { plan } = planData;\n\n if (plan.packages.length === 0) {\n return (\n <UICard>\n <UIEmptyState\n description=\"Plan exists but contains no packages\"\n image={UIEmptyState.PRESENTED_IMAGE_SIMPLE}\n >\n <UISpace direction=\"vertical\" size=\"middle\" style={{ display: 'flex', alignItems: 'center' }}>\n <UITypographyText type=\"secondary\" style={{ fontSize: 12 }}>\n This may happen if there are no changes to release or the scope has no packages.\n </UITypographyText>\n <UICheckbox checked={useLLM} onChange={(checked) => setUseLLM(checked)}>\n Use AI-powered analysis\n </UICheckbox>\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"ThunderboltOutlined\" />}\n onClick={() => void handleGenerate()}\n loading={generateLoading}\n >\n Regenerate Plan\n </UIButton>\n </UISpace>\n </UIEmptyState>\n </UICard>\n );\n }\n\n const columns = [\n {\n title: 'Package',\n dataIndex: 'name',\n key: 'name',\n width: 280,\n ellipsis: true,\n render: (name: string) => (\n <UITypographyText strong ellipsis={{ tooltip: name }}>{name}</UITypographyText>\n ),\n },\n {\n title: 'Current',\n dataIndex: 'currentVersion',\n key: 'currentVersion',\n width: 90,\n render: (version: string) => version ? <UITag color=\"blue\">{version}</UITag> : '-',\n },\n {\n title: 'Next',\n dataIndex: 'nextVersion',\n key: 'nextVersion',\n width: 90,\n render: (version: string) => version ? <UITag color=\"green\">{version}</UITag> : '-',\n },\n {\n title: 'Bump',\n dataIndex: 'bump',\n key: 'bump',\n width: 80,\n render: (bump: string) => {\n if (!bump) { return '-'; }\n const colorMap: Record<string, string> = { major: 'red', minor: 'orange', patch: 'blue' };\n return <UITag color={colorMap[bump] || 'default'}>{bump}</UITag>;\n },\n },\n {\n title: 'Reason',\n dataIndex: 'reason',\n key: 'reason',\n ellipsis: true,\n render: (reason: string) => (\n <UITypographyText type=\"secondary\" style={{ fontSize: 12 }}>{reason || '-'}</UITypographyText>\n ),\n },\n ];\n\n return (\n <UICard\n title={\n <UISpace>\n <UIIcon name=\"CheckCircleOutlined\" style={{ color: '#52c41a' }} />\n <span>Release Plan Ready</span>\n <UITag color=\"blue\">{plan.packages.length} package(s)</UITag>\n </UISpace>\n }\n extra={\n <UISpace>\n <UICheckbox checked={useLLM} onChange={(checked) => setUseLLM(checked)}>Use AI</UICheckbox>\n <UIButton\n icon={<UIIcon name=\"ThunderboltOutlined\" />}\n onClick={() => void handleGenerate()}\n loading={generateLoading}\n size=\"small\"\n >\n Regenerate\n </UIButton>\n </UISpace>\n }\n >\n {gitTimelineData?.hasUnreleasedChanges && (\n <UIAccordion\n size=\"small\"\n style={{ marginBottom: 16 }}\n defaultActiveKey={['timeline']}\n items={[\n {\n key: 'timeline',\n label: 'Git Timeline',\n extra: <UISpace><UITag>{gitTimelineData.unreleased} commits</UITag></UISpace>,\n children: (\n <>\n {gitTimelineData.suggestedVersion && (\n <div style={{ marginBottom: 16, padding: '8px 12px', background: '#f6ffed', borderRadius: 4 }}>\n <UISpace>\n <UIIcon name=\"ArrowUpOutlined\" />\n <UITypographyText strong>\n {gitTimelineData.currentVersion || '0.0.0'} → {gitTimelineData.suggestedVersion}\n </UITypographyText>\n <UITag color={\n gitTimelineData.suggestedBump === 'major' ? 'red' :\n gitTimelineData.suggestedBump === 'minor' ? 'orange' : 'blue'\n }>\n {gitTimelineData.suggestedBump}\n </UITag>\n </UISpace>\n </div>\n )}\n <UITimeline\n mode=\"left\"\n items={(gitTimelineData.commits ?? [])\n .slice(0, showAllCommits ? undefined : INITIAL_COMMITS_COUNT)\n .map((commit: { type: string; shortSha: string; message: string }) => ({\n color: commit.type === 'feat' ? 'green' : commit.type === 'fix' ? 'red' : commit.type === 'BREAKING' ? 'volcano' : 'gray',\n children: (\n <div>\n <UISpace size=\"small\">\n <UITag color={commit.type === 'feat' ? 'green' : commit.type === 'fix' ? 'red' : commit.type === 'BREAKING' ? 'volcano' : 'default'} style={{ fontSize: 10 }}>\n {commit.type}\n </UITag>\n <UITypographyText code style={{ fontSize: 10 }}>{commit.shortSha}</UITypographyText>\n </UISpace>\n <div style={{ marginTop: 2 }}>\n <UITypographyText style={{ fontSize: 12 }}>{commit.message}</UITypographyText>\n </div>\n </div>\n ),\n }))}\n />\n {(gitTimelineData.commits?.length ?? 0) > INITIAL_COMMITS_COUNT && (\n <UIButton\n variant=\"link\"\n size=\"small\"\n icon={showAllCommits ? <UIIcon name=\"UpOutlined\" /> : <UIIcon name=\"DownOutlined\" />}\n onClick={() => setShowAllCommits(!showAllCommits)}\n style={{ padding: 0 }}\n >\n {showAllCommits ? 'Show less' : `Show ${(gitTimelineData.commits?.length ?? 0) - INITIAL_COMMITS_COUNT} more`}\n </UIButton>\n )}\n </>\n ),\n },\n ]}\n />\n )}\n <UITable columns={columns} dataSource={plan.packages} rowKey=\"name\" pagination={false} size=\"small\" />\n </UICard>\n );\n}\n","/**\n * Step 2: Generate and edit changelog\n */\n\nimport * as React from 'react';\nimport {\n UIButton,\n UICard,\n UIEmptyState,\n UISpin,\n UISpace,\n UIMessage,\n UIInputTextArea,\n UIRow,\n UICol,\n UITypographyText,\n UICheckbox,\n UITag,\n UIIcon,\n UIMarkdownViewer,\n} from '@kb-labs/sdk/studio';\nimport { useData, useMutateData } from '@kb-labs/sdk/studio';\nimport type {\n ChangelogResponse,\n GenerateChangelogRequest,\n GenerateChangelogResponse,\n SaveChangelogRequest,\n SaveChangelogResponse,\n} from '@kb-labs/release-manager-contracts';\n\ninterface ChangelogStepProps {\n selectedScope: string;\n onChangelogReady: (ready: boolean) => void;\n}\n\nexport function ChangelogStep({ selectedScope, onChangelogReady }: ChangelogStepProps) {\n const [editMode, setEditMode] = React.useState(true);\n const [markdown, setMarkdown] = React.useState('');\n const [hasUnsavedChanges, setHasUnsavedChanges] = React.useState(false);\n const [useLLM, setUseLLM] = React.useState(true);\n\n const changelogUrl = selectedScope ? `/v1/plugins/release/changelog?scope=${encodeURIComponent(selectedScope)}` : '';\n const { data: changelogData, isLoading: changelogLoading } = useData<ChangelogResponse>(changelogUrl);\n\n const { mutateAsync: generateChangelog, isLoading: generateLoading } = useMutateData<GenerateChangelogRequest, GenerateChangelogResponse>(\n '/v1/plugins/release/changelog/generate',\n 'POST',\n );\n const { mutateAsync: saveChangelog, isLoading: saveLoading } = useMutateData<SaveChangelogRequest, SaveChangelogResponse>(\n '/v1/plugins/release/changelog/save',\n 'POST',\n );\n\n React.useEffect(() => {\n if (changelogData?.markdown) {\n setMarkdown(changelogData.markdown);\n setHasUnsavedChanges(false);\n } else {\n setMarkdown('');\n setHasUnsavedChanges(false);\n }\n }, [changelogData]);\n\n React.useEffect(() => {\n const hasChangelog = !!(markdown && !hasUnsavedChanges);\n onChangelogReady(hasChangelog);\n }, [markdown, hasUnsavedChanges, onChangelogReady]);\n\n const handleGenerate = async () => {\n try {\n const result = await generateChangelog({ scope: selectedScope, useLLM });\n setMarkdown(result.markdown);\n setHasUnsavedChanges(true);\n const parts: string[] = [];\n if (result.commitsCount) { parts.push(`${result.commitsCount} commits`); }\n if (result.tokensUsed) { parts.push(`${result.tokensUsed} tokens`); }\n const method = result.usedLLM ? 'AI-enhanced' : useLLM ? 'Template' : 'Simple';\n const details = parts.length > 0 ? ` (${parts.join(', ')})` : '';\n UIMessage.success(`${method} changelog generated${details}`);\n } catch (error) {\n UIMessage.error(`Failed to generate changelog: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n };\n\n const handleSave = async () => {\n try {\n await saveChangelog({ scope: selectedScope, markdown });\n setHasUnsavedChanges(false);\n UIMessage.success('Changelog saved');\n } catch (error) {\n UIMessage.error(`Failed to save: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n };\n\n const handleMarkdownChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setMarkdown(e.target.value);\n setHasUnsavedChanges(true);\n };\n\n if (changelogLoading) {\n return <UISpin size=\"large\" style={{ display: 'block', margin: '48px auto' }} />;\n }\n\n if (!changelogData?.markdown && !markdown) {\n return (\n <UICard>\n <UIEmptyState\n description=\"No changelog generated yet\"\n image={UIEmptyState.PRESENTED_IMAGE_SIMPLE}\n >\n <UISpace direction=\"vertical\" size=\"middle\" style={{ display: 'flex', alignItems: 'center' }}>\n <UICheckbox checked={useLLM} onChange={(checked) => setUseLLM(checked)}>\n Use AI-powered generation (requires LLM)\n </UICheckbox>\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"ThunderboltOutlined\" />}\n onClick={() => void handleGenerate()}\n loading={generateLoading}\n size=\"large\"\n >\n Generate Changelog\n </UIButton>\n <UITypographyText type=\"secondary\" style={{ fontSize: 12 }}>\n {useLLM\n ? 'AI will analyze git commits and generate a detailed changelog'\n : 'Generate a simple changelog from package versions'}\n </UITypographyText>\n </UISpace>\n </UIEmptyState>\n </UICard>\n );\n }\n\n return (\n <UICard\n title={\n <UISpace>\n {hasUnsavedChanges ? (\n <UITag color=\"warning\">Unsaved</UITag>\n ) : (\n <>\n <UIIcon name=\"CheckCircleOutlined\" style={{ color: '#52c41a' }} />\n <UITag color=\"success\">Saved</UITag>\n </>\n )}\n <span>Changelog</span>\n </UISpace>\n }\n extra={\n <UISpace>\n <UICheckbox checked={useLLM} onChange={(checked) => setUseLLM(checked)}>Use AI</UICheckbox>\n <UIButton\n icon={<UIIcon name=\"ThunderboltOutlined\" />}\n onClick={() => void handleGenerate()}\n loading={generateLoading}\n size=\"small\"\n >\n Regenerate\n </UIButton>\n <UIButton\n icon={editMode ? <UIIcon name=\"EyeOutlined\" /> : <UIIcon name=\"EditOutlined\" />}\n onClick={() => setEditMode(!editMode)}\n size=\"small\"\n >\n {editMode ? 'Preview' : 'Edit'}\n </UIButton>\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"SaveOutlined\" />}\n onClick={() => void handleSave()}\n loading={saveLoading}\n disabled={!hasUnsavedChanges}\n size=\"small\"\n >\n Save\n </UIButton>\n </UISpace>\n }\n >\n <UIRow gutter={16}>\n <UICol span={editMode ? 12 : 24}>\n {editMode ? (\n <UIInputTextArea\n value={markdown}\n onChange={handleMarkdownChange}\n rows={20}\n style={{ fontFamily: 'monospace', fontSize: 13, height: 450 }}\n placeholder=\"Write your changelog in Markdown...\"\n />\n ) : (\n <div style={{ maxHeight: 500, overflow: 'auto' }}>\n <UIMarkdownViewer content={markdown} />\n </div>\n )}\n </UICol>\n {editMode && (\n <UICol span={12}>\n <div style={{\n border: '1px solid #d9d9d9',\n borderRadius: 4,\n height: 450,\n overflow: 'auto',\n padding: 12,\n background: '#fafafa',\n }}>\n <UITypographyText type=\"secondary\" style={{ fontSize: 11, display: 'block', marginBottom: 8 }}>\n Preview\n </UITypographyText>\n <UIMarkdownViewer content={markdown} />\n </div>\n </UICol>\n )}\n </UIRow>\n\n {hasUnsavedChanges && (\n <div style={{ marginTop: 16, textAlign: 'center' }}>\n <UITypographyText type=\"warning\" style={{ fontSize: 12 }}>\n Save changelog to proceed to the next step\n </UITypographyText>\n </div>\n )}\n </UICard>\n );\n}\n","/**\n * Step 3: Preview package contents before release\n */\n\nimport * as React from 'react';\nimport {\n UICard,\n UISpace,\n UITypographyText,\n UITitle,\n UITag,\n UISpin,\n UIEmptyState,\n UITable,\n UIProgress,\n UIButton,\n UIAlert,\n UIMessage,\n UIIcon,\n} from '@kb-labs/sdk/studio';\nimport { useData, useMutateData } from '@kb-labs/sdk/studio';\nimport type { PreviewResponse, BuildRequest, BuildResponse } from '@kb-labs/release-manager-contracts';\n\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) { return '0 B'; }\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`;\n}\n\nfunction getFileExtension(path: string): string {\n const parts = path.split('.');\n return parts.length > 1 ? (parts[parts.length - 1] ?? '') : '';\n}\n\nfunction getFileTypeColor(path: string): string {\n const ext = getFileExtension(path);\n switch (ext) {\n case 'js': case 'mjs': case 'cjs': return '#f5a623';\n case 'ts': case 'tsx': return '#3178c6';\n case 'd.ts': return '#235a97';\n case 'json': return '#5a9c5a';\n case 'md': return '#083fa1';\n case 'map': return '#8c8c8c';\n default: return '#595959';\n }\n}\n\ninterface PreviewStepProps {\n selectedScope: string;\n onPreviewReady: (ready: boolean) => void;\n}\n\nexport function PreviewStep({ selectedScope, onPreviewReady }: PreviewStepProps) {\n const previewUrl = selectedScope ? `/v1/plugins/release/preview?scope=${encodeURIComponent(selectedScope)}` : '';\n const { data: previewData, isLoading, error, refetch } = useData<PreviewResponse>(previewUrl);\n const { mutateAsync: triggerBuild, isLoading: buildLoading } = useMutateData<BuildRequest, BuildResponse>(\n '/v1/plugins/release/build',\n 'POST',\n );\n\n const needsBuild = previewData?.packages.some((pkg) => pkg.buildStatus !== 'ready') ?? false;\n const allBuilt = previewData?.allBuilt ?? false;\n\n React.useEffect(() => {\n if (previewData && previewData.packages.length > 0 && allBuilt) {\n onPreviewReady(true);\n } else {\n onPreviewReady(false);\n }\n }, [previewData, allBuilt, onPreviewReady]);\n\n const handleBuild = async () => {\n try {\n const result = await triggerBuild({ scope: selectedScope });\n if (result.success) {\n UIMessage.success(`Build completed: ${result.builtCount}/${result.totalCount} packages`);\n refetch();\n } else {\n UIMessage.error('Build failed');\n }\n } catch (err) {\n UIMessage.error(`Build failed: ${err instanceof Error ? err.message : 'Unknown error'}`);\n }\n };\n\n if (isLoading) {\n return (\n <UICard>\n <div style={{ textAlign: 'center', padding: 48 }}>\n <UISpin size=\"large\" />\n <div style={{ marginTop: 16 }}>\n <UITypographyText type=\"secondary\">Analyzing package contents...</UITypographyText>\n </div>\n </div>\n </UICard>\n );\n }\n\n if (error) {\n return (\n <UICard>\n <UIEmptyState\n description={`Failed to load package preview: ${error instanceof Error ? error.message : 'Unknown error'}`}\n />\n </UICard>\n );\n }\n\n if (!previewData || previewData.packages.length === 0) {\n return (\n <UICard>\n <UIEmptyState description=\"No packages found in release plan. Generate a plan first.\" />\n </UICard>\n );\n }\n\n const totalFiles = previewData.totalFiles;\n const totalSize = previewData.totalSize;\n\n const fileTypes = new Map<string, { count: number; size: number }>();\n previewData.packages.forEach((pkg) => {\n pkg.files.forEach((file) => {\n const ext = getFileExtension(file.path) || 'other';\n const current = fileTypes.get(ext) || { count: 0, size: 0 };\n fileTypes.set(ext, { count: current.count + 1, size: current.size + file.size });\n });\n });\n const sortedFileTypes = Array.from(fileTypes.entries()).sort((a, b) => b[1].size - a[1].size).slice(0, 6);\n\n const columns = [\n {\n title: 'File',\n dataIndex: 'path',\n key: 'path',\n render: (path: string) => (\n <UISpace size={4}>\n <UIIcon name=\"FileOutlined\" style={{ color: getFileTypeColor(path) }} />\n <UITypographyText code style={{ fontSize: 12 }}>{path}</UITypographyText>\n </UISpace>\n ),\n },\n {\n title: 'Size',\n dataIndex: 'size',\n key: 'size',\n width: 100,\n align: 'right' as const,\n render: (size: number) => (\n <UITypographyText type=\"secondary\" style={{ fontSize: 12 }}>{formatBytes(size)}</UITypographyText>\n ),\n },\n ];\n\n return (\n <div>\n <UICard style={{ marginBottom: 16 }}>\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\n <UISpace size=\"large\">\n <div>\n <UITypographyText type=\"secondary\" style={{ display: 'block', fontSize: 12 }}>Total Files</UITypographyText>\n <UITitle level={3} style={{ margin: 0 }}>{totalFiles}</UITitle>\n </div>\n <div>\n <UITypographyText type=\"secondary\" style={{ display: 'block', fontSize: 12 }}>Total Size</UITypographyText>\n <UITitle level={3} style={{ margin: 0 }}>{formatBytes(totalSize)}</UITitle>\n </div>\n <div>\n <UITypographyText type=\"secondary\" style={{ display: 'block', fontSize: 12 }}>Packages</UITypographyText>\n <UITitle level={3} style={{ margin: 0 }}>{previewData.packages.length}</UITitle>\n </div>\n </UISpace>\n <UISpace>\n {allBuilt ? (\n <>\n <UIIcon name=\"CheckCircleOutlined\" style={{ color: '#52c41a', fontSize: 24 }} />\n <UITypographyText strong style={{ color: '#52c41a' }}>Ready to publish</UITypographyText>\n </>\n ) : (\n <>\n <UIIcon name=\"WarningOutlined\" style={{ color: '#faad14', fontSize: 24 }} />\n <UITypographyText strong style={{ color: '#faad14' }}>Build required</UITypographyText>\n </>\n )}\n </UISpace>\n </div>\n\n <div style={{ marginTop: 16 }}>\n <UISpace>\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"BuildOutlined\" />}\n onClick={() => void handleBuild()}\n loading={buildLoading}\n size=\"small\"\n >\n {buildLoading ? 'Building...' : needsBuild ? 'Build' : 'Rebuild'}\n </UIButton>\n <UIButton\n icon={<UIIcon name=\"ReloadOutlined\" />}\n onClick={() => refetch()}\n disabled={buildLoading}\n size=\"small\"\n >\n Refresh\n </UIButton>\n </UISpace>\n {needsBuild && (\n <UIAlert\n variant=\"warning\"\n message=\"Some packages need to be built before publishing\"\n style={{ marginTop: 12 }}\n showIcon\n />\n )}\n </div>\n\n <div style={{ marginTop: 24 }}>\n <UITypographyText type=\"secondary\" style={{ display: 'block', marginBottom: 8, fontSize: 12 }}>\n File Types\n </UITypographyText>\n <UISpace wrap>\n {sortedFileTypes.map(([ext, stats]) => (\n <UITag key={ext} style={{ margin: 0 }}>\n <span style={{ color: getFileTypeColor(`.${ext}`) }}>.{ext}</span>\n {' '}{stats.count} ({formatBytes(stats.size)})\n </UITag>\n ))}\n </UISpace>\n </div>\n </UICard>\n\n {previewData.packages.map((pkg) => (\n <UICard\n key={pkg.name}\n title={\n <UISpace>\n <UIIcon name=\"FolderOutlined\" />\n <UITypographyText strong>{pkg.name}</UITypographyText>\n <UITag color=\"blue\">v{pkg.version}</UITag>\n </UISpace>\n }\n extra={\n <UISpace>\n {pkg.buildStatus === 'ready' ? (\n <UITag color=\"success\">Built</UITag>\n ) : pkg.buildStatus === 'building' ? (\n <UITag color=\"processing\">Building...</UITag>\n ) : (\n <UITag color=\"warning\">Not built</UITag>\n )}\n <UITag>{pkg.fileCount} files</UITag>\n <UITag color=\"green\">{formatBytes(pkg.totalSize)}</UITag>\n </UISpace>\n }\n style={{ marginBottom: 16 }}\n size=\"small\"\n >\n <div style={{ marginBottom: 16 }}>\n <UIProgress\n percent={100}\n success={{ percent: (pkg.files.filter((f) => f.path.endsWith('.js') || f.path.endsWith('.mjs')).reduce((s, f) => s + f.size, 0) / pkg.totalSize) * 100 }}\n strokeColor=\"#3178c6\"\n trailColor=\"#f0f0f0\"\n showInfo={false}\n size=\"small\"\n />\n </div>\n <UITable\n dataSource={pkg.files}\n columns={columns}\n rowKey=\"path\"\n size=\"small\"\n pagination={pkg.files.length > 10 ? { pageSize: 10 } : false}\n />\n </UICard>\n ))}\n </div>\n );\n}\n","/**\n * Step 4: Pre-checks, OTP input, publish, and rollback\n */\n\nimport * as React from 'react';\nimport {\n UIButton,\n UICard,\n UISpace,\n UITypographyText,\n UIAlert,\n UIInput,\n UIResult,\n UIAccordion,\n UITag,\n UIPopconfirm,\n UIDivider,\n UIMessage,\n UIIcon,\n UISkeleton,\n} from '@kb-labs/sdk/studio';\nimport { useData, useMutateData } from '@kb-labs/sdk/studio';\nimport type {\n PlanResponse,\n GetChecksResponse,\n RunChecksRequest,\n RunChecksResponse,\n RunReleaseRequest,\n RunReleaseResponse,\n ResetPlanRequest,\n ResetPlanResponse,\n} from '@kb-labs/release-manager-contracts';\n\ntype CheckStatus = 'pending' | 'running' | 'success' | 'error';\n\ninterface PreCheck {\n id: string;\n name: string;\n status: CheckStatus;\n error?: string;\n duration?: number;\n optional?: boolean;\n}\n\ninterface ReleaseStepProps {\n selectedScope: string;\n onReleaseComplete: () => void;\n}\n\nexport function ReleaseStep({ selectedScope, onReleaseComplete }: ReleaseStepProps) {\n const [otp, setOtp] = React.useState('');\n const [otpError, setOtpError] = React.useState('');\n const [checks, setChecks] = React.useState<PreCheck[]>([]);\n const [checksComplete, setChecksComplete] = React.useState(false);\n const [checksRunning, setChecksRunning] = React.useState(false);\n const [releaseStarted, setReleaseStarted] = React.useState(false);\n const [releaseComplete, setReleaseComplete] = React.useState(false);\n const [releaseError, setReleaseError] = React.useState<string | null>(null);\n\n const planUrl = selectedScope ? `/v1/plugins/release/plan?scope=${encodeURIComponent(selectedScope)}` : '';\n const checksUrl = selectedScope ? `/v1/plugins/release/checks?scope=${encodeURIComponent(selectedScope)}` : '';\n\n const { data: planData } = useData<PlanResponse>(planUrl);\n const { data: checksConfig, isLoading: checksConfigLoading } = useData<GetChecksResponse>(checksUrl);\n\n const { mutateAsync: runChecks } = useMutateData<RunChecksRequest, RunChecksResponse>('/v1/plugins/release/checks/run', 'POST');\n const { mutateAsync: runRelease, isLoading: releaseLoading } = useMutateData<RunReleaseRequest, RunReleaseResponse>('/v1/plugins/release/run', 'POST');\n const { mutateAsync: rollback, isLoading: rollbackLoading } = useMutateData<ResetPlanRequest, ResetPlanResponse>('/v1/plugins/release/plan', 'DELETE');\n\n React.useEffect(() => {\n if (checksConfig && !checksComplete && !checksRunning && checks.length === 0) {\n setChecks(checksConfig.checks.map((c) => ({\n id: c.id,\n name: c.name,\n status: 'pending' as const,\n optional: c.optional,\n })));\n }\n }, [checksConfig, checksComplete, checksRunning, checks.length]);\n\n const allChecksPassed = checks.length > 0 && checks.every((c) => c.status === 'success');\n const anyCheckFailed = checks.some((c) => c.status === 'error');\n\n const runPreChecks = async () => {\n setChecksRunning(true);\n setChecksComplete(false);\n setChecks((prev) => prev.map((c) => ({ ...c, status: 'running' as const, error: undefined, duration: undefined })));\n try {\n const result = await runChecks({ scope: selectedScope });\n setChecks((prev) => {\n const resultById = new Map(result.checks.map((c) => [c.id, c]));\n return prev.map((c) => {\n const r = resultById.get(c.id);\n if (!r) { return { ...c, status: 'pending' as const }; }\n return { ...c, status: r.success ? 'success' as const : 'error' as const, error: r.error, duration: r.durationMs };\n });\n });\n setChecksComplete(result.success);\n if (!result.success) { UIMessage.error('Some checks failed'); }\n } catch (error) {\n setChecks((prev) => prev.map((c) => ({ ...c, status: 'pending' as const })));\n UIMessage.error(`Checks failed: ${error instanceof Error ? error.message : 'Unknown error'}`);\n } finally {\n setChecksRunning(false);\n }\n };\n\n const validateOtp = (): boolean => {\n if (otp && !/^\\d{6}$/.test(otp)) {\n setOtpError('OTP must be 6 digits');\n return false;\n }\n setOtpError('');\n return true;\n };\n\n const handleRunRelease = async () => {\n if (!validateOtp()) { return; }\n setReleaseStarted(true);\n setReleaseError(null);\n try {\n const result = await runRelease({ scope: selectedScope, dryRun: false, otp });\n if (result.success) {\n setReleaseComplete(true);\n UIMessage.success('Release published successfully!');\n onReleaseComplete();\n } else {\n const errorMessage = result.errors?.join(', ') || 'Unknown publish error';\n setReleaseError(errorMessage);\n setReleaseStarted(false);\n UIMessage.error(`Release failed: ${errorMessage}`);\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n setReleaseError(errorMessage);\n setReleaseStarted(false);\n UIMessage.error(`Release failed: ${errorMessage}`);\n }\n };\n\n const handleRollback = async () => {\n try {\n await rollback({ scope: selectedScope });\n UIMessage.success('Rollback completed successfully');\n setReleaseComplete(false);\n setReleaseStarted(false);\n setReleaseError(null);\n setChecksComplete(false);\n setChecks((prev) => prev.map((c) => ({ ...c, status: 'pending' as const, error: undefined, duration: undefined })));\n } catch (error) {\n UIMessage.error(`Rollback failed: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n };\n\n const resetChecks = () => {\n setChecks((prev) => prev.map((c) => ({ ...c, status: 'pending' as const, error: undefined, duration: undefined })));\n setChecksComplete(false);\n };\n\n const getCheckStatusIcon = (status: CheckStatus) => {\n switch (status) {\n case 'running': return <UIIcon name=\"LoadingOutlined\" style={{ color: '#1890ff' }} />;\n case 'success': return <UIIcon name=\"CheckCircleOutlined\" style={{ color: '#52c41a' }} />;\n case 'error': return <UIIcon name=\"CloseCircleOutlined\" style={{ color: '#ff4d4f' }} />;\n default: return <UIIcon name=\"SafetyCertificateOutlined\" style={{ color: '#8c8c8c' }} />;\n }\n };\n\n if (releaseComplete) {\n return (\n <UICard>\n <UIResult\n status=\"success\"\n title=\"Release Published!\"\n subTitle={`${planData?.plan?.packages.length ?? 0} package(s) published to npm`}\n extra={[\n <UIPopconfirm\n key=\"rollback\"\n title=\"Rollback Release\"\n description=\"This will unpublish the packages. Are you sure?\"\n icon={<UIIcon name=\"ExclamationCircleOutlined\" style={{ color: '#ff4d4f' }} />}\n onConfirm={() => void handleRollback()}\n okText=\"Yes, Rollback\"\n okButtonProps={{ danger: true }}\n cancelText=\"Cancel\"\n >\n <UIButton icon={<UIIcon name=\"RollbackOutlined\" />} loading={rollbackLoading} danger>\n Rollback\n </UIButton>\n </UIPopconfirm>,\n ]}\n />\n </UICard>\n );\n }\n\n return (\n <div>\n <UICard\n title={\n <UISpace>\n <UIIcon name=\"BuildOutlined\" />\n <span>Pre-release Checks</span>\n {allChecksPassed && <UITag color=\"success\">All Passed</UITag>}\n {anyCheckFailed && <UITag color=\"error\">Failed</UITag>}\n </UISpace>\n }\n style={{ marginBottom: 16 }}\n >\n <UISpace direction=\"vertical\" style={{ width: '100%' }} size=\"middle\">\n {checksConfigLoading && checks.length === 0 && <UISkeleton active lines={4} title={false} />}\n {!checksConfigLoading && checks.length === 0 && (\n <UITypographyText type=\"secondary\">No checks configured in kb.config.json release.checks</UITypographyText>\n )}\n {checks.map((check) => (\n <div\n key={check.id}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '12px 16px',\n background: check.status === 'error' ? '#fff2f0' : check.status === 'success' ? '#f6ffed' : '#fafafa',\n borderRadius: 8,\n border: `1px solid ${check.status === 'error' ? '#ffccc7' : check.status === 'success' ? '#b7eb8f' : '#d9d9d9'}`,\n }}\n >\n <UISpace>\n {getCheckStatusIcon(check.status)}\n <div>\n <UISpace>\n <UITypographyText strong>{check.name}</UITypographyText>\n {check.optional && <UITag>optional</UITag>}\n </UISpace>\n {check.error && (\n <div style={{ marginTop: 4 }}>\n <pre style={{\n margin: 0, padding: '8px 12px', fontSize: 11, lineHeight: 1.5,\n color: '#cf1322', background: '#fff1f0', borderRadius: 4,\n maxHeight: 200, overflow: 'auto', whiteSpace: 'pre-wrap', wordBreak: 'break-all',\n }}>\n {check.error}\n </pre>\n </div>\n )}\n </div>\n </UISpace>\n {check.duration && <UITag>{(check.duration / 1000).toFixed(1)}s</UITag>}\n </div>\n ))}\n <div style={{ display: 'flex', gap: 8 }}>\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"BuildOutlined\" />}\n onClick={() => void runPreChecks()}\n loading={checksRunning}\n disabled={checksComplete}\n >\n {checksRunning ? 'Running Checks...' : 'Run Checks'}\n </UIButton>\n {(checksComplete || anyCheckFailed) && (\n <UIButton onClick={resetChecks}>Reset</UIButton>\n )}\n </div>\n </UISpace>\n </UICard>\n\n <UICard\n title={\n <UISpace>\n <UIIcon name=\"LockOutlined\" />\n <span>npm Publish</span>\n </UISpace>\n }\n >\n {!allChecksPassed && (\n <UIAlert\n message=\"Complete pre-release checks first\"\n description=\"All checks must pass before you can publish to npm.\"\n variant=\"info\"\n showIcon\n style={{ marginBottom: 16 }}\n />\n )}\n {releaseError && (\n <UIAlert\n message=\"Release Failed\"\n description={releaseError}\n variant=\"error\"\n showIcon\n closable\n onClose={() => setReleaseError(null)}\n style={{ marginBottom: 16 }}\n />\n )}\n <UISpace direction=\"vertical\" style={{ width: '100%' }} size=\"middle\">\n {planData?.plan && (\n <UIAccordion\n size=\"small\"\n items={[{\n key: 'summary',\n label: 'Release Summary',\n extra: <UITag color=\"blue\">{planData.plan.packages.length} package(s)</UITag>,\n children: (\n <div>\n {planData.plan.packages.map((pkg) => (\n <div key={pkg.name} style={{ marginBottom: 4 }}>\n <UITypographyText code>{pkg.name}</UITypographyText>\n <UITypographyText type=\"secondary\"> {pkg.currentVersion} → </UITypographyText>\n <UITypographyText strong style={{ color: '#52c41a' }}>{pkg.nextVersion}</UITypographyText>\n </div>\n ))}\n </div>\n ),\n }]}\n />\n )}\n <UIDivider style={{ margin: '8px 0' }} />\n <div>\n <UITypographyText strong style={{ display: 'block', marginBottom: 8 }}>\n npm One-Time Password (OTP){' '}\n <UITypographyText type=\"secondary\" style={{ fontWeight: 'normal' }}>— optional</UITypographyText>\n </UITypographyText>\n <UITypographyText type=\"secondary\" style={{ display: 'block', marginBottom: 8, fontSize: 12 }}>\n Required only if your npm account uses 2FA. Leave empty to publish via NPM_TOKEN.\n </UITypographyText>\n <UIInput\n prefix={<UIIcon name=\"LockOutlined\" />}\n placeholder=\"123456\"\n value={otp}\n onChange={(value) => { setOtp(value.replace(/\\D/g, '').slice(0, 6)); setOtpError(''); }}\n maxLength={6}\n style={{ width: 200, fontSize: 18, letterSpacing: 8 }}\n status={otpError ? 'error' : undefined}\n disabled={!allChecksPassed || releaseStarted}\n />\n {otpError && (\n <UITypographyText type=\"danger\" style={{ display: 'block', marginTop: 4, fontSize: 12 }}>\n {otpError}\n </UITypographyText>\n )}\n </div>\n <UIDivider style={{ margin: '8px 0' }} />\n <UIButton\n variant=\"primary\"\n size=\"large\"\n icon={<UIIcon name=\"RocketOutlined\" />}\n onClick={() => void handleRunRelease()}\n loading={releaseLoading}\n disabled={!allChecksPassed || releaseStarted}\n block\n >\n Publish to npm\n </UIButton>\n <UITypographyText type=\"secondary\" style={{ textAlign: 'center', display: 'block', fontSize: 12 }}>\n This action will publish packages to the npm registry\n </UITypographyText>\n </UISpace>\n </UICard>\n </div>\n );\n}\n","/**\n * Stepper-based release flow: Plan → Changelog → Preview → Release\n */\n\nimport * as React from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { UISteps, UIButton, UICard, UIResult, UIIcon } from '@kb-labs/sdk/studio';\nimport { useMutateData } from '@kb-labs/sdk/studio';\nimport { PlanStep } from './steps/PlanStep';\nimport { ChangelogStep } from './steps/ChangelogStep';\nimport { PreviewStep } from './steps/PreviewStep';\nimport { ReleaseStep } from './steps/ReleaseStep';\nimport type { ResetPlanRequest, ResetPlanResponse } from '@kb-labs/release-manager-contracts';\n\ntype StepKey = 'plan' | 'changelog' | 'preview' | 'release';\n\nconst STEP_KEYS: StepKey[] = ['plan', 'changelog', 'preview', 'release'];\nconst STEP_INDEX: Record<StepKey, number> = { plan: 0, changelog: 1, preview: 2, release: 3 };\n\ninterface ReleaseStepperProps {\n selectedScope: string;\n selectedScopePath?: string;\n}\n\nexport function ReleaseStepper({ selectedScope, selectedScopePath }: ReleaseStepperProps) {\n const [searchParams, setSearchParams] = useSearchParams();\n const { mutateAsync: resetPlan } = useMutateData<ResetPlanRequest, ResetPlanResponse>('/v1/plugins/release/plan', 'DELETE');\n\n const stepParam = searchParams.get('step') as StepKey | null;\n const currentStep = STEP_INDEX[stepParam as StepKey] ?? 0;\n\n const setCurrentStep = (index: number) => {\n setSearchParams((prev) => {\n const next = new URLSearchParams(prev);\n next.set('step', STEP_KEYS[index] ?? 'plan');\n return next;\n });\n };\n\n const [releaseComplete, setReleaseComplete] = React.useState(false);\n const [planReady, setPlanReady] = React.useState(false);\n const [changelogReady, setChangelogReady] = React.useState(false);\n const [previewReady, setPreviewReady] = React.useState(false);\n\n const steps = [\n { title: 'Plan', icon: <UIIcon name=\"FileTextOutlined\" /> },\n { title: 'Changelog', icon: <UIIcon name=\"EditOutlined\" /> },\n { title: 'Preview', icon: <UIIcon name=\"FolderOutlined\" /> },\n { title: 'Release', icon: <UIIcon name=\"RocketOutlined\" /> },\n ];\n\n const canGoNext = () => {\n if (currentStep === 0) { return planReady; }\n if (currentStep === 1) { return changelogReady; }\n if (currentStep === 2) { return previewReady; }\n return false;\n };\n\n const handleNext = () => {\n if (currentStep < steps.length - 1) { setCurrentStep(currentStep + 1); }\n };\n\n const handlePrev = () => {\n if (currentStep > 0) { setCurrentStep(currentStep - 1); }\n };\n\n const handleStartOver = () => {\n void resetPlan({ scope: selectedScope });\n setCurrentStep(0);\n setReleaseComplete(false);\n setPlanReady(false);\n setChangelogReady(false);\n setPreviewReady(false);\n };\n\n if (!selectedScope) {\n return (\n <UICard>\n <UIResult\n status=\"info\"\n title=\"Select a scope\"\n subTitle=\"Please select a package or monorepo scope to start the release process.\"\n />\n </UICard>\n );\n }\n\n if (releaseComplete) {\n return (\n <UICard>\n <UIResult\n status=\"success\"\n title=\"Release Complete!\"\n subTitle=\"Your packages have been published successfully.\"\n extra={[\n <UIButton key=\"new\" variant=\"primary\" onClick={handleStartOver}>\n Start New Release\n </UIButton>,\n ]}\n />\n </UICard>\n );\n }\n\n const renderStepContent = () => {\n switch (currentStep) {\n case 0: return <PlanStep selectedScope={selectedScope} selectedScopePath={selectedScopePath} onPlanReady={setPlanReady} />;\n case 1: return <ChangelogStep selectedScope={selectedScope} onChangelogReady={setChangelogReady} />;\n case 2: return <PreviewStep selectedScope={selectedScope} onPreviewReady={setPreviewReady} />;\n case 3: return <ReleaseStep selectedScope={selectedScope} onReleaseComplete={() => setReleaseComplete(true)} />;\n default: return null;\n }\n };\n\n return (\n <div>\n <UICard size=\"small\" style={{ marginBottom: 16 }}>\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\n <UISteps\n current={currentStep}\n items={steps}\n type=\"navigation\"\n size=\"small\"\n onChange={(step) => { if (step < currentStep) { setCurrentStep(step); } }}\n style={{ flex: 1 }}\n />\n <div style={{ display: 'flex', gap: 8, marginLeft: 32, flexShrink: 0 }}>\n <UIButton\n icon={<UIIcon name=\"ArrowLeftOutlined\" />}\n onClick={handlePrev}\n disabled={currentStep === 0}\n size=\"small\"\n >\n Back\n </UIButton>\n {currentStep < steps.length - 1 && (\n <UIButton\n variant=\"primary\"\n onClick={handleNext}\n disabled={!canGoNext()}\n size=\"small\"\n >\n Next <UIIcon name=\"ArrowRightOutlined\" />\n </UIButton>\n )}\n </div>\n </div>\n </UICard>\n\n {renderStepContent()}\n </div>\n );\n}\n","/**\n * History Tab — Timeline of past releases with details\n */\n\nimport { useState } from 'react';\nimport {\n UICard,\n UIEmptyState,\n UISpin,\n UITimeline,\n UITypographyText,\n UITitle,\n UITag,\n UIButton,\n UIModal,\n UIDescriptions,\n UIDescriptionsItem,\n UITabs,\n UISpace,\n UIIcon,\n UIMarkdownViewer,\n} from '@kb-labs/sdk/studio';\nimport { useData } from '@kb-labs/sdk/studio';\nimport type { HistoryResponse, HistoryReportResponse, HistoryPlanResponse, HistoryChangelogResponse } from '@kb-labs/release-manager-contracts';\n\ninterface HistoryTabProps {\n selectedScope: string;\n}\n\ninterface HistoryDetailPanelProps {\n releaseId: string;\n releaseScope: string;\n}\n\nfunction HistoryDetailPanel({ releaseId, releaseScope }: HistoryDetailPanelProps) {\n const { data: reportData } = useData<HistoryReportResponse>(\n `/v1/plugins/release/history/${encodeURIComponent(releaseScope)}/${encodeURIComponent(releaseId)}/report`,\n );\n const { data: planData } = useData<HistoryPlanResponse>(\n `/v1/plugins/release/history/${encodeURIComponent(releaseScope)}/${encodeURIComponent(releaseId)}/plan`,\n );\n const { data: changelogData } = useData<HistoryChangelogResponse>(\n `/v1/plugins/release/history/${encodeURIComponent(releaseScope)}/${encodeURIComponent(releaseId)}/changelog`,\n );\n\n const tabItems = [\n {\n key: 'report',\n label: 'Report',\n children: reportData?.report ? (\n <UIDescriptions bordered column={1} size=\"small\">\n <UIDescriptionsItem label=\"Release ID\">{reportData.id}</UIDescriptionsItem>\n <UIDescriptionsItem label=\"Scope\">{reportData.report.scope}</UIDescriptionsItem>\n <UIDescriptionsItem label=\"Stage\">{reportData.report.stage}</UIDescriptionsItem>\n <UIDescriptionsItem label=\"Timestamp\">\n {new Date(reportData.report.ts).toLocaleString()}\n </UIDescriptionsItem>\n <UIDescriptionsItem label=\"Status\">\n <UITag color={reportData.report.result?.ok ? 'success' : 'error'}>\n {reportData.report.result?.ok ? 'Success' : 'Failed'}\n </UITag>\n </UIDescriptionsItem>\n {reportData.report.result?.timingMs && (\n <UIDescriptionsItem label=\"Duration\">{reportData.report.result.timingMs}ms</UIDescriptionsItem>\n )}\n {reportData.report.result?.published && (\n <UIDescriptionsItem label=\"Packages Published\">\n {reportData.report.result.published.length}\n </UIDescriptionsItem>\n )}\n </UIDescriptions>\n ) : <UISpin />,\n },\n {\n key: 'plan',\n label: 'Plan',\n children: planData?.plan ? (\n <div>\n <UIDescriptions bordered column={2} size=\"small\" style={{ marginBottom: 16 }}>\n <UIDescriptionsItem label=\"Scope\">{planData.plan.scope}</UIDescriptionsItem>\n <UIDescriptionsItem label=\"Strategy\">{planData.plan.strategy}</UIDescriptionsItem>\n <UIDescriptionsItem label=\"Packages\">{planData.plan.packages.length}</UIDescriptionsItem>\n <UIDescriptionsItem label=\"Rollback\">\n {planData.plan.rollbackEnabled ? 'Enabled' : 'Disabled'}\n </UIDescriptionsItem>\n </UIDescriptions>\n {planData.plan.packages.map((pkg, idx) => (\n <UICard key={idx} size=\"small\" style={{ marginBottom: 8 }}>\n <UISpace direction=\"vertical\" size=\"small\">\n <UITypographyText strong>{pkg.name}</UITypographyText>\n <UISpace>\n <UITag color=\"blue\">{pkg.currentVersion}</UITag>\n →\n <UITag color=\"green\">{pkg.nextVersion}</UITag>\n <UITag>{pkg.bump}</UITag>\n </UISpace>\n <UITypographyText type=\"secondary\">{pkg.reason}</UITypographyText>\n </UISpace>\n </UICard>\n ))}\n </div>\n ) : <UISpin />,\n },\n {\n key: 'changelog',\n label: 'Changelog',\n children: changelogData?.markdown ? (\n <UIMarkdownViewer content={changelogData.markdown} />\n ) : <UISpin />,\n },\n ];\n\n return <UITabs items={tabItems} />;\n}\n\nexport function HistoryTab({ selectedScope }: HistoryTabProps) {\n const [selectedReleaseId, setSelectedReleaseId] = useState<string | null>(null);\n const [selectedReleaseScope, setSelectedReleaseScope] = useState<string>('');\n const [modalVisible, setModalVisible] = useState(false);\n\n const { data: historyData, isLoading: historyLoading, error: historyError } = useData<HistoryResponse>(\n '/v1/plugins/release/history',\n );\n\n const handleViewDetails = (id: string, scope: string) => {\n setSelectedReleaseId(id);\n setSelectedReleaseScope(scope);\n setModalVisible(true);\n };\n\n const handleModalClose = () => {\n setModalVisible(false);\n setSelectedReleaseId(null);\n setSelectedReleaseScope('');\n };\n\n if (historyLoading) {\n return <UISpin size=\"large\" style={{ display: 'block', margin: '48px auto' }} />;\n }\n\n if (historyError) {\n return (\n <UICard>\n <UIEmptyState\n description={`Failed to load history: ${historyError instanceof Error ? historyError.message : 'Unknown error'}`}\n image={UIEmptyState.PRESENTED_IMAGE_SIMPLE}\n />\n </UICard>\n );\n }\n\n const filteredReleases = historyData?.releases\n ? selectedScope\n ? historyData.releases.filter((r) => r.scope === selectedScope)\n : historyData.releases\n : [];\n\n if (filteredReleases.length === 0) {\n return (\n <UICard>\n <UIEmptyState\n description={selectedScope ? `No release history for scope \"${selectedScope}\" yet` : 'No release history yet'}\n image={UIEmptyState.PRESENTED_IMAGE_SIMPLE}\n />\n </UICard>\n );\n }\n\n const timelineItems = filteredReleases.map((release) => ({\n dot: release.success\n ? <UIIcon name=\"CheckCircleOutlined\" style={{ color: '#52c41a' }} />\n : <UIIcon name=\"CloseCircleOutlined\" style={{ color: '#ff4d4f' }} />,\n children: (\n <UICard size=\"small\" style={{ marginBottom: 16 }}>\n <UISpace direction=\"vertical\" style={{ width: '100%' }}>\n <UISpace>\n <UITag color=\"blue\">{release.scope}</UITag>\n <UITag color={release.success ? 'success' : 'error'}>{release.success ? 'Success' : 'Failed'}</UITag>\n <UITypographyText type=\"secondary\">{new Date(release.timestamp).toLocaleString()}</UITypographyText>\n </UISpace>\n <UITypographyText>Released {release.packages.length} package(s)</UITypographyText>\n <UIButton\n icon={<UIIcon name=\"EyeOutlined\" />}\n onClick={() => handleViewDetails(release.id, release.scope)}\n size=\"small\"\n >\n View Details\n </UIButton>\n </UISpace>\n </UICard>\n ),\n }));\n\n return (\n <UICard title={<UITitle level={4} style={{ margin: 0 }}>Release History</UITitle>}>\n <UITimeline items={timelineItems} />\n\n <UIModal\n title={`Release Details - ${selectedReleaseId}`}\n open={modalVisible}\n onCancel={handleModalClose}\n footer={null}\n width={800}\n >\n {selectedReleaseId && selectedReleaseScope && (\n <HistoryDetailPanel releaseId={selectedReleaseId} releaseScope={selectedReleaseScope} />\n )}\n </UIModal>\n </UICard>\n );\n}\n","/**\n * Release Manager main page with scope-based workflow\n */\n\nimport * as React from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { UIPage, UIPageHeader, UITabs, UISelect, UIAccordion, UIDescriptions, UIDescriptionsItem, UITag, useData } from '@kb-labs/sdk/studio';\nimport { ReleaseStepper } from '../components/ReleaseStepper';\nimport { HistoryTab } from '../components/HistoryTab';\nimport type { ScopesResponse } from '@kb-labs/release-manager-contracts';\n\nfunction ReleasePage() {\n const [searchParams, setSearchParams] = useSearchParams();\n const selectedScope = searchParams.get('scope') ?? '';\n\n const setSelectedScope = (scope: string) => {\n setSearchParams((prev) => {\n const next = new URLSearchParams(prev);\n next.set('scope', scope);\n next.delete('step');\n return next;\n });\n };\n\n const { data: scopesData, isLoading: scopesLoading } = useData<ScopesResponse>('/v1/plugins/release/scopes');\n\n React.useEffect(() => {\n if (scopesData?.scopes && scopesData.scopes.length > 0 && !selectedScope) {\n const rootScope = scopesData.scopes.find((s) => s.id === 'root');\n const firstScope = scopesData.scopes[0];\n setSelectedScope(rootScope?.id ?? firstScope?.id ?? '');\n }\n }, [scopesData]);\n\n const currentScope = scopesData?.scopes?.find((s) => s.id === selectedScope);\n\n const getTypeColor = (type?: string) => {\n switch (type) {\n case 'monorepo': return 'blue';\n case 'package': return 'green';\n case 'root': return 'purple';\n default: return 'default';\n }\n };\n\n const tabs = (\n <UITabs\n syncUrl=\"search\"\n items={[\n {\n key: 'overview',\n label: 'Release',\n children: (\n <>\n {currentScope && (\n <UIAccordion\n size=\"small\"\n style={{ marginBottom: 16 }}\n items={[\n {\n key: 'scope-info',\n label: currentScope.currentVersion\n ? `${currentScope.name} v${currentScope.currentVersion}`\n : currentScope.name,\n extra: <UITag color={getTypeColor(currentScope.type)}>{currentScope.type}</UITag>,\n children: (\n <UIDescriptions size=\"small\" column={1} bordered>\n <UIDescriptionsItem label=\"Package Name\">{currentScope.id}</UIDescriptionsItem>\n {currentScope.currentVersion && (\n <UIDescriptionsItem label=\"Current Version\">{currentScope.currentVersion}</UIDescriptionsItem>\n )}\n {currentScope.description && (\n <UIDescriptionsItem label=\"Description\">{currentScope.description}</UIDescriptionsItem>\n )}\n <UIDescriptionsItem label=\"Path\">\n <code style={{ fontSize: 12 }}>{currentScope.path}</code>\n </UIDescriptionsItem>\n <UIDescriptionsItem label=\"Type\">\n <UITag color={getTypeColor(currentScope.type)}>{currentScope.type}</UITag>\n </UIDescriptionsItem>\n </UIDescriptions>\n ),\n },\n ]}\n />\n )}\n <ReleaseStepper selectedScope={selectedScope} selectedScopePath={currentScope?.path} />\n </>\n ),\n },\n {\n key: 'history',\n label: 'History',\n children: <HistoryTab selectedScope={selectedScope} />,\n },\n ]}\n />\n );\n\n return (\n <UIPage>\n <UIPageHeader\n title=\"Release Manager\"\n description=\"Plan, execute, and audit releases across your workspace\"\n actions={\n <UISelect\n style={{ width: 400 }}\n placeholder=\"Select scope (package or monorepo)\"\n value={selectedScope || undefined}\n onChange={(v) => setSelectedScope(v as string)}\n loading={scopesLoading}\n showSearch\n optionFilterProp=\"label\"\n options={scopesData?.scopes?.map((s) => ({\n label: `${s.name} (${s.type})`,\n value: s.id,\n })) ?? []}\n />\n }\n tabs={tabs}\n />\n </UIPage>\n );\n}\nexport default ReleasePage;\n"],"names":["Symbol","Object","PlanStep","param","_gitTimelineData_commits","_gitTimelineData_commits1","_gitTimelineData_commits2","selectedScope","selectedScopePath","onPlanReady","_React_useState","useLLM","setUseLLM","_React_useState1","showAllCommits","setShowAllCommits","statusUrl","encodeURIComponent","planUrl","timelineUrl","_useData","statusData","statusLoading","refetchStatus","_useData1","planData","planLoading","refetchPlan","gitTimelineData","_useData2","_useMutateData","generatePlan","generateLoading","React","handleGenerate","result","confidencePercent","tokensInfo","method","error","Math","UIMessage","_instanceof","Error","UISpin","undefined","UICard","UIEmptyState","UISpace","UICheckbox","onChange","checked","UIButton","UIIcon","onClick","UITypographyText","plan","columns","render","name","version","UITag","bump","colorMap","reason","UIAccordion","UITimeline","commit","UITable","ChangelogStep","onChangelogReady","editMode","setEditMode","markdown","setMarkdown","_React_useState2","hasUnsavedChanges","setHasUnsavedChanges","_React_useState3","changelogUrl","changelogData","changelogLoading","generateChangelog","_useMutateData1","saveChangelog","saveLoading","parts","details","UIRow","UICol","UIInputTextArea","e","UIMarkdownViewer","formatBytes","bytes","i","sizes","parseFloat","getFileExtension","path","_parts_","getFileTypeColor","PreviewStep","onPreviewReady","previewUrl","previewData","isLoading","refetch","triggerBuild","buildLoading","needsBuild","pkg","allBuilt","handleBuild","err","totalFiles","totalSize","fileTypes","Map","file","ext","current","sortedFileTypes","Array","a","b","size","UITitle","UIAlert","stats","UIProgress","f","s","ReleaseStep","_planData_plan","onReleaseComplete","otp","setOtp","otpError","setOtpError","checks","setChecks","checksComplete","setChecksComplete","_React_useState4","checksRunning","setChecksRunning","_React_useState5","releaseStarted","setReleaseStarted","_React_useState6","releaseComplete","setReleaseComplete","_React_useState7","releaseError","setReleaseError","checksUrl","checksConfig","checksConfigLoading","runChecks","runRelease","releaseLoading","_useMutateData2","rollback","rollbackLoading","c","allChecksPassed","anyCheckFailed","getCheckStatusIcon","status","UIResult","UIPopconfirm","onConfirm","prev","UISkeleton","check","resultById","r","onClose","UIDivider","UIInput","value","_result_errors","errorMessage","errorMessage1","STEP_KEYS","STEP_INDEX","ReleaseStepper","_STEP_INDEX_stepParam","_useSearchParams","searchParams","setSearchParams","resetPlan","currentStep","setCurrentStep","index","_STEP_KEYS_index","next","URLSearchParams","planReady","setPlanReady","changelogReady","setChangelogReady","previewReady","setPreviewReady","steps","UISteps","step","renderStepContent","HistoryDetailPanel","_reportData_report_result","_reportData_report_result1","_reportData_report_result2","_reportData_report_result3","releaseId","releaseScope","reportData","tabItems","UIDescriptions","UIDescriptionsItem","Date","idx","UITabs","HistoryTab","_useState","selectedReleaseId","setSelectedReleaseId","_useState1","selectedReleaseScope","setSelectedReleaseScope","_useState2","modalVisible","setModalVisible","historyData","historyLoading","historyError","handleViewDetails","id","scope","filteredReleases","timelineItems","release","UIModal","_searchParams_get","_scopesData_scopes","_scopesData_scopes1","setSelectedScope","scopesData","scopesLoading","_ref","rootScope","firstScope","currentScope","getTypeColor","type","tabs","UIPage","UIPageHeader","UISelect","v"],"mappings":"yIASa,IAAI,EAAE,EAAQ,MAAS,EAAEA,OAAO,GAAG,CAAC,iBAAiB,EAAEA,OAAO,GAAG,CAAC,kBAAkB,EAAEC,OAAO,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,kDAAkD,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,EAClP,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,KAAiF,IAAI,KAAhF,KAAK,IAAI,GAAI,GAAE,GAAG,GAAG,KAAK,IAAI,EAAE,GAAG,EAAG,GAAE,GAAG,EAAE,GAAG,AAAD,EAAG,KAAK,IAAI,EAAE,GAAG,EAAG,GAAE,EAAE,GAAG,AAAD,EAAY,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,cAAc,CAAC,IAAK,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,AAAD,EAAG,GAAG,GAAG,EAAE,YAAY,CAAC,IAAI,KAAK,EAAE,EAAE,YAAY,CAAG,KAAK,IAAI,CAAC,CAAC,EAAE,EAAG,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,AAAD,EAAG,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAQ,QAAQ,CAAC,EAAE,EAAQ,GAAG,CAAC,EAAE,EAAQ,IAAI,CAAC,C,cCPxW,EAAO,OAAO,CAAG,EAAjB,I,2oCCkCK,SAASC,EAASC,CAAgE,E,IAwN7DC,EAAAA,EAAAA,EAmBRC,EAQ2CC,E,EAnPpCC,EAAFJ,EAAEI,aAAa,CAAEC,EAAjBL,EAAiBK,iBAAiB,CAAEC,EAApCN,EAAoCM,WAAW,CAC1CC,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAApCC,EAAqBD,CAAAA,CAAAA,EAAAA,CAAbE,EAAaF,CAAAA,CAAAA,EAAAA,CACgBG,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAApDC,EAAqCD,CAAAA,CAAAA,EAAAA,CAArBE,EAAqBF,CAAAA,CAAAA,EAAAA,CAEtCG,EAAYT,EAAiB,oCAAqE,OAAlCU,mBAAmBV,IAAmB,GACtGW,EAAUX,EAAiB,kCAAmE,OAAlCU,mBAAmBV,IAAmB,GAClGY,EAAcZ,EAAiB,0CAA2E,OAAlCU,mBAAmBV,IAAmB,GAErCa,EAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAwBJ,GAAzFK,EAAiED,EAAvE,IAAI,CAAyBE,EAA0CF,EAArD,SAAS,CAA0BG,EAAkBH,EAA3B,OAAO,CACcI,EAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAsBN,GAAjFO,EAA2DD,EAAjE,IAAI,CAAuBE,EAAsCF,EAAjD,SAAS,CAAwBG,EAAgBH,EAAzB,OAAO,CACzCI,EAAoBC,AAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAA6BV,GAAvD,IAAI,CAEsDW,EAAAA,AAAAA,GAAAA,EAAAA,aAAAA,AAAAA,EAChE,+BACA,QAFmBC,EAA6CD,EAA1D,WAAW,CAA2BE,EAAoBF,EAA/B,SAAS,CAK5CG,EAAAA,SAAe,CAAC,WAEdxB,EADgB,CAAC,CAAEgB,CAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAU,IAAI,AAAD,GAAKA,EAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAG,GAEvE,EAAG,CAACA,EAAUhB,EAAY,EAE1B,IAAMyB,EAAiB,e,0BAEbC,EAGAC,EACAC,EACAC,EAECC,E,suCAPQ,O,sBAAA,C,EAAMR,EAAa,CAAE,MAAOxB,EAAe,UAAWC,EAAmBG,OAAAA,CAAO,G,eAAzFwB,EAAS,SACfZ,IACAI,IACMS,EAAoBD,EAAO,UAAU,CAAGK,KAAK,KAAK,CAACL,AAAoB,IAApBA,EAAO,UAAU,EAAU,EAC9EE,EAAaF,EAAO,UAAU,CAAI,KAAsB,OAAlBA,EAAO,UAAU,CAAC,WAAW,GACnEG,EAAS3B,EAAS,aAAe,SACvC8B,EAAAA,SAAAA,CAAAA,OAAiB,CAAE,GAA4BL,MAAAA,CAA1BE,EAAO,qBAAmDD,MAAAA,CAAhCD,EAAkB,gBAAyB,OAAXC,EAAW,M,0BACnFE,EAAAA,EAAAA,IAAAA,GACPE,EAAAA,SAAAA,CAAAA,KAAe,CAAE,4BAAoF,OAApDC,A,UAAYC,Q,iEAAjBJ,G,AAAAA,a,GAAyBA,EAAM,OAAO,CAAG,kB,yBAEzF,E,gLAEA,GAAIjB,EACF,MAAO,UAACsB,EAAAA,MAAMA,CAAAA,CAAC,KAAK,QAAQ,MAAO,CAAE,QAAS,QAAS,OAAQ,WAAY,C,GAG7E,GAAI,CAACvB,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAY,OAAO,AAAD,GAAK,CAACI,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAU,IAAI,AAAD,SAExC,AADkBG,AAAoBiB,SAApBjB,GAAkCA,EAAgB,oBAAoB,CAYtF,UAACkB,EAAAA,MAAMA,CAAAA,C,SACL,UAACC,EAAAA,YAAYA,CAAAA,CACX,YAAY,gCACZ,MAAOA,EAAAA,YAAAA,CAAAA,sBAAmC,C,SAE1C,WAACC,EAAAA,OAAOA,CAAAA,CAAC,UAAU,WAAW,KAAK,SAAS,MAAO,CAAE,QAAS,OAAQ,WAAY,QAAS,E,UACzF,UAACC,EAAAA,UAAUA,CAAAA,CAAC,QAAStC,EAAQuC,SAAU,SAACC,CAAO,E,OAAKvC,EAAUuC,E,WAAU,wC,GAGxE,UAACC,EAAAA,QAAQA,CAAAA,CACP,QAAQ,UACR,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,qB,GACnBC,QAAS,WAAWpB,G,EACpB,QAASF,EACT,KAAK,Q,SACN,uB,GAGD,UAACuB,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,SAAU,EAAG,E,SACtD5C,EACG,kFACA,mD,UA9BV,UAACmC,EAAAA,MAAMA,CAAAA,C,SACL,UAACC,EAAAA,YAAYA,CAAAA,CACX,YAAc,+BAAyE,gBAA3CnB,MAAAA,EAAAA,KAAAA,EAAAA,EAAiB,OAAO,AAAD,EAAC,EAAI,gBACxE,MAAOmB,EAAAA,YAAAA,CAAAA,sBAAmC,A,KAmCpD,GAAIrB,GAAe,CAACD,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAU,IAAI,AAAD,EAC/B,MAAO,UAACmB,EAAAA,MAAMA,CAAAA,CAAC,KAAK,QAAQ,MAAO,CAAE,QAAS,QAAS,OAAQ,WAAY,C,GAG7E,IAAQY,EAAS/B,EAAT+B,IAAI,CAEZ,GAAIA,AAAyB,IAAzBA,EAAK,QAAQ,CAAC,MAAM,CACtB,MACE,UAACV,EAAAA,MAAMA,CAAAA,C,SACL,UAACC,EAAAA,YAAYA,CAAAA,CACX,YAAY,uCACZ,MAAOA,EAAAA,YAAAA,CAAAA,sBAAmC,C,SAE1C,WAACC,EAAAA,OAAOA,CAAAA,CAAC,UAAU,WAAW,KAAK,SAAS,MAAO,CAAE,QAAS,OAAQ,WAAY,QAAS,E,UACzF,UAACO,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,SAAU,EAAG,E,SAAG,kF,GAG5D,UAACN,EAAAA,UAAUA,CAAAA,CAAC,QAAStC,EAAQuC,SAAU,SAACC,CAAO,E,OAAKvC,EAAUuC,E,WAAU,yB,GAGxE,UAACC,EAAAA,QAAQA,CAAAA,CACP,QAAQ,UACR,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,qB,GACnBC,QAAS,WAAWpB,G,EACpB,QAASF,E,SACV,iB,UASX,IAAMyB,EAAU,CACd,CACE,MAAO,UACP,UAAW,OACX,IAAK,OACL,MAAO,IACP,SAAU,GACVC,OAAQ,SAACC,CAAI,E,MACX,UAACJ,EAAAA,gBAAgBA,CAAAA,CAAC,OAAM,GAAC,SAAU,CAAE,QAASI,CAAK,E,SAAIA,C,GAE3D,EACA,CACE,MAAO,UACP,UAAW,iBACX,IAAK,iBACL,MAAO,GACPD,OAAQ,SAACE,CAAO,E,OAAaA,EAAU,UAACC,EAAAA,KAAKA,CAAAA,CAAC,MAAM,O,SAAQD,C,GAAmB,G,CACjF,EACA,CACE,MAAO,OACP,UAAW,cACX,IAAK,cACL,MAAO,GACPF,OAAQ,SAACE,CAAO,E,OAAaA,EAAU,UAACC,EAAAA,KAAKA,CAAAA,CAAC,MAAM,Q,SAASD,C,GAAmB,G,CAClF,EACA,CACE,MAAO,OACP,UAAW,OACX,IAAK,OACL,MAAO,GACPF,OAAQ,SAACI,CAAI,SACX,AAAKA,EAEE,UAACD,EAAAA,KAAKA,CAAAA,CAAC,MAAOE,AADoB,CAAE,MAAO,MAAO,MAAO,SAAU,MAAO,MAAO,CAC3D,CAACD,EAAK,EAAI,U,SAAYA,C,GAF/B,GAGtB,CACF,EACA,CACE,MAAO,SACP,UAAW,SACX,IAAK,SACL,SAAU,GACVJ,OAAQ,SAACM,CAAM,E,MACb,UAACT,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,SAAU,EAAG,E,SAAIS,GAAU,G,GAE3E,EACD,CAED,MACE,WAAClB,EAAAA,MAAMA,CAAAA,CACL,MACE,WAACE,EAAAA,OAAOA,CAAAA,C,UACN,UAACK,EAAAA,MAAMA,CAAAA,CAAC,KAAK,sBAAsB,MAAO,CAAE,MAAO,SAAU,C,GAC7D,UAAC,Q,SAAK,oB,GACN,WAACQ,EAAAA,KAAKA,CAAAA,CAAC,MAAM,O,UAAQL,EAAK,QAAQ,CAAC,MAAM,CAAC,c,MAG9C,MACE,WAACR,EAAAA,OAAOA,CAAAA,C,UACN,UAACC,EAAAA,UAAUA,CAAAA,CAAC,QAAStC,EAAQuC,SAAU,SAACC,CAAO,E,OAAKvC,EAAUuC,E,WAAU,Q,GACxE,UAACC,EAAAA,QAAQA,CAAAA,CACP,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,qB,GACnBC,QAAS,WAAWpB,G,EACpB,QAASF,EACT,KAAK,Q,SACN,Y,gBAMJJ,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAiB,oBAAoB,AAAD,GACnC,UAACqC,EAAAA,WAAWA,CAAAA,CACV,KAAK,QACL,MAAO,CAAE,aAAc,EAAG,EAC1B,iBAAkB,CAAC,WAAW,CAC9B,MAAO,CACL,CACE,IAAK,WACL,MAAO,eACP,MAAO,UAACjB,EAAAA,OAAOA,CAAAA,C,SAAC,WAACa,EAAAA,KAAKA,CAAAA,C,UAAEjC,EAAgB,UAAU,CAAC,W,KACnD,SACE,uB,UACGA,EAAgB,gBAAgB,EAC/B,UAAC,OAAI,MAAO,CAAE,aAAc,GAAI,QAAS,WAAY,WAAY,UAAW,aAAc,CAAE,E,SAC1F,WAACoB,EAAAA,OAAOA,CAAAA,C,UACN,UAACK,EAAAA,MAAMA,CAAAA,CAAC,KAAK,iB,GACb,WAACE,EAAAA,gBAAgBA,CAAAA,CAAC,OAAM,G,UACrB3B,EAAgB,cAAc,EAAI,QAAQ,MAAIA,EAAgB,gBAAgB,C,GAEjF,UAACiC,EAAAA,KAAKA,CAAAA,CAAC,MACLjC,AAAkC,UAAlCA,EAAgB,aAAa,CAAe,MAC5CA,AAAkC,UAAlCA,EAAgB,aAAa,CAAe,SAAW,O,SAEtDA,EAAgB,aAAa,A,QAKtC,UAACsC,EAAAA,UAAUA,CAAAA,CACT,KAAK,OACL,MAAO,AAAC,OAAA9D,CAAAA,EAAAA,EAAgB,OAAO,AAAD,EAAtBA,EAA2B,EAAE,AAAD,EACjC,KAAK,CAAC,EAAGU,EAAiB+B,OA3NnB,GA4NP,GAAG,CAAC,SAACsB,CAAM,E,MAA2D,CACrE,MAAOA,AAAgB,SAAhBA,EAAO,IAAI,CAAc,QAAUA,AAAgB,QAAhBA,EAAO,IAAI,CAAa,MAAQA,AAAgB,aAAhBA,EAAO,IAAI,CAAkB,UAAY,OACnH,SACE,WAAC,O,UACC,WAACnB,EAAAA,OAAOA,CAAAA,CAAC,KAAK,Q,UACZ,UAACa,EAAAA,KAAKA,CAAAA,CAAC,MAAOM,AAAgB,SAAhBA,EAAO,IAAI,CAAc,QAAUA,AAAgB,QAAhBA,EAAO,IAAI,CAAa,MAAQA,AAAgB,aAAhBA,EAAO,IAAI,CAAkB,UAAY,UAAW,MAAO,CAAE,SAAU,EAAG,E,SACxJA,EAAO,IAAI,A,GAEd,UAACZ,EAAAA,gBAAgBA,CAAAA,CAAC,KAAI,GAAC,MAAO,CAAE,SAAU,EAAG,E,SAAIY,EAAO,QAAQ,A,MAElE,UAAC,OAAI,MAAO,CAAE,UAAW,CAAE,E,SACzB,UAACZ,EAAAA,gBAAgBA,CAAAA,CAAC,MAAO,CAAE,SAAU,EAAG,E,SAAIY,EAAO,OAAO,A,OAIlE,C,KAEH,AAAC,OAAD,SAAC9D,CAAAA,EAAAA,EAAgB,OAAO,AAAD,EAAtBA,KAAAA,EAAAA,EAAyB,MAAM,AAAD,EAAC,EAAI,GA7OzB,GA8OV,UAAC+C,EAAAA,QAAQA,CAAAA,CACP,QAAQ,OACR,KAAK,QACL,KAAMtC,EAAiB,UAACuC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,Y,GAAkB,UAACA,EAAAA,MAAMA,CAAAA,CAAC,KAAK,c,GACnEC,QAAS,W,OAAMvC,EAAkB,CAACD,E,EAClC,MAAO,CAAE,QAAS,CAAE,E,SAEnBA,EAAiB,YAAe,QAAsE,OAA/D,AAAC,OAAD,SAACR,CAAAA,EAAAA,EAAgB,OAAO,AAAD,EAAtBA,KAAAA,EAAAA,EAAyB,MAAM,AAAD,EAAC,EAAI,GArPpE,EAqP+F,Q,KAKjH,EACD,A,GAGL,UAAC8D,EAAAA,OAAOA,CAAAA,CAAC,QAASX,EAAS,WAAYD,EAAK,QAAQ,CAAE,OAAO,OAAO,WAAY,GAAO,KAAK,O,KAGlG,C,qhFCjQO,SAASa,EAAclE,CAAuD,E,IAArDI,EAAFJ,EAAEI,aAAa,CAAE+D,EAAjBnE,EAAiBmE,gBAAgB,CAC7B5D,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAAxC6D,EAAyB7D,CAAAA,CAAAA,EAAAA,CAAf8D,EAAe9D,CAAAA,CAAAA,EAAAA,CACAG,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAAxC4D,EAAyB5D,CAAAA,CAAAA,EAAAA,CAAf6D,EAAe7D,CAAAA,CAAAA,EAAAA,CACkB8D,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAA1DC,EAA2CD,CAAAA,CAAAA,EAAAA,CAAxBE,EAAwBF,CAAAA,CAAAA,EAAAA,CACtBG,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAApCnE,EAAqBmE,CAAAA,CAAAA,EAAAA,CAAblE,EAAakE,CAAAA,CAAAA,EAAAA,CAEtBC,EAAexE,EAAiB,uCAAwE,OAAlCU,mBAAmBV,IAAmB,GACrDa,EAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAA2B2D,GAA1EC,EAA+C5D,EAArD,IAAI,CAA4B6D,EAAqB7D,EAAhC,SAAS,CAEiCU,EAAAA,AAAAA,GAAAA,EAAAA,aAAAA,AAAAA,EACrE,yCACA,QAFmBoD,EAAkDpD,EAA/D,WAAW,CAAgCE,EAAoBF,EAA/B,SAAS,CAIcqD,EAAAA,AAAAA,GAAAA,EAAAA,aAAAA,AAAAA,EAC7D,qCACA,QAFmBC,EAA0CD,EAAvD,WAAW,CAA4BE,EAAgBF,EAA3B,SAAS,CAK7ClD,EAAAA,SAAe,CAAC,WACV+C,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAe,QAAQ,AAAD,EACxBN,EAAYM,EAAc,QAAQ,EAGlCN,EAAY,IACZG,EAAqB,GAEzB,EAAG,CAACG,EAAc,EAElB/C,EAAAA,SAAe,CAAC,WAEdqC,EADqB,CAAC,CAAEG,CAAAA,GAAY,CAACG,CAAgB,EAEvD,EAAG,CAACH,EAAUG,EAAmBN,EAAiB,EAElD,IAAMpC,EAAiB,W,wBAEbC,EAGAmD,EAGAhD,EACAiD,EAEChD,E,iDATQ,O,sBAAA,C,EAAM2C,EAAkB,CAAE,MAAO3E,EAAeI,OAAAA,CAAO,G,eACtE+D,EAAYvC,AADNA,CAAAA,EAAS,UACI,QAAQ,EAC3B0C,EAAqB,IACfS,EAAAA,EAAAA,CACFnD,EAAO,YAAY,EAAImD,EAAM,IAAI,CAAE,GAAsB,OAApBnD,EAAO,YAAY,CAAC,aACzDA,EAAO,UAAU,EAAImD,EAAM,IAAI,CAAE,GAAoB,OAAlBnD,EAAO,UAAU,CAAC,YACnDG,EAASH,EAAO,OAAO,CAAG,cAAgBxB,EAAS,WAAa,SAChE4E,EAAUD,EAAM,MAAM,CAAG,EAAK,KAAqB,OAAjBA,EAAM,IAAI,CAAC,MAAM,KAAK,GAC9D7C,EAAAA,SAAAA,CAAAA,OAAiB,CAAE,GAA+B8C,MAAAA,CAA7BjD,EAAO,wBAA8B,OAARiD,I,oBAC3ChD,EAAAA,EAAAA,IAAAA,GACPE,EAAAA,SAAAA,CAAAA,KAAe,CAAE,iCAAyF,OAApDC,EAALH,EAAiBI,OAAQJ,EAAM,OAAO,CAAG,kB,yBAE9F,I,SAiBA,AAAI0C,EACK,UAACrC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,QAAQ,MAAO,CAAE,QAAS,QAAS,OAAQ,WAAY,C,GAGzE,AAACoC,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAe,QAAQ,AAAD,GAAMP,EAgC/B,WAAC3B,EAAAA,MAAMA,CAAAA,CACL,MACE,WAACE,EAAAA,OAAOA,CAAAA,C,UACL4B,EACC,UAACf,EAAAA,KAAKA,CAAAA,CAAC,MAAM,U,SAAU,S,GAEvB,uB,UACE,UAACR,EAAAA,MAAMA,CAAAA,CAAC,KAAK,sBAAsB,MAAO,CAAE,MAAO,SAAU,C,GAC7D,UAACQ,EAAAA,KAAKA,CAAAA,CAAC,MAAM,U,SAAU,O,MAG3B,UAAC,Q,SAAK,W,MAGV,MACE,WAACb,EAAAA,OAAOA,CAAAA,C,UACN,UAACC,EAAAA,UAAUA,CAAAA,CAAC,QAAStC,EAAQuC,SAAU,SAACC,CAAO,E,OAAKvC,EAAUuC,E,WAAU,Q,GACxE,UAACC,EAAAA,QAAQA,CAAAA,CACP,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,qB,GACnBC,QAAS,WAAWpB,G,EACpB,QAASF,EACT,KAAK,Q,SACN,Y,GAGD,UAACoB,EAAAA,QAAQA,CAAAA,CACP,KAAMmB,EAAW,UAAClB,EAAAA,MAAMA,CAAAA,CAAC,KAAK,a,GAAmB,UAACA,EAAAA,MAAMA,CAAAA,CAAC,KAAK,c,GAC9DC,QAAS,W,OAAMkB,EAAY,CAACD,E,EAC5B,KAAK,Q,SAEJA,EAAW,UAAY,M,GAE1B,UAACnB,EAAAA,QAAQA,CAAAA,CACP,QAAQ,UACR,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,c,GACnBC,QAAS,W,iBAjFRf,E,iDAHP,O,sBAAA,C,EAAM6C,EAAc,CAAE,MAAO7E,EAAekE,SAAAA,CAAS,G,eAArD,SACAI,EAAqB,IACrBpC,EAAAA,SAAAA,CAAAA,OAAiB,CAAC,mB,oBACXF,EAAAA,EAAAA,IAAAA,GACPE,EAAAA,SAAAA,CAAAA,KAAe,CAAE,mBAA2E,OAApDC,EAALH,EAAiBI,OAAQJ,EAAM,OAAO,CAAG,kB,yBAEhF,I,EA+EU,QAAS8C,EACT,SAAU,CAACT,EACX,KAAK,Q,SACN,M,gBAML,WAACY,EAAAA,KAAKA,CAAAA,CAAC,OAAQ,G,UACb,UAACC,EAAAA,KAAKA,CAAAA,CAAC,KAAMlB,EAAW,GAAK,G,SAC1BA,EACC,UAACmB,EAAAA,eAAeA,CAAAA,CACd,MAAOjB,EACP,SA3FiB,SAACkB,CAAC,EAC7BjB,EAAYiB,EAAE,MAAM,CAAC,KAAK,EAC1Bd,EAAqB,GACvB,EAyFY,KAAM,GACN,MAAO,CAAE,WAAY,YAAa,SAAU,GAAI,OAAQ,GAAI,EAC5D,YAAY,qC,GAGd,UAAC,OAAI,MAAO,CAAE,UAAW,IAAK,SAAU,MAAO,E,SAC7C,UAACe,EAAAA,gBAAgBA,CAAAA,CAAC,QAASnB,C,OAIhCF,GACC,UAACkB,EAAAA,KAAKA,CAAAA,CAAC,KAAM,G,SACX,WAAC,OAAI,MAAO,CACV,OAAQ,oBACR,aAAc,EACd,OAAQ,IACR,SAAU,OACV,QAAS,GACT,WAAY,SACd,E,UACE,UAAClC,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,SAAU,GAAI,QAAS,QAAS,aAAc,CAAE,E,SAAG,S,GAG/F,UAACqC,EAAAA,gBAAgBA,CAAAA,CAAC,QAASnB,C,WAMlCG,GACC,UAAC,OAAI,MAAO,CAAE,UAAW,GAAI,UAAW,QAAS,E,SAC/C,UAACrB,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,UAAU,MAAO,CAAE,SAAU,EAAG,E,SAAG,4C,QAhH9D,UAACT,EAAAA,MAAMA,CAAAA,C,SACL,UAACC,EAAAA,YAAYA,CAAAA,CACX,YAAY,6BACZ,MAAOA,EAAAA,YAAAA,CAAAA,sBAAmC,C,SAE1C,WAACC,EAAAA,OAAOA,CAAAA,CAAC,UAAU,WAAW,KAAK,SAAS,MAAO,CAAE,QAAS,OAAQ,WAAY,QAAS,E,UACzF,UAACC,EAAAA,UAAUA,CAAAA,CAAC,QAAStC,EAAQuC,SAAU,SAACC,CAAO,E,OAAKvC,EAAUuC,E,WAAU,0C,GAGxE,UAACC,EAAAA,QAAQA,CAAAA,CACP,QAAQ,UACR,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,qB,GACnBC,QAAS,WAAWpB,G,EACpB,QAASF,EACT,KAAK,Q,SACN,oB,GAGD,UAACuB,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,SAAU,EAAG,E,SACtD5C,EACG,gEACA,mD,SAkGlB,C,6UCzMA,SAASkF,EAAYC,CAAa,EAChC,GAAIA,AAAU,IAAVA,EAAe,MAAO,MAG1B,IAAMC,EAAIvD,KAAK,KAAK,CAACA,KAAK,GAAG,CAACsD,GAAStD,KAAK,GAAG,CAFrC,OAGV,MAAQ,GAAqDwD,MAAAA,CAAnDC,WAAYH,AAAAA,CAAAA,EAAQtD,KAAK,GAAG,CAH5B,KAGgCuD,EAAC,EAAG,OAAO,CAAC,IAAI,KAAY,OAATC,AAF/C,CAAC,IAAK,KAAM,KAAM,KAAK,AAE6B,CAACD,EAAE,CACvE,CAEA,SAASG,EAAiBC,CAAY,EACpC,IAC2BC,EADrBd,EAAQa,EAAK,KAAK,CAAC,KACzB,OAAOb,EAAM,MAAM,CAAG,GAAI,MAACc,CAAAA,EAAAA,CAAK,CAACd,EAAM,MAAM,CAAG,EAAE,AAAD,EAAtBc,EAA2B,EACxD,CAEA,SAASC,EAAiBF,CAAY,EAEpC,OADYD,EAAiBC,IAE3B,IAAK,KAAM,IAAK,MAAO,IAAK,MAAO,MAAO,SAC1C,KAAK,KAAM,IAAK,MAAO,MAAO,SAC9B,KAAK,OAAQ,MAAO,SACpB,KAAK,OAAQ,MAAO,SACpB,KAAK,KAAM,MAAO,SAClB,KAAK,MAAO,MAAO,SACnB,SAAS,MAAO,SAClB,CACF,CAOO,SAASG,EAAYnG,CAAmD,E,QAAjDI,EAAFJ,EAAEI,aAAa,CAAEgG,EAAjBpG,EAAiBoG,cAAc,CACnDC,EAAajG,EAAiB,qCAAsE,OAAlCU,mBAAmBV,IAAmB,GACrDa,EAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAyBoF,GAApEC,EAA2CrF,EAAjD,IAAI,CAAesF,EAA8BtF,EAA9BsF,SAAS,CAAEnE,EAAmBnB,EAAnBmB,KAAK,CAAEoE,EAAYvF,EAAZuF,OAAO,CACW7E,EAAAA,AAAAA,GAAAA,EAAAA,aAAAA,AAAAA,EAC7D,4BACA,QAFmB8E,EAA0C9E,EAAvD,WAAW,CAA2B+E,EAAiB/E,EAA5B,SAAS,CAKtCgF,EAAa,MAAbA,CAAAA,EAAaL,MAAAA,EAAAA,KAAAA,EAAAA,EAAa,QAAQ,CAAC,IAAI,CAAC,SAACM,CAAG,E,MAAKA,AAAoB,UAApBA,EAAI,WAAW,A,OAChEC,EAAW,MAAXA,CAAAA,EAAWP,MAAAA,EAAAA,KAAAA,EAAAA,EAAa,QAAQ,AAAD,GAAC,EAEtCxE,EAAAA,SAAe,CAAC,WACVwE,GAAeA,EAAY,QAAQ,CAAC,MAAM,CAAG,GAAKO,EACpDT,EAAe,IAEfA,EAAe,GAEnB,EAAG,CAACE,EAAaO,EAAUT,EAAe,EAE1C,IAAMU,EAAc,e,0BAEV9E,EAOC+E,E,suCAPQ,O,sBAAA,C,EAAMN,EAAa,CAAE,MAAOrG,CAAc,G,cACrD4B,AADEA,CAAAA,EAAS,UACJ,OAAO,EAChBM,EAAAA,SAAAA,CAAAA,OAAiB,CAAE,oBAAwCN,MAAAA,CAArBA,EAAO,UAAU,CAAC,KAAqB,OAAlBA,EAAO,UAAU,CAAC,cAC7EwE,KAEAlE,EAAAA,SAAAA,CAAAA,KAAe,CAAC,gB,oBAEXyE,EAAAA,EAAAA,IAAAA,GACPzE,EAAAA,SAAAA,CAAAA,KAAe,CAAE,iBAAqE,OAAlDC,EAAHwE,EAAevE,OAAQuE,EAAI,OAAO,CAAG,kB,yBAE1E,E,gLAEA,GAAIR,EACF,MACE,UAAC5D,EAAAA,MAAMA,CAAAA,C,SACL,WAAC,OAAI,MAAO,CAAE,UAAW,SAAU,QAAS,EAAG,E,UAC7C,UAACF,EAAAA,MAAMA,CAAAA,CAAC,KAAK,O,GACb,UAAC,OAAI,MAAO,CAAE,UAAW,EAAG,E,SAC1B,UAACW,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,Y,SAAY,+B,UAO7C,GAAIhB,EACF,MACE,UAACO,EAAAA,MAAMA,CAAAA,C,SACL,UAACC,EAAAA,YAAYA,CAAAA,CACX,YAAc,mCAA2F,OAApDL,EAALH,EAAiBI,OAAQJ,EAAM,OAAO,CAAG,gB,KAMjG,GAAI,CAACkE,GAAeA,AAAgC,IAAhCA,EAAY,QAAQ,CAAC,MAAM,CAC7C,MACE,UAAC3D,EAAAA,MAAMA,CAAAA,C,SACL,UAACC,EAAAA,YAAYA,CAAAA,CAAC,YAAY,2D,KAKhC,IAAMoE,EAAaV,EAAY,UAAU,CACnCW,EAAYX,EAAY,SAAS,CAEjCY,EAAY,IAAIC,IACtBb,EAAY,QAAQ,CAAC,OAAO,CAAC,SAACM,CAAG,EAC/BA,EAAI,KAAK,CAAC,OAAO,CAAC,SAACQ,CAAI,EACrB,IAAMC,EAAMtB,EAAiBqB,EAAK,IAAI,GAAK,QACrCE,EAAUJ,EAAU,GAAG,CAACG,IAAQ,CAAE,MAAO,EAAG,KAAM,CAAE,EAC1DH,EAAU,GAAG,CAACG,EAAK,CAAE,MAAOC,EAAQ,KAAK,CAAG,EAAG,KAAMA,EAAQ,IAAI,CAAGF,EAAK,IAAI,AAAC,EAChF,EACF,GACA,IAAMG,EAAkBC,MAAM,IAAI,CAACN,EAAU,OAAO,IAAI,IAAI,CAAC,SAACO,CAAC,CAAEC,CAAC,E,OAAKA,CAAC,CAAC,EAAE,CAAC,IAAI,CAAGD,CAAC,CAAC,EAAE,CAAC,IAAI,A,GAAE,KAAK,CAAC,EAAG,GAEjGnE,EAAU,CACd,CACE,MAAO,OACP,UAAW,OACX,IAAK,OACLC,OAAQ,SAACyC,CAAI,E,MACX,WAACnD,EAAAA,OAAOA,CAAAA,CAAC,KAAM,E,UACb,UAACK,EAAAA,MAAMA,CAAAA,CAAC,KAAK,eAAe,MAAO,CAAE,MAAOgD,EAAiBF,EAAM,C,GACnE,UAAC5C,EAAAA,gBAAgBA,CAAAA,CAAC,KAAI,GAAC,MAAO,CAAE,SAAU,EAAG,E,SAAI4C,C,MAGvD,EACA,CACE,MAAO,OACP,UAAW,OACX,IAAK,OACL,MAAO,IACP,MAAO,QACPzC,OAAQ,SAACoE,CAAI,E,MACX,UAACvE,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,SAAU,EAAG,E,SAAIsC,EAAYiC,E,GAE7E,EACD,CAED,MACE,WAAC,O,UACC,WAAChF,EAAAA,MAAMA,CAAAA,CAAC,MAAO,CAAE,aAAc,EAAG,E,UAChC,WAAC,OAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,eAAgB,eAAgB,E,UACnF,WAACE,EAAAA,OAAOA,CAAAA,CAAC,KAAK,Q,UACZ,WAAC,O,UACC,UAACO,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,QAAS,QAAS,SAAU,EAAG,E,SAAG,a,GAC9E,UAACwE,EAAAA,OAAOA,CAAAA,CAAC,MAAO,EAAG,MAAO,CAAE,OAAQ,CAAE,E,SAAIZ,C,MAE5C,WAAC,O,UACC,UAAC5D,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,QAAS,QAAS,SAAU,EAAG,E,SAAG,Y,GAC9E,UAACwE,EAAAA,OAAOA,CAAAA,CAAC,MAAO,EAAG,MAAO,CAAE,OAAQ,CAAE,E,SAAIlC,EAAYuB,E,MAExD,WAAC,O,UACC,UAAC7D,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,QAAS,QAAS,SAAU,EAAG,E,SAAG,U,GAC9E,UAACwE,EAAAA,OAAOA,CAAAA,CAAC,MAAO,EAAG,MAAO,CAAE,OAAQ,CAAE,E,SAAItB,EAAY,QAAQ,CAAC,MAAM,A,SAGzE,UAACzD,EAAAA,OAAOA,CAAAA,C,SACLgE,EACC,uB,UACE,UAAC3D,EAAAA,MAAMA,CAAAA,CAAC,KAAK,sBAAsB,MAAO,CAAE,MAAO,UAAW,SAAU,EAAG,C,GAC3E,UAACE,EAAAA,gBAAgBA,CAAAA,CAAC,OAAM,GAAC,MAAO,CAAE,MAAO,SAAU,E,SAAG,kB,MAGxD,uB,UACE,UAACF,EAAAA,MAAMA,CAAAA,CAAC,KAAK,kBAAkB,MAAO,CAAE,MAAO,UAAW,SAAU,EAAG,C,GACvE,UAACE,EAAAA,gBAAgBA,CAAAA,CAAC,OAAM,GAAC,MAAO,CAAE,MAAO,SAAU,E,SAAG,gB,WAM9D,WAAC,OAAI,MAAO,CAAE,UAAW,EAAG,E,UAC1B,WAACP,EAAAA,OAAOA,CAAAA,C,UACN,UAACI,EAAAA,QAAQA,CAAAA,CACP,QAAQ,UACR,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,e,GACnBC,QAAS,WAAW2D,G,EACpB,QAASJ,EACT,KAAK,Q,SAEJA,EAAe,cAAgBC,EAAa,QAAU,S,GAEzD,UAAC1D,EAAAA,QAAQA,CAAAA,CACP,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,gB,GACnBC,QAAS,W,OAAMqD,G,EACf,SAAUE,EACV,KAAK,Q,SACN,S,MAIFC,GACC,UAACkB,EAAAA,OAAOA,CAAAA,CACN,QAAQ,UACR,QAAQ,mDACR,MAAO,CAAE,UAAW,EAAG,EACvB,SAAQ,E,MAKd,WAAC,OAAI,MAAO,CAAE,UAAW,EAAG,E,UAC1B,UAACzE,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,QAAS,QAAS,aAAc,EAAG,SAAU,EAAG,E,SAAG,Y,GAG/F,UAACP,EAAAA,OAAOA,CAAAA,CAAC,KAAI,G,SACV0E,EAAgB,GAAG,CAAC,Y,kzBAAEF,EAAAA,CAAAA,CAAAA,EAAAA,CAAKS,EAAAA,CAAAA,CAAAA,EAAAA,C,MAC1B,WAACpE,EAAAA,KAAKA,CAAAA,CAAW,MAAO,CAAE,OAAQ,CAAE,E,UAClC,WAAC,QAAK,MAAO,CAAE,MAAOwC,EAAkB,IAAO,OAAJmB,GAAO,E,UAAG,IAAEA,E,GACtD,IAAKS,EAAM,KAAK,CAAC,KAAGpC,EAAYoC,EAAM,IAAI,EAAE,I,EAFnCT,E,WASnBf,EAAY,QAAQ,CAAC,GAAG,CAAC,SAACM,CAAG,E,MAC5B,WAACjE,EAAAA,MAAMA,CAAAA,CAEL,MACE,WAACE,EAAAA,OAAOA,CAAAA,C,UACN,UAACK,EAAAA,MAAMA,CAAAA,CAAC,KAAK,gB,GACb,UAACE,EAAAA,gBAAgBA,CAAAA,CAAC,OAAM,G,SAAEwD,EAAI,IAAI,A,GAClC,WAAClD,EAAAA,KAAKA,CAAAA,CAAC,MAAM,O,UAAO,IAAEkD,EAAI,OAAO,C,MAGrC,MACE,WAAC/D,EAAAA,OAAOA,CAAAA,C,UACL+D,AAAoB,UAApBA,EAAI,WAAW,CACd,UAAClD,EAAAA,KAAKA,CAAAA,CAAC,MAAM,U,SAAU,O,GACrBkD,AAAoB,aAApBA,EAAI,WAAW,CACjB,UAAClD,EAAAA,KAAKA,CAAAA,CAAC,MAAM,a,SAAa,a,GAE1B,UAACA,EAAAA,KAAKA,CAAAA,CAAC,MAAM,U,SAAU,W,GAEzB,WAACA,EAAAA,KAAKA,CAAAA,C,UAAEkD,EAAI,SAAS,CAAC,S,GACtB,UAAClD,EAAAA,KAAKA,CAAAA,CAAC,MAAM,Q,SAASgC,EAAYkB,EAAI,SAAS,C,MAGnD,MAAO,CAAE,aAAc,EAAG,EAC1B,KAAK,Q,UAEL,UAAC,OAAI,MAAO,CAAE,aAAc,EAAG,E,SAC7B,UAACmB,EAAAA,UAAUA,CAAAA,CACT,QAAS,IACT,QAAS,CAAE,QAAUnB,EAAI,KAAK,CAAC,MAAM,CAAC,SAACoB,CAAC,E,OAAKA,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAUA,EAAE,IAAI,CAAC,QAAQ,CAAC,O,GAAS,MAAM,CAAC,SAACC,CAAC,CAAED,CAAC,E,OAAKC,EAAID,EAAE,IAAI,A,EAAE,GAAKpB,EAAI,SAAS,CAAI,GAAI,EACvJ,YAAY,UACZ,WAAW,UACX,SAAU,GACV,KAAK,O,KAGT,UAAC3C,EAAAA,OAAOA,CAAAA,CACN,WAAY2C,EAAI,KAAK,CACrB,QAAStD,EACT,OAAO,OACP,KAAK,QACL,WAAYsD,EAAI,KAAK,CAAC,MAAM,CAAG,IAAK,CAAE,SAAU,EAAG,C,KAvChDA,EAAI,IAAI,C,KA6CvB,C,syGCvOO,SAASsB,EAAYlI,CAAsD,E,MA6H3DmI,EA7HO/H,EAAFJ,EAAEI,aAAa,CAAEgI,EAAjBpI,EAAiBoI,iBAAiB,CACtC7H,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAA9B8H,EAAe9H,CAAAA,CAAAA,EAAAA,CAAV+H,EAAU/H,CAAAA,CAAAA,EAAAA,CACUG,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAAxC6H,EAAyB7H,CAAAA,CAAAA,EAAAA,CAAf8H,EAAe9H,CAAAA,CAAAA,EAAAA,CACJ8D,EAAAA,EAAAA,EAAAA,QAAc,CAAa,EAAE,KAAlDiE,EAAqBjE,CAAAA,CAAAA,EAAAA,CAAbkE,EAAalE,CAAAA,CAAAA,EAAAA,CACgBG,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAApDgE,EAAqChE,CAAAA,CAAAA,EAAAA,CAArBiE,EAAqBjE,CAAAA,CAAAA,EAAAA,CACFkE,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAAlDC,EAAmCD,CAAAA,CAAAA,EAAAA,CAApBE,EAAoBF,CAAAA,CAAAA,EAAAA,CACEG,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAApDC,EAAqCD,CAAAA,CAAAA,EAAAA,CAArBE,EAAqBF,CAAAA,CAAAA,EAAAA,CACEG,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAAtDC,EAAuCD,CAAAA,CAAAA,EAAAA,CAAtBE,EAAsBF,CAAAA,CAAAA,EAAAA,CACNG,EAAAA,EAAAA,EAAAA,QAAc,CAAgB,SAA/DC,EAAiCD,CAAAA,CAAAA,EAAAA,CAAnBE,EAAmBF,CAAAA,CAAAA,EAAAA,CAElCvI,EAAUX,EAAiB,kCAAmE,OAAlCU,mBAAmBV,IAAmB,GAClGqJ,EAAYrJ,EAAiB,oCAAqE,OAAlCU,mBAAmBV,IAAmB,GAE9FkB,EAAaL,AAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAsBF,GAAzC,IAAI,CACmDM,EAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAA2BoI,GAA5EC,EAAiDrI,EAAvD,IAAI,CAA2BsI,EAAwBtI,EAAnC,SAAS,CAEhBuI,EAAcjI,AAAAA,AAAAA,GAAAA,EAAAA,aAAAA,AAAAA,EAAmD,iCAAkC,QAAhH,WAAW,CAC4CqD,EAAAA,AAAAA,GAAAA,EAAAA,aAAAA,AAAAA,EAAqD,0BAA2B,QAA1H6E,EAA0C7E,EAAvD,WAAW,CAAyB8E,EAAmB9E,EAA9B,SAAS,CACoB+E,EAAAA,AAAAA,GAAAA,EAAAA,aAAAA,AAAAA,EAAmD,2BAA4B,UAAxHC,EAAyCD,EAAtD,WAAW,CAAuBE,EAAoBF,EAA/B,SAAS,CAExCjI,EAAAA,SAAe,CAAC,WACV4H,CAAAA,GAAiBf,GAAmBG,GAAiBL,AAAkB,IAAlBA,EAAO,MAAM,EACpEC,EAAUgB,EAAa,MAAM,CAAC,GAAG,CAAC,SAACQ,CAAC,E,MAAM,CACxC,GAAIA,EAAE,EAAE,CACR,KAAMA,EAAE,IAAI,CACZ,OAAQ,UACR,SAAUA,EAAE,QAAQ,AACtB,C,GAEJ,EAAG,CAACR,EAAcf,EAAgBG,EAAeL,EAAO,MAAM,CAAC,EAE/D,IAAM0B,EAAkB1B,EAAO,MAAM,CAAG,GAAKA,EAAO,KAAK,CAAC,SAACyB,CAAC,E,MAAKA,AAAa,YAAbA,EAAE,MAAM,A,GACnEE,EAAiB3B,EAAO,IAAI,CAAC,SAACyB,CAAC,E,MAAKA,AAAa,UAAbA,EAAE,MAAM,A,GA8E5CG,GAAqB,SAACC,CAAM,EAChC,OAAQA,GACN,IAAK,UAAW,MAAO,UAACpH,EAAAA,MAAMA,CAAAA,CAAC,KAAK,kBAAkB,MAAO,CAAE,MAAO,SAAU,C,EAChF,KAAK,UAAW,MAAO,UAACA,EAAAA,MAAMA,CAAAA,CAAC,KAAK,sBAAsB,MAAO,CAAE,MAAO,SAAU,C,EACpF,KAAK,QAAS,MAAO,UAACA,EAAAA,MAAMA,CAAAA,CAAC,KAAK,sBAAsB,MAAO,CAAE,MAAO,SAAU,C,EAClF,SAAS,MAAO,UAACA,EAAAA,MAAMA,CAAAA,CAAC,KAAK,4BAA4B,MAAO,CAAE,MAAO,SAAU,C,EACrF,CACF,SAEA,AAAIkG,EAEA,UAACzG,EAAAA,MAAMA,CAAAA,C,SACL,UAAC4H,EAAAA,QAAQA,CAAAA,CACP,OAAO,UACP,MAAM,qBACN,SAAW,GAAuC,sBAArCpC,GAAAA,MAAAA,CAAAA,EAAAA,EAAU,IAAI,AAAD,EAAbA,KAAAA,EAAAA,EAAgB,QAAQ,CAAC,MAAM,AAAD,EAAC,EAAI,EAAE,gCAClD,MAAO,CACL,UAACqC,EAAAA,YAAYA,CAAAA,CAEX,MAAM,mBACN,YAAY,kDACZ,KAAM,UAACtH,EAAAA,MAAMA,CAAAA,CAAC,KAAK,4BAA4B,MAAO,CAAE,MAAO,SAAU,C,GACzEuH,UAAW,W,iBAhCZrI,E,iDAPP,O,sBAAA,C,EAAM4H,EAAS,CAAE,MAAO5J,CAAc,G,eAAtC,SACAkC,EAAAA,SAAAA,CAAAA,OAAiB,CAAC,mCAClB+G,EAAmB,IACnBH,EAAkB,IAClBM,EAAgB,MAChBZ,EAAkB,IAClBF,EAAU,SAACgC,CAAI,E,OAAKA,EAAK,GAAG,CAAC,SAACR,CAAC,E,OAAM,OAAKA,GAAAA,CAAG,OAAQ,UAAoB,MAAOxH,OAAW,SAAUA,M,2BAC9FN,EAAAA,EAAAA,IAAAA,GACPE,EAAAA,SAAAA,CAAAA,KAAe,CAAE,oBAA4E,OAApDC,EAALH,EAAiBI,OAAQJ,EAAM,OAAO,CAAG,kB,yBAEjF,I,EA8BY,OAAO,gBACP,cAAe,CAAE,OAAQ,EAAK,EAC9B,WAAW,S,SAEX,UAACa,EAAAA,QAAQA,CAAAA,CAAC,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,kB,GAAuB,QAAS+G,EAAiB,OAAM,G,SAAC,U,IATjF,YAaP,A,KAOP,WAAC,O,UACC,UAACtH,EAAAA,MAAMA,CAAAA,CACL,MACE,WAACE,EAAAA,OAAOA,CAAAA,C,UACN,UAACK,EAAAA,MAAMA,CAAAA,CAAC,KAAK,e,GACb,UAAC,Q,SAAK,oB,GACLiH,GAAmB,UAACzG,EAAAA,KAAKA,CAAAA,CAAC,MAAM,U,SAAU,Y,GAC1C0G,GAAkB,UAAC1G,EAAAA,KAAKA,CAAAA,CAAC,MAAM,Q,SAAQ,Q,MAG5C,MAAO,CAAE,aAAc,EAAG,E,SAE1B,WAACb,EAAAA,OAAOA,CAAAA,CAAC,UAAU,WAAW,MAAO,CAAE,MAAO,MAAO,EAAG,KAAK,S,UAC1D8G,GAAuBlB,AAAkB,IAAlBA,EAAO,MAAM,EAAU,UAACkC,EAAAA,UAAUA,CAAAA,CAAC,OAAM,GAAC,MAAO,EAAG,MAAO,E,GAClF,CAAChB,GAAuBlB,AAAkB,IAAlBA,EAAO,MAAM,EACpC,UAACrF,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,Y,SAAY,uD,GAEpCqF,EAAO,GAAG,CAAC,SAACmC,CAAK,E,MAChB,WAAC,OAEC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,gBAChB,QAAS,YACT,WAAYA,AAAiB,UAAjBA,EAAM,MAAM,CAAe,UAAYA,AAAiB,YAAjBA,EAAM,MAAM,CAAiB,UAAY,UAC5F,aAAc,EACd,OAAS,aAAsG,OAA1FA,AAAiB,UAAjBA,EAAM,MAAM,CAAe,UAAYA,AAAiB,YAAjBA,EAAM,MAAM,CAAiB,UAAY,UACvG,E,UAEA,WAAC/H,EAAAA,OAAOA,CAAAA,C,UACLwH,GAAmBO,EAAM,MAAM,EAChC,WAAC,O,UACC,WAAC/H,EAAAA,OAAOA,CAAAA,C,UACN,UAACO,EAAAA,gBAAgBA,CAAAA,CAAC,OAAM,G,SAAEwH,EAAM,IAAI,A,GACnCA,EAAM,QAAQ,EAAI,UAAClH,EAAAA,KAAKA,CAAAA,C,SAAC,U,MAE3BkH,EAAM,KAAK,EACV,UAAC,OAAI,MAAO,CAAE,UAAW,CAAE,E,SACzB,UAAC,OAAI,MAAO,CACV,OAAQ,EAAG,QAAS,WAAY,SAAU,GAAI,WAAY,IAC1D,MAAO,UAAW,WAAY,UAAW,aAAc,EACvD,UAAW,IAAK,SAAU,OAAQ,WAAY,WAAY,UAAW,WACvE,E,SACGA,EAAM,KAAK,A,WAMrBA,EAAM,QAAQ,EAAI,WAAClH,EAAAA,KAAKA,CAAAA,C,UAAGkH,AAAAA,CAAAA,EAAM,QAAQ,CAAG,GAAG,EAAG,OAAO,CAAC,GAAG,I,KA/BzDA,EAAM,EAAE,C,GAkCjB,WAAC,OAAI,MAAO,CAAE,QAAS,OAAQ,IAAK,CAAE,E,UACpC,UAAC3H,EAAAA,QAAQA,CAAAA,CACP,QAAQ,UACR,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,e,GACnBC,QAAS,W,iBAtKXnB,EAWCI,E,iDAfT2G,EAAiB,IACjBH,EAAkB,IAClBF,EAAU,SAACgC,CAAI,E,OAAKA,EAAK,GAAG,CAAC,SAACR,CAAC,E,OAAM,OAAKA,GAAAA,CAAG,OAAQ,UAAoB,MAAOxH,OAAW,SAAUA,M,wBAEpF,O,uBAAA,C,EAAMkH,EAAU,CAAE,MAAOxJ,CAAc,G,eAAhD4B,EAAS,SACf0G,EAAU,SAACgC,CAAI,EACb,IAAMG,EAAa,IAAI1D,IAAInF,EAAO,MAAM,CAAC,GAAG,CAAC,SAACkI,CAAC,E,MAAK,CAACA,EAAE,EAAE,CAAEA,EAAE,A,IAC7D,OAAOQ,EAAK,GAAG,CAAC,SAACR,CAAC,EAChB,IAAMY,EAAID,EAAW,GAAG,CAACX,EAAE,EAAE,SAC7B,AAAKY,EACE,OAAKZ,GAAAA,CAAG,OAAQY,EAAE,OAAO,CAAG,UAAqB,QAAkB,MAAOA,EAAE,KAAK,CAAE,SAAUA,EAAE,UAAU,A,GAD/F,OAAKZ,GAAAA,CAAG,OAAQ,S,EAEnC,EACF,GACAtB,EAAkB5G,EAAO,OAAO,EAC5B,AAACA,EAAO,OAAO,EAAIM,EAAAA,SAAAA,CAAAA,KAAe,CAAC,sB,oBAChCF,EAAAA,EAAAA,IAAAA,GACPsG,EAAU,SAACgC,CAAI,E,OAAKA,EAAK,GAAG,CAAC,SAACR,CAAC,E,OAAM,OAAKA,GAAAA,CAAG,OAAQ,S,OACrD5H,EAAAA,SAAAA,CAAAA,KAAe,CAAE,kBAA0E,OAApDC,EAALH,EAAiBI,OAAQJ,EAAM,OAAO,CAAG,kB,oBAE3E2G,EAAiB,I,uBAErB,I,EAsJY,QAASD,EACT,SAAUH,E,SAETG,EAAgB,oBAAsB,Y,GAEvCH,AAAAA,CAAAA,GAAkByB,CAAa,GAC/B,UAACnH,EAAAA,QAAQA,CAAAA,CAAC,QA3GF,WAClByF,EAAU,SAACgC,CAAI,E,OAAKA,EAAK,GAAG,CAAC,SAACR,CAAC,E,OAAM,OAAKA,GAAAA,CAAG,OAAQ,UAAoB,MAAOxH,OAAW,SAAUA,M,OACrGkG,EAAkB,GACpB,E,SAwG4C,O,WAMxC,WAACjG,EAAAA,MAAMA,CAAAA,CACL,MACE,WAACE,EAAAA,OAAOA,CAAAA,C,UACN,UAACK,EAAAA,MAAMA,CAAAA,CAAC,KAAK,c,GACb,UAAC,Q,SAAK,a,gBAIT,CAACiH,GACA,UAACtC,EAAAA,OAAOA,CAAAA,CACN,QAAQ,oCACR,YAAY,sDACZ,QAAQ,OACR,SAAQ,GACR,MAAO,CAAE,aAAc,EAAG,C,GAG7B0B,GACC,UAAC1B,EAAAA,OAAOA,CAAAA,CACN,QAAQ,iBACR,YAAa0B,EACb,QAAQ,QACR,SAAQ,GACR,SAAQ,GACRwB,QAAS,W,OAAMvB,EAAgB,K,EAC/B,MAAO,CAAE,aAAc,EAAG,C,GAG9B,WAAC3G,EAAAA,OAAOA,CAAAA,CAAC,UAAU,WAAW,MAAO,CAAE,MAAO,MAAO,EAAG,KAAK,S,UAC1DvB,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAU,IAAI,AAAD,GACZ,UAACwC,EAAAA,WAAWA,CAAAA,CACV,KAAK,QACL,MAAO,CAAC,CACN,IAAK,UACL,MAAO,kBACP,MAAO,WAACJ,EAAAA,KAAKA,CAAAA,CAAC,MAAM,O,UAAQpC,EAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,c,GAC1D,SACE,UAAC,O,SACEA,EAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAACsF,CAAG,E,MAC9B,WAAC,OAAmB,MAAO,CAAE,aAAc,CAAE,E,UAC3C,UAACxD,EAAAA,gBAAgBA,CAAAA,CAAC,KAAI,G,SAAEwD,EAAI,IAAI,A,GAChC,WAACxD,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,Y,UAAY,IAAEwD,EAAI,cAAc,CAAC,M,GACxD,UAACxD,EAAAA,gBAAgBA,CAAAA,CAAC,OAAM,GAAC,MAAO,CAAE,MAAO,SAAU,E,SAAIwD,EAAI,WAAW,A,KAH9DA,EAAI,IAAI,C,IAQ1B,EAAE,A,GAGN,UAACoE,EAAAA,SAASA,CAAAA,CAAC,MAAO,CAAE,OAAQ,OAAQ,C,GACpC,WAAC,O,UACC,WAAC5H,EAAAA,gBAAgBA,CAAAA,CAAC,OAAM,GAAC,MAAO,CAAE,QAAS,QAAS,aAAc,CAAE,E,UAAG,8BACzC,IAC5B,UAACA,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,WAAY,QAAS,E,SAAG,Y,MAEtE,UAACA,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,QAAS,QAAS,aAAc,EAAG,SAAU,EAAG,E,SAAG,mF,GAG/F,UAAC6H,EAAAA,OAAOA,CAAAA,CACN,OAAQ,UAAC/H,EAAAA,MAAMA,CAAAA,CAAC,KAAK,c,GACrB,YAAY,SACZ,MAAOmF,EACPtF,SAAU,SAACmI,CAAK,EAAO5C,EAAO4C,EAAM,OAAO,CAAC,MAAO,IAAI,KAAK,CAAC,EAAG,IAAK1C,EAAY,GAAK,EACtF,UAAW,EACX,MAAO,CAAE,MAAO,IAAK,SAAU,GAAI,cAAe,CAAE,EACpD,OAAQD,EAAW,QAAU7F,OAC7B,SAAU,CAACyH,GAAmBlB,C,GAE/BV,GACC,UAACnF,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,SAAS,MAAO,CAAE,QAAS,QAAS,UAAW,EAAG,SAAU,EAAG,E,SACnFmF,C,MAIP,UAACyC,EAAAA,SAASA,CAAAA,CAAC,MAAO,CAAE,OAAQ,OAAQ,C,GACpC,UAAC/H,EAAAA,QAAQA,CAAAA,CACP,QAAQ,UACR,KAAK,QACL,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,gB,GACnBC,QAAS,W,iBAlOTnB,EAMiBmJ,EAAfC,EAKDhJ,EACDiJ,E,iDAhBR,GAAI,CATJ,CAAIhD,GAAO,CAAC,UAAU,IAAI,CAACA,IACzBG,EAAY,wBACL,KAETA,EAAY,IACL,GAFP,EAMsB,O,GACtBU,EAAkB,IAClBM,EAAgB,M,iBAEC,O,sBAAA,C,EAAMK,EAAW,CAAE,MAAOzJ,EAAe,OAAQ,GAAOiI,IAAAA,CAAI,G,cACvErG,AADEA,CAAAA,EAAS,UACJ,OAAO,EAChBqH,EAAmB,IACnB/G,EAAAA,SAAAA,CAAAA,OAAiB,CAAC,mCAClB8F,MAGAoB,EADM4B,EAAeD,AAAAA,OAAAA,CAAAA,EAAAA,EAAO,MAAM,AAAD,EAAZA,KAAAA,EAAAA,EAAe,IAAI,CAAC,KAAI,GAAK,yBAElDjC,EAAkB,IAClB5G,EAAAA,SAAAA,CAAAA,KAAe,CAAE,mBAA+B,OAAb8I,K,oBAIrC5B,EADM6B,EAAoB9I,EADnBH,EAAAA,EAAAA,IAAAA,GAC+BI,OAAQJ,EAAM,OAAO,CAAG,iBAE9D8G,EAAkB,IAClB5G,EAAAA,SAAAA,CAAAA,KAAe,CAAE,mBAA+B,OAAb+I,I,yBAEvC,I,EAkNU,QAASvB,EACT,SAAU,CAACK,GAAmBlB,EAC9B,MAAK,G,SACN,gB,GAGD,UAAC7F,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,YAAY,MAAO,CAAE,UAAW,SAAU,QAAS,QAAS,SAAU,EAAG,E,SAAG,uD,WAO7G,C,q7BCzVA,IAAMkI,EAAuB,CAAC,OAAQ,YAAa,UAAW,UAAU,CAClEC,EAAsC,CAAE,KAAM,EAAG,UAAW,EAAG,QAAS,EAAG,QAAS,CAAE,EAOrF,SAASC,EAAexL,CAAyD,E,IAKlEyL,EALWrL,EAAFJ,EAAEI,aAAa,CAAEC,EAAjBL,EAAiBK,iBAAiB,CACvBqL,EAAAA,EAAAA,AAAAA,GAAAA,EAAAA,eAAAA,AAAAA,IAAeA,GAAhDC,EAAiCD,CAAAA,CAAAA,EAAAA,CAAnBE,EAAmBF,CAAAA,CAAAA,EAAAA,CACnBG,EAAclK,AAAAA,AAAAA,GAAAA,EAAAA,aAAAA,AAAAA,EAAmD,2BAA4B,UAA1G,WAAW,CAGbmK,EAAc,MAAAL,CAAAA,EAAAA,CAAU,CADZE,EAAa,GAAG,CAAC,QACiB,AAAZ,EAApBF,EAAoC,EAElDM,EAAiB,SAACC,CAAK,EAC3BJ,EAAgB,SAAClB,CAAI,EACnB,IACiBuB,EADXC,EAAO,IAAIC,gBAAgBzB,GAEjC,OADAwB,EAAK,GAAG,CAAC,OAAQ,MAAAD,CAAAA,EAAAA,CAAS,CAACD,EAAM,AAAD,EAAfC,EAAoB,QAC9BC,CACT,EACF,EAE8C3L,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAAtD6I,EAAuC7I,CAAAA,CAAAA,EAAAA,CAAtB8I,EAAsB9I,CAAAA,CAAAA,EAAAA,CACZG,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAA1C0L,EAA2B1L,CAAAA,CAAAA,EAAAA,CAAhB2L,EAAgB3L,CAAAA,CAAAA,EAAAA,CACU8D,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAApD8H,EAAqC9H,CAAAA,CAAAA,EAAAA,CAArB+H,EAAqB/H,CAAAA,CAAAA,EAAAA,CACJG,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAAhD6H,EAAiC7H,CAAAA,CAAAA,EAAAA,CAAnB8H,EAAmB9H,CAAAA,CAAAA,EAAAA,CAElC+H,EAAQ,CACZ,CAAE,MAAO,OAAQ,KAAM,UAACxJ,EAAAA,MAAMA,CAAAA,CAAC,KAAK,kB,EAAsB,EAC1D,CAAE,MAAO,YAAa,KAAM,UAACA,EAAAA,MAAMA,CAAAA,CAAC,KAAK,c,EAAkB,EAC3D,CAAE,MAAO,UAAW,KAAM,UAACA,EAAAA,MAAMA,CAAAA,CAAC,KAAK,gB,EAAoB,EAC3D,CAAE,MAAO,UAAW,KAAM,UAACA,EAAAA,MAAMA,CAAAA,CAAC,KAAK,gB,EAAoB,EAC5D,QA0BD,AAAK9C,EAYDgJ,EAEA,UAACzG,EAAAA,MAAMA,CAAAA,C,SACL,UAAC4H,EAAAA,QAAQA,CAAAA,CACP,OAAO,UACP,MAAM,oBACN,SAAS,kDACT,MAAO,CACL,UAACtH,EAAAA,QAAQA,CAAAA,CAAW,QAAQ,UAAU,QA7BxB,WACjB4I,EAAU,CAAE,MAAOzL,CAAc,GACtC2L,EAAe,GACf1C,EAAmB,IACnBgD,EAAa,IACbE,EAAkB,IAClBE,EAAgB,GAClB,E,SAsB0E,mB,EAAlD,OAGf,A,KAiBP,WAAC,O,UACC,UAAC9J,EAAAA,MAAMA,CAAAA,CAAC,KAAK,QAAQ,MAAO,CAAE,aAAc,EAAG,E,SAC7C,WAAC,OAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,eAAgB,eAAgB,E,UACnF,UAACgK,EAAAA,OAAOA,CAAAA,CACN,QAASb,EACT,MAAOY,EACP,KAAK,aACL,KAAK,QACL3J,SAAU,SAAC6J,CAAI,EAAWA,EAAOd,GAAeC,EAAea,EAAS,EACxE,MAAO,CAAE,KAAM,CAAE,C,GAEnB,WAAC,OAAI,MAAO,CAAE,QAAS,OAAQ,IAAK,EAAG,WAAY,GAAI,WAAY,CAAE,E,UACnE,UAAC3J,EAAAA,QAAQA,CAAAA,CACP,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,mB,GACnB,QAnEO,WACb4I,EAAc,GAAKC,EAAeD,EAAc,EACtD,EAkEY,SAAUA,AAAgB,IAAhBA,EACV,KAAK,Q,SACN,M,GAGAA,EAAcY,EAAM,MAAM,CAAG,GAC5B,WAACzJ,EAAAA,QAAQA,CAAAA,CACP,QAAQ,UACR,QAhFK,WACb6I,EAAcY,EAAM,MAAM,CAAG,GAAKX,EAAeD,EAAc,EACrE,EA+Ec,SAAU,CAvFtB,CAAIA,AAAgB,IAAhBA,EAA4BM,EAC5BN,AAAgB,IAAhBA,EAA4BQ,EACZ,IAAhBR,GAA4BU,CAFW,EAwF/B,KAAK,Q,UACN,QACM,UAACtJ,EAAAA,MAAMA,CAAAA,CAAC,KAAK,oB,cAO3B2J,AA7CqB,WACxB,OAAQf,GACN,KAAK,EAAG,MAAO,UAAC/L,EAAQA,CAAC,cAAeK,EAAe,kBAAmBC,EAAmB,YAAagM,C,EAC1G,MAAK,EAAG,MAAO,UAACnI,EAAaA,CAAC,cAAe9D,EAAe,iBAAkBmM,C,EAC9E,MAAK,EAAG,MAAO,UAACpG,EAAWA,CAAC,cAAe/F,EAAe,eAAgBqM,C,EAC1E,MAAK,EAAG,MAAO,UAACvE,EAAWA,CAAC,cAAe9H,EAAegI,kBAAmB,W,OAAMiB,EAAmB,G,GACtG,SAAS,OAAO,IAClB,CACF,I,GAnCI,UAAC1G,EAAAA,MAAMA,CAAAA,C,SACL,UAAC4H,EAAAA,QAAQA,CAAAA,CACP,OAAO,OACP,MAAM,iBACN,SAAS,yE,IAuEnB,C,q7BCtHA,SAASuC,EAAmB9M,CAAoD,E,IAwBtD+M,EACXC,EAGJC,EAGAC,EA/BmBC,EAAFnN,EAAEmN,SAAS,CAAEC,EAAbpN,EAAaoN,YAAY,CACrCC,EAAepM,AAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAC1B,+BAAkEH,MAAAA,CAApCA,mBAAmBsM,GAAc,KAAiC,OAA9BtM,mBAAmBqM,GAAW,YAD3F,IAAI,CAGE7L,EAAaD,AAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EACxB,+BAAkEP,MAAAA,CAApCA,mBAAmBsM,GAAc,KAAiC,OAA9BtM,mBAAmBqM,GAAW,UAD3F,IAAI,CAGEtI,EAAkBnD,AAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAC7B,+BAAkEZ,MAAAA,CAApCA,mBAAmBsM,GAAc,KAAiC,OAA9BtM,mBAAmBqM,GAAW,eAD3F,IAAI,CAING,EAAW,CACf,CACE,IAAK,SACL,MAAO,SACP,SAAUD,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAY,MAAM,AAAD,EACzB,WAACE,EAAAA,cAAcA,CAAAA,CAAC,SAAQ,GAAC,OAAQ,EAAG,KAAK,Q,UACvC,UAACC,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,a,SAAcH,EAAW,EAAE,A,GACrD,UAACG,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,Q,SAASH,EAAW,MAAM,CAAC,KAAK,A,GAC1D,UAACG,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,Q,SAASH,EAAW,MAAM,CAAC,KAAK,A,GAC1D,UAACG,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,Y,SACvB,IAAIC,KAAKJ,EAAW,MAAM,CAAC,EAAE,EAAE,cAAc,E,GAEhD,UAACG,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,S,SACxB,UAAC9J,EAAAA,KAAKA,CAAAA,CAAC,MAAOqJ,AAAAA,OAAAA,CAAAA,EAAAA,EAAW,MAAM,CAAC,MAAM,AAAD,EAAvBA,KAAAA,EAAAA,EAA0B,EAAE,AAAD,EAAI,UAAY,Q,SACtDC,AAAAA,OAAAA,CAAAA,EAAAA,EAAW,MAAM,CAAC,MAAM,AAAD,EAAvBA,KAAAA,EAAAA,EAA0B,EAAE,AAAD,EAAI,UAAY,Q,KAG/CC,AAAAA,OAAAA,CAAAA,EAAAA,EAAW,MAAM,CAAC,MAAM,AAAD,EAAvBA,KAAAA,EAAAA,EAA0B,QAAQ,AAAD,GAChC,WAACO,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,W,UAAYH,EAAW,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,K,GAEzEH,AAAAA,OAAAA,CAAAA,EAAAA,EAAW,MAAM,CAAC,MAAM,AAAD,EAAvBA,KAAAA,EAAAA,EAA0B,SAAS,AAAD,GACjC,UAACM,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,qB,SACvBH,EAAW,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,A,MAI9C,UAAC5K,EAAAA,MAAMA,CAAAA,CAAAA,EACb,EACA,CACE,IAAK,OACL,MAAO,OACP,SAAUnB,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAU,IAAI,AAAD,EACrB,WAAC,O,UACC,WAACiM,EAAAA,cAAcA,CAAAA,CAAC,SAAQ,GAAC,OAAQ,EAAG,KAAK,QAAQ,MAAO,CAAE,aAAc,EAAG,E,UACzE,UAACC,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,Q,SAASlM,EAAS,IAAI,CAAC,KAAK,A,GACtD,UAACkM,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,W,SAAYlM,EAAS,IAAI,CAAC,QAAQ,A,GAC5D,UAACkM,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,W,SAAYlM,EAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,A,GACnE,UAACkM,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,W,SACvBlM,EAAS,IAAI,CAAC,eAAe,CAAG,UAAY,U,MAGhDA,EAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAACsF,CAAG,CAAE8G,CAAG,E,MACnC,UAAC/K,EAAAA,MAAMA,CAAAA,CAAW,KAAK,QAAQ,MAAO,CAAE,aAAc,CAAE,E,SACtD,WAACE,EAAAA,OAAOA,CAAAA,CAAC,UAAU,WAAW,KAAK,Q,UACjC,UAACO,EAAAA,gBAAgBA,CAAAA,CAAC,OAAM,G,SAAEwD,EAAI,IAAI,A,GAClC,WAAC/D,EAAAA,OAAOA,CAAAA,C,UACN,UAACa,EAAAA,KAAKA,CAAAA,CAAC,MAAM,O,SAAQkD,EAAI,cAAc,A,GAAS,IAEhD,UAAClD,EAAAA,KAAKA,CAAAA,CAAC,MAAM,Q,SAASkD,EAAI,WAAW,A,GACrC,UAAClD,EAAAA,KAAKA,CAAAA,C,SAAEkD,EAAI,IAAI,A,MAElB,UAACxD,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,Y,SAAawD,EAAI,MAAM,A,OATrC8G,E,MAcf,UAACjL,EAAAA,MAAMA,CAAAA,CAAAA,EACb,EACA,CACE,IAAK,YACL,MAAO,YACP,SAAUoC,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAe,QAAQ,AAAD,EAC9B,UAACY,EAAAA,gBAAgBA,CAAAA,CAAC,QAASZ,EAAc,QAAQ,A,GAC/C,UAACpC,EAAAA,MAAMA,CAAAA,CAAAA,EACb,EACD,CAED,MAAO,UAACkL,EAAAA,MAAMA,CAAAA,CAAC,MAAOL,C,EACxB,CAEO,SAASM,EAAW5N,CAAkC,E,MAAhCI,EAAFJ,EAAEI,aAAa,CACUyN,EAAAA,EAAAA,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAwB,SAAnEC,EAA2CD,CAAAA,CAAAA,EAAAA,CAAxBE,EAAwBF,CAAAA,CAAAA,EAAAA,CACMG,EAAAA,EAAAA,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAiB,OAAlEC,EAAiDD,CAAAA,CAAAA,EAAAA,CAA3BE,EAA2BF,CAAAA,CAAAA,EAAAA,CAChBG,EAAAA,EAAAA,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,OAA1CC,EAAiCD,CAAAA,CAAAA,EAAAA,CAAnBE,EAAmBF,CAAAA,CAAAA,EAAAA,CAEsClN,EAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAC5E,+BADYqN,EAAgErN,EAAtE,IAAI,CAA0BsN,EAAwCtN,EAAnD,SAAS,CAAyBuN,EAAiBvN,EAAxB,KAAK,CAIrDwN,EAAoB,SAACC,CAAE,CAAUC,CAAK,EAC1CZ,EAAqBW,GACrBR,EAAwBS,GACxBN,EAAgB,GAClB,EAQA,GAAIE,EACF,MAAO,UAAC9L,EAAAA,MAAMA,CAAAA,CAAC,KAAK,QAAQ,MAAO,CAAE,QAAS,QAAS,OAAQ,WAAY,C,GAG7E,GAAI+L,EACF,MACE,UAAC7L,EAAAA,MAAMA,CAAAA,C,SACL,UAACC,EAAAA,YAAYA,CAAAA,CACX,YAAc,2BAAiG,OAA3DL,A,UAAYC,Q,iEAAxBgM,G,AAAAA,a,GAAgCA,EAAa,OAAO,CAAG,iBAC/F,MAAO5L,EAAAA,YAAAA,CAAAA,sBAAmC,A,KAMlD,IAAMgM,EAAmBN,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAa,QAAQ,AAAD,EACzClO,EACEkO,EAAY,QAAQ,CAAC,MAAM,CAAC,SAACxD,CAAC,E,OAAKA,EAAE,KAAK,GAAK1K,C,GAC/CkO,EAAY,QAAQ,CACtB,EAAE,CAEN,GAAIM,AAA4B,IAA5BA,EAAiB,MAAM,CACzB,MACE,UAACjM,EAAAA,MAAMA,CAAAA,C,SACL,UAACC,EAAAA,YAAYA,CAAAA,CACX,YAAaxC,EAAiB,iCAA8C,OAAdA,EAAc,SAAS,yBACrF,MAAOwC,EAAAA,YAAAA,CAAAA,sBAAmC,A,KAMlD,IAAMiM,EAAgBD,EAAiB,GAAG,CAAC,SAACE,CAAO,E,MAAM,CACvD,IAAKA,EAAQ,OAAO,CAChB,UAAC5L,EAAAA,MAAMA,CAAAA,CAAC,KAAK,sBAAsB,MAAO,CAAE,MAAO,SAAU,C,GAC7D,UAACA,EAAAA,MAAMA,CAAAA,CAAC,KAAK,sBAAsB,MAAO,CAAE,MAAO,SAAU,C,GACjE,SACE,UAACP,EAAAA,MAAMA,CAAAA,CAAC,KAAK,QAAQ,MAAO,CAAE,aAAc,EAAG,E,SAC7C,WAACE,EAAAA,OAAOA,CAAAA,CAAC,UAAU,WAAW,MAAO,CAAE,MAAO,MAAO,E,UACnD,WAACA,EAAAA,OAAOA,CAAAA,C,UACN,UAACa,EAAAA,KAAKA,CAAAA,CAAC,MAAM,O,SAAQoL,EAAQ,KAAK,A,GAClC,UAACpL,EAAAA,KAAKA,CAAAA,CAAC,MAAOoL,EAAQ,OAAO,CAAG,UAAY,Q,SAAUA,EAAQ,OAAO,CAAG,UAAY,Q,GACpF,UAAC1L,EAAAA,gBAAgBA,CAAAA,CAAC,KAAK,Y,SAAa,IAAIqK,KAAKqB,EAAQ,SAAS,EAAE,cAAc,E,MAEhF,WAAC1L,EAAAA,gBAAgBA,CAAAA,C,UAAC,YAAU0L,EAAQ,QAAQ,CAAC,MAAM,CAAC,c,GACpD,UAAC7L,EAAAA,QAAQA,CAAAA,CACP,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,a,GACnBC,QAAS,W,OAAMsL,EAAkBK,EAAQ,EAAE,CAAEA,EAAQ,KAAK,C,EAC1D,KAAK,Q,SACN,c,OAMT,C,GAEA,MACE,WAACnM,EAAAA,MAAMA,CAAAA,CAAC,MAAO,UAACiF,EAAAA,OAAOA,CAAAA,CAAC,MAAO,EAAG,MAAO,CAAE,OAAQ,CAAE,E,SAAG,iB,aACtD,UAAC7D,EAAAA,UAAUA,CAAAA,CAAC,MAAO8K,C,GAEnB,UAACE,EAAAA,OAAOA,CAAAA,CACN,MAAQ,qBAAsC,OAAlBjB,GAC5B,KAAMM,EACN,SAtEmB,WACvBC,EAAgB,IAChBN,EAAqB,MACrBG,EAAwB,GAC1B,EAmEM,OAAQ,KACR,MAAO,I,SAENJ,GAAqBG,GACpB,UAACnB,EAAAA,CAAmB,UAAWgB,EAAmB,aAAcG,C,OAK1E,C,sGCtFA,MAjHA,WACE,I,EACsBe,EAAAA,EAqBDC,EA+EFC,EArGqBxD,E,4CAAAA,AAAAA,GAAAA,EAAAA,eAAAA,AAAAA,M,sLAAeA,I,qKAAAA,G,uOAAAA,G,kLAAhDC,EAAiCD,CAAAA,CAAAA,EAAAA,CAAnBE,EAAmBF,CAAAA,CAAAA,EAAAA,CAClCtL,EAAgB,MAAA4O,CAAAA,EAAAA,EAAa,GAAG,CAAC,QAAO,EAAxBA,EAA6B,GAE7CG,EAAmB,SAACR,CAAK,EAC7B/C,EAAgB,SAAClB,CAAI,EACnB,IAAMwB,EAAO,IAAIC,gBAAgBzB,GAGjC,OAFAwB,EAAK,GAAG,CAAC,QAASyC,GAClBzC,EAAK,MAAM,CAAC,QACLA,CACT,EACF,EAEuDjL,EAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAwB,8BAAjEmO,EAAyCnO,EAA/C,IAAI,CAAyBoO,EAAkBpO,EAA7B,SAAS,CAEnCa,EAAAA,SAAe,CAAC,WACd,GAAIsN,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAY,MAAM,AAAD,GAAKA,EAAW,MAAM,CAAC,MAAM,CAAG,GAAK,CAAChP,EAAe,CACxE,IAEiBkP,EAAAA,EAFXC,EAAYH,EAAW,MAAM,CAAC,IAAI,CAAC,SAACnH,CAAC,E,MAAKA,AAAS,SAATA,EAAE,EAAE,A,GAC9CuH,EAAaJ,EAAW,MAAM,CAAC,EAAE,CACvCD,EAAiB,MAAAG,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAW,EAAE,AAAD,EAAC,EAAIE,MAAAA,EAAAA,KAAAA,EAAAA,EAAY,EAAE,AAAD,EAA9BF,EAAmC,GACtD,CACF,EAAG,CAACF,EAAW,EAEf,IAAMK,QAAeR,GAAAA,MAAAA,CAAAA,EAAAA,EAAY,MAAM,AAAD,EAAjBA,KAAAA,EAAAA,EAAoB,IAAI,CAAC,SAAChH,CAAC,E,OAAKA,EAAE,EAAE,GAAK7H,C,GAExDsP,EAAe,SAACC,CAAI,EACxB,OAAQA,GACN,IAAK,WAAY,MAAO,MACxB,KAAK,UAAW,MAAO,OACvB,KAAK,OAAQ,MAAO,QACpB,SAAS,MAAO,SAClB,CACF,EAEMC,EACJ,UAACjC,EAAAA,MAAMA,CAAAA,CACL,QAAQ,SACR,MAAO,CACL,CACE,IAAK,WACL,MAAO,UACP,SACE,uB,UACG8B,GACC,UAAC3L,EAAAA,WAAWA,CAAAA,CACV,KAAK,QACL,MAAO,CAAE,aAAc,EAAG,EAC1B,MAAO,CACL,CACE,IAAK,aACL,MAAO2L,EAAa,cAAc,CAC7B,GAAwBA,MAAAA,CAAtBA,EAAa,IAAI,CAAC,MAAgC,OAA5BA,EAAa,cAAc,EACpDA,EAAa,IAAI,CACrB,MAAO,UAAC/L,EAAAA,KAAKA,CAAAA,CAAC,MAAOgM,EAAaD,EAAa,IAAI,E,SAAIA,EAAa,IAAI,A,GACxE,SACE,WAAClC,EAAAA,cAAcA,CAAAA,CAAC,KAAK,QAAQ,OAAQ,EAAG,SAAQ,G,UAC9C,UAACC,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,e,SAAgBiC,EAAa,EAAE,A,GACxDA,EAAa,cAAc,EAC1B,UAACjC,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,kB,SAAmBiC,EAAa,cAAc,A,GAEzEA,EAAa,WAAW,EACvB,UAACjC,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,c,SAAeiC,EAAa,WAAW,A,GAEnE,UAACjC,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,O,SACxB,UAAC,QAAK,MAAO,CAAE,SAAU,EAAG,E,SAAIiC,EAAa,IAAI,A,KAEnD,UAACjC,EAAAA,kBAAkBA,CAAAA,CAAC,MAAM,O,SACxB,UAAC9J,EAAAA,KAAKA,CAAAA,CAAC,MAAOgM,EAAaD,EAAa,IAAI,E,SAAIA,EAAa,IAAI,A,OAIzE,EACD,A,GAGL,UAACjE,EAAcA,CAAC,cAAepL,EAAe,kBAAmBqP,MAAAA,EAAAA,KAAAA,EAAAA,EAAc,IAAI,A,KAGzF,EACA,CACE,IAAK,UACL,MAAO,UACP,SAAU,UAAC7B,EAAUA,CAAC,cAAexN,C,EACvC,EACD,A,GAIL,MACE,UAACyP,EAAAA,MAAMA,CAAAA,C,SACL,UAACC,EAAAA,YAAYA,CAAAA,CACX,MAAM,kBACN,YAAY,0DACZ,QACE,UAACC,EAAAA,QAAQA,CAAAA,CACP,MAAO,CAAE,MAAO,GAAI,EACpB,YAAY,qCACZ,MAAO3P,GAAiBsC,OACxBK,SAAU,SAACiN,CAAC,E,OAAKb,EAAiBa,E,EAClC,QAASX,EACT,WAAU,GACV,iBAAiB,QACjB,QAAO,eAAEH,GAAAA,MAAAA,CAAAA,EAAAA,EAAY,MAAM,AAAD,EAAjBA,KAAAA,EAAAA,EAAoB,GAAG,CAAC,SAACjH,CAAC,E,MAAM,CACvC,MAAQ,GAAaA,MAAAA,CAAXA,EAAE,IAAI,CAAC,MAAW,OAAPA,EAAE,IAAI,CAAC,KAC5B,MAAOA,EAAE,EAAE,AACb,C,MAAO,EAAE,A,GAGb,KAAM2H,C,IAId,C"}