"use strict";(self.webpackChunksrsrfl_react=self.webpackChunksrsrfl_react||[]).push([[19],{2376:(o,e,r)=>{var t=r(4994);e.A=void 0;var a=t(r(2032)),n=r(4848);e.A=(0,a.default)((0,n.jsx)("path",{d:"M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1m2 14H7v-2h7zm3-4H7v-2h10zm0-4H7V7h10z"}),"Assignment")},6573:(o,e,r)=>{var t=r(4994);e.A=void 0;var a=t(r(2032)),n=r(4848);e.A=(0,a.default)((0,n.jsx)("path",{d:"M20.01 15.38c-1.23 0-2.42-.2-3.53-.56-.35-.12-.74-.03-1.01.24l-1.57 1.97c-2.83-1.35-5.48-3.9-6.89-6.83l1.95-1.66c.27-.28.35-.67.24-1.02-.37-1.11-.56-2.3-.56-3.53 0-.54-.45-.99-.99-.99H4.19C3.65 3 3 3.24 3 3.99 3 13.28 10.73 21 20.01 21c.71 0 .99-.63.99-1.18v-3.45c0-.54-.45-.99-.99-.99"}),"Call")},5897:(o,e,r)=>{var t=r(4994);e.A=void 0;var a=t(r(2032)),n=r(4848);e.A=(0,a.default)((0,n.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info")},3998:(o,e,r)=>{var t=r(4994);e.A=void 0;var a=t(r(2032)),n=r(4848);e.A=(0,a.default)((0,n.jsx)("path",{d:"M6 3h12v2H6zm11 3H7c-1.1 0-2 .9-2 2v11c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m-1 9h-2.5v2.5h-3V15H8v-3h2.5V9.5h3V12H16z"}),"Medication")},7415:(o,e,r)=>{var t=r(4994);e.A=void 0;var a=t(r(2032)),n=r(4848);e.A=(0,a.default)((0,n.jsx)("path",{d:"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2m-5 14H4v-4h11zm0-5H4V9h11zm5 5h-4V9h4z"}),"Web")},2032:(o,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.createSvgIcon}});var t=r(2070)},921:(o,e,r)=>{r.d(e,{A:()=>k});var t=r(8168),a=r(8587),n=r(6540),s=(r(4363),r(4164)),i=r(5659),l=r(1848),d=r(5669),c=r(2848),p=r(538),u=r(5120),m=r(1159),A=r(6025),b=r(8413),v=r(1609);function f(o){return(0,v.Ay)("MuiAccordion",o)}const h=(0,b.A)("MuiAccordion",["root","rounded","expanded","disabled","gutters","region"]);var g=r(4848);const x=["children","className","defaultExpanded","disabled","disableGutters","expanded","onChange","square","slots","slotProps","TransitionComponent","TransitionProps"],y=(0,l.Ay)(p.A,{name:"MuiAccordion",slot:"Root",overridesResolver:(o,e)=>{const{ownerState:r}=o;return[{[`& .${h.region}`]:e.region},e.root,!r.square&&e.rounded,!r.disableGutters&&e.gutters]}})((({theme:o})=>{const e={duration:o.transitions.duration.shortest};return{position:"relative",transition:o.transitions.create(["margin"],e),overflowAnchor:"none","&::before":{position:"absolute",left:0,top:-1,right:0,height:1,content:'""',opacity:1,backgroundColor:(o.vars||o).palette.divider,transition:o.transitions.create(["opacity","background-color"],e)},"&:first-of-type":{"&::before":{display:"none"}},[`&.${h.expanded}`]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:"none"}}},[`&.${h.disabled}`]:{backgroundColor:(o.vars||o).palette.action.disabledBackground}}}),(({theme:o})=>({variants:[{props:o=>!o.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(o.vars||o).shape.borderRadius,borderTopRightRadius:(o.vars||o).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(o.vars||o).shape.borderRadius,borderBottomRightRadius:(o.vars||o).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:o=>!o.disableGutters,style:{[`&.${h.expanded}`]:{margin:"16px 0"}}}]}))),k=n.forwardRef((function(o,e){const r=(0,d.b)({props:o,name:"MuiAccordion"}),{children:l,className:p,defaultExpanded:b=!1,disabled:v=!1,disableGutters:h=!1,expanded:k,onChange:C,square:R=!1,slots:B={},slotProps:M={},TransitionComponent:S,TransitionProps:w}=r,N=(0,a.A)(r,x),[I,j]=(0,m.A)({controlled:k,default:b,name:"Accordion",state:"expanded"}),V=n.useCallback((o=>{j(!I),C&&C(o,!I)}),[I,C,j]),[z,...$]=n.Children.toArray(l),D=n.useMemo((()=>({expanded:I,disabled:v,disableGutters:h,toggle:V})),[I,v,h,V]),T=(0,t.A)({},r,{square:R,disabled:v,disableGutters:h,expanded:I}),G=(o=>{const{classes:e,square:r,expanded:t,disabled:a,disableGutters:n}=o,s={root:["root",!r&&"rounded",t&&"expanded",a&&"disabled",!n&&"gutters"],region:["region"]};return(0,i.A)(s,f,e)})(T),H=(0,t.A)({transition:S},B),P=(0,t.A)({transition:w},M),[O,W]=(0,A.A)("transition",{elementType:c.A,externalForwardedProps:{slots:H,slotProps:P},ownerState:T});return(0,g.jsxs)(y,(0,t.A)({className:(0,s.A)(G.root,p),ref:e,ownerState:T,square:R},N,{children:[(0,g.jsx)(u.A.Provider,{value:D,children:z}),(0,g.jsx)(O,(0,t.A)({in:I,timeout:"auto"},W,{children:(0,g.jsx)("div",{"aria-labelledby":z.props.id,id:z.props["aria-controls"],role:"region",className:G.region,children:$})}))]}))}))},5120:(o,e,r)=>{r.d(e,{A:()=>t});const t=r(6540).createContext({})},6576:(o,e,r)=>{r.d(e,{A:()=>v});var t=r(8168),a=r(8587),n=r(6540),s=r(4164),i=r(5659),l=r(1848),d=r(5669),c=r(8413),p=r(1609);function u(o){return(0,p.Ay)("MuiAccordionDetails",o)}(0,c.A)("MuiAccordionDetails",["root"]);var m=r(4848);const A=["className"],b=(0,l.Ay)("div",{name:"MuiAccordionDetails",slot:"Root",overridesResolver:(o,e)=>e.root})((({theme:o})=>({padding:o.spacing(1,2,2)}))),v=n.forwardRef((function(o,e){const r=(0,d.b)({props:o,name:"MuiAccordionDetails"}),{className:n}=r,l=(0,a.A)(r,A),c=r,p=(o=>{const{classes:e}=o;return(0,i.A)({root:["root"]},u,e)})(c);return(0,m.jsx)(b,(0,t.A)({className:(0,s.A)(p.root,n),ref:e,ownerState:c},l))}))},8719:(o,e,r)=>{r.d(e,{A:()=>y});var t=r(8168),a=r(8587),n=r(6540),s=r(4164),i=r(5659),l=r(1848),d=r(5669),c=r(8850),p=r(5120),u=r(8413),m=r(1609);function A(o){return(0,m.Ay)("MuiAccordionSummary",o)}const b=(0,u.A)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]);var v=r(4848);const f=["children","className","expandIcon","focusVisibleClassName","onClick"],h=(0,l.Ay)(c.A,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:(o,e)=>e.root})((({theme:o})=>{const e={duration:o.transitions.duration.shortest};return{display:"flex",minHeight:48,padding:o.spacing(0,2),transition:o.transitions.create(["min-height","background-color"],e),[`&.${b.focusVisible}`]:{backgroundColor:(o.vars||o).palette.action.focus},[`&.${b.disabled}`]:{opacity:(o.vars||o).palette.action.disabledOpacity},[`&:hover:not(.${b.disabled})`]:{cursor:"pointer"},variants:[{props:o=>!o.disableGutters,style:{[`&.${b.expanded}`]:{minHeight:64}}}]}})),g=(0,l.Ay)("div",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:(o,e)=>e.content})((({theme:o})=>({display:"flex",flexGrow:1,margin:"12px 0",variants:[{props:o=>!o.disableGutters,style:{transition:o.transitions.create(["margin"],{duration:o.transitions.duration.shortest}),[`&.${b.expanded}`]:{margin:"20px 0"}}}]}))),x=(0,l.Ay)("div",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:(o,e)=>e.expandIconWrapper})((({theme:o})=>({display:"flex",color:(o.vars||o).palette.action.active,transform:"rotate(0deg)",transition:o.transitions.create("transform",{duration:o.transitions.duration.shortest}),[`&.${b.expanded}`]:{transform:"rotate(180deg)"}}))),y=n.forwardRef((function(o,e){const r=(0,d.b)({props:o,name:"MuiAccordionSummary"}),{children:l,className:c,expandIcon:u,focusVisibleClassName:m,onClick:b}=r,y=(0,a.A)(r,f),{disabled:k=!1,disableGutters:C,expanded:R,toggle:B}=n.useContext(p.A),M=(0,t.A)({},r,{expanded:R,disabled:k,disableGutters:C}),S=(o=>{const{classes:e,expanded:r,disabled:t,disableGutters:a}=o,n={root:["root",r&&"expanded",t&&"disabled",!a&&"gutters"],focusVisible:["focusVisible"],content:["content",r&&"expanded",!a&&"contentGutters"],expandIconWrapper:["expandIconWrapper",r&&"expanded"]};return(0,i.A)(n,A,e)})(M);return(0,v.jsxs)(h,(0,t.A)({focusRipple:!1,disableRipple:!0,disabled:k,component:"div","aria-expanded":R,className:(0,s.A)(S.root,c),focusVisibleClassName:(0,s.A)(S.focusVisible,m),onClick:o=>{B&&B(o),b&&b(o)},ref:e,ownerState:M},y,{children:[(0,v.jsx)(g,{className:S.content,ownerState:M,children:l}),u&&(0,v.jsx)(x,{className:S.expandIconWrapper,ownerState:M,children:u})]}))}))},9828:(o,e,r)=>{r.d(e,{A:()=>g});var t=r(8587),a=r(8168),n=r(6540),s=r(4164),i=r(5659),l=r(1848),d=r(5669),c=r(8466),p=r(538),u=r(8413),m=r(1609);function A(o){return(0,m.Ay)("MuiAppBar",o)}(0,u.A)("MuiAppBar",["root","positionFixed","positionAbsolute","positionSticky","positionStatic","positionRelative","colorDefault","colorPrimary","colorSecondary","colorInherit","colorTransparent","colorError","colorInfo","colorSuccess","colorWarning"]);var b=r(4848);const v=["className","color","enableColorOnDark","position"],f=(o,e)=>o?`${null==o?void 0:o.replace(")","")}, ${e})`:e,h=(0,l.Ay)(p.A,{name:"MuiAppBar",slot:"Root",overridesResolver:(o,e)=>{const{ownerState:r}=o;return[e.root,e[`position${(0,c.A)(r.position)}`],e[`color${(0,c.A)(r.color)}`]]}})((({theme:o,ownerState:e})=>{const r="light"===o.palette.mode?o.palette.grey[100]:o.palette.grey[900];return(0,a.A)({display:"flex",flexDirection:"column",width:"100%",boxSizing:"border-box",flexShrink:0},"fixed"===e.position&&{position:"fixed",zIndex:(o.vars||o).zIndex.appBar,top:0,left:"auto",right:0,"@media print":{position:"absolute"}},"absolute"===e.position&&{position:"absolute",zIndex:(o.vars||o).zIndex.appBar,top:0,left:"auto",right:0},"sticky"===e.position&&{position:"sticky",zIndex:(o.vars||o).zIndex.appBar,top:0,left:"auto",right:0},"static"===e.position&&{position:"static"},"relative"===e.position&&{position:"relative"},!o.vars&&(0,a.A)({},"default"===e.color&&{backgroundColor:r,color:o.palette.getContrastText(r)},e.color&&"default"!==e.color&&"inherit"!==e.color&&"transparent"!==e.color&&{backgroundColor:o.palette[e.color].main,color:o.palette[e.color].contrastText},"inherit"===e.color&&{color:"inherit"},"dark"===o.palette.mode&&!e.enableColorOnDark&&{backgroundColor:null,color:null},"transparent"===e.color&&(0,a.A)({backgroundColor:"transparent",color:"inherit"},"dark"===o.palette.mode&&{backgroundImage:"none"})),o.vars&&(0,a.A)({},"default"===e.color&&{"--AppBar-background":e.enableColorOnDark?o.vars.palette.AppBar.defaultBg:f(o.vars.palette.AppBar.darkBg,o.vars.palette.AppBar.defaultBg),"--AppBar-color":e.enableColorOnDark?o.vars.palette.text.primary:f(o.vars.palette.AppBar.darkColor,o.vars.palette.text.primary)},e.color&&!e.color.match(/^(default|inherit|transparent)$/)&&{"--AppBar-background":e.enableColorOnDark?o.vars.palette[e.color].main:f(o.vars.palette.AppBar.darkBg,o.vars.palette[e.color].main),"--AppBar-color":e.enableColorOnDark?o.vars.palette[e.color].contrastText:f(o.vars.palette.AppBar.darkColor,o.vars.palette[e.color].contrastText)},!["inherit","transparent"].includes(e.color)&&{backgroundColor:"var(--AppBar-background)"},{color:"inherit"===e.color?"inherit":"var(--AppBar-color)"},"transparent"===e.color&&{backgroundImage:"none",backgroundColor:"transparent",color:"inherit"}))})),g=n.forwardRef((function(o,e){const r=(0,d.b)({props:o,name:"MuiAppBar"}),{className:n,color:l="primary",enableColorOnDark:p=!1,position:u="fixed"}=r,m=(0,t.A)(r,v),f=(0,a.A)({},r,{color:l,position:u,enableColorOnDark:p}),g=(o=>{const{color:e,position:r,classes:t}=o,a={root:["root",`color${(0,c.A)(e)}`,`position${(0,c.A)(r)}`]};return(0,i.A)(a,A,t)})(f);return(0,b.jsx)(h,(0,a.A)({square:!0,component:"header",ownerState:f,elevation:4,className:(0,s.A)(g.root,n,"fixed"===u&&"mui-fixed"),ref:e},m))}))},7419:(o,e,r)=>{r.d(e,{A:()=>f});var t=r(8587),a=r(8168),n=r(6540),s=r(4164),i=r(5659),l=r(1848),d=r(5669),c=r(973),p=r(8413),u=r(1609);function m(o){return(0,u.Ay)("MuiBackdrop",o)}(0,p.A)("MuiBackdrop",["root","invisible"]);var A=r(4848);const b=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],v=(0,l.Ay)("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(o,e)=>{const{ownerState:r}=o;return[e.root,r.invisible&&e.invisible]}})((({ownerState:o})=>(0,a.A)({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},o.invisible&&{backgroundColor:"transparent"}))),f=n.forwardRef((function(o,e){var r,n,l;const p=(0,d.b)({props:o,name:"MuiBackdrop"}),{children:u,className:f,component:h="div",components:g={},componentsProps:x={},invisible:y=!1,open:k,slotProps:C={},slots:R={},TransitionComponent:B=c.A,transitionDuration:M}=p,S=(0,t.A)(p,b),w=(0,a.A)({},p,{component:h,invisible:y}),N=(o=>{const{classes:e,invisible:r}=o,t={root:["root",r&&"invisible"]};return(0,i.A)(t,m,e)})(w),I=null!=(r=C.root)?r:x.root;return(0,A.jsx)(B,(0,a.A)({in:k,timeout:M},S,{children:(0,A.jsx)(v,(0,a.A)({"aria-hidden":!0},I,{as:null!=(n=null!=(l=R.root)?l:g.Root)?n:h,className:(0,s.A)(N.root,f,null==I?void 0:I.className),ownerState:(0,a.A)({},w,null==I?void 0:I.ownerState),classes:N,ref:e,children:u}))}))}))}}]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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cy1tYXRlcmlhbC9Bc3NpZ25tZW50LmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL2ljb25zLW1hdGVyaWFsL0NhbGwuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mby5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9pY29ucy1tYXRlcmlhbC9NZWRpY2F0aW9uLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL2ljb25zLW1hdGVyaWFsL1dlYi5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9pY29ucy1tYXRlcmlhbC91dGlscy9jcmVhdGVTdmdJY29uLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0FjY29yZGlvbi9hY2NvcmRpb25DbGFzc2VzLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0FjY29yZGlvbi9BY2NvcmRpb24uanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQWNjb3JkaW9uL0FjY29yZGlvbkNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQWNjb3JkaW9uRGV0YWlscy9hY2NvcmRpb25EZXRhaWxzQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9BY2NvcmRpb25EZXRhaWxzL0FjY29yZGlvbkRldGFpbHMuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQWNjb3JkaW9uU3VtbWFyeS9hY2NvcmRpb25TdW1tYXJ5Q2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9BY2NvcmRpb25TdW1tYXJ5L0FjY29yZGlvblN1bW1hcnkuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQXBwQmFyL2FwcEJhckNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQXBwQmFyL0FwcEJhci5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CYWNrZHJvcC9iYWNrZHJvcENsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQmFja2Ryb3AvQmFja2Ryb3AuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cInVzZSBjbGllbnRcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9jcmVhdGVTdmdJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9jcmVhdGVTdmdJY29uXCIpKTtcbnZhciBfanN4UnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbnZhciBfZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdCA9ICgwLCBfY3JlYXRlU3ZnSWNvbi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfanN4UnVudGltZS5qc3gpKFwicGF0aFwiLCB7XG4gIGQ6IFwiTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMm0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTFtMiAxNEg3di0yaDd6bTMtNEg3di0yaDEwem0wLTRIN1Y3aDEwelwiXG59KSwgJ0Fzc2lnbm1lbnQnKTsiLCJcInVzZSBzdHJpY3RcIjtcblwidXNlIGNsaWVudFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX2NyZWF0ZVN2Z0ljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWxzL2NyZWF0ZVN2Z0ljb25cIikpO1xudmFyIF9qc3hSdW50aW1lID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpO1xudmFyIF9kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0ID0gKDAsIF9jcmVhdGVTdmdJY29uLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9qc3hSdW50aW1lLmpzeCkoXCJwYXRoXCIsIHtcbiAgZDogXCJNMjAuMDEgMTUuMzhjLTEuMjMgMC0yLjQyLS4yLTMuNTMtLjU2LS4zNS0uMTItLjc0LS4wMy0xLjAxLjI0bC0xLjU3IDEuOTdjLTIuODMtMS4zNS01LjQ4LTMuOS02Ljg5LTYuODNsMS45NS0xLjY2Yy4yNy0uMjguMzUtLjY3LjI0LTEuMDItLjM3LTEuMTEtLjU2LTIuMy0uNTYtMy41MyAwLS41NC0uNDUtLjk5LS45OS0uOTlINC4xOUMzLjY1IDMgMyAzLjI0IDMgMy45OSAzIDEzLjI4IDEwLjczIDIxIDIwLjAxIDIxYy43MSAwIC45OS0uNjMuOTktMS4xOHYtMy40NWMwLS41NC0uNDUtLjk5LS45OS0uOTlcIlxufSksICdDYWxsJyk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cInVzZSBjbGllbnRcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9jcmVhdGVTdmdJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9jcmVhdGVTdmdJY29uXCIpKTtcbnZhciBfanN4UnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbnZhciBfZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdCA9ICgwLCBfY3JlYXRlU3ZnSWNvbi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfanN4UnVudGltZS5qc3gpKFwicGF0aFwiLCB7XG4gIGQ6IFwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJtMSAxNWgtMnYtNmgyem0wLThoLTJWN2gyelwiXG59KSwgJ0luZm8nKTsiLCJcInVzZSBzdHJpY3RcIjtcblwidXNlIGNsaWVudFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX2NyZWF0ZVN2Z0ljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWxzL2NyZWF0ZVN2Z0ljb25cIikpO1xudmFyIF9qc3hSdW50aW1lID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpO1xudmFyIF9kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0ID0gKDAsIF9jcmVhdGVTdmdJY29uLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9qc3hSdW50aW1lLmpzeCkoXCJwYXRoXCIsIHtcbiAgZDogXCJNNiAzaDEydjJINnptMTEgM0g3Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJtLTEgOWgtMi41djIuNWgtM1YxNUg4di0zaDIuNVY5LjVoM1YxMkgxNnpcIlxufSksICdNZWRpY2F0aW9uJyk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cInVzZSBjbGllbnRcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9jcmVhdGVTdmdJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9jcmVhdGVTdmdJY29uXCIpKTtcbnZhciBfanN4UnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbnZhciBfZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdCA9ICgwLCBfY3JlYXRlU3ZnSWNvbi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfanN4UnVudGltZS5qc3gpKFwicGF0aFwiLCB7XG4gIGQ6IFwiTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMm0tNSAxNEg0di00aDExem0wLTVINFY5aDExem01IDVoLTRWOWg0elwiXG59KSwgJ1dlYicpOyIsIlwidXNlIHN0cmljdFwiO1xuJ3VzZSBjbGllbnQnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfdXRpbHMuY3JlYXRlU3ZnSWNvbjtcbiAgfVxufSk7XG52YXIgX3V0aWxzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXRpbHNcIik7IiwiaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgZnJvbSAnQG11aS91dGlscy9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICdAbXVpL3V0aWxzL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRBY2NvcmRpb25VdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUFjY29yZGlvbicsIHNsb3QpO1xufVxuY29uc3QgYWNjb3JkaW9uQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUFjY29yZGlvbicsIFsncm9vdCcsICdyb3VuZGVkJywgJ2V4cGFuZGVkJywgJ2Rpc2FibGVkJywgJ2d1dHRlcnMnLCAncmVnaW9uJ10pO1xuZXhwb3J0IGRlZmF1bHQgYWNjb3JkaW9uQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImRlZmF1bHRFeHBhbmRlZFwiLCBcImRpc2FibGVkXCIsIFwiZGlzYWJsZUd1dHRlcnNcIiwgXCJleHBhbmRlZFwiLCBcIm9uQ2hhbmdlXCIsIFwic3F1YXJlXCIsIFwic2xvdHNcIiwgXCJzbG90UHJvcHNcIiwgXCJUcmFuc2l0aW9uQ29tcG9uZW50XCIsIFwiVHJhbnNpdGlvblByb3BzXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaXNGcmFnbWVudCB9IGZyb20gJ3JlYWN0LWlzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBjaGFpblByb3BUeXBlcyBmcm9tICdAbXVpL3V0aWxzL2NoYWluUHJvcFR5cGVzJztcbmltcG9ydCBjb21wb3NlQ2xhc3NlcyBmcm9tICdAbXVpL3V0aWxzL2NvbXBvc2VDbGFzc2VzJztcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4uL3plcm8tc3R5bGVkJztcbmltcG9ydCB7IHVzZURlZmF1bHRQcm9wcyB9IGZyb20gJy4uL0RlZmF1bHRQcm9wc1Byb3ZpZGVyJztcbmltcG9ydCBDb2xsYXBzZSBmcm9tICcuLi9Db2xsYXBzZSc7XG5pbXBvcnQgUGFwZXIgZnJvbSAnLi4vUGFwZXInO1xuaW1wb3J0IEFjY29yZGlvbkNvbnRleHQgZnJvbSAnLi9BY2NvcmRpb25Db250ZXh0JztcbmltcG9ydCB1c2VDb250cm9sbGVkIGZyb20gJy4uL3V0aWxzL3VzZUNvbnRyb2xsZWQnO1xuaW1wb3J0IHVzZVNsb3QgZnJvbSAnLi4vdXRpbHMvdXNlU2xvdCc7XG5pbXBvcnQgYWNjb3JkaW9uQ2xhc3NlcywgeyBnZXRBY2NvcmRpb25VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2FjY29yZGlvbkNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIHNxdWFyZSxcbiAgICBleHBhbmRlZCxcbiAgICBkaXNhYmxlZCxcbiAgICBkaXNhYmxlR3V0dGVyc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgIXNxdWFyZSAmJiAncm91bmRlZCcsIGV4cGFuZGVkICYmICdleHBhbmRlZCcsIGRpc2FibGVkICYmICdkaXNhYmxlZCcsICFkaXNhYmxlR3V0dGVycyAmJiAnZ3V0dGVycyddLFxuICAgIHJlZ2lvbjogWydyZWdpb24nXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEFjY29yZGlvblV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgQWNjb3JkaW9uUm9vdCA9IHN0eWxlZChQYXBlciwge1xuICBuYW1lOiAnTXVpQWNjb3JkaW9uJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbe1xuICAgICAgW2AmIC4ke2FjY29yZGlvbkNsYXNzZXMucmVnaW9ufWBdOiBzdHlsZXMucmVnaW9uXG4gICAgfSwgc3R5bGVzLnJvb3QsICFvd25lclN0YXRlLnNxdWFyZSAmJiBzdHlsZXMucm91bmRlZCwgIW93bmVyU3RhdGUuZGlzYWJsZUd1dHRlcnMgJiYgc3R5bGVzLmd1dHRlcnNdO1xuICB9XG59KSgoe1xuICB0aGVtZVxufSkgPT4ge1xuICBjb25zdCB0cmFuc2l0aW9uID0ge1xuICAgIGR1cmF0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVzdFxuICB9O1xuICByZXR1cm4ge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZShbJ21hcmdpbiddLCB0cmFuc2l0aW9uKSxcbiAgICBvdmVyZmxvd0FuY2hvcjogJ25vbmUnLFxuICAgIC8vIEtlZXAgdGhlIHNhbWUgc2Nyb2xsaW5nIHBvc2l0aW9uXG4gICAgJyY6OmJlZm9yZSc6IHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgbGVmdDogMCxcbiAgICAgIHRvcDogLTEsXG4gICAgICByaWdodDogMCxcbiAgICAgIGhlaWdodDogMSxcbiAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmRpdmlkZXIsXG4gICAgICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoWydvcGFjaXR5JywgJ2JhY2tncm91bmQtY29sb3InXSwgdHJhbnNpdGlvbilcbiAgICB9LFxuICAgICcmOmZpcnN0LW9mLXR5cGUnOiB7XG4gICAgICAnJjo6YmVmb3JlJzoge1xuICAgICAgICBkaXNwbGF5OiAnbm9uZSdcbiAgICAgIH1cbiAgICB9LFxuICAgIFtgJi4ke2FjY29yZGlvbkNsYXNzZXMuZXhwYW5kZWR9YF06IHtcbiAgICAgICcmOjpiZWZvcmUnOiB7XG4gICAgICAgIG9wYWNpdHk6IDBcbiAgICAgIH0sXG4gICAgICAnJjpmaXJzdC1vZi10eXBlJzoge1xuICAgICAgICBtYXJnaW5Ub3A6IDBcbiAgICAgIH0sXG4gICAgICAnJjpsYXN0LW9mLXR5cGUnOiB7XG4gICAgICAgIG1hcmdpbkJvdHRvbTogMFxuICAgICAgfSxcbiAgICAgICcmICsgJic6IHtcbiAgICAgICAgJyY6OmJlZm9yZSc6IHtcbiAgICAgICAgICBkaXNwbGF5OiAnbm9uZSdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2AmLiR7YWNjb3JkaW9uQ2xhc3Nlcy5kaXNhYmxlZH1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRCYWNrZ3JvdW5kXG4gICAgfVxuICB9O1xufSwgKHtcbiAgdGhlbWVcbn0pID0+ICh7XG4gIHZhcmlhbnRzOiBbe1xuICAgIHByb3BzOiBwcm9wcyA9PiAhcHJvcHMuc3F1YXJlLFxuICAgIHN0eWxlOiB7XG4gICAgICBib3JkZXJSYWRpdXM6IDAsXG4gICAgICAnJjpmaXJzdC1vZi10eXBlJzoge1xuICAgICAgICBib3JkZXJUb3BMZWZ0UmFkaXVzOiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhcGUuYm9yZGVyUmFkaXVzLFxuICAgICAgICBib3JkZXJUb3BSaWdodFJhZGl1czogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYXBlLmJvcmRlclJhZGl1c1xuICAgICAgfSxcbiAgICAgICcmOmxhc3Qtb2YtdHlwZSc6IHtcbiAgICAgICAgYm9yZGVyQm90dG9tTGVmdFJhZGl1czogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYXBlLmJvcmRlclJhZGl1cyxcbiAgICAgICAgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFwZS5ib3JkZXJSYWRpdXMsXG4gICAgICAgIC8vIEZpeCBhIHJlbmRlcmluZyBpc3N1ZSBvbiBFZGdlXG4gICAgICAgICdAc3VwcG9ydHMgKC1tcy1pbWUtYWxpZ246IGF1dG8pJzoge1xuICAgICAgICAgIGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6IDAsXG4gICAgICAgICAgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIHByb3BzOiBwcm9wcyA9PiAhcHJvcHMuZGlzYWJsZUd1dHRlcnMsXG4gICAgc3R5bGU6IHtcbiAgICAgIFtgJi4ke2FjY29yZGlvbkNsYXNzZXMuZXhwYW5kZWR9YF06IHtcbiAgICAgICAgbWFyZ2luOiAnMTZweCAwJ1xuICAgICAgfVxuICAgIH1cbiAgfV1cbn0pKTtcbmNvbnN0IEFjY29yZGlvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEFjY29yZGlvbihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VEZWZhdWx0UHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlBY2NvcmRpb24nXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5Qcm9wLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgZGVmYXVsdEV4cGFuZGVkID0gZmFsc2UsXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgZGlzYWJsZUd1dHRlcnMgPSBmYWxzZSxcbiAgICAgIGV4cGFuZGVkOiBleHBhbmRlZFByb3AsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIHNxdWFyZSA9IGZhbHNlLFxuICAgICAgc2xvdHMgPSB7fSxcbiAgICAgIHNsb3RQcm9wcyA9IHt9LFxuICAgICAgVHJhbnNpdGlvbkNvbXBvbmVudDogVHJhbnNpdGlvbkNvbXBvbmVudFByb3AsXG4gICAgICBUcmFuc2l0aW9uUHJvcHM6IFRyYW5zaXRpb25Qcm9wc1Byb3BcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgW2V4cGFuZGVkLCBzZXRFeHBhbmRlZFN0YXRlXSA9IHVzZUNvbnRyb2xsZWQoe1xuICAgIGNvbnRyb2xsZWQ6IGV4cGFuZGVkUHJvcCxcbiAgICBkZWZhdWx0OiBkZWZhdWx0RXhwYW5kZWQsXG4gICAgbmFtZTogJ0FjY29yZGlvbicsXG4gICAgc3RhdGU6ICdleHBhbmRlZCdcbiAgfSk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGV2ZW50ID0+IHtcbiAgICBzZXRFeHBhbmRlZFN0YXRlKCFleHBhbmRlZCk7XG4gICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICBvbkNoYW5nZShldmVudCwgIWV4cGFuZGVkKTtcbiAgICB9XG4gIH0sIFtleHBhbmRlZCwgb25DaGFuZ2UsIHNldEV4cGFuZGVkU3RhdGVdKTtcbiAgY29uc3QgW3N1bW1hcnksIC4uLmNoaWxkcmVuXSA9IFJlYWN0LkNoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW5Qcm9wKTtcbiAgY29uc3QgY29udGV4dFZhbHVlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGV4cGFuZGVkLFxuICAgIGRpc2FibGVkLFxuICAgIGRpc2FibGVHdXR0ZXJzLFxuICAgIHRvZ2dsZTogaGFuZGxlQ2hhbmdlXG4gIH0pLCBbZXhwYW5kZWQsIGRpc2FibGVkLCBkaXNhYmxlR3V0dGVycywgaGFuZGxlQ2hhbmdlXSk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBzcXVhcmUsXG4gICAgZGlzYWJsZWQsXG4gICAgZGlzYWJsZUd1dHRlcnMsXG4gICAgZXhwYW5kZWRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3QgYmFja3dhcmRDb21wYXRpYmxlU2xvdHMgPSBfZXh0ZW5kcyh7XG4gICAgdHJhbnNpdGlvbjogVHJhbnNpdGlvbkNvbXBvbmVudFByb3BcbiAgfSwgc2xvdHMpO1xuICBjb25zdCBiYWNrd2FyZENvbXBhdGlibGVTbG90UHJvcHMgPSBfZXh0ZW5kcyh7XG4gICAgdHJhbnNpdGlvbjogVHJhbnNpdGlvblByb3BzUHJvcFxuICB9LCBzbG90UHJvcHMpO1xuICBjb25zdCBbVHJhbnNpdGlvblNsb3QsIHRyYW5zaXRpb25Qcm9wc10gPSB1c2VTbG90KCd0cmFuc2l0aW9uJywge1xuICAgIGVsZW1lbnRUeXBlOiBDb2xsYXBzZSxcbiAgICBleHRlcm5hbEZvcndhcmRlZFByb3BzOiB7XG4gICAgICBzbG90czogYmFja3dhcmRDb21wYXRpYmxlU2xvdHMsXG4gICAgICBzbG90UHJvcHM6IGJhY2t3YXJkQ29tcGF0aWJsZVNsb3RQcm9wc1xuICAgIH0sXG4gICAgb3duZXJTdGF0ZVxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhBY2NvcmRpb25Sb290LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICByZWY6IHJlZixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIHNxdWFyZTogc3F1YXJlXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeChBY2NvcmRpb25Db250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZTogY29udGV4dFZhbHVlLFxuICAgICAgY2hpbGRyZW46IHN1bW1hcnlcbiAgICB9KSwgLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvblNsb3QsIF9leHRlbmRzKHtcbiAgICAgIGluOiBleHBhbmRlZCxcbiAgICAgIHRpbWVvdXQ6IFwiYXV0b1wiXG4gICAgfSwgdHJhbnNpdGlvblByb3BzLCB7XG4gICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBzdW1tYXJ5LnByb3BzLmlkLFxuICAgICAgICBpZDogc3VtbWFyeS5wcm9wc1snYXJpYS1jb250cm9scyddLFxuICAgICAgICByb2xlOiBcInJlZ2lvblwiLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMucmVnaW9uLFxuICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICAgIH0pXG4gICAgfSkpXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEFjY29yZGlvbi5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8g4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIFdhcm5pbmcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gIC8vIOKUgiBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMuIOKUglxuICAvLyDilIIgICAgVG8gdXBkYXRlIHRoZW0sIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIGBwbnBtIHByb3B0eXBlc2AuICAgICDilIJcbiAgLy8g4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IGNoYWluUHJvcFR5cGVzKFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsIHByb3BzID0+IHtcbiAgICBjb25zdCBzdW1tYXJ5ID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheShwcm9wcy5jaGlsZHJlbilbMF07XG4gICAgaWYgKGlzRnJhZ21lbnQoc3VtbWFyeSkpIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoXCJNVUk6IFRoZSBBY2NvcmRpb24gZG9lc24ndCBhY2NlcHQgYSBGcmFnbWVudCBhcyBhIGNoaWxkLiBcIiArICdDb25zaWRlciBwcm92aWRpbmcgYW4gYXJyYXkgaW5zdGVhZC4nKTtcbiAgICB9XG4gICAgaWYgKCEgLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KHN1bW1hcnkpKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKCdNVUk6IEV4cGVjdGVkIHRoZSBmaXJzdCBjaGlsZCBvZiBBY2NvcmRpb24gdG8gYmUgYSB2YWxpZCBlbGVtZW50LicpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSksXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBleHBhbmRzIHRoZSBhY2NvcmRpb24gYnkgZGVmYXVsdC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRlZmF1bHRFeHBhbmRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGl0IHJlbW92ZXMgdGhlIG1hcmdpbiBiZXR3ZWVuIHR3byBleHBhbmRlZCBhY2NvcmRpb24gaXRlbXMgYW5kIHRoZSBpbmNyZWFzZSBvZiBoZWlnaHQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlR3V0dGVyczogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGV4cGFuZHMgdGhlIGFjY29yZGlvbiwgb3RoZXJ3aXNlIGNvbGxhcHNlIGl0LlxuICAgKiBTZXR0aW5nIHRoaXMgcHJvcCBlbmFibGVzIGNvbnRyb2wgb3ZlciB0aGUgYWNjb3JkaW9uLlxuICAgKi9cbiAgZXhwYW5kZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgZXhwYW5kL2NvbGxhcHNlIHN0YXRlIGlzIGNoYW5nZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3QuU3ludGhldGljRXZlbnR9IGV2ZW50IFRoZSBldmVudCBzb3VyY2Ugb2YgdGhlIGNhbGxiYWNrLiAqKldhcm5pbmcqKjogVGhpcyBpcyBhIGdlbmVyaWMgZXZlbnQgbm90IGEgY2hhbmdlIGV2ZW50LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGV4cGFuZGVkIFRoZSBgZXhwYW5kZWRgIHN0YXRlIG9mIHRoZSBhY2NvcmRpb24uXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBUaGUgcHJvcHMgdXNlZCBmb3IgZWFjaCBzbG90IGluc2lkZS5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICB0cmFuc2l0aW9uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG4gIH0pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudHMgdXNlZCBmb3IgZWFjaCBzbG90IGluc2lkZS5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIHRyYW5zaXRpb246IFByb3BUeXBlcy5lbGVtZW50VHlwZVxuICB9KSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgcm91bmRlZCBjb3JuZXJzIGFyZSBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHNxdWFyZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSB0cmFuc2l0aW9uLlxuICAgKiBbRm9sbG93IHRoaXMgZ3VpZGVdKC9tYXRlcmlhbC11aS90cmFuc2l0aW9ucy8jdHJhbnNpdGlvbmNvbXBvbmVudC1wcm9wKSB0byBsZWFybiBtb3JlIGFib3V0IHRoZSByZXF1aXJlbWVudHMgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYHNsb3RzLnRyYW5zaXRpb25gIGluc3RlYWQuIFRoaXMgcHJvcCB3aWxsIGJlIHJlbW92ZWQgaW4gdjcuIFtIb3cgdG8gbWlncmF0ZV0oL21hdGVyaWFsLXVpL21pZ3JhdGlvbi9taWdyYXRpbmctZnJvbS1kZXByZWNhdGVkLWFwaXMvKS5cbiAgICovXG4gIFRyYW5zaXRpb25Db21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIFByb3BzIGFwcGxpZWQgdG8gdGhlIHRyYW5zaXRpb24gZWxlbWVudC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGVsZW1lbnQgaXMgYmFzZWQgb24gdGhpcyBbYFRyYW5zaXRpb25gXShodHRwczovL3JlYWN0Y29tbXVuaXR5Lm9yZy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL3RyYW5zaXRpb24vKSBjb21wb25lbnQuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgc2xvdFByb3BzLnRyYW5zaXRpb25gIGluc3RlYWQuIFRoaXMgcHJvcCB3aWxsIGJlIHJlbW92ZWQgaW4gdjcuIFtIb3cgdG8gbWlncmF0ZV0oL21hdGVyaWFsLXVpL21pZ3JhdGlvbi9taWdyYXRpbmctZnJvbS1kZXByZWNhdGVkLWFwaXMvKS5cbiAgICovXG4gIFRyYW5zaXRpb25Qcm9wczogUHJvcFR5cGVzLm9iamVjdFxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IEFjY29yZGlvbjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICogQHR5cGUge1JlYWN0LkNvbnRleHQ8e30gfCB7ZXhwYW5kZWQ6IGJvb2xlYW4sIGRpc2FibGVkOiBib29sZWFuLCB0b2dnbGU6ICgpID0+IHZvaWR9Pn1cbiAqL1xuY29uc3QgQWNjb3JkaW9uQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIEFjY29yZGlvbkNvbnRleHQuZGlzcGxheU5hbWUgPSAnQWNjb3JkaW9uQ29udGV4dCc7XG59XG5leHBvcnQgZGVmYXVsdCBBY2NvcmRpb25Db250ZXh0OyIsImltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGZyb20gJ0BtdWkvdXRpbHMvZ2VuZXJhdGVVdGlsaXR5Q2xhc3Nlcyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnQG11aS91dGlscy9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QWNjb3JkaW9uRGV0YWlsc1V0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQWNjb3JkaW9uRGV0YWlscycsIHNsb3QpO1xufVxuY29uc3QgYWNjb3JkaW9uRGV0YWlsc0NsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlBY2NvcmRpb25EZXRhaWxzJywgWydyb290J10pO1xuZXhwb3J0IGRlZmF1bHQgYWNjb3JkaW9uRGV0YWlsc0NsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IGNvbXBvc2VDbGFzc2VzIGZyb20gJ0BtdWkvdXRpbHMvY29tcG9zZUNsYXNzZXMnO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi4vemVyby1zdHlsZWQnO1xuaW1wb3J0IHsgdXNlRGVmYXVsdFByb3BzIH0gZnJvbSAnLi4vRGVmYXVsdFByb3BzUHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QWNjb3JkaW9uRGV0YWlsc1V0aWxpdHlDbGFzcyB9IGZyb20gJy4vYWNjb3JkaW9uRGV0YWlsc0NsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEFjY29yZGlvbkRldGFpbHNVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IEFjY29yZGlvbkRldGFpbHNSb290ID0gc3R5bGVkKCdkaXYnLCB7XG4gIG5hbWU6ICdNdWlBY2NvcmRpb25EZXRhaWxzJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5yb290XG59KSgoe1xuICB0aGVtZVxufSkgPT4gKHtcbiAgcGFkZGluZzogdGhlbWUuc3BhY2luZygxLCAyLCAyKVxufSkpO1xuY29uc3QgQWNjb3JkaW9uRGV0YWlscyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEFjY29yZGlvbkRldGFpbHMoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlRGVmYXVsdFByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpQWNjb3JkaW9uRGV0YWlscydcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZVxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gcHJvcHM7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEFjY29yZGlvbkRldGFpbHNSb290LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICByZWY6IHJlZixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gIH0sIG90aGVyKSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEFjY29yZGlvbkRldGFpbHMucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCBXYXJuaW5nIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAvLyDilIIgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zLiDilIJcbiAgLy8g4pSCICAgIFRvIHVwZGF0ZSB0aGVtLCBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBgcG5wbSBwcm9wdHlwZXNgLiAgICAg4pSCXG4gIC8vIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBBY2NvcmRpb25EZXRhaWxzOyIsImltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGZyb20gJ0BtdWkvdXRpbHMvZ2VuZXJhdGVVdGlsaXR5Q2xhc3Nlcyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnQG11aS91dGlscy9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QWNjb3JkaW9uU3VtbWFyeVV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQWNjb3JkaW9uU3VtbWFyeScsIHNsb3QpO1xufVxuY29uc3QgYWNjb3JkaW9uU3VtbWFyeUNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlBY2NvcmRpb25TdW1tYXJ5JywgWydyb290JywgJ2V4cGFuZGVkJywgJ2ZvY3VzVmlzaWJsZScsICdkaXNhYmxlZCcsICdndXR0ZXJzJywgJ2NvbnRlbnRHdXR0ZXJzJywgJ2NvbnRlbnQnLCAnZXhwYW5kSWNvbldyYXBwZXInXSk7XG5leHBvcnQgZGVmYXVsdCBhY2NvcmRpb25TdW1tYXJ5Q2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImV4cGFuZEljb25cIiwgXCJmb2N1c1Zpc2libGVDbGFzc05hbWVcIiwgXCJvbkNsaWNrXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IGNvbXBvc2VDbGFzc2VzIGZyb20gJ0BtdWkvdXRpbHMvY29tcG9zZUNsYXNzZXMnO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi4vemVyby1zdHlsZWQnO1xuaW1wb3J0IHsgdXNlRGVmYXVsdFByb3BzIH0gZnJvbSAnLi4vRGVmYXVsdFByb3BzUHJvdmlkZXInO1xuaW1wb3J0IEJ1dHRvbkJhc2UgZnJvbSAnLi4vQnV0dG9uQmFzZSc7XG5pbXBvcnQgQWNjb3JkaW9uQ29udGV4dCBmcm9tICcuLi9BY2NvcmRpb24vQWNjb3JkaW9uQ29udGV4dCc7XG5pbXBvcnQgYWNjb3JkaW9uU3VtbWFyeUNsYXNzZXMsIHsgZ2V0QWNjb3JkaW9uU3VtbWFyeVV0aWxpdHlDbGFzcyB9IGZyb20gJy4vYWNjb3JkaW9uU3VtbWFyeUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIGV4cGFuZGVkLFxuICAgIGRpc2FibGVkLFxuICAgIGRpc2FibGVHdXR0ZXJzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBleHBhbmRlZCAmJiAnZXhwYW5kZWQnLCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLCAhZGlzYWJsZUd1dHRlcnMgJiYgJ2d1dHRlcnMnXSxcbiAgICBmb2N1c1Zpc2libGU6IFsnZm9jdXNWaXNpYmxlJ10sXG4gICAgY29udGVudDogWydjb250ZW50JywgZXhwYW5kZWQgJiYgJ2V4cGFuZGVkJywgIWRpc2FibGVHdXR0ZXJzICYmICdjb250ZW50R3V0dGVycyddLFxuICAgIGV4cGFuZEljb25XcmFwcGVyOiBbJ2V4cGFuZEljb25XcmFwcGVyJywgZXhwYW5kZWQgJiYgJ2V4cGFuZGVkJ11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRBY2NvcmRpb25TdW1tYXJ5VXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBBY2NvcmRpb25TdW1tYXJ5Um9vdCA9IHN0eWxlZChCdXR0b25CYXNlLCB7XG4gIG5hbWU6ICdNdWlBY2NvcmRpb25TdW1tYXJ5JyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5yb290XG59KSgoe1xuICB0aGVtZVxufSkgPT4ge1xuICBjb25zdCB0cmFuc2l0aW9uID0ge1xuICAgIGR1cmF0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVzdFxuICB9O1xuICByZXR1cm4ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBtaW5IZWlnaHQ6IDQ4LFxuICAgIHBhZGRpbmc6IHRoZW1lLnNwYWNpbmcoMCwgMiksXG4gICAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKFsnbWluLWhlaWdodCcsICdiYWNrZ3JvdW5kLWNvbG9yJ10sIHRyYW5zaXRpb24pLFxuICAgIFtgJi4ke2FjY29yZGlvblN1bW1hcnlDbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZm9jdXNcbiAgICB9LFxuICAgIFtgJi4ke2FjY29yZGlvblN1bW1hcnlDbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgICBvcGFjaXR5OiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRPcGFjaXR5XG4gICAgfSxcbiAgICBbYCY6aG92ZXI6bm90KC4ke2FjY29yZGlvblN1bW1hcnlDbGFzc2VzLmRpc2FibGVkfSlgXToge1xuICAgICAgY3Vyc29yOiAncG9pbnRlcidcbiAgICB9LFxuICAgIHZhcmlhbnRzOiBbe1xuICAgICAgcHJvcHM6IHByb3BzID0+ICFwcm9wcy5kaXNhYmxlR3V0dGVycyxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIFtgJi4ke2FjY29yZGlvblN1bW1hcnlDbGFzc2VzLmV4cGFuZGVkfWBdOiB7XG4gICAgICAgICAgbWluSGVpZ2h0OiA2NFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfV1cbiAgfTtcbn0pO1xuY29uc3QgQWNjb3JkaW9uU3VtbWFyeUNvbnRlbnQgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aUFjY29yZGlvblN1bW1hcnknLFxuICBzbG90OiAnQ29udGVudCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLmNvbnRlbnRcbn0pKCh7XG4gIHRoZW1lXG59KSA9PiAoe1xuICBkaXNwbGF5OiAnZmxleCcsXG4gIGZsZXhHcm93OiAxLFxuICBtYXJnaW46ICcxMnB4IDAnLFxuICB2YXJpYW50czogW3tcbiAgICBwcm9wczogcHJvcHMgPT4gIXByb3BzLmRpc2FibGVHdXR0ZXJzLFxuICAgIHN0eWxlOiB7XG4gICAgICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoWydtYXJnaW4nXSwge1xuICAgICAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlc3RcbiAgICAgIH0pLFxuICAgICAgW2AmLiR7YWNjb3JkaW9uU3VtbWFyeUNsYXNzZXMuZXhwYW5kZWR9YF06IHtcbiAgICAgICAgbWFyZ2luOiAnMjBweCAwJ1xuICAgICAgfVxuICAgIH1cbiAgfV1cbn0pKTtcbmNvbnN0IEFjY29yZGlvblN1bW1hcnlFeHBhbmRJY29uV3JhcHBlciA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpQWNjb3JkaW9uU3VtbWFyeScsXG4gIHNsb3Q6ICdFeHBhbmRJY29uV3JhcHBlcicsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLmV4cGFuZEljb25XcmFwcGVyXG59KSgoe1xuICB0aGVtZVxufSkgPT4gKHtcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmFjdGl2ZSxcbiAgdHJhbnNmb3JtOiAncm90YXRlKDBkZWcpJyxcbiAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCd0cmFuc2Zvcm0nLCB7XG4gICAgZHVyYXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXN0XG4gIH0pLFxuICBbYCYuJHthY2NvcmRpb25TdW1tYXJ5Q2xhc3Nlcy5leHBhbmRlZH1gXToge1xuICAgIHRyYW5zZm9ybTogJ3JvdGF0ZSgxODBkZWcpJ1xuICB9XG59KSk7XG5jb25zdCBBY2NvcmRpb25TdW1tYXJ5ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQWNjb3JkaW9uU3VtbWFyeShpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VEZWZhdWx0UHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlBY2NvcmRpb25TdW1tYXJ5J1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBleHBhbmRJY29uLFxuICAgICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lLFxuICAgICAgb25DbGlja1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCB7XG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICBkaXNhYmxlR3V0dGVycyxcbiAgICBleHBhbmRlZCxcbiAgICB0b2dnbGVcbiAgfSA9IFJlYWN0LnVzZUNvbnRleHQoQWNjb3JkaW9uQ29udGV4dCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IGV2ZW50ID0+IHtcbiAgICBpZiAodG9nZ2xlKSB7XG4gICAgICB0b2dnbGUoZXZlbnQpO1xuICAgIH1cbiAgICBpZiAob25DbGljaykge1xuICAgICAgb25DbGljayhldmVudCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgZXhwYW5kZWQsXG4gICAgZGlzYWJsZWQsXG4gICAgZGlzYWJsZUd1dHRlcnNcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhBY2NvcmRpb25TdW1tYXJ5Um9vdCwgX2V4dGVuZHMoe1xuICAgIGZvY3VzUmlwcGxlOiBmYWxzZSxcbiAgICBkaXNhYmxlUmlwcGxlOiB0cnVlLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBjb21wb25lbnQ6IFwiZGl2XCIsXG4gICAgXCJhcmlhLWV4cGFuZGVkXCI6IGV4cGFuZGVkLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMuZm9jdXNWaXNpYmxlLCBmb2N1c1Zpc2libGVDbGFzc05hbWUpLFxuICAgIG9uQ2xpY2s6IGhhbmRsZUNoYW5nZSxcbiAgICByZWY6IHJlZixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeChBY2NvcmRpb25TdW1tYXJ5Q29udGVudCwge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLmNvbnRlbnQsXG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSksIGV4cGFuZEljb24gJiYgLyojX19QVVJFX18qL19qc3goQWNjb3JkaW9uU3VtbWFyeUV4cGFuZEljb25XcmFwcGVyLCB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMuZXhwYW5kSWNvbldyYXBwZXIsXG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgY2hpbGRyZW46IGV4cGFuZEljb25cbiAgICB9KV1cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBBY2NvcmRpb25TdW1tYXJ5LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgV2FybmluZyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgLy8g4pSCIFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucy4g4pSCXG4gIC8vIOKUgiAgICBUbyB1cGRhdGUgdGhlbSwgZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gYHBucG0gcHJvcHR5cGVzYC4gICAgIOKUglxuICAvLyDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGljb24gdG8gZGlzcGxheSBhcyB0aGUgZXhwYW5kIGluZGljYXRvci5cbiAgICovXG4gIGV4cGFuZEljb246IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogVGhpcyBwcm9wIGNhbiBoZWxwIGlkZW50aWZ5IHdoaWNoIGVsZW1lbnQgaGFzIGtleWJvYXJkIGZvY3VzLlxuICAgKiBUaGUgY2xhc3MgbmFtZSB3aWxsIGJlIGFwcGxpZWQgd2hlbiB0aGUgZWxlbWVudCBnYWlucyB0aGUgZm9jdXMgdGhyb3VnaCBrZXlib2FyZCBpbnRlcmFjdGlvbi5cbiAgICogSXQncyBhIHBvbHlmaWxsIGZvciB0aGUgW0NTUyA6Zm9jdXMtdmlzaWJsZSBzZWxlY3Rvcl0oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3NlbGVjdG9ycy00LyN0aGUtZm9jdXMtdmlzaWJsZS1wc2V1ZG8pLlxuICAgKiBUaGUgcmF0aW9uYWxlIGZvciB1c2luZyB0aGlzIGZlYXR1cmUgW2lzIGV4cGxhaW5lZCBoZXJlXShodHRwczovL2dpdGh1Yi5jb20vV0lDRy9mb2N1cy12aXNpYmxlL2Jsb2IvSEVBRC9leHBsYWluZXIubWQpLlxuICAgKiBBIFtwb2x5ZmlsbCBjYW4gYmUgdXNlZF0oaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvZm9jdXMtdmlzaWJsZSkgdG8gYXBwbHkgYSBgZm9jdXMtdmlzaWJsZWAgY2xhc3MgdG8gb3RoZXIgY29tcG9uZW50c1xuICAgKiBpZiBuZWVkZWQuXG4gICAqL1xuICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IEFjY29yZGlvblN1bW1hcnk7IiwiaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgZnJvbSAnQG11aS91dGlscy9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICdAbXVpL3V0aWxzL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRBcHBCYXJVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUFwcEJhcicsIHNsb3QpO1xufVxuY29uc3QgYXBwQmFyQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUFwcEJhcicsIFsncm9vdCcsICdwb3NpdGlvbkZpeGVkJywgJ3Bvc2l0aW9uQWJzb2x1dGUnLCAncG9zaXRpb25TdGlja3knLCAncG9zaXRpb25TdGF0aWMnLCAncG9zaXRpb25SZWxhdGl2ZScsICdjb2xvckRlZmF1bHQnLCAnY29sb3JQcmltYXJ5JywgJ2NvbG9yU2Vjb25kYXJ5JywgJ2NvbG9ySW5oZXJpdCcsICdjb2xvclRyYW5zcGFyZW50JywgJ2NvbG9yRXJyb3InLCAnY29sb3JJbmZvJywgJ2NvbG9yU3VjY2VzcycsICdjb2xvcldhcm5pbmcnXSk7XG5leHBvcnQgZGVmYXVsdCBhcHBCYXJDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiZW5hYmxlQ29sb3JPbkRhcmtcIiwgXCJwb3NpdGlvblwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBjb21wb3NlQ2xhc3NlcyBmcm9tICdAbXVpL3V0aWxzL2NvbXBvc2VDbGFzc2VzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgeyB1c2VEZWZhdWx0UHJvcHMgfSBmcm9tICcuLi9EZWZhdWx0UHJvcHNQcm92aWRlcic7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCBQYXBlciBmcm9tICcuLi9QYXBlcic7XG5pbXBvcnQgeyBnZXRBcHBCYXJVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2FwcEJhckNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xvcixcbiAgICBwb3NpdGlvbixcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWAsIGBwb3NpdGlvbiR7Y2FwaXRhbGl6ZShwb3NpdGlvbil9YF1cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRBcHBCYXJVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcblxuLy8gdmFyMiBpcyB0aGUgZmFsbGJhY2suXG4vLyBFeC4gdmFyMTogJ3ZhcigtLWEpJywgdmFyMjogJ3ZhcigtLWIpJzsgcmV0dXJuOiAndmFyKC0tYSwgdmFyKC0tYikpJ1xuY29uc3Qgam9pblZhcnMgPSAodmFyMSwgdmFyMikgPT4gdmFyMSA/IGAke3ZhcjEgPT0gbnVsbCA/IHZvaWQgMCA6IHZhcjEucmVwbGFjZSgnKScsICcnKX0sICR7dmFyMn0pYCA6IHZhcjI7XG5jb25zdCBBcHBCYXJSb290ID0gc3R5bGVkKFBhcGVyLCB7XG4gIG5hbWU6ICdNdWlBcHBCYXInLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW2Bwb3NpdGlvbiR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnBvc2l0aW9uKX1gXSwgc3R5bGVzW2Bjb2xvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiB7XG4gIGNvbnN0IGJhY2tncm91bmRDb2xvckRlZmF1bHQgPSB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyB0aGVtZS5wYWxldHRlLmdyZXlbMTAwXSA6IHRoZW1lLnBhbGV0dGUuZ3JleVs5MDBdO1xuICByZXR1cm4gX2V4dGVuZHMoe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIC8vIFByZXZlbnQgcGFkZGluZyBpc3N1ZSB3aXRoIHRoZSBNb2RhbCBhbmQgZml4ZWQgcG9zaXRpb25lZCBBcHBCYXIuXG4gICAgZmxleFNocmluazogMFxuICB9LCBvd25lclN0YXRlLnBvc2l0aW9uID09PSAnZml4ZWQnICYmIHtcbiAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICB6SW5kZXg6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS56SW5kZXguYXBwQmFyLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiAnYXV0bycsXG4gICAgcmlnaHQ6IDAsXG4gICAgJ0BtZWRpYSBwcmludCc6IHtcbiAgICAgIC8vIFByZXZlbnQgdGhlIGFwcCBiYXIgdG8gYmUgdmlzaWJsZSBvbiBlYWNoIHByaW50ZWQgcGFnZS5cbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgfVxuICB9LCBvd25lclN0YXRlLnBvc2l0aW9uID09PSAnYWJzb2x1dGUnICYmIHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB6SW5kZXg6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS56SW5kZXguYXBwQmFyLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiAnYXV0bycsXG4gICAgcmlnaHQ6IDBcbiAgfSwgb3duZXJTdGF0ZS5wb3NpdGlvbiA9PT0gJ3N0aWNreScgJiYge1xuICAgIC8vIOKaoO+4jyBzdGlja3kgaXMgbm90IHN1cHBvcnRlZCBieSBJRTExLlxuICAgIHBvc2l0aW9uOiAnc3RpY2t5JyxcbiAgICB6SW5kZXg6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS56SW5kZXguYXBwQmFyLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiAnYXV0bycsXG4gICAgcmlnaHQ6IDBcbiAgfSwgb3duZXJTdGF0ZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYge1xuICAgIHBvc2l0aW9uOiAnc3RhdGljJ1xuICB9LCBvd25lclN0YXRlLnBvc2l0aW9uID09PSAncmVsYXRpdmUnICYmIHtcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJ1xuICB9LCAhdGhlbWUudmFycyAmJiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5jb2xvciA9PT0gJ2RlZmF1bHQnICYmIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvckRlZmF1bHQsXG4gICAgY29sb3I6IHRoZW1lLnBhbGV0dGUuZ2V0Q29udHJhc3RUZXh0KGJhY2tncm91bmRDb2xvckRlZmF1bHQpXG4gIH0sIG93bmVyU3RhdGUuY29sb3IgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2RlZmF1bHQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAndHJhbnNwYXJlbnQnICYmIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbixcbiAgICBjb2xvcjogdGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5jb250cmFzdFRleHRcbiAgfSwgb3duZXJTdGF0ZS5jb2xvciA9PT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogJ2luaGVyaXQnXG4gIH0sIHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2RhcmsnICYmICFvd25lclN0YXRlLmVuYWJsZUNvbG9yT25EYXJrICYmIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IG51bGwsXG4gICAgY29sb3I6IG51bGxcbiAgfSwgb3duZXJTdGF0ZS5jb2xvciA9PT0gJ3RyYW5zcGFyZW50JyAmJiBfZXh0ZW5kcyh7XG4gICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgIGNvbG9yOiAnaW5oZXJpdCdcbiAgfSwgdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnZGFyaycgJiYge1xuICAgIGJhY2tncm91bmRJbWFnZTogJ25vbmUnXG4gIH0pKSwgdGhlbWUudmFycyAmJiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5jb2xvciA9PT0gJ2RlZmF1bHQnICYmIHtcbiAgICAnLS1BcHBCYXItYmFja2dyb3VuZCc6IG93bmVyU3RhdGUuZW5hYmxlQ29sb3JPbkRhcmsgPyB0aGVtZS52YXJzLnBhbGV0dGUuQXBwQmFyLmRlZmF1bHRCZyA6IGpvaW5WYXJzKHRoZW1lLnZhcnMucGFsZXR0ZS5BcHBCYXIuZGFya0JnLCB0aGVtZS52YXJzLnBhbGV0dGUuQXBwQmFyLmRlZmF1bHRCZyksXG4gICAgJy0tQXBwQmFyLWNvbG9yJzogb3duZXJTdGF0ZS5lbmFibGVDb2xvck9uRGFyayA/IHRoZW1lLnZhcnMucGFsZXR0ZS50ZXh0LnByaW1hcnkgOiBqb2luVmFycyh0aGVtZS52YXJzLnBhbGV0dGUuQXBwQmFyLmRhcmtDb2xvciwgdGhlbWUudmFycy5wYWxldHRlLnRleHQucHJpbWFyeSlcbiAgfSwgb3duZXJTdGF0ZS5jb2xvciAmJiAhb3duZXJTdGF0ZS5jb2xvci5tYXRjaCgvXihkZWZhdWx0fGluaGVyaXR8dHJhbnNwYXJlbnQpJC8pICYmIHtcbiAgICAnLS1BcHBCYXItYmFja2dyb3VuZCc6IG93bmVyU3RhdGUuZW5hYmxlQ29sb3JPbkRhcmsgPyB0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiA6IGpvaW5WYXJzKHRoZW1lLnZhcnMucGFsZXR0ZS5BcHBCYXIuZGFya0JnLCB0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiksXG4gICAgJy0tQXBwQmFyLWNvbG9yJzogb3duZXJTdGF0ZS5lbmFibGVDb2xvck9uRGFyayA/IHRoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5jb250cmFzdFRleHQgOiBqb2luVmFycyh0aGVtZS52YXJzLnBhbGV0dGUuQXBwQmFyLmRhcmtDb2xvciwgdGhlbWUudmFycy5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLmNvbnRyYXN0VGV4dClcbiAgfSwgIVsnaW5oZXJpdCcsICd0cmFuc3BhcmVudCddLmluY2x1ZGVzKG93bmVyU3RhdGUuY29sb3IpICYmIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1BcHBCYXItYmFja2dyb3VuZCknXG4gIH0sIHtcbiAgICBjb2xvcjogb3duZXJTdGF0ZS5jb2xvciA9PT0gJ2luaGVyaXQnID8gJ2luaGVyaXQnIDogJ3ZhcigtLUFwcEJhci1jb2xvciknXG4gIH0sIG93bmVyU3RhdGUuY29sb3IgPT09ICd0cmFuc3BhcmVudCcgJiYge1xuICAgIGJhY2tncm91bmRJbWFnZTogJ25vbmUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICBjb2xvcjogJ2luaGVyaXQnXG4gIH0pKTtcbn0pO1xuY29uc3QgQXBwQmFyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQXBwQmFyKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZURlZmF1bHRQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUFwcEJhcidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbG9yID0gJ3ByaW1hcnknLFxuICAgICAgZW5hYmxlQ29sb3JPbkRhcmsgPSBmYWxzZSxcbiAgICAgIHBvc2l0aW9uID0gJ2ZpeGVkJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29sb3IsXG4gICAgcG9zaXRpb24sXG4gICAgZW5hYmxlQ29sb3JPbkRhcmtcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEFwcEJhclJvb3QsIF9leHRlbmRzKHtcbiAgICBzcXVhcmU6IHRydWUsXG4gICAgY29tcG9uZW50OiBcImhlYWRlclwiLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgZWxldmF0aW9uOiA0LFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSwgcG9zaXRpb24gPT09ICdmaXhlZCcgJiYgJ211aS1maXhlZCcpLFxuICAgIHJlZjogcmVmXG4gIH0sIG90aGVyKSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEFwcEJhci5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8g4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIFdhcm5pbmcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gIC8vIOKUgiBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMuIOKUglxuICAvLyDilIIgICAgVG8gdXBkYXRlIHRoZW0sIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIGBwbnBtIHByb3B0eXBlc2AuICAgICDilIJcbiAgLy8g4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jY3VzdG9tLWNvbG9ycykuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnZGVmYXVsdCcsICdpbmhlcml0JywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ3RyYW5zcGFyZW50JywgJ2Vycm9yJywgJ2luZm8nLCAnc3VjY2VzcycsICd3YXJuaW5nJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYGNvbG9yYCBwcm9wIGlzIGFwcGxpZWQgaW4gZGFyayBtb2RlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZW5hYmxlQ29sb3JPbkRhcms6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uaW5nIHR5cGUuIFRoZSBiZWhhdmlvciBvZiB0aGUgZGlmZmVyZW50IG9wdGlvbnMgaXMgZGVzY3JpYmVkXG4gICAqIFtpbiB0aGUgTUROIHdlYiBkb2NzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0xlYXJuL0NTUy9DU1NfbGF5b3V0L1Bvc2l0aW9uaW5nKS5cbiAgICogTm90ZTogYHN0aWNreWAgaXMgbm90IHVuaXZlcnNhbGx5IHN1cHBvcnRlZCBhbmQgd2lsbCBmYWxsIGJhY2sgdG8gYHN0YXRpY2Agd2hlbiB1bmF2YWlsYWJsZS5cbiAgICogQGRlZmF1bHQgJ2ZpeGVkJ1xuICAgKi9cbiAgcG9zaXRpb246IFByb3BUeXBlcy5vbmVPZihbJ2Fic29sdXRlJywgJ2ZpeGVkJywgJ3JlbGF0aXZlJywgJ3N0YXRpYycsICdzdGlja3knXSksXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBBcHBCYXI7IiwiaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgZnJvbSAnQG11aS91dGlscy9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICdAbXVpL3V0aWxzL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRCYWNrZHJvcFV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQmFja2Ryb3AnLCBzbG90KTtcbn1cbmNvbnN0IGJhY2tkcm9wQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUJhY2tkcm9wJywgWydyb290JywgJ2ludmlzaWJsZSddKTtcbmV4cG9ydCBkZWZhdWx0IGJhY2tkcm9wQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbXBvbmVudFwiLCBcImNvbXBvbmVudHNcIiwgXCJjb21wb25lbnRzUHJvcHNcIiwgXCJpbnZpc2libGVcIiwgXCJvcGVuXCIsIFwic2xvdFByb3BzXCIsIFwic2xvdHNcIiwgXCJUcmFuc2l0aW9uQ29tcG9uZW50XCIsIFwidHJhbnNpdGlvbkR1cmF0aW9uXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IGNvbXBvc2VDbGFzc2VzIGZyb20gJ0BtdWkvdXRpbHMvY29tcG9zZUNsYXNzZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB7IHVzZURlZmF1bHRQcm9wcyB9IGZyb20gJy4uL0RlZmF1bHRQcm9wc1Byb3ZpZGVyJztcbmltcG9ydCBGYWRlIGZyb20gJy4uL0ZhZGUnO1xuaW1wb3J0IHsgZ2V0QmFja2Ryb3BVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2JhY2tkcm9wQ2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXMsXG4gICAgaW52aXNpYmxlXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBpbnZpc2libGUgJiYgJ2ludmlzaWJsZSddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0QmFja2Ryb3BVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IEJhY2tkcm9wUm9vdCA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpQmFja2Ryb3AnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgb3duZXJTdGF0ZS5pbnZpc2libGUgJiYgc3R5bGVzLmludmlzaWJsZV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgcG9zaXRpb246ICdmaXhlZCcsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgcmlnaHQ6IDAsXG4gIGJvdHRvbTogMCxcbiAgdG9wOiAwLFxuICBsZWZ0OiAwLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDAuNSknLFxuICBXZWJraXRUYXBIaWdobGlnaHRDb2xvcjogJ3RyYW5zcGFyZW50J1xufSwgb3duZXJTdGF0ZS5pbnZpc2libGUgJiYge1xuICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbn0pKTtcbmNvbnN0IEJhY2tkcm9wID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQmFja2Ryb3AoaW5Qcm9wcywgcmVmKSB7XG4gIHZhciBfc2xvdFByb3BzJHJvb3QsIF9yZWYsIF9zbG90cyRyb290O1xuICBjb25zdCBwcm9wcyA9IHVzZURlZmF1bHRQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUJhY2tkcm9wJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb21wb25lbnQgPSAnZGl2JyxcbiAgICAgIGNvbXBvbmVudHMgPSB7fSxcbiAgICAgIGNvbXBvbmVudHNQcm9wcyA9IHt9LFxuICAgICAgaW52aXNpYmxlID0gZmFsc2UsXG4gICAgICBvcGVuLFxuICAgICAgc2xvdFByb3BzID0ge30sXG4gICAgICBzbG90cyA9IHt9LFxuICAgICAgVHJhbnNpdGlvbkNvbXBvbmVudCA9IEZhZGUsXG4gICAgICB0cmFuc2l0aW9uRHVyYXRpb25cbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbXBvbmVudCxcbiAgICBpbnZpc2libGVcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3Qgcm9vdFNsb3RQcm9wcyA9IChfc2xvdFByb3BzJHJvb3QgPSBzbG90UHJvcHMucm9vdCkgIT0gbnVsbCA/IF9zbG90UHJvcHMkcm9vdCA6IGNvbXBvbmVudHNQcm9wcy5yb290O1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbkNvbXBvbmVudCwgX2V4dGVuZHMoe1xuICAgIGluOiBvcGVuLFxuICAgIHRpbWVvdXQ6IHRyYW5zaXRpb25EdXJhdGlvblxuICB9LCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChCYWNrZHJvcFJvb3QsIF9leHRlbmRzKHtcbiAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZVxuICAgIH0sIHJvb3RTbG90UHJvcHMsIHtcbiAgICAgIGFzOiAoX3JlZiA9IChfc2xvdHMkcm9vdCA9IHNsb3RzLnJvb3QpICE9IG51bGwgPyBfc2xvdHMkcm9vdCA6IGNvbXBvbmVudHMuUm9vdCkgIT0gbnVsbCA/IF9yZWYgOiBjb21wb25lbnQsXG4gICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUsIHJvb3RTbG90UHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IHJvb3RTbG90UHJvcHMuY2xhc3NOYW1lKSxcbiAgICAgIG93bmVyU3RhdGU6IF9leHRlbmRzKHt9LCBvd25lclN0YXRlLCByb290U2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiByb290U2xvdFByb3BzLm93bmVyU3RhdGUpLFxuICAgICAgY2xhc3NlczogY2xhc3NlcyxcbiAgICAgIHJlZjogcmVmLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSkpXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQmFja2Ryb3AucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCBXYXJuaW5nIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAvLyDilIIgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zLiDilIJcbiAgLy8g4pSCICAgIFRvIHVwZGF0ZSB0aGVtLCBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBgcG5wbSBwcm9wdHlwZXNgLiAgICAg4pSCXG4gIC8vIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnRzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUuXG4gICAqXG4gICAqIFRoaXMgcHJvcCBpcyBhbiBhbGlhcyBmb3IgdGhlIGBzbG90c2AgcHJvcC5cbiAgICogSXQncyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGBzbG90c2AgcHJvcCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgY29tcG9uZW50czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBSb290OiBQcm9wVHlwZXMuZWxlbWVudFR5cGVcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgZXh0cmEgcHJvcHMgZm9yIHRoZSBzbG90IGNvbXBvbmVudHMuXG4gICAqIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHByb3BzIG9yIGFkZCBuZXcgb25lcy5cbiAgICpcbiAgICogVGhpcyBwcm9wIGlzIGFuIGFsaWFzIGZvciB0aGUgYHNsb3RQcm9wc2AgcHJvcC5cbiAgICogSXQncyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGBzbG90UHJvcHNgIHByb3AgaW5zdGVhZCwgYXMgYGNvbXBvbmVudHNQcm9wc2Agd2lsbCBiZSBkZXByZWNhdGVkIGluIHRoZSBmdXR1cmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBjb21wb25lbnRzUHJvcHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgcm9vdDogUHJvcFR5cGVzLm9iamVjdFxuICB9KSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGJhY2tkcm9wIGlzIGludmlzaWJsZS5cbiAgICogSXQgY2FuIGJlIHVzZWQgd2hlbiByZW5kZXJpbmcgYSBwb3BvdmVyIG9yIGEgY3VzdG9tIHNlbGVjdCBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbnZpc2libGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIHNob3duLlxuICAgKi9cbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgLyoqXG4gICAqIFRoZSBleHRyYSBwcm9wcyBmb3IgdGhlIHNsb3QgY29tcG9uZW50cy5cbiAgICogWW91IGNhbiBvdmVycmlkZSB0aGUgZXhpc3RpbmcgcHJvcHMgb3IgYWRkIG5ldyBvbmVzLlxuICAgKlxuICAgKiBUaGlzIHByb3AgaXMgYW4gYWxpYXMgZm9yIHRoZSBgY29tcG9uZW50c1Byb3BzYCBwcm9wLCB3aGljaCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICByb290OiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudHMgdXNlZCBmb3IgZWFjaCBzbG90IGluc2lkZS5cbiAgICpcbiAgICogVGhpcyBwcm9wIGlzIGFuIGFsaWFzIGZvciB0aGUgYGNvbXBvbmVudHNgIHByb3AsIHdoaWNoIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgc2xvdHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgcm9vdDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlXG4gIH0pLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgdHJhbnNpdGlvbi5cbiAgICogW0ZvbGxvdyB0aGlzIGd1aWRlXSgvbWF0ZXJpYWwtdWkvdHJhbnNpdGlvbnMvI3RyYW5zaXRpb25jb21wb25lbnQtcHJvcCkgdG8gbGVhcm4gbW9yZSBhYm91dCB0aGUgcmVxdWlyZW1lbnRzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgRmFkZVxuICAgKi9cbiAgVHJhbnNpdGlvbkNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIGR1cmF0aW9uIGZvciB0aGUgdHJhbnNpdGlvbiwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYSBzaW5nbGUgdGltZW91dCBmb3IgYWxsIHRyYW5zaXRpb25zLCBvciBpbmRpdmlkdWFsbHkgd2l0aCBhbiBvYmplY3QuXG4gICAqL1xuICB0cmFuc2l0aW9uRHVyYXRpb246IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYXBwZWFyOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGVudGVyOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGV4aXQ6IFByb3BUeXBlcy5udW1iZXJcbiAgfSldKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IEJhY2tkcm9wOyJdLCJuYW1lcyI6WyJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZXhwb3J0cyIsIl9jcmVhdGVTdmdJY29uIiwiX2pzeFJ1bnRpbWUiLCJkZWZhdWx0IiwianN4IiwiZCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX3V0aWxzIiwiY3JlYXRlU3ZnSWNvbiIsImdldEFjY29yZGlvblV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJfZXhjbHVkZWQiLCJBY2NvcmRpb25Sb290Iiwic3R5bGVkIiwiUGFwZXIiLCJuYW1lIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJwcm9wcyIsInN0eWxlcyIsIm93bmVyU3RhdGUiLCJyZWdpb24iLCJyb290Iiwic3F1YXJlIiwicm91bmRlZCIsImRpc2FibGVHdXR0ZXJzIiwiZ3V0dGVycyIsInRoZW1lIiwidHJhbnNpdGlvbiIsImR1cmF0aW9uIiwidHJhbnNpdGlvbnMiLCJzaG9ydGVzdCIsInBvc2l0aW9uIiwiY3JlYXRlIiwib3ZlcmZsb3dBbmNob3IiLCJsZWZ0IiwidG9wIiwicmlnaHQiLCJoZWlnaHQiLCJjb250ZW50Iiwib3BhY2l0eSIsImJhY2tncm91bmRDb2xvciIsInZhcnMiLCJwYWxldHRlIiwiZGl2aWRlciIsImRpc3BsYXkiLCJleHBhbmRlZCIsIm1hcmdpblRvcCIsIm1hcmdpbkJvdHRvbSIsImRpc2FibGVkIiwiYWN0aW9uIiwiZGlzYWJsZWRCYWNrZ3JvdW5kIiwidmFyaWFudHMiLCJzdHlsZSIsImJvcmRlclJhZGl1cyIsImJvcmRlclRvcExlZnRSYWRpdXMiLCJzaGFwZSIsImJvcmRlclRvcFJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyIsImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzIiwibWFyZ2luIiwiaW5Qcm9wcyIsInJlZiIsImNoaWxkcmVuIiwiY2hpbGRyZW5Qcm9wIiwiY2xhc3NOYW1lIiwiZGVmYXVsdEV4cGFuZGVkIiwiZXhwYW5kZWRQcm9wIiwib25DaGFuZ2UiLCJzbG90cyIsInNsb3RQcm9wcyIsIlRyYW5zaXRpb25Db21wb25lbnQiLCJUcmFuc2l0aW9uQ29tcG9uZW50UHJvcCIsIlRyYW5zaXRpb25Qcm9wcyIsIlRyYW5zaXRpb25Qcm9wc1Byb3AiLCJvdGhlciIsInNldEV4cGFuZGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkIiwiY29udHJvbGxlZCIsInN0YXRlIiwiaGFuZGxlQ2hhbmdlIiwiZXZlbnQiLCJzdW1tYXJ5IiwidG9BcnJheSIsImNvbnRleHRWYWx1ZSIsInRvZ2dsZSIsImNsYXNzZXMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiYmFja3dhcmRDb21wYXRpYmxlU2xvdHMiLCJiYWNrd2FyZENvbXBhdGlibGVTbG90UHJvcHMiLCJUcmFuc2l0aW9uU2xvdCIsInRyYW5zaXRpb25Qcm9wcyIsInVzZVNsb3QiLCJlbGVtZW50VHlwZSIsIkNvbGxhcHNlIiwiZXh0ZXJuYWxGb3J3YXJkZWRQcm9wcyIsImNsc3giLCJBY2NvcmRpb25Db250ZXh0IiwiQSIsIlByb3ZpZGVyIiwiaW4iLCJ0aW1lb3V0IiwiaWQiLCJyb2xlIiwiZ2V0QWNjb3JkaW9uRGV0YWlsc1V0aWxpdHlDbGFzcyIsIkFjY29yZGlvbkRldGFpbHNSb290IiwicGFkZGluZyIsInNwYWNpbmciLCJnZXRBY2NvcmRpb25TdW1tYXJ5VXRpbGl0eUNsYXNzIiwiQWNjb3JkaW9uU3VtbWFyeVJvb3QiLCJCdXR0b25CYXNlIiwibWluSGVpZ2h0IiwiZm9jdXNWaXNpYmxlIiwiZm9jdXMiLCJkaXNhYmxlZE9wYWNpdHkiLCJjdXJzb3IiLCJBY2NvcmRpb25TdW1tYXJ5Q29udGVudCIsImZsZXhHcm93IiwiQWNjb3JkaW9uU3VtbWFyeUV4cGFuZEljb25XcmFwcGVyIiwiZXhwYW5kSWNvbldyYXBwZXIiLCJjb2xvciIsImFjdGl2ZSIsInRyYW5zZm9ybSIsImV4cGFuZEljb24iLCJmb2N1c1Zpc2libGVDbGFzc05hbWUiLCJvbkNsaWNrIiwiZm9jdXNSaXBwbGUiLCJkaXNhYmxlUmlwcGxlIiwiY29tcG9uZW50IiwiZ2V0QXBwQmFyVXRpbGl0eUNsYXNzIiwiam9pblZhcnMiLCJ2YXIxIiwidmFyMiIsInJlcGxhY2UiLCJBcHBCYXJSb290IiwiY2FwaXRhbGl6ZSIsImJhY2tncm91bmRDb2xvckRlZmF1bHQiLCJtb2RlIiwiZ3JleSIsImZsZXhEaXJlY3Rpb24iLCJ3aWR0aCIsImJveFNpemluZyIsImZsZXhTaHJpbmsiLCJ6SW5kZXgiLCJhcHBCYXIiLCJnZXRDb250cmFzdFRleHQiLCJtYWluIiwiY29udHJhc3RUZXh0IiwiZW5hYmxlQ29sb3JPbkRhcmsiLCJiYWNrZ3JvdW5kSW1hZ2UiLCJBcHBCYXIiLCJkZWZhdWx0QmciLCJkYXJrQmciLCJ0ZXh0IiwicHJpbWFyeSIsImRhcmtDb2xvciIsIm1hdGNoIiwiaW5jbHVkZXMiLCJlbGV2YXRpb24iLCJnZXRCYWNrZHJvcFV0aWxpdHlDbGFzcyIsIkJhY2tkcm9wUm9vdCIsImludmlzaWJsZSIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsImJvdHRvbSIsIldlYmtpdFRhcEhpZ2hsaWdodENvbG9yIiwiX3Nsb3RQcm9wcyRyb290IiwiX3JlZiIsIl9zbG90cyRyb290IiwiY29tcG9uZW50cyIsImNvbXBvbmVudHNQcm9wcyIsIm9wZW4iLCJGYWRlIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwicm9vdFNsb3RQcm9wcyIsImFzIiwiUm9vdCJdLCJzb3VyY2VSb290IjoiIn0=