openstack-uicore-foundation 4.1.42 → 4.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/ajaxloader.js +184 -2
- package/lib/components/attendance-tracker.js +2066 -2
- package/lib/components/bulk-actions-selector.js +197 -2
- package/lib/components/circle-button.js +223 -2
- package/lib/components/clock.js +767 -2
- package/lib/components/exclusive-wrapper.js +151 -2
- package/lib/components/extra-questions.js +2011 -2
- package/lib/components/form-validation.js +190 -2
- package/lib/components/forms/rsvp-form.js +940 -2
- package/lib/components/forms/simple-form.js +774 -2
- package/lib/components/free-text-search.js +2154 -2
- package/lib/components/google-map.js +642 -2
- package/lib/components/index.js +13417 -2
- package/lib/components/inputs/access-levels-input.js +2381 -2
- package/lib/components/inputs/action-dropdown.js +219 -2
- package/lib/components/inputs/checkbox-list.js +339 -2
- package/lib/components/inputs/company-input.js +2416 -2
- package/lib/components/inputs/country-dropdown.js +2474 -2
- package/lib/components/inputs/country-input.js +2377 -2
- package/lib/components/inputs/datetimepicker.js +314 -2
- package/lib/components/inputs/dropdown.js +259 -2
- package/lib/components/inputs/editor-input.js +270 -2
- package/lib/components/inputs/event-input.js +2355 -2
- package/lib/components/inputs/free-multi-text-input.js +252 -2
- package/lib/components/inputs/group-input.js +2350 -2
- package/lib/components/inputs/grouped-dropdown.js +244 -2
- package/lib/components/inputs/language-input.js +2382 -2
- package/lib/components/inputs/member-input.js +2377 -2
- package/lib/components/inputs/operator-input.js +328 -2
- package/lib/components/inputs/organization-input.js +2400 -2
- package/lib/components/inputs/promocode-input.js +2385 -2
- package/lib/components/inputs/radio-list.js +297 -2
- package/lib/components/inputs/registration-company-input.js +2438 -2
- package/lib/components/inputs/speaker-input.js +2411 -2
- package/lib/components/inputs/sponsor-input.js +2359 -2
- package/lib/components/inputs/stepped-select.js +197 -2
- package/lib/components/inputs/summit-days-select.js +162 -2
- package/lib/components/inputs/summit-input.js +2357 -2
- package/lib/components/inputs/summit-venues-select.js +203 -2
- package/lib/components/inputs/tag-input.js +2427 -2
- package/lib/components/inputs/text-input.js +202 -2
- package/lib/components/inputs/textarea-input.js +174 -2
- package/lib/components/inputs/ticket-types-input.js +2415 -2
- package/lib/components/inputs/upload-input-v2.js +860 -2
- package/lib/components/inputs/upload-input.js +391 -2
- package/lib/components/progressive-img.js +296 -2
- package/lib/components/raw-html.js +125 -2
- package/lib/components/schedule-builder-constants.js +87 -2
- package/lib/components/schedule-builder-view.js +2188 -2
- package/lib/components/sections/panel.js +156 -2
- package/lib/components/simple-link-list.js +790 -2
- package/lib/components/sponsored-project-input.js +2356 -2
- package/lib/components/summit-dropdown.js +214 -2
- package/lib/components/table-editable.js +961 -2
- package/lib/components/table-selectable.js +552 -2
- package/lib/components/table-sortable.js +743 -2
- package/lib/components/table.js +510 -2
- package/lib/components/video-stream.js +226 -2
- package/lib/css/components/bulk-actions-selector.css +19 -2
- package/lib/css/components/circle-button.css +28 -1
- package/lib/css/components/extra-questions.css +35 -2
- package/lib/css/components/form-validation.css +29 -2
- package/lib/css/components/free-text-search.css +35 -2
- package/lib/css/components/index.css +1397 -3
- package/lib/css/components/inputs/action-dropdown.css +46 -2
- package/lib/css/components/inputs/datetimepicker.css +208 -2
- package/lib/css/components/inputs/grouped-dropdown.css +25 -2
- package/lib/css/components/inputs/stepped-select.css +12 -2
- package/lib/css/components/inputs/upload-input-v2.css +108 -2
- package/lib/css/components/inputs/upload-input.css +43 -2
- package/lib/css/components/progressive-img.css +18 -1
- package/lib/css/components/schedule-builder-view.css +249 -2
- package/lib/css/components/simple-link-list.css +195 -2
- package/lib/css/components/summit-dropdown.css +35 -2
- package/lib/css/components/table-editable.css +145 -2
- package/lib/css/components/table-selectable.css +147 -2
- package/lib/css/components/table-sortable.css +156 -2
- package/lib/css/components/table.css +147 -2
- package/lib/i18n.js +515 -2
- package/lib/models/index.js +238 -2
- package/lib/models/summit-event.js +210 -2
- package/lib/security/abstract-auth-callback-route.js +2192 -2
- package/lib/security/actions.js +1892 -2
- package/lib/security/constants.js +75 -2
- package/lib/security/methods.js +1892 -2
- package/lib/security/reducers.js +2035 -2
- package/lib/security/session-checker.js +2253 -2
- package/lib/utils/actions.js +1892 -2
- package/lib/utils/fragment-parser.js +207 -2
- package/lib/utils/methods.js +435 -2
- package/lib/utils/query-actions.js +2229 -2
- package/lib/utils/questions-set.js +681 -2
- package/lib/utils/reducers.js +1948 -2
- package/lib/utils/use-fit-text.js +178 -2
- package/package.json +1 -1
- package/lib/components/ajaxloader.js.map +0 -1
- package/lib/components/attendance-tracker.js.map +0 -1
- package/lib/components/bulk-actions-selector.js.map +0 -1
- package/lib/components/circle-button.js.map +0 -1
- package/lib/components/clock.js.map +0 -1
- package/lib/components/exclusive-wrapper.js.map +0 -1
- package/lib/components/extra-questions.js.map +0 -1
- package/lib/components/form-validation.js.map +0 -1
- package/lib/components/forms/rsvp-form.js.map +0 -1
- package/lib/components/forms/simple-form.js.map +0 -1
- package/lib/components/free-text-search.js.map +0 -1
- package/lib/components/google-map.js.map +0 -1
- package/lib/components/index.js.map +0 -1
- package/lib/components/inputs/access-levels-input.js.map +0 -1
- package/lib/components/inputs/action-dropdown.js.map +0 -1
- package/lib/components/inputs/checkbox-list.js.map +0 -1
- package/lib/components/inputs/company-input.js.map +0 -1
- package/lib/components/inputs/country-dropdown.js.map +0 -1
- package/lib/components/inputs/country-input.js.map +0 -1
- package/lib/components/inputs/datetimepicker.js.map +0 -1
- package/lib/components/inputs/dropdown.js.map +0 -1
- package/lib/components/inputs/editor-input.js.map +0 -1
- package/lib/components/inputs/event-input.js.map +0 -1
- package/lib/components/inputs/free-multi-text-input.js.map +0 -1
- package/lib/components/inputs/group-input.js.map +0 -1
- package/lib/components/inputs/grouped-dropdown.js.map +0 -1
- package/lib/components/inputs/language-input.js.map +0 -1
- package/lib/components/inputs/member-input.js.map +0 -1
- package/lib/components/inputs/operator-input.js.map +0 -1
- package/lib/components/inputs/organization-input.js.map +0 -1
- package/lib/components/inputs/promocode-input.js.map +0 -1
- package/lib/components/inputs/radio-list.js.map +0 -1
- package/lib/components/inputs/registration-company-input.js.map +0 -1
- package/lib/components/inputs/speaker-input.js.map +0 -1
- package/lib/components/inputs/sponsor-input.js.map +0 -1
- package/lib/components/inputs/stepped-select.js.map +0 -1
- package/lib/components/inputs/summit-days-select.js.map +0 -1
- package/lib/components/inputs/summit-input.js.map +0 -1
- package/lib/components/inputs/summit-venues-select.js.map +0 -1
- package/lib/components/inputs/tag-input.js.map +0 -1
- package/lib/components/inputs/text-input.js.map +0 -1
- package/lib/components/inputs/textarea-input.js.map +0 -1
- package/lib/components/inputs/ticket-types-input.js.map +0 -1
- package/lib/components/inputs/upload-input-v2.js.map +0 -1
- package/lib/components/inputs/upload-input.js.map +0 -1
- package/lib/components/progressive-img.js.map +0 -1
- package/lib/components/raw-html.js.map +0 -1
- package/lib/components/schedule-builder-constants.js.map +0 -1
- package/lib/components/schedule-builder-view.js.map +0 -1
- package/lib/components/sections/panel.js.map +0 -1
- package/lib/components/simple-link-list.js.map +0 -1
- package/lib/components/sponsored-project-input.js.map +0 -1
- package/lib/components/summit-dropdown.js.map +0 -1
- package/lib/components/table-editable.js.map +0 -1
- package/lib/components/table-selectable.js.map +0 -1
- package/lib/components/table-sortable.js.map +0 -1
- package/lib/components/table.js.map +0 -1
- package/lib/components/video-stream.js.map +0 -1
- package/lib/css/components/bulk-actions-selector.css.map +0 -1
- package/lib/css/components/extra-questions.css.map +0 -1
- package/lib/css/components/form-validation.css.map +0 -1
- package/lib/css/components/free-text-search.css.map +0 -1
- package/lib/css/components/index.css.map +0 -1
- package/lib/css/components/inputs/action-dropdown.css.map +0 -1
- package/lib/css/components/inputs/datetimepicker.css.map +0 -1
- package/lib/css/components/inputs/grouped-dropdown.css.map +0 -1
- package/lib/css/components/inputs/stepped-select.css.map +0 -1
- package/lib/css/components/inputs/upload-input-v2.css.map +0 -1
- package/lib/css/components/inputs/upload-input.css.map +0 -1
- package/lib/css/components/schedule-builder-view.css.map +0 -1
- package/lib/css/components/simple-link-list.css.map +0 -1
- package/lib/css/components/summit-dropdown.css.map +0 -1
- package/lib/css/components/table-editable.css.map +0 -1
- package/lib/css/components/table-selectable.css.map +0 -1
- package/lib/css/components/table-sortable.css.map +0 -1
- package/lib/css/components/table.css.map +0 -1
- package/lib/i18n.js.map +0 -1
- package/lib/models/index.js.map +0 -1
- package/lib/models/summit-event.js.map +0 -1
- package/lib/security/abstract-auth-callback-route.js.map +0 -1
- package/lib/security/actions.js.map +0 -1
- package/lib/security/constants.js.map +0 -1
- package/lib/security/methods.js.map +0 -1
- package/lib/security/reducers.js.map +0 -1
- package/lib/security/session-checker.js.map +0 -1
- package/lib/utils/actions.js.map +0 -1
- package/lib/utils/fragment-parser.js.map +0 -1
- package/lib/utils/methods.js.map +0 -1
- package/lib/utils/query-actions.js.map +0 -1
- package/lib/utils/questions-set.js.map +0 -1
- package/lib/utils/reducers.js.map +0 -1
- package/lib/utils/use-fit-text.js.map +0 -1
|
@@ -1,2 +1,940 @@
|
|
|
1
|
-
!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],a):"object"==typeof exports?exports["openstack-uicore-foundation"]=a():e["openstack-uicore-foundation"]=a()}(this,(()=>(()=>{"use strict";var e={2230:(e,a,t)=>{t.d(a,{default:()=>u});var r=t(3838),l=t.n(r),s=t(580),n=t.n(s),o=t(6689),i=t.n(o),h=t(4656),d=t.n(h),p=t(418);const c=["onChange","value","className","options","id","children","error","disabled","name","ariaLabelledBy"];class u extends i().Component{constructor(e){super(e);let a=!!e.value&&e.value.find((a=>!e.options.map((e=>e.value)).includes(a)));this.state={otherChecked:!!a},this.handleChange=this.handleChange.bind(this),this.handleOtherCBChange=this.handleOtherCBChange.bind(this)}handleChange(e){let a=this.props.options.map((e=>e.value)),t=this.props.value?[...this.props.value]:[];if("checkbox"===e.target.type)if(e.target.checked){const a=isNaN(e.target.value)?e.target.value:parseInt(e.target.value);t.push(a)}else t=t.filter((a=>a!=e.target.value));else t=t.filter((e=>a.includes(e))),t.push(e.target.value);let r={target:{id:this.props.id,value:t,type:"checkboxlist"}};this.props.onChange(r)}handleOtherCBChange(e){this.setState({otherChecked:e.target.checked})}render(){let e,a=this.props,{onChange:t,value:r,className:s,options:n,id:o,children:h,error:u,disabled:m,name:b,ariaLabelledBy:v}=a,{otherChecked:f}=(l()(a,c),this.state),g=this.props.hasOwnProperty("inline"),y=this.props.hasOwnProperty("html"),C=this.props.hasOwnProperty("allowOther"),E=!!r&&r.find((e=>!n.map((e=>e.value)).includes(e))),N=this.props.hasOwnProperty("error")&&""!==u,x=this.props.hasOwnProperty("disabled")&&1==m;return e=g?{paddingLeft:"22px",marginLeft:"20px",float:"left"}:{paddingLeft:"22px",marginTop:"7px"},i().createElement("div",{id:`chl_wrapper_${o}`,"aria-labelledby":v},i().createElement("div",{className:"checkboxes-div"+(N?" error":"")},n.map((a=>{let t=!!r&&r.includes(a.value);return i().createElement("div",{className:"form-check abc-checkbox",key:"radio_key_"+a.value,style:e},i().createElement("input",{type:"checkbox",id:`cb_${o}_${a.value}`,name:b||o,checked:t,disabled:x,onChange:this.handleChange,className:"form-check-input",value:a.value}),i().createElement("label",{className:"form-check-label",htmlFor:`cb_${o}_${a.value}`},y&&i().createElement(p.default,null,a.label),!y&&a.label))})),C&&i().createElement("div",{className:"form-check abc-checkbox",style:e},i().createElement("input",{type:"checkbox",id:"cb_other"+o,checked:f,disabled:x,onChange:this.handleOtherCBChange,className:"form-check-input",value:"other"}),i().createElement("label",{className:"form-check-label",htmlFor:"cb_other"+o},d().translate("general.other"))),C&&f&&i().createElement("div",{style:{paddingLeft:"22px",width:"50%"}},i().createElement("input",{className:"form-control",disabled:x,onChange:this.handleChange,value:E}))),N&&i().createElement("p",{className:"error-label"},u))}}u.defaultProps={ariaLabelledBy:null},u.propTypes={id:n().string.isRequired}},401:(e,a,t)=>{t.d(a,{default:()=>v});var r=t(8213),l=t.n(r),s=t(8779),n=t.n(s),o=t(3838),i=t.n(o),h=t(6689),d=t.n(h),p=t(1929),c=t.n(p);const u=["onChange","value","className","error","clearable","disabled","overrideCSS","ariaLabelledBy"];function m(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function b(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?m(Object(t),!0).forEach((function(a){n()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):m(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}class v extends d().Component{constructor(e){super(e),this.handleChange=this.handleChange.bind(this)}handleChange(e){let a=null;a=this.props.isMulti?e?e.map((e=>e.value)):null:e?e.value:null;let t={target:{id:this.props.id,value:a,type:"dropdown"}};this.props.onChange(t)}render(){let e=this.props,{onChange:a,value:t,className:r,error:s,clearable:n,disabled:o,overrideCSS:h,ariaLabelledBy:p}=e,m=i()(e,u),v=this.props.hasOwnProperty("error")&&""!=s,f=this.props.hasOwnProperty("clearable"),g=this.props.hasOwnProperty("disabled")&&1==o,y=null,C=r;this.props.hasOwnProperty("overrideCSS")&&0!=h||(C="dropdown "+r+" "+(v?"error":"")),y=this.props.isMulti?this.props.options.filter((e=>t.includes(e.value))):t instanceof Object||null==t?t:this.props.options.find((e=>e.value==t));const E={menu:e=>b(b({},e),{},{zIndex:999})};return d().createElement("div",null,d().createElement(c(),l()({className:C,value:y,onChange:this.handleChange,isClearable:f,isDisabled:g,styles:E,"aria-labelledby":p},m)),v&&d().createElement("p",{className:"error-label"},s))}}v.defaultProps={ariaLabelledBy:null}},7027:(e,a,t)=>{t.d(a,{default:()=>p});var r=t(3838),l=t.n(r),s=t(6689),n=t.n(s),o=t(418),i=t(580),h=t.n(i);const d=["onChange","value","className","error","ariaLabelledBy","disabled","options","id","name"];class p extends n().Component{constructor(e){super(e),this.state={value:e.value},this.handleChange=this.handleChange.bind(this)}handleChange(e){let a={target:{id:this.props.id,value:e.target.value,type:"radio"}};this.props.onChange(a)}getLabel(e,a,t,r,l){return t?n().createElement("label",{className:"form-check-label",htmlFor:`radio_${a}_${e.value}`,style:{display:"inline-block"}},l&&n().createElement(o.default,null,e.label),!l&&e.label):r?n().createElement("label",{className:"form-check-label",htmlFor:`radio_${a}_${e.value}`},e.label):n().createElement("label",{className:"form-check-label",htmlFor:`radio_${a}_${e.value}`,style:{display:"inline-block"}},n().createElement("h4",{style:{marginTop:"0px"}},e.label),n().createElement(o.default,null,e.description))}render(){let e,a=this.props,{onChange:t,value:r,className:s,error:o,ariaLabelledBy:i,disabled:h,options:p,id:c,name:u}=a,m=(l()(a,d),this.props.hasOwnProperty("error")&&""!=o),b=this.props.hasOwnProperty("inline"),v=this.props.hasOwnProperty("simple"),f=this.props.hasOwnProperty("html"),g=this.props.hasOwnProperty("disabled")&&1==h;return e=b?{paddingLeft:"22px",marginLeft:"20px",float:"left"}:{paddingLeft:"22px"},n().createElement("div",{id:`rl_wrapper_${c}`,"aria-labelledby":i},p.map((a=>{let t=a.value==r;return n().createElement("div",{className:"form-check abc-radio",key:`radio_key_${c}_${a.value}`,style:e},n().createElement("input",{className:"form-check-input",type:"radio",id:`radio_${c}_${a.value}`,value:a.value,checked:t,onChange:this.handleChange,disabled:g,name:u||`radio_${c}`}),this.getLabel(a,c,b,v,f))})),m&&n().createElement("p",{className:"error-label"},o))}}p.defaultProps={ariaLabelledBy:null},p.propTypes={id:h().string.isRequired}},1833:(e,a,t)=>{t.d(a,{default:()=>d});var r=t(8213),l=t.n(r),s=t(3838),n=t.n(s),o=t(6689),i=t.n(o);const h=["onChange","value","className","error","ariaLabelledBy","containerClassName"];class d extends i().Component{constructor(e){super(e),this.handleChange=this.handleChange.bind(this)}componentDidUpdate(e,a,t){this.props.value!==e.value&&(this.input.value=this.props.value)}handleChange(e){this.props.onChange(e)}render(){let e=this.props,{onChange:a,value:t,className:r,error:s,ariaLabelledBy:o,containerClassName:d}=e,p=n()(e,h),c=this.props.hasOwnProperty("error")&&""!==s,u=this.props.hasOwnProperty("className")?r:"form-control",m=this.props.hasOwnProperty("containerClassName")?d:"container-form-control";return i().createElement("div",{className:m},i().createElement("input",l()({className:`${u} ${c?"error":""}`,ref:e=>{this.input=e},defaultValue:t,"aria-labelledby":o,onChange:this.handleChange},p)),c&&i().createElement("p",{className:"error-label"},s))}}d.defaultProps={ariaLabelledBy:null}},418:(e,a,t)=>{t.d(a,{default:()=>s});var r=t(6689),l=t.n(r);const s=({children:e,replaceNewLine:a=!1,className:t=""})=>l().createElement("span",{className:t,dangerouslySetInnerHTML:{__html:a?null==e?void 0:e.replace(/\n/g,"<br />"):e}})},8779:e=>{e.exports=require("@babel/runtime/helpers/defineProperty")},8213:e=>{e.exports=require("@babel/runtime/helpers/extends")},3838:e=>{e.exports=require("@babel/runtime/helpers/objectWithoutProperties")},6471:e=>{e.exports=require("awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css")},4656:e=>{e.exports=require("i18n-react/dist/i18n-react")},580:e=>{e.exports=require("prop-types")},6689:e=>{e.exports=require("react")},1929:e=>{e.exports=require("react-select")}},a={};function t(r){var l=a[r];if(void 0!==l)return l.exports;var s=a[r]={exports:{}};return e[r](s,s.exports,t),s.exports}(()=>{t.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return t.d(a,{a}),a}})(),(()=>{t.d=(e,a)=>{for(var r in a)t.o(a,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:a[r]})}})(),(()=>{t.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a)})(),(()=>{t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})();var r={};return(()=>{t.r(r),t.d(r,{default:()=>d});var e=t(6689),a=t.n(e),l=(t(6471),t(1833)),s=t(401),n=t(418),o=t(2230),i=t(7027);class h extends a().Component{constructor(e){super(e),this.state={answers:e.questions.map((e=>({question_id:e.id,value:null}))),errors:e.errors},this.handleChange=this.handleChange.bind(this),this.hasErrors=this.hasErrors.bind(this),this.handleSubmit=this.handleSubmit.bind(this)}renderQuestion(e){const{answers:t}=this.state,r=t.find((a=>a.question_id===e.id)).value;switch(e.class_name){case"RSVPMemberEmailQuestionTemplate":case"RSVPMemberFirstNameQuestionTemplate":case"RSVPMemberLastNameQuestionTemplate":case"RSVPTextBoxQuestionTemplate":return a().createElement(l.default,{id:e.id,value:r||"",onChange:this.handleChange,className:"form-control",error:this.hasErrors(e.id)});case"RSVPTextAreaQuestionTemplate":return a().createElement("textarea",{id:e.id,value:r||"",className:"form-control",onChange:this.handleChange});case"RSVPLiteralContentQuestionTemplate":return a().createElement("div",null,a().createElement(n.default,null,e.value));case"RSVPCheckBoxListQuestionTemplate":return a().createElement(o.default,{id:e.id,value:r,options:e.values.map((e=>({value:`${e.id}`,label:e.label}))),onChange:this.handleChange,error:this.hasErrors(e.id)});case"RSVPRadioButtonListQuestionTemplate":return a().createElement(i.default,{id:e.id,value:r,onChange:this.handleChange,options:e.values.map((e=>({value:`${e.id}`,label:e.label}))),error:this.hasErrors(e.id),simple:!0});case"RSVPDropDownQuestionTemplate":let t=e.is_country_selector?e.values.map((e=>({value:e.id,label:e.value}))):e.values;return a().createElement(s.default,{id:e.id,isMulti:e.is_multiselect,value:r,onChange:this.handleChange,placeholder:e.empty_string,options:t})}}handleChange(e){let a=[...this.state.answers],{value:t,id:r}=e.target;"datetime"===e.target.type&&(t=t.valueOf()/1e3),a.find((e=>e.question_id===parseInt(r))).value=t,this.setState({answers:a})}hasErrors(e){let{errors:a}=this.state;return e in a?a[e]:""}handleSubmit(e){e.preventDefault();let{onSubmit:a}=this.props,{answers:t}=this.state;a(t)}render(){let{questions:e,onSubmit:t}=this.props;return a().createElement("form",{className:"rsvp-form"},e.map((e=>a().createElement("div",{key:"question_"+e.id,className:"row form-group"},a().createElement("div",{className:"col-md-12"},a().createElement("label",null,a().createElement(n.default,null,e.label)," ",e.is_mandatory&&"*"),this.renderQuestion(e))))),t&&a().createElement("div",{className:"row"},a().createElement("div",{className:"col-md-12"},a().createElement("button",{className:"btn btn-primary",onClick:this.handleSubmit},"Submit"))))}}const d=h})(),r})()));
|
|
2
|
-
|
|
1
|
+
(function webpackUniversalModuleDefinition(root, factory) {
|
|
2
|
+
if(typeof exports === 'object' && typeof module === 'object')
|
|
3
|
+
module.exports = factory();
|
|
4
|
+
else if(typeof define === 'function' && define.amd)
|
|
5
|
+
define("openstack-uicore-foundation", [], factory);
|
|
6
|
+
else if(typeof exports === 'object')
|
|
7
|
+
exports["openstack-uicore-foundation"] = factory();
|
|
8
|
+
else
|
|
9
|
+
root["openstack-uicore-foundation"] = factory();
|
|
10
|
+
})(this, () => {
|
|
11
|
+
return /******/ (() => { // webpackBootstrap
|
|
12
|
+
/******/ "use strict";
|
|
13
|
+
/******/ var __webpack_modules__ = ({
|
|
14
|
+
|
|
15
|
+
/***/ "./src/components/inputs/checkbox-list.js":
|
|
16
|
+
/*!************************************************!*\
|
|
17
|
+
!*** ./src/components/inputs/checkbox-list.js ***!
|
|
18
|
+
\************************************************/
|
|
19
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
20
|
+
|
|
21
|
+
__webpack_require__.r(__webpack_exports__);
|
|
22
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
23
|
+
/* harmony export */ "default": () => (/* binding */ CheckboxList)
|
|
24
|
+
/* harmony export */ });
|
|
25
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
|
|
26
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__);
|
|
27
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
|
|
28
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
|
|
29
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
|
|
30
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
|
|
31
|
+
/* harmony import */ var i18n_react_dist_i18n_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! i18n-react/dist/i18n-react */ "i18n-react/dist/i18n-react");
|
|
32
|
+
/* harmony import */ var i18n_react_dist_i18n_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(i18n_react_dist_i18n_react__WEBPACK_IMPORTED_MODULE_3__);
|
|
33
|
+
/* harmony import */ var _raw_html__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../raw-html */ "./src/components/raw-html/index.js");
|
|
34
|
+
|
|
35
|
+
const _excluded = ["onChange", "value", "className", "options", "id", "children", "error", "disabled", "name", "ariaLabelledBy"];
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Copyright 2018 OpenStack Foundation
|
|
39
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
40
|
+
* you may not use this file except in compliance with the License.
|
|
41
|
+
* You may obtain a copy of the License at
|
|
42
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
43
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
44
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
45
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
46
|
+
* See the License for the specific language governing permissions and
|
|
47
|
+
* limitations under the License.
|
|
48
|
+
**/
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class CheckboxList extends (react__WEBPACK_IMPORTED_MODULE_2___default().Component) {
|
|
54
|
+
constructor(props) {
|
|
55
|
+
super(props);
|
|
56
|
+
let otherValue = props.value ? props.value.find(v => !props.options.map(op => op.value).includes(v)) : false;
|
|
57
|
+
this.state = {
|
|
58
|
+
otherChecked: !!otherValue
|
|
59
|
+
};
|
|
60
|
+
this.handleChange = this.handleChange.bind(this);
|
|
61
|
+
this.handleOtherCBChange = this.handleOtherCBChange.bind(this);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
handleChange(event) {
|
|
65
|
+
let optionValues = this.props.options.map(op => op.value);
|
|
66
|
+
let value = this.props.value ? [...this.props.value] : [];
|
|
67
|
+
|
|
68
|
+
if (event.target.type === 'checkbox') {
|
|
69
|
+
if (event.target.checked) {
|
|
70
|
+
const theVal = isNaN(event.target.value) ? event.target.value : parseInt(event.target.value);
|
|
71
|
+
value.push(theVal);
|
|
72
|
+
} else {
|
|
73
|
+
value = value.filter(v => v != event.target.value);
|
|
74
|
+
}
|
|
75
|
+
} else {
|
|
76
|
+
value = value.filter(v => optionValues.includes(v));
|
|
77
|
+
value.push(event.target.value);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
let ev = {
|
|
81
|
+
target: {
|
|
82
|
+
id: this.props.id,
|
|
83
|
+
value: value,
|
|
84
|
+
type: 'checkboxlist'
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
this.props.onChange(ev);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
handleOtherCBChange(event) {
|
|
91
|
+
this.setState({
|
|
92
|
+
otherChecked: event.target.checked
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
render() {
|
|
97
|
+
let _this$props = this.props,
|
|
98
|
+
{
|
|
99
|
+
onChange,
|
|
100
|
+
value,
|
|
101
|
+
className,
|
|
102
|
+
options,
|
|
103
|
+
id,
|
|
104
|
+
children,
|
|
105
|
+
error,
|
|
106
|
+
disabled,
|
|
107
|
+
name,
|
|
108
|
+
ariaLabelledBy
|
|
109
|
+
} = _this$props,
|
|
110
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(_this$props, _excluded);
|
|
111
|
+
|
|
112
|
+
let {
|
|
113
|
+
otherChecked
|
|
114
|
+
} = this.state;
|
|
115
|
+
let inline = this.props.hasOwnProperty('inline');
|
|
116
|
+
let html = this.props.hasOwnProperty('html');
|
|
117
|
+
let allowOther = this.props.hasOwnProperty('allowOther');
|
|
118
|
+
let otherValue = value ? value.find(v => !options.map(op => op.value).includes(v)) : false;
|
|
119
|
+
let has_error = this.props.hasOwnProperty('error') && error !== '';
|
|
120
|
+
let isDisabled = this.props.hasOwnProperty('disabled') && disabled == true;
|
|
121
|
+
let style, label;
|
|
122
|
+
|
|
123
|
+
if (inline) {
|
|
124
|
+
style = {
|
|
125
|
+
paddingLeft: '22px',
|
|
126
|
+
marginLeft: '20px',
|
|
127
|
+
float: 'left'
|
|
128
|
+
};
|
|
129
|
+
} else {
|
|
130
|
+
style = {
|
|
131
|
+
paddingLeft: '22px',
|
|
132
|
+
marginTop: '7px'
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
|
|
137
|
+
id: `chl_wrapper_${id}`,
|
|
138
|
+
"aria-labelledby": ariaLabelledBy
|
|
139
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
|
|
140
|
+
className: "checkboxes-div" + (has_error ? ' error' : '')
|
|
141
|
+
}, options.map(op => {
|
|
142
|
+
let checked = value ? value.includes(op.value) : false;
|
|
143
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
|
|
144
|
+
className: "form-check abc-checkbox",
|
|
145
|
+
key: "radio_key_" + op.value,
|
|
146
|
+
style: style
|
|
147
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("input", {
|
|
148
|
+
type: "checkbox",
|
|
149
|
+
id: `cb_${id}_${op.value}`,
|
|
150
|
+
name: name ? name : id,
|
|
151
|
+
checked: checked,
|
|
152
|
+
disabled: isDisabled,
|
|
153
|
+
onChange: this.handleChange,
|
|
154
|
+
className: "form-check-input",
|
|
155
|
+
value: op.value
|
|
156
|
+
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("label", {
|
|
157
|
+
className: "form-check-label",
|
|
158
|
+
htmlFor: `cb_${id}_${op.value}`
|
|
159
|
+
}, html && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_raw_html__WEBPACK_IMPORTED_MODULE_4__["default"], null, op.label), !html && op.label));
|
|
160
|
+
}), allowOther && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
|
|
161
|
+
className: "form-check abc-checkbox",
|
|
162
|
+
style: style
|
|
163
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("input", {
|
|
164
|
+
type: "checkbox",
|
|
165
|
+
id: "cb_other" + id,
|
|
166
|
+
checked: otherChecked,
|
|
167
|
+
disabled: isDisabled,
|
|
168
|
+
onChange: this.handleOtherCBChange,
|
|
169
|
+
className: "form-check-input",
|
|
170
|
+
value: "other"
|
|
171
|
+
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("label", {
|
|
172
|
+
className: "form-check-label",
|
|
173
|
+
htmlFor: "cb_other" + id
|
|
174
|
+
}, i18n_react_dist_i18n_react__WEBPACK_IMPORTED_MODULE_3___default().translate("general.other"))), allowOther && otherChecked && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
|
|
175
|
+
style: {
|
|
176
|
+
paddingLeft: '22px',
|
|
177
|
+
width: '50%'
|
|
178
|
+
}
|
|
179
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("input", {
|
|
180
|
+
className: "form-control",
|
|
181
|
+
disabled: isDisabled,
|
|
182
|
+
onChange: this.handleChange,
|
|
183
|
+
value: otherValue
|
|
184
|
+
}))), has_error && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("p", {
|
|
185
|
+
className: "error-label"
|
|
186
|
+
}, error));
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
}
|
|
190
|
+
CheckboxList.defaultProps = {
|
|
191
|
+
ariaLabelledBy: null
|
|
192
|
+
};
|
|
193
|
+
CheckboxList.propTypes = {
|
|
194
|
+
id: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string.isRequired)
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
/***/ }),
|
|
198
|
+
|
|
199
|
+
/***/ "./src/components/inputs/dropdown.js":
|
|
200
|
+
/*!*******************************************!*\
|
|
201
|
+
!*** ./src/components/inputs/dropdown.js ***!
|
|
202
|
+
\*******************************************/
|
|
203
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
204
|
+
|
|
205
|
+
__webpack_require__.r(__webpack_exports__);
|
|
206
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
207
|
+
/* harmony export */ "default": () => (/* binding */ Dropdown)
|
|
208
|
+
/* harmony export */ });
|
|
209
|
+
/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "@babel/runtime/helpers/extends");
|
|
210
|
+
/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);
|
|
211
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
212
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);
|
|
213
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
|
|
214
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__);
|
|
215
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ "react");
|
|
216
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
|
|
217
|
+
/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-select */ "react-select");
|
|
218
|
+
/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_select__WEBPACK_IMPORTED_MODULE_4__);
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
const _excluded = ["onChange", "value", "className", "error", "clearable", "disabled", "overrideCSS", "ariaLabelledBy"];
|
|
223
|
+
|
|
224
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
225
|
+
|
|
226
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Copyright 2017 OpenStack Foundation
|
|
230
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
231
|
+
* you may not use this file except in compliance with the License.
|
|
232
|
+
* You may obtain a copy of the License at
|
|
233
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
234
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
235
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
236
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
237
|
+
* See the License for the specific language governing permissions and
|
|
238
|
+
* limitations under the License.
|
|
239
|
+
**/
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
class Dropdown extends (react__WEBPACK_IMPORTED_MODULE_3___default().Component) {
|
|
243
|
+
constructor(props) {
|
|
244
|
+
super(props);
|
|
245
|
+
this.handleChange = this.handleChange.bind(this);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
handleChange(selection) {
|
|
249
|
+
let value = null;
|
|
250
|
+
|
|
251
|
+
if (this.props.isMulti) {
|
|
252
|
+
value = selection ? selection.map(val => val.value) : null;
|
|
253
|
+
} else {
|
|
254
|
+
value = selection ? selection.value : null;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
let ev = {
|
|
258
|
+
target: {
|
|
259
|
+
id: this.props.id,
|
|
260
|
+
value: value,
|
|
261
|
+
type: 'dropdown'
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
this.props.onChange(ev);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
render() {
|
|
268
|
+
let _this$props = this.props,
|
|
269
|
+
{
|
|
270
|
+
onChange,
|
|
271
|
+
value,
|
|
272
|
+
className,
|
|
273
|
+
error,
|
|
274
|
+
clearable,
|
|
275
|
+
disabled,
|
|
276
|
+
overrideCSS,
|
|
277
|
+
ariaLabelledBy
|
|
278
|
+
} = _this$props,
|
|
279
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2___default()(_this$props, _excluded);
|
|
280
|
+
|
|
281
|
+
let has_error = this.props.hasOwnProperty('error') && error != '';
|
|
282
|
+
let isClearable = this.props.hasOwnProperty('clearable');
|
|
283
|
+
let isDisabled = this.props.hasOwnProperty('disabled') && disabled == true;
|
|
284
|
+
let theValue = null;
|
|
285
|
+
let selectClassName = className;
|
|
286
|
+
|
|
287
|
+
if (!this.props.hasOwnProperty('overrideCSS') || overrideCSS == false) {
|
|
288
|
+
selectClassName = 'dropdown ' + className + ' ' + (has_error ? 'error' : '');
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
if (this.props.isMulti) {
|
|
292
|
+
theValue = this.props.options.filter(op => value.includes(op.value));
|
|
293
|
+
} else {
|
|
294
|
+
theValue = value instanceof Object || value == null ? value : this.props.options.find(opt => opt.value == value);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
const selectStyles = {
|
|
298
|
+
menu: styles => _objectSpread(_objectSpread({}, styles), {}, {
|
|
299
|
+
zIndex: 999
|
|
300
|
+
})
|
|
301
|
+
};
|
|
302
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement("div", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement((react_select__WEBPACK_IMPORTED_MODULE_4___default()), _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({
|
|
303
|
+
className: selectClassName,
|
|
304
|
+
value: theValue,
|
|
305
|
+
onChange: this.handleChange,
|
|
306
|
+
isClearable: isClearable,
|
|
307
|
+
isDisabled: isDisabled,
|
|
308
|
+
styles: selectStyles,
|
|
309
|
+
"aria-labelledby": ariaLabelledBy
|
|
310
|
+
}, rest)), has_error && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement("p", {
|
|
311
|
+
className: "error-label"
|
|
312
|
+
}, error));
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
}
|
|
316
|
+
Dropdown.defaultProps = {
|
|
317
|
+
ariaLabelledBy: null
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
/***/ }),
|
|
321
|
+
|
|
322
|
+
/***/ "./src/components/inputs/radio-list.js":
|
|
323
|
+
/*!*********************************************!*\
|
|
324
|
+
!*** ./src/components/inputs/radio-list.js ***!
|
|
325
|
+
\*********************************************/
|
|
326
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
327
|
+
|
|
328
|
+
__webpack_require__.r(__webpack_exports__);
|
|
329
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
330
|
+
/* harmony export */ "default": () => (/* binding */ RadioList)
|
|
331
|
+
/* harmony export */ });
|
|
332
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
|
|
333
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__);
|
|
334
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
|
|
335
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
|
|
336
|
+
/* harmony import */ var _raw_html__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../raw-html */ "./src/components/raw-html/index.js");
|
|
337
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ "prop-types");
|
|
338
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);
|
|
339
|
+
|
|
340
|
+
const _excluded = ["onChange", "value", "className", "error", "ariaLabelledBy", "disabled", "options", "id", "name"];
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Copyright 2018 OpenStack Foundation
|
|
344
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
345
|
+
* you may not use this file except in compliance with the License.
|
|
346
|
+
* You may obtain a copy of the License at
|
|
347
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
348
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
349
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
350
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
351
|
+
* See the License for the specific language governing permissions and
|
|
352
|
+
* limitations under the License.
|
|
353
|
+
**/
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
class RadioList extends (react__WEBPACK_IMPORTED_MODULE_1___default().Component) {
|
|
358
|
+
constructor(props) {
|
|
359
|
+
super(props);
|
|
360
|
+
this.state = {
|
|
361
|
+
value: props.value
|
|
362
|
+
};
|
|
363
|
+
this.handleChange = this.handleChange.bind(this);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
handleChange(selection) {
|
|
367
|
+
let ev = {
|
|
368
|
+
target: {
|
|
369
|
+
id: this.props.id,
|
|
370
|
+
value: selection.target.value,
|
|
371
|
+
type: 'radio'
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
this.props.onChange(ev);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
getLabel(option, id, inline, simple, html) {
|
|
378
|
+
if (inline) {
|
|
379
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("label", {
|
|
380
|
+
className: "form-check-label",
|
|
381
|
+
htmlFor: `radio_${id}_${option.value}`,
|
|
382
|
+
style: {
|
|
383
|
+
display: 'inline-block'
|
|
384
|
+
}
|
|
385
|
+
}, html && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_raw_html__WEBPACK_IMPORTED_MODULE_2__["default"], null, option.label), !html && option.label);
|
|
386
|
+
} else if (simple) {
|
|
387
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("label", {
|
|
388
|
+
className: "form-check-label",
|
|
389
|
+
htmlFor: `radio_${id}_${option.value}`
|
|
390
|
+
}, option.label);
|
|
391
|
+
} else {
|
|
392
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("label", {
|
|
393
|
+
className: "form-check-label",
|
|
394
|
+
htmlFor: `radio_${id}_${option.value}`,
|
|
395
|
+
style: {
|
|
396
|
+
display: 'inline-block'
|
|
397
|
+
}
|
|
398
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("h4", {
|
|
399
|
+
style: {
|
|
400
|
+
marginTop: '0px'
|
|
401
|
+
}
|
|
402
|
+
}, option.label), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_raw_html__WEBPACK_IMPORTED_MODULE_2__["default"], null, option.description));
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
render() {
|
|
407
|
+
let _this$props = this.props,
|
|
408
|
+
{
|
|
409
|
+
onChange,
|
|
410
|
+
value,
|
|
411
|
+
className,
|
|
412
|
+
error,
|
|
413
|
+
ariaLabelledBy,
|
|
414
|
+
disabled,
|
|
415
|
+
options,
|
|
416
|
+
id,
|
|
417
|
+
name
|
|
418
|
+
} = _this$props,
|
|
419
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(_this$props, _excluded);
|
|
420
|
+
|
|
421
|
+
let has_error = this.props.hasOwnProperty('error') && error != '';
|
|
422
|
+
let inline = this.props.hasOwnProperty('inline');
|
|
423
|
+
let simple = this.props.hasOwnProperty('simple');
|
|
424
|
+
let html = this.props.hasOwnProperty('html');
|
|
425
|
+
let isDisabled = this.props.hasOwnProperty('disabled') && disabled == true;
|
|
426
|
+
let style, label;
|
|
427
|
+
|
|
428
|
+
if (inline) {
|
|
429
|
+
style = {
|
|
430
|
+
paddingLeft: '22px',
|
|
431
|
+
marginLeft: '20px',
|
|
432
|
+
float: 'left'
|
|
433
|
+
};
|
|
434
|
+
} else {
|
|
435
|
+
style = {
|
|
436
|
+
paddingLeft: '22px'
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("div", {
|
|
441
|
+
id: `rl_wrapper_${id}`,
|
|
442
|
+
"aria-labelledby": ariaLabelledBy
|
|
443
|
+
}, options.map(op => {
|
|
444
|
+
let checked = op.value == value;
|
|
445
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("div", {
|
|
446
|
+
className: "form-check abc-radio",
|
|
447
|
+
key: `radio_key_${id}_${op.value}`,
|
|
448
|
+
style: style
|
|
449
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("input", {
|
|
450
|
+
className: "form-check-input",
|
|
451
|
+
type: "radio",
|
|
452
|
+
id: `radio_${id}_${op.value}`,
|
|
453
|
+
value: op.value,
|
|
454
|
+
checked: checked,
|
|
455
|
+
onChange: this.handleChange,
|
|
456
|
+
disabled: isDisabled,
|
|
457
|
+
name: name ? name : `radio_${id}`
|
|
458
|
+
}), this.getLabel(op, id, inline, simple, html));
|
|
459
|
+
}), has_error && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("p", {
|
|
460
|
+
className: "error-label"
|
|
461
|
+
}, error));
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
}
|
|
465
|
+
RadioList.defaultProps = {
|
|
466
|
+
ariaLabelledBy: null
|
|
467
|
+
};
|
|
468
|
+
RadioList.propTypes = {
|
|
469
|
+
id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string.isRequired)
|
|
470
|
+
};
|
|
471
|
+
|
|
472
|
+
/***/ }),
|
|
473
|
+
|
|
474
|
+
/***/ "./src/components/inputs/text-input.js":
|
|
475
|
+
/*!*********************************************!*\
|
|
476
|
+
!*** ./src/components/inputs/text-input.js ***!
|
|
477
|
+
\*********************************************/
|
|
478
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
479
|
+
|
|
480
|
+
__webpack_require__.r(__webpack_exports__);
|
|
481
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
482
|
+
/* harmony export */ "default": () => (/* binding */ Input)
|
|
483
|
+
/* harmony export */ });
|
|
484
|
+
/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "@babel/runtime/helpers/extends");
|
|
485
|
+
/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);
|
|
486
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
|
|
487
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);
|
|
488
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
|
|
489
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
const _excluded = ["onChange", "value", "className", "error", "ariaLabelledBy", "containerClassName"];
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Copyright 2017 OpenStack Foundation
|
|
496
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
497
|
+
* you may not use this file except in compliance with the License.
|
|
498
|
+
* You may obtain a copy of the License at
|
|
499
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
500
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
501
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
502
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
503
|
+
* See the License for the specific language governing permissions and
|
|
504
|
+
* limitations under the License.
|
|
505
|
+
**/
|
|
506
|
+
|
|
507
|
+
class Input extends (react__WEBPACK_IMPORTED_MODULE_2___default().Component) {
|
|
508
|
+
constructor(props) {
|
|
509
|
+
super(props);
|
|
510
|
+
this.handleChange = this.handleChange.bind(this);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
componentDidUpdate(prevProps, prevState, snapshot) {
|
|
514
|
+
if (this.props.value !== prevProps.value) {
|
|
515
|
+
this.input.value = this.props.value;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
handleChange(ev) {
|
|
520
|
+
this.props.onChange(ev);
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
render() {
|
|
524
|
+
let _this$props = this.props,
|
|
525
|
+
{
|
|
526
|
+
onChange,
|
|
527
|
+
value,
|
|
528
|
+
className,
|
|
529
|
+
error,
|
|
530
|
+
ariaLabelledBy,
|
|
531
|
+
containerClassName
|
|
532
|
+
} = _this$props,
|
|
533
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(_this$props, _excluded);
|
|
534
|
+
|
|
535
|
+
let has_error = this.props.hasOwnProperty('error') && error !== '';
|
|
536
|
+
let class_name = this.props.hasOwnProperty('className') ? className : 'form-control';
|
|
537
|
+
let container_class_name = this.props.hasOwnProperty('containerClassName') ? containerClassName : 'container-form-control';
|
|
538
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", {
|
|
539
|
+
className: container_class_name
|
|
540
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("input", _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({
|
|
541
|
+
className: `${class_name} ${has_error ? 'error' : ''}`,
|
|
542
|
+
ref: node => {
|
|
543
|
+
this.input = node;
|
|
544
|
+
},
|
|
545
|
+
defaultValue: value,
|
|
546
|
+
"aria-labelledby": ariaLabelledBy,
|
|
547
|
+
onChange: this.handleChange
|
|
548
|
+
}, rest)), has_error && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("p", {
|
|
549
|
+
className: "error-label"
|
|
550
|
+
}, error));
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
}
|
|
554
|
+
Input.defaultProps = {
|
|
555
|
+
ariaLabelledBy: null
|
|
556
|
+
};
|
|
557
|
+
|
|
558
|
+
/***/ }),
|
|
559
|
+
|
|
560
|
+
/***/ "./src/components/raw-html/index.js":
|
|
561
|
+
/*!******************************************!*\
|
|
562
|
+
!*** ./src/components/raw-html/index.js ***!
|
|
563
|
+
\******************************************/
|
|
564
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
565
|
+
|
|
566
|
+
__webpack_require__.r(__webpack_exports__);
|
|
567
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
568
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
569
|
+
/* harmony export */ });
|
|
570
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
571
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
const RawHTML = ({
|
|
575
|
+
children,
|
|
576
|
+
replaceNewLine = false,
|
|
577
|
+
className = ""
|
|
578
|
+
}) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
|
|
579
|
+
className: className,
|
|
580
|
+
dangerouslySetInnerHTML: {
|
|
581
|
+
__html: replaceNewLine ? children === null || children === void 0 ? void 0 : children.replace(/\n/g, '<br />') : children
|
|
582
|
+
}
|
|
583
|
+
});
|
|
584
|
+
|
|
585
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RawHTML);
|
|
586
|
+
|
|
587
|
+
/***/ }),
|
|
588
|
+
|
|
589
|
+
/***/ "@babel/runtime/helpers/defineProperty":
|
|
590
|
+
/*!********************************************************!*\
|
|
591
|
+
!*** external "@babel/runtime/helpers/defineProperty" ***!
|
|
592
|
+
\********************************************************/
|
|
593
|
+
/***/ ((module) => {
|
|
594
|
+
|
|
595
|
+
module.exports = require("@babel/runtime/helpers/defineProperty");
|
|
596
|
+
|
|
597
|
+
/***/ }),
|
|
598
|
+
|
|
599
|
+
/***/ "@babel/runtime/helpers/extends":
|
|
600
|
+
/*!*************************************************!*\
|
|
601
|
+
!*** external "@babel/runtime/helpers/extends" ***!
|
|
602
|
+
\*************************************************/
|
|
603
|
+
/***/ ((module) => {
|
|
604
|
+
|
|
605
|
+
module.exports = require("@babel/runtime/helpers/extends");
|
|
606
|
+
|
|
607
|
+
/***/ }),
|
|
608
|
+
|
|
609
|
+
/***/ "@babel/runtime/helpers/objectWithoutProperties":
|
|
610
|
+
/*!*****************************************************************!*\
|
|
611
|
+
!*** external "@babel/runtime/helpers/objectWithoutProperties" ***!
|
|
612
|
+
\*****************************************************************/
|
|
613
|
+
/***/ ((module) => {
|
|
614
|
+
|
|
615
|
+
module.exports = require("@babel/runtime/helpers/objectWithoutProperties");
|
|
616
|
+
|
|
617
|
+
/***/ }),
|
|
618
|
+
|
|
619
|
+
/***/ "awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css":
|
|
620
|
+
/*!****************************************************************************!*\
|
|
621
|
+
!*** external "awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css" ***!
|
|
622
|
+
\****************************************************************************/
|
|
623
|
+
/***/ ((module) => {
|
|
624
|
+
|
|
625
|
+
module.exports = require("awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css");
|
|
626
|
+
|
|
627
|
+
/***/ }),
|
|
628
|
+
|
|
629
|
+
/***/ "i18n-react/dist/i18n-react":
|
|
630
|
+
/*!*********************************************!*\
|
|
631
|
+
!*** external "i18n-react/dist/i18n-react" ***!
|
|
632
|
+
\*********************************************/
|
|
633
|
+
/***/ ((module) => {
|
|
634
|
+
|
|
635
|
+
module.exports = require("i18n-react/dist/i18n-react");
|
|
636
|
+
|
|
637
|
+
/***/ }),
|
|
638
|
+
|
|
639
|
+
/***/ "prop-types":
|
|
640
|
+
/*!*****************************!*\
|
|
641
|
+
!*** external "prop-types" ***!
|
|
642
|
+
\*****************************/
|
|
643
|
+
/***/ ((module) => {
|
|
644
|
+
|
|
645
|
+
module.exports = require("prop-types");
|
|
646
|
+
|
|
647
|
+
/***/ }),
|
|
648
|
+
|
|
649
|
+
/***/ "react":
|
|
650
|
+
/*!************************!*\
|
|
651
|
+
!*** external "react" ***!
|
|
652
|
+
\************************/
|
|
653
|
+
/***/ ((module) => {
|
|
654
|
+
|
|
655
|
+
module.exports = require("react");
|
|
656
|
+
|
|
657
|
+
/***/ }),
|
|
658
|
+
|
|
659
|
+
/***/ "react-select":
|
|
660
|
+
/*!*******************************!*\
|
|
661
|
+
!*** external "react-select" ***!
|
|
662
|
+
\*******************************/
|
|
663
|
+
/***/ ((module) => {
|
|
664
|
+
|
|
665
|
+
module.exports = require("react-select");
|
|
666
|
+
|
|
667
|
+
/***/ })
|
|
668
|
+
|
|
669
|
+
/******/ });
|
|
670
|
+
/************************************************************************/
|
|
671
|
+
/******/ // The module cache
|
|
672
|
+
/******/ var __webpack_module_cache__ = {};
|
|
673
|
+
/******/
|
|
674
|
+
/******/ // The require function
|
|
675
|
+
/******/ function __webpack_require__(moduleId) {
|
|
676
|
+
/******/ // Check if module is in cache
|
|
677
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
678
|
+
/******/ if (cachedModule !== undefined) {
|
|
679
|
+
/******/ return cachedModule.exports;
|
|
680
|
+
/******/ }
|
|
681
|
+
/******/ // Create a new module (and put it into the cache)
|
|
682
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
683
|
+
/******/ // no module.id needed
|
|
684
|
+
/******/ // no module.loaded needed
|
|
685
|
+
/******/ exports: {}
|
|
686
|
+
/******/ };
|
|
687
|
+
/******/
|
|
688
|
+
/******/ // Execute the module function
|
|
689
|
+
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
690
|
+
/******/
|
|
691
|
+
/******/ // Return the exports of the module
|
|
692
|
+
/******/ return module.exports;
|
|
693
|
+
/******/ }
|
|
694
|
+
/******/
|
|
695
|
+
/************************************************************************/
|
|
696
|
+
/******/ /* webpack/runtime/compat get default export */
|
|
697
|
+
/******/ (() => {
|
|
698
|
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
699
|
+
/******/ __webpack_require__.n = (module) => {
|
|
700
|
+
/******/ var getter = module && module.__esModule ?
|
|
701
|
+
/******/ () => (module['default']) :
|
|
702
|
+
/******/ () => (module);
|
|
703
|
+
/******/ __webpack_require__.d(getter, { a: getter });
|
|
704
|
+
/******/ return getter;
|
|
705
|
+
/******/ };
|
|
706
|
+
/******/ })();
|
|
707
|
+
/******/
|
|
708
|
+
/******/ /* webpack/runtime/define property getters */
|
|
709
|
+
/******/ (() => {
|
|
710
|
+
/******/ // define getter functions for harmony exports
|
|
711
|
+
/******/ __webpack_require__.d = (exports, definition) => {
|
|
712
|
+
/******/ for(var key in definition) {
|
|
713
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
714
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
715
|
+
/******/ }
|
|
716
|
+
/******/ }
|
|
717
|
+
/******/ };
|
|
718
|
+
/******/ })();
|
|
719
|
+
/******/
|
|
720
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
721
|
+
/******/ (() => {
|
|
722
|
+
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
723
|
+
/******/ })();
|
|
724
|
+
/******/
|
|
725
|
+
/******/ /* webpack/runtime/make namespace object */
|
|
726
|
+
/******/ (() => {
|
|
727
|
+
/******/ // define __esModule on exports
|
|
728
|
+
/******/ __webpack_require__.r = (exports) => {
|
|
729
|
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
730
|
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
731
|
+
/******/ }
|
|
732
|
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
733
|
+
/******/ };
|
|
734
|
+
/******/ })();
|
|
735
|
+
/******/
|
|
736
|
+
/************************************************************************/
|
|
737
|
+
var __webpack_exports__ = {};
|
|
738
|
+
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
|
|
739
|
+
(() => {
|
|
740
|
+
/*!*******************************************!*\
|
|
741
|
+
!*** ./src/components/forms/rsvp-form.js ***!
|
|
742
|
+
\*******************************************/
|
|
743
|
+
__webpack_require__.r(__webpack_exports__);
|
|
744
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
745
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
746
|
+
/* harmony export */ });
|
|
747
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
748
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
749
|
+
/* harmony import */ var awesome_bootstrap_checkbox_awesome_bootstrap_checkbox_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css */ "awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css");
|
|
750
|
+
/* harmony import */ var awesome_bootstrap_checkbox_awesome_bootstrap_checkbox_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(awesome_bootstrap_checkbox_awesome_bootstrap_checkbox_css__WEBPACK_IMPORTED_MODULE_1__);
|
|
751
|
+
/* harmony import */ var _inputs_text_input__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../inputs/text-input */ "./src/components/inputs/text-input.js");
|
|
752
|
+
/* harmony import */ var _inputs_dropdown__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../inputs/dropdown */ "./src/components/inputs/dropdown.js");
|
|
753
|
+
/* harmony import */ var _raw_html__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../raw-html */ "./src/components/raw-html/index.js");
|
|
754
|
+
/* harmony import */ var _inputs_checkbox_list__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../inputs/checkbox-list */ "./src/components/inputs/checkbox-list.js");
|
|
755
|
+
/* harmony import */ var _inputs_radio_list__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../inputs/radio-list */ "./src/components/inputs/radio-list.js");
|
|
756
|
+
/**
|
|
757
|
+
* Copyright 2018 OpenStack Foundation
|
|
758
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
759
|
+
* you may not use this file except in compliance with the License.
|
|
760
|
+
* You may obtain a copy of the License at
|
|
761
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
762
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
763
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
764
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
765
|
+
* See the License for the specific language governing permissions and
|
|
766
|
+
* limitations under the License.
|
|
767
|
+
**/
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
class RsvpForm extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) {
|
|
777
|
+
constructor(props) {
|
|
778
|
+
super(props);
|
|
779
|
+
this.state = {
|
|
780
|
+
answers: props.questions.map(q => ({
|
|
781
|
+
question_id: q.id,
|
|
782
|
+
value: null
|
|
783
|
+
})),
|
|
784
|
+
errors: props.errors
|
|
785
|
+
};
|
|
786
|
+
this.handleChange = this.handleChange.bind(this);
|
|
787
|
+
this.hasErrors = this.hasErrors.bind(this);
|
|
788
|
+
this.handleSubmit = this.handleSubmit.bind(this);
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
renderQuestion(q) {
|
|
792
|
+
const {
|
|
793
|
+
answers
|
|
794
|
+
} = this.state;
|
|
795
|
+
const value = answers.find(a => a.question_id === q.id).value;
|
|
796
|
+
|
|
797
|
+
switch (q.class_name) {
|
|
798
|
+
case 'RSVPMemberEmailQuestionTemplate':
|
|
799
|
+
case 'RSVPMemberFirstNameQuestionTemplate':
|
|
800
|
+
case 'RSVPMemberLastNameQuestionTemplate':
|
|
801
|
+
case 'RSVPTextBoxQuestionTemplate':
|
|
802
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inputs_text_input__WEBPACK_IMPORTED_MODULE_2__["default"], {
|
|
803
|
+
id: q.id,
|
|
804
|
+
value: value || '',
|
|
805
|
+
onChange: this.handleChange,
|
|
806
|
+
className: "form-control",
|
|
807
|
+
error: this.hasErrors(q.id)
|
|
808
|
+
});
|
|
809
|
+
break;
|
|
810
|
+
|
|
811
|
+
case 'RSVPTextAreaQuestionTemplate':
|
|
812
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("textarea", {
|
|
813
|
+
id: q.id,
|
|
814
|
+
value: value || '',
|
|
815
|
+
className: "form-control",
|
|
816
|
+
onChange: this.handleChange
|
|
817
|
+
});
|
|
818
|
+
break;
|
|
819
|
+
|
|
820
|
+
case 'RSVPLiteralContentQuestionTemplate':
|
|
821
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_raw_html__WEBPACK_IMPORTED_MODULE_4__["default"], null, q.value));
|
|
822
|
+
break;
|
|
823
|
+
|
|
824
|
+
case 'RSVPCheckBoxListQuestionTemplate':
|
|
825
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inputs_checkbox_list__WEBPACK_IMPORTED_MODULE_5__["default"], {
|
|
826
|
+
id: q.id,
|
|
827
|
+
value: value,
|
|
828
|
+
options: q.values.map(v => ({
|
|
829
|
+
value: `${v.id}`,
|
|
830
|
+
label: v.label
|
|
831
|
+
})),
|
|
832
|
+
onChange: this.handleChange,
|
|
833
|
+
error: this.hasErrors(q.id)
|
|
834
|
+
});
|
|
835
|
+
break;
|
|
836
|
+
|
|
837
|
+
case 'RSVPRadioButtonListQuestionTemplate':
|
|
838
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inputs_radio_list__WEBPACK_IMPORTED_MODULE_6__["default"], {
|
|
839
|
+
id: q.id,
|
|
840
|
+
value: value,
|
|
841
|
+
onChange: this.handleChange,
|
|
842
|
+
options: q.values.map(v => ({
|
|
843
|
+
value: `${v.id}`,
|
|
844
|
+
label: v.label
|
|
845
|
+
})),
|
|
846
|
+
error: this.hasErrors(q.id),
|
|
847
|
+
simple: true
|
|
848
|
+
});
|
|
849
|
+
break;
|
|
850
|
+
|
|
851
|
+
case 'RSVPDropDownQuestionTemplate':
|
|
852
|
+
let values = q.is_country_selector ? q.values.map(v => ({
|
|
853
|
+
value: v.id,
|
|
854
|
+
label: v.value
|
|
855
|
+
})) : q.values;
|
|
856
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inputs_dropdown__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
|
857
|
+
id: q.id,
|
|
858
|
+
isMulti: q.is_multiselect,
|
|
859
|
+
value: value,
|
|
860
|
+
onChange: this.handleChange,
|
|
861
|
+
placeholder: q.empty_string,
|
|
862
|
+
options: values
|
|
863
|
+
});
|
|
864
|
+
break;
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
handleChange(ev) {
|
|
869
|
+
let answers = [...this.state.answers];
|
|
870
|
+
let {
|
|
871
|
+
value,
|
|
872
|
+
id
|
|
873
|
+
} = ev.target;
|
|
874
|
+
|
|
875
|
+
if (ev.target.type === 'datetime') {
|
|
876
|
+
value = value.valueOf() / 1000;
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
let answer = answers.find(a => a.question_id === parseInt(id));
|
|
880
|
+
answer.value = value;
|
|
881
|
+
this.setState({
|
|
882
|
+
answers
|
|
883
|
+
});
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
hasErrors(field) {
|
|
887
|
+
let {
|
|
888
|
+
errors
|
|
889
|
+
} = this.state;
|
|
890
|
+
|
|
891
|
+
if (field in errors) {
|
|
892
|
+
return errors[field];
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
return '';
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
handleSubmit(ev) {
|
|
899
|
+
ev.preventDefault();
|
|
900
|
+
let {
|
|
901
|
+
onSubmit
|
|
902
|
+
} = this.props;
|
|
903
|
+
let {
|
|
904
|
+
answers
|
|
905
|
+
} = this.state;
|
|
906
|
+
onSubmit(answers);
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
render() {
|
|
910
|
+
let {
|
|
911
|
+
questions,
|
|
912
|
+
onSubmit
|
|
913
|
+
} = this.props;
|
|
914
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("form", {
|
|
915
|
+
className: "rsvp-form"
|
|
916
|
+
}, questions.map(q => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
917
|
+
key: 'question_' + q.id,
|
|
918
|
+
className: "row form-group"
|
|
919
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
920
|
+
className: "col-md-12"
|
|
921
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_raw_html__WEBPACK_IMPORTED_MODULE_4__["default"], null, q.label), " ", q.is_mandatory && '*'), this.renderQuestion(q)))), onSubmit && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
922
|
+
className: "row"
|
|
923
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
924
|
+
className: "col-md-12"
|
|
925
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
|
|
926
|
+
className: "btn btn-primary",
|
|
927
|
+
onClick: this.handleSubmit
|
|
928
|
+
}, "Submit"))));
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RsvpForm);
|
|
934
|
+
})();
|
|
935
|
+
|
|
936
|
+
/******/ return __webpack_exports__;
|
|
937
|
+
/******/ })()
|
|
938
|
+
;
|
|
939
|
+
});
|
|
940
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LElBQUdnRyxLQUFLLElBQUlYLE1BQVosRUFBb0I7TUFDaEIsT0FBT0EsTUFBTSxDQUFDVyxLQUFELENBQWI7SUFDSDs7SUFFRCxPQUFPLEVBQVA7RUFDSDs7RUFFRFQsWUFBWSxDQUFDeEUsRUFBRCxFQUFLO0lBQ2JBLEVBQUUsQ0FBQ2tGLGNBQUg7SUFFQSxJQUFJO01BQUVDO0lBQUYsSUFBZSxLQUFLM0csS0FBeEI7SUFDQSxJQUFJO01BQUMwRjtJQUFELElBQVksS0FBS2pGLEtBQXJCO0lBRUFrRyxRQUFRLENBQUNqQixPQUFELENBQVI7RUFDSDs7RUFFRDlELE1BQU0sR0FBRztJQUNMLElBQUk7TUFBRStELFNBQUY7TUFBYWdCO0lBQWIsSUFBMEIsS0FBSzNHLEtBQW5DO0lBRUEsb0JBQ0k7TUFBTSxTQUFTLEVBQUM7SUFBaEIsR0FDSzJGLFNBQVMsQ0FBQ3JGLEdBQVYsQ0FBY3NGLENBQUMsaUJBQ1o7TUFBSyxHQUFHLEVBQUUsY0FBWUEsQ0FBQyxDQUFDbkUsRUFBeEI7TUFBNEIsU0FBUyxFQUFDO0lBQXRDLGdCQUNJO01BQUssU0FBUyxFQUFDO0lBQWYsZ0JBQ0ksdUZBQ0ksMkRBQUMsaURBQUQsUUFBVW1FLENBQUMsQ0FBQ2pELEtBQVosQ0FESixPQUNrQ2lELENBQUMsQ0FBQ2dCLFlBQUYsSUFBa0IsR0FEcEQsQ0FESixFQUlLLEtBQUtYLGNBQUwsQ0FBb0JMLENBQXBCLENBSkwsQ0FESixDQURILENBREwsRUFXS2UsUUFBUSxpQkFDTDtNQUFLLFNBQVMsRUFBQztJQUFmLGdCQUNJO01BQUssU0FBUyxFQUFDO0lBQWYsZ0JBQ0k7TUFBUSxTQUFTLEVBQUMsaUJBQWxCO01BQW9DLE9BQU8sRUFBRSxLQUFLWDtJQUFsRCxZQURKLENBREosQ0FaUixDQURKO0VBcUJIOztBQTdJa0M7O0FBZ0p2QyxpRUFBZVAsUUFBZixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vLi9zcmMvY29tcG9uZW50cy9pbnB1dHMvY2hlY2tib3gtbGlzdC5qcyIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vLi9zcmMvY29tcG9uZW50cy9pbnB1dHMvZHJvcGRvd24uanMiLCJ3ZWJwYWNrOi8vb3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uLy4vc3JjL2NvbXBvbmVudHMvaW5wdXRzL3JhZGlvLWxpc3QuanMiLCJ3ZWJwYWNrOi8vb3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uLy4vc3JjL2NvbXBvbmVudHMvaW5wdXRzL3RleHQtaW5wdXQuanMiLCJ3ZWJwYWNrOi8vb3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uLy4vc3JjL2NvbXBvbmVudHMvcmF3LWh0bWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vb3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovL29wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiIiwid2VicGFjazovL29wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vZXh0ZXJuYWwgY29tbW9uanMgXCJhd2Vzb21lLWJvb3RzdHJhcC1jaGVja2JveC9hd2Vzb21lLWJvb3RzdHJhcC1jaGVja2JveC5jc3NcIiIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuLXJlYWN0L2Rpc3QvaTE4bi1yZWFjdFwiIiwid2VicGFjazovL29wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL29wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXNlbGVjdFwiIiwid2VicGFjazovL29wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vb3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vLi9zcmMvY29tcG9uZW50cy9mb3Jtcy9yc3ZwLWZvcm0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb25cIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvblwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCIvKipcbiAqIENvcHlyaWdodCAyMDE4IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiovXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFQgZnJvbSAnaTE4bi1yZWFjdC9kaXN0L2kxOG4tcmVhY3QnO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSAnLi4vcmF3LWh0bWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGVja2JveExpc3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIGxldCBvdGhlclZhbHVlID0gcHJvcHMudmFsdWUgPyBwcm9wcy52YWx1ZS5maW5kKCB2ID0+ICFwcm9wcy5vcHRpb25zLm1hcChvcCA9PiBvcC52YWx1ZSkuaW5jbHVkZXModikgKSA6IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBvdGhlckNoZWNrZWQ6ICEhb3RoZXJWYWx1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlID0gdGhpcy5oYW5kbGVDaGFuZ2UuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVPdGhlckNCQ2hhbmdlID0gdGhpcy5oYW5kbGVPdGhlckNCQ2hhbmdlLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIGxldCBvcHRpb25WYWx1ZXMgPSB0aGlzLnByb3BzLm9wdGlvbnMubWFwKG9wID0+IG9wLnZhbHVlKTtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wcm9wcy52YWx1ZSA/IFsuLi50aGlzLnByb3BzLnZhbHVlXSA6IFtdO1xuXG4gICAgICAgIGlmIChldmVudC50YXJnZXQudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhlVmFsID0gaXNOYU4oZXZlbnQudGFyZ2V0LnZhbHVlKSA/IGV2ZW50LnRhcmdldC52YWx1ZSA6IHBhcnNlSW50KGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdmFsdWUucHVzaCh0aGVWYWwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmZpbHRlciggdiA9PiB2ICE9IGV2ZW50LnRhcmdldC52YWx1ZSApXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmZpbHRlcih2ID0+IG9wdGlvblZhbHVlcy5pbmNsdWRlcyh2KSk7XG4gICAgICAgICAgICB2YWx1ZS5wdXNoKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZXYgPSB7dGFyZ2V0OiB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMucHJvcHMuaWQsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveGxpc3QnXG4gICAgICAgICAgICB9fTtcblxuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGV2KTtcbiAgICB9XG5cbiAgICBoYW5kbGVPdGhlckNCQ2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe290aGVyQ2hlY2tlZDogZXZlbnQudGFyZ2V0LmNoZWNrZWR9KTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgbGV0IHtvbkNoYW5nZSwgdmFsdWUsIGNsYXNzTmFtZSwgb3B0aW9ucywgaWQsIGNoaWxkcmVuLCBlcnJvciwgZGlzYWJsZWQsbmFtZSwgYXJpYUxhYmVsbGVkQnksIC4uLnJlc3R9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgbGV0IHsgb3RoZXJDaGVja2VkIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICAgIGxldCBpbmxpbmUgPSAoIHRoaXMucHJvcHMuaGFzT3duUHJvcGVydHkoJ2lubGluZScpICk7XG4gICAgICAgIGxldCBodG1sID0gKCB0aGlzLnByb3BzLmhhc093blByb3BlcnR5KCdodG1sJykgKTtcbiAgICAgICAgbGV0IGFsbG93T3RoZXIgPSAoIHRoaXMucHJvcHMuaGFzT3duUHJvcGVydHkoJ2FsbG93T3RoZXInKSApO1xuICAgICAgICBsZXQgb3RoZXJWYWx1ZSA9IHZhbHVlID8gdmFsdWUuZmluZCggdiA9PiAhb3B0aW9ucy5tYXAob3AgPT4gb3AudmFsdWUpLmluY2x1ZGVzKHYpICkgOiBmYWxzZSA7XG4gICAgICAgIGxldCBoYXNfZXJyb3IgPSAoIHRoaXMucHJvcHMuaGFzT3duUHJvcGVydHkoJ2Vycm9yJykgJiYgZXJyb3IgIT09ICcnICk7XG4gICAgICAgIGxldCBpc0Rpc2FibGVkID0gKHRoaXMucHJvcHMuaGFzT3duUHJvcGVydHkoJ2Rpc2FibGVkJykgJiYgZGlzYWJsZWQgPT0gdHJ1ZSk7XG5cblxuICAgICAgICBsZXQgc3R5bGUsIGxhYmVsO1xuXG4gICAgICAgIGlmIChpbmxpbmUpIHtcbiAgICAgICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiAnMjJweCcsXG4gICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogJzIwcHgnLFxuICAgICAgICAgICAgICAgIGZsb2F0OiAnbGVmdCdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDogJzIycHgnLFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJzdweCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGlkPXtgY2hsX3dyYXBwZXJfJHtpZH1gfSBhcmlhLWxhYmVsbGVkYnk9e2FyaWFMYWJlbGxlZEJ5fT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJjaGVja2JveGVzLWRpdlwiICsgKGhhc19lcnJvciA/ICcgZXJyb3InIDogJycpIH0+XG4gICAgICAgICAgICAgICAgICAgIHsgb3B0aW9ucy5tYXAob3AgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoZWNrZWQgPSB2YWx1ZSA/IHZhbHVlLmluY2x1ZGVzKG9wLnZhbHVlKSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tY2hlY2sgYWJjLWNoZWNrYm94XCIga2V5PXtcInJhZGlvX2tleV9cIiArIG9wLnZhbHVlfSBzdHlsZT17c3R5bGV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgY2JfJHtpZH1fJHtvcC52YWx1ZX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZT8gbmFtZSA6IGlkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmhhbmRsZUNoYW5nZX0gY2xhc3NOYW1lPVwiZm9ybS1jaGVjay1pbnB1dFwiIHZhbHVlPXtvcC52YWx1ZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZvcm0tY2hlY2stbGFiZWxcIiBodG1sRm9yPXtgY2JfJHtpZH1fJHtvcC52YWx1ZX1gICB9ID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtodG1sICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmF3SFRNTD57b3AubGFiZWx9PC9SYXdIVE1MPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyFodG1sICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KX1cblxuICAgICAgICAgICAgICAgICAgICB7YWxsb3dPdGhlciAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tY2hlY2sgYWJjLWNoZWNrYm94XCIgc3R5bGU9e3N0eWxlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD17XCJjYl9vdGhlclwiICsgaWR9IGNoZWNrZWQ9e290aGVyQ2hlY2tlZH0gZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuaGFuZGxlT3RoZXJDQkNoYW5nZX0gY2xhc3NOYW1lPVwiZm9ybS1jaGVjay1pbnB1dFwiIHZhbHVlPVwib3RoZXJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZvcm0tY2hlY2stbGFiZWxcIiBodG1sRm9yPXtcImNiX290aGVyXCIgKyBpZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1QudHJhbnNsYXRlKFwiZ2VuZXJhbC5vdGhlclwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAge2FsbG93T3RoZXIgJiYgb3RoZXJDaGVja2VkICYmXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3twYWRkaW5nTGVmdDogJzIycHgnLCB3aWR0aDogJzUwJSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIiBkaXNhYmxlZD17aXNEaXNhYmxlZH0gb25DaGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfSB2YWx1ZT17b3RoZXJWYWx1ZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHtoYXNfZXJyb3IgJiZcbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJlcnJvci1sYWJlbFwiPntlcnJvcn08L3A+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG5cbiAgICB9XG59XG5cbkNoZWNrYm94TGlzdC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgYXJpYUxhYmVsbGVkQnkgOiBudWxsLFxufVxuXG5cbkNoZWNrYm94TGlzdC5wcm9wVHlwZXMgPSB7XG4gICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgU2VsZWN0IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyb3Bkb3duIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSA9IHRoaXMuaGFuZGxlQ2hhbmdlLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2hhbmdlKHNlbGVjdGlvbikge1xuXG4gICAgICAgIGxldCB2YWx1ZSA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmlzTXVsdGkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gc2VsZWN0aW9uID8gc2VsZWN0aW9uLm1hcCh2YWwgPT4gdmFsLnZhbHVlKSA6IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHNlbGVjdGlvbiA/IHNlbGVjdGlvbi52YWx1ZSA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZXYgPSB7dGFyZ2V0OiB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMucHJvcHMuaWQsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdkcm9wZG93bidcbiAgICAgICAgICAgIH19O1xuXG4gICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoZXYpO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICBsZXQge29uQ2hhbmdlLCB2YWx1ZSwgY2xhc3NOYW1lLCBlcnJvciwgY2xlYXJhYmxlLCBkaXNhYmxlZCwgb3ZlcnJpZGVDU1MsIGFyaWFMYWJlbGxlZEJ5LCAuLi5yZXN0fSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGxldCBoYXNfZXJyb3IgPSAoIHRoaXMucHJvcHMuaGFzT3duUHJvcGVydHkoJ2Vycm9yJykgJiYgZXJyb3IgIT0gJycgKTtcbiAgICAgICAgbGV0IGlzQ2xlYXJhYmxlID0gKHRoaXMucHJvcHMuaGFzT3duUHJvcGVydHkoJ2NsZWFyYWJsZScpKTtcbiAgICAgICAgbGV0IGlzRGlzYWJsZWQgPSAodGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eSgnZGlzYWJsZWQnKSAmJiBkaXNhYmxlZCA9PSB0cnVlKTtcbiAgICAgICAgbGV0IHRoZVZhbHVlID0gbnVsbDtcblxuICAgICAgICBsZXQgc2VsZWN0Q2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eSgnb3ZlcnJpZGVDU1MnKSB8fCBvdmVycmlkZUNTUyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgc2VsZWN0Q2xhc3NOYW1lID0gJ2Ryb3Bkb3duICcgKyBjbGFzc05hbWUgKyAnICcgKyAoaGFzX2Vycm9yID8gJ2Vycm9yJyA6ICcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmlzTXVsdGkpIHtcbiAgICAgICAgICAgIHRoZVZhbHVlID0gdGhpcy5wcm9wcy5vcHRpb25zLmZpbHRlcihvcCA9PiB2YWx1ZS5pbmNsdWRlcyhvcC52YWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhlVmFsdWUgPSAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgfHwgdmFsdWUgPT0gbnVsbCkgPyB2YWx1ZSA6IHRoaXMucHJvcHMub3B0aW9ucy5maW5kKG9wdCA9PiBvcHQudmFsdWUgPT0gdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0U3R5bGVzID0geyBtZW51OiBzdHlsZXMgPT4gKHsgLi4uc3R5bGVzLCB6SW5kZXg6IDk5OSB9KSB9O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzZWxlY3RDbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGVWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBpc0NsZWFyYWJsZT17aXNDbGVhcmFibGV9XG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlcz17c2VsZWN0U3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2FyaWFMYWJlbGxlZEJ5fVxuICAgICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHtoYXNfZXJyb3IgJiZcbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJlcnJvci1sYWJlbFwiPntlcnJvcn08L3A+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG5cbiAgICB9XG59XG5cbkRyb3Bkb3duLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBhcmlhTGFiZWxsZWRCeSA6IG51bGwsXG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE4IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmF3SFRNTCBmcm9tICcuLi9yYXctaHRtbCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhZGlvTGlzdCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHZhbHVlOiBwcm9wcy52YWx1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSA9IHRoaXMuaGFuZGxlQ2hhbmdlLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2hhbmdlKHNlbGVjdGlvbikge1xuXG4gICAgICAgIGxldCBldiA9IHt0YXJnZXQ6IHtcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5wcm9wcy5pZCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogc2VsZWN0aW9uLnRhcmdldC52YWx1ZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAncmFkaW8nXG4gICAgICAgICAgICB9fTtcblxuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGV2KTtcbiAgICB9XG5cbiAgICBnZXRMYWJlbChvcHRpb24sIGlkLCBpbmxpbmUsIHNpbXBsZSwgaHRtbCkge1xuICAgICAgICBpZiAoaW5saW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmb3JtLWNoZWNrLWxhYmVsXCIgaHRtbEZvcj17YHJhZGlvXyR7aWR9XyR7b3B0aW9uLnZhbHVlfWB9IHN0eWxlPXt7ZGlzcGxheTogJ2lubGluZS1ibG9jayd9fT5cbiAgICAgICAgICAgICAgICAgICAge2h0bWwgJiZcbiAgICAgICAgICAgICAgICAgICAgPFJhd0hUTUw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7b3B0aW9uLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1Jhd0hUTUw+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgeyFodG1sICYmXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbi5sYWJlbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2ltcGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmb3JtLWNoZWNrLWxhYmVsXCIgaHRtbEZvcj17YHJhZGlvXyR7aWR9XyR7b3B0aW9uLnZhbHVlfWB9ID5cbiAgICAgICAgICAgICAgICAgICAge29wdGlvbi5sYWJlbH1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZvcm0tY2hlY2stbGFiZWxcIiBodG1sRm9yPXtgcmFkaW9fJHtpZH1fJHtvcHRpb24udmFsdWV9YH0gc3R5bGU9e3tkaXNwbGF5OiAnaW5saW5lLWJsb2NrJ319PlxuICAgICAgICAgICAgICAgICAgICA8aDQgc3R5bGU9e3ttYXJnaW5Ub3A6ICcwcHgnfX0+e29wdGlvbi5sYWJlbH08L2g0PlxuICAgICAgICAgICAgICAgICAgICA8UmF3SFRNTD57b3B0aW9uLmRlc2NyaXB0aW9ufTwvUmF3SFRNTD5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICBsZXQge29uQ2hhbmdlLCB2YWx1ZSwgY2xhc3NOYW1lLCBlcnJvciwgYXJpYUxhYmVsbGVkQnksIGRpc2FibGVkLCBvcHRpb25zLGlkLCBuYW1lLC4uLnJlc3R9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgbGV0IGhhc19lcnJvciA9ICggdGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eSgnZXJyb3InKSAmJiBlcnJvciAhPSAnJyApO1xuICAgICAgICBsZXQgaW5saW5lID0gKCB0aGlzLnByb3BzLmhhc093blByb3BlcnR5KCdpbmxpbmUnKSApO1xuICAgICAgICBsZXQgc2ltcGxlID0gKCB0aGlzLnByb3BzLmhhc093blByb3BlcnR5KCdzaW1wbGUnKSApO1xuICAgICAgICBsZXQgaHRtbCA9ICggdGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eSgnaHRtbCcpICk7XG4gICAgICAgIGxldCBpc0Rpc2FibGVkID0gKHRoaXMucHJvcHMuaGFzT3duUHJvcGVydHkoJ2Rpc2FibGVkJykgJiYgZGlzYWJsZWQgPT0gdHJ1ZSk7XG5cbiAgICAgICAgbGV0IHN0eWxlLCBsYWJlbDtcblxuICAgICAgICBpZiAoaW5saW5lKSB7XG4gICAgICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDogJzIycHgnLFxuICAgICAgICAgICAgICAgIG1hcmdpbkxlZnQ6ICcyMHB4JyxcbiAgICAgICAgICAgICAgICBmbG9hdDogJ2xlZnQnXG4gICAgICAgICAgICB9O1xuXG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiAnMjJweCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGlkPXtgcmxfd3JhcHBlcl8ke2lkfWB9IGFyaWEtbGFiZWxsZWRieT17YXJpYUxhYmVsbGVkQnl9PlxuICAgICAgICAgICAgICAgIHsgb3B0aW9ucy5tYXAob3AgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2hlY2tlZCA9IChvcC52YWx1ZSA9PSB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tY2hlY2sgYWJjLXJhZGlvXCIga2V5PXtgcmFkaW9fa2V5XyR7aWR9XyR7b3AudmFsdWV9YH0gc3R5bGU9e3N0eWxlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgcmFkaW9fJHtpZH1fJHtvcC52YWx1ZX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWUgPyBuYW1lIDogYHJhZGlvXyR7aWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLmdldExhYmVsKG9wLCBpZCwgaW5saW5lLCBzaW1wbGUsIGh0bWwpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KX1cblxuICAgICAgICAgICAgICAgIHtoYXNfZXJyb3IgJiZcbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJlcnJvci1sYWJlbFwiPntlcnJvcn08L3A+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG5cbiAgICB9XG59XG5cblJhZGlvTGlzdC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgYXJpYUxhYmVsbGVkQnkgOiBudWxsLFxufVxuXG5SYWRpb0xpc3QucHJvcFR5cGVzID0ge1xuICAgIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnB1dCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UgPSB0aGlzLmhhbmRsZUNoYW5nZS5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSwgc25hcHNob3QpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMudmFsdWUgIT09IHByZXZQcm9wcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dC52YWx1ZSA9IHRoaXMucHJvcHMudmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVDaGFuZ2UoZXYpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShldik7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIGxldCB7b25DaGFuZ2UsIHZhbHVlLCBjbGFzc05hbWUsIGVycm9yLCBhcmlhTGFiZWxsZWRCeSwgY29udGFpbmVyQ2xhc3NOYW1lLC4uLnJlc3R9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgbGV0IGhhc19lcnJvciA9ICggdGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eSgnZXJyb3InKSAmJiBlcnJvciAhPT0gJycgKTtcbiAgICAgICAgbGV0IGNsYXNzX25hbWUgPSB0aGlzLnByb3BzLmhhc093blByb3BlcnR5KCdjbGFzc05hbWUnKSA/IGNsYXNzTmFtZSA6ICdmb3JtLWNvbnRyb2wnO1xuICAgICAgICBsZXQgY29udGFpbmVyX2NsYXNzX25hbWUgPSB0aGlzLnByb3BzLmhhc093blByb3BlcnR5KCdjb250YWluZXJDbGFzc05hbWUnKSA/IGNvbnRhaW5lckNsYXNzTmFtZSA6ICdjb250YWluZXItZm9ybS1jb250cm9sJztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjb250YWluZXJfY2xhc3NfbmFtZX0+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7Y2xhc3NfbmFtZX0gJHtoYXNfZXJyb3IgPyAnZXJyb3InIDogJyd9YH1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtub2RlID0+IHt0aGlzLmlucHV0ID0gbm9kZX19XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YXJpYUxhYmVsbGVkQnl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7aGFzX2Vycm9yICYmXG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiZXJyb3ItbGFiZWxcIj57ZXJyb3J9PC9wPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuXG4gICAgfVxufVxuXG5JbnB1dC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgYXJpYUxhYmVsbGVkQnkgOiBudWxsLFxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFJhd0hUTUwgPSAoe2NoaWxkcmVuLCByZXBsYWNlTmV3TGluZSA9IGZhbHNlLCBjbGFzc05hbWUgPSBcIlwifSkgPT5cbiAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IHJlcGxhY2VOZXdMaW5lID8gY2hpbGRyZW4/LnJlcGxhY2UoL1xcbi9nLCAnPGJyIC8+JykgOiBjaGlsZHJlbn19IC8+XG5cbmV4cG9ydCBkZWZhdWx0IFJhd0hUTUw7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJhd2Vzb21lLWJvb3RzdHJhcC1jaGVja2JveC9hd2Vzb21lLWJvb3RzdHJhcC1jaGVja2JveC5jc3NcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bi1yZWFjdC9kaXN0L2kxOG4tcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1zZWxlY3RcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTggT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICdhd2Vzb21lLWJvb3RzdHJhcC1jaGVja2JveC9hd2Vzb21lLWJvb3RzdHJhcC1jaGVja2JveC5jc3MnXG5pbXBvcnQgSW5wdXQgZnJvbSAnLi4vaW5wdXRzL3RleHQtaW5wdXQnXG5pbXBvcnQgRHJvcGRvd24gZnJvbSAnLi4vaW5wdXRzL2Ryb3Bkb3duJ1xuaW1wb3J0IFJhd0hUTUwgZnJvbSAnLi4vcmF3LWh0bWwnXG5pbXBvcnQgQ2hlY2tib3hMaXN0IGZyb20gJy4uL2lucHV0cy9jaGVja2JveC1saXN0J1xuaW1wb3J0IFJhZGlvTGlzdCBmcm9tICcuLi9pbnB1dHMvcmFkaW8tbGlzdCdcblxuXG5jbGFzcyBSc3ZwRm9ybSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBhbnN3ZXJzOiBwcm9wcy5xdWVzdGlvbnMubWFwKHEgPT4gKHtxdWVzdGlvbl9pZDogcS5pZCwgdmFsdWU6IG51bGx9KSksXG4gICAgICAgICAgICBlcnJvcnM6IHByb3BzLmVycm9yc1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlID0gdGhpcy5oYW5kbGVDaGFuZ2UuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYXNFcnJvcnMgPSB0aGlzLmhhc0Vycm9ycy5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZVN1Ym1pdCA9IHRoaXMuaGFuZGxlU3VibWl0LmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgcmVuZGVyUXVlc3Rpb24ocSkge1xuICAgICAgICBjb25zdCB7YW5zd2Vyc30gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGFuc3dlcnMuZmluZChhID0+IGEucXVlc3Rpb25faWQgPT09IHEuaWQpLnZhbHVlO1xuXG4gICAgICAgIHN3aXRjaChxLmNsYXNzX25hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ1JTVlBNZW1iZXJFbWFpbFF1ZXN0aW9uVGVtcGxhdGUnOlxuICAgICAgICAgICAgY2FzZSAnUlNWUE1lbWJlckZpcnN0TmFtZVF1ZXN0aW9uVGVtcGxhdGUnOlxuICAgICAgICAgICAgY2FzZSAnUlNWUE1lbWJlckxhc3ROYW1lUXVlc3Rpb25UZW1wbGF0ZSc6XG4gICAgICAgICAgICBjYXNlICdSU1ZQVGV4dEJveFF1ZXN0aW9uVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e3EuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWUgfHwgJyd9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9e3RoaXMuaGFzRXJyb3JzKHEuaWQpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdSU1ZQVGV4dEFyZWFRdWVzdGlvblRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtxLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgLz4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUlNWUExpdGVyYWxDb250ZW50UXVlc3Rpb25UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICg8ZGl2PjxSYXdIVE1MPntxLnZhbHVlfTwvUmF3SFRNTD48L2Rpdj4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUlNWUENoZWNrQm94TGlzdFF1ZXN0aW9uVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxDaGVja2JveExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtxLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17cS52YWx1ZXMubWFwKHYgPT4gKHt2YWx1ZTogYCR7di5pZH1gLCBsYWJlbDogdi5sYWJlbH0pKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yPXt0aGlzLmhhc0Vycm9ycyhxLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUlNWUFJhZGlvQnV0dG9uTGlzdFF1ZXN0aW9uVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb0xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtxLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17cS52YWx1ZXMubWFwKHYgPT4gKHt2YWx1ZTogYCR7di5pZH1gLCBsYWJlbDogdi5sYWJlbH0pKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yPXt0aGlzLmhhc0Vycm9ycyhxLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBsZVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdSU1ZQRHJvcERvd25RdWVzdGlvblRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVzID0gKHEuaXNfY291bnRyeV9zZWxlY3RvcikgPyBxLnZhbHVlcy5tYXAodiA9PiAoe3ZhbHVlOnYuaWQsIGxhYmVsOiB2LnZhbHVlfSkpIDogcS52YWx1ZXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtxLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNNdWx0aT17cS5pc19tdWx0aXNlbGVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtxLmVtcHR5X3N0cmluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e3ZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlQ2hhbmdlKGV2KSB7XG4gICAgICAgIGxldCBhbnN3ZXJzID0gWy4uLnRoaXMuc3RhdGUuYW5zd2Vyc107XG4gICAgICAgIGxldCB7dmFsdWUsIGlkfSA9IGV2LnRhcmdldDtcblxuICAgICAgICBpZiAoZXYudGFyZ2V0LnR5cGUgPT09ICdkYXRldGltZScpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudmFsdWVPZigpIC8gMTAwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhbnN3ZXIgPSBhbnN3ZXJzLmZpbmQoYSA9PiBhLnF1ZXN0aW9uX2lkID09PSBwYXJzZUludChpZCkpO1xuICAgICAgICBhbnN3ZXIudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLnNldFN0YXRlKHthbnN3ZXJzfSk7XG4gICAgfVxuXG4gICAgaGFzRXJyb3JzKGZpZWxkKSB7XG4gICAgICAgIGxldCB7ZXJyb3JzfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGlmKGZpZWxkIGluIGVycm9ycykge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yc1tmaWVsZF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaGFuZGxlU3VibWl0KGV2KSB7XG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgbGV0IHsgb25TdWJtaXQgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGxldCB7YW5zd2Vyc30gPSB0aGlzLnN0YXRlO1xuXG4gICAgICAgIG9uU3VibWl0KGFuc3dlcnMpO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgbGV0IHsgcXVlc3Rpb25zLCBvblN1Ym1pdCB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGZvcm0gY2xhc3NOYW1lPVwicnN2cC1mb3JtXCI+XG4gICAgICAgICAgICAgICAge3F1ZXN0aW9ucy5tYXAocSA9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17J3F1ZXN0aW9uXycrcS5pZH0gY2xhc3NOYW1lPVwicm93IGZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmF3SFRNTD57cS5sYWJlbH08L1Jhd0hUTUw+IHtxLmlzX21hbmRhdG9yeSAmJiAnKid9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJRdWVzdGlvbihxKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtvblN1Ym1pdCAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImJ0biBidG4tcHJpbWFyeVwiIG9uQ2xpY2s9e3RoaXMuaGFuZGxlU3VibWl0fT5TdWJtaXQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSc3ZwRm9ybTtcbiJdLCJuYW1lcyI6WyJQcm9wVHlwZXMiLCJSZWFjdCIsIlQiLCJSYXdIVE1MIiwiQ2hlY2tib3hMaXN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIm90aGVyVmFsdWUiLCJ2YWx1ZSIsImZpbmQiLCJ2Iiwib3B0aW9ucyIsIm1hcCIsIm9wIiwiaW5jbHVkZXMiLCJzdGF0ZSIsIm90aGVyQ2hlY2tlZCIsImhhbmRsZUNoYW5nZSIsImJpbmQiLCJoYW5kbGVPdGhlckNCQ2hhbmdlIiwiZXZlbnQiLCJvcHRpb25WYWx1ZXMiLCJ0YXJnZXQiLCJ0eXBlIiwiY2hlY2tlZCIsInRoZVZhbCIsImlzTmFOIiwicGFyc2VJbnQiLCJwdXNoIiwiZmlsdGVyIiwiZXYiLCJpZCIsIm9uQ2hhbmdlIiwic2V0U3RhdGUiLCJyZW5kZXIiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsImVycm9yIiwiZGlzYWJsZWQiLCJuYW1lIiwiYXJpYUxhYmVsbGVkQnkiLCJyZXN0IiwiaW5saW5lIiwiaGFzT3duUHJvcGVydHkiLCJodG1sIiwiYWxsb3dPdGhlciIsImhhc19lcnJvciIsImlzRGlzYWJsZWQiLCJzdHlsZSIsImxhYmVsIiwicGFkZGluZ0xlZnQiLCJtYXJnaW5MZWZ0IiwiZmxvYXQiLCJtYXJnaW5Ub3AiLCJ0cmFuc2xhdGUiLCJ3aWR0aCIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJTZWxlY3QiLCJEcm9wZG93biIsInNlbGVjdGlvbiIsImlzTXVsdGkiLCJ2YWwiLCJjbGVhcmFibGUiLCJvdmVycmlkZUNTUyIsImlzQ2xlYXJhYmxlIiwidGhlVmFsdWUiLCJzZWxlY3RDbGFzc05hbWUiLCJPYmplY3QiLCJvcHQiLCJzZWxlY3RTdHlsZXMiLCJtZW51Iiwic3R5bGVzIiwiekluZGV4IiwiUmFkaW9MaXN0IiwiZ2V0TGFiZWwiLCJvcHRpb24iLCJzaW1wbGUiLCJkaXNwbGF5IiwiZGVzY3JpcHRpb24iLCJJbnB1dCIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZXZTdGF0ZSIsInNuYXBzaG90IiwiaW5wdXQiLCJjb250YWluZXJDbGFzc05hbWUiLCJjbGFzc19uYW1lIiwiY29udGFpbmVyX2NsYXNzX25hbWUiLCJub2RlIiwicmVwbGFjZU5ld0xpbmUiLCJfX2h0bWwiLCJyZXBsYWNlIiwiUnN2cEZvcm0iLCJhbnN3ZXJzIiwicXVlc3Rpb25zIiwicSIsInF1ZXN0aW9uX2lkIiwiZXJyb3JzIiwiaGFzRXJyb3JzIiwiaGFuZGxlU3VibWl0IiwicmVuZGVyUXVlc3Rpb24iLCJhIiwidmFsdWVzIiwiaXNfY291bnRyeV9zZWxlY3RvciIsImlzX211bHRpc2VsZWN0IiwiZW1wdHlfc3RyaW5nIiwidmFsdWVPZiIsImFuc3dlciIsImZpZWxkIiwicHJldmVudERlZmF1bHQiLCJvblN1Ym1pdCIsImlzX21hbmRhdG9yeSJdLCJzb3VyY2VSb290IjoiIn0=
|