difftreelog
rm mocharep
in: master
15 files changed
mochawesome-report/assets/MaterialIcons-Regular.woffdiffbeforeafterbothbinary blob — no preview
mochawesome-report/assets/MaterialIcons-Regular.woff2diffbeforeafterbothbinary blob — no preview
mochawesome-report/assets/app.cssdiffbeforeafterboth--- a/mochawesome-report/assets/app.css
+++ /dev/null
@@ -1,14 +0,0 @@
-/*! mochawesome-report-generator 5.2.0 | https://github.com/adamgruber/mochawesome-report-generator */
-:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.dropdown--trans-color---3ixtY{transition:color .2s ease-out;transition:var(--link-transition)}.dropdown--component---21Q9c{position:relative}.dropdown--toggle---3gdzr{white-space:nowrap}.dropdown--toggle-icon---1j9Ga:not(.dropdown--icon-only---3vq2I){margin-left:.5rem}.dropdown--list---8GPrA{padding:0;margin:0;list-style:none;text-align:left}.dropdown--list-main---3QZnQ{position:absolute;top:100%;z-index:1000;visibility:hidden;min-width:160px;overflow:auto}.dropdown--align-left---3-3Hu{left:0}.dropdown--align-right---2ZQx0{right:0}.dropdown--list-item-link---JRrOY,.dropdown--list-item-text---2COKZ{display:block;position:relative;white-space:nowrap;text-decoration:none}.dropdown--list-item-text---2COKZ{cursor:default}@-webkit-keyframes dropdown--in---FpwEb{0%{opacity:0}to{opacity:1}}@keyframes dropdown--in---FpwEb{0%{opacity:0}to{opacity:1}}@-webkit-keyframes dropdown--out---2HVe1{0%{opacity:1;visibility:visible}to{opacity:0}}@keyframes dropdown--out---2HVe1{0%{opacity:1;visibility:visible}to{opacity:0}}.dropdown--close---2LnDu{-webkit-animation:dropdown--out---2HVe1 .2s ease;animation:dropdown--out---2HVe1 .2s ease;-webkit-animation:dropdown--out---2HVe1 var(--default-transition-duration) var(--default-transition-easing);animation:dropdown--out---2HVe1 var(--default-transition-duration) var(--default-transition-easing);visibility:hidden}.dropdown--open---3bwiy{-webkit-animation:dropdown--in---FpwEb .2s ease;animation:dropdown--in---FpwEb .2s ease;-webkit-animation:dropdown--in---FpwEb var(--default-transition-duration) var(--default-transition-easing);animation:dropdown--in---FpwEb var(--default-transition-duration) var(--default-transition-easing);visibility:visible}
-:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.dropdown-selector--trans-color---3nePW{transition:color .2s ease-out;transition:var(--link-transition)}.dropdown-selector--dropdown---AT5ee{right:-8px}.dropdown-selector--menu---nW4gv{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);font-family:robotolight;font-family:var(--font-family-light);min-width:70px;width:70px;background:#fff;top:0}.dropdown-selector--toggle---WEnEe{display:inline-block;font-family:robotoregular;font-family:var(--font-family-regular);font-size:14px;color:rgba(0,0,0,.54);color:var(--black54);vertical-align:top;line-height:24px;padding:0 22px 0 0;cursor:pointer;border:none;background:none;outline:none;width:70px}.dropdown-selector--toggle---WEnEe:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500)}.dropdown-selector--toggle-icon---10VKo{position:absolute;top:4px;right:4px}.dropdown-selector--item-link---2W1T7,.dropdown-selector--toggle-icon---10VKo{color:rgba(0,0,0,.38);color:var(--black38)}.dropdown-selector--item-link---2W1T7{border:none;cursor:pointer;padding:4px 10px;text-align:left;width:100%}.dropdown-selector--item-link---2W1T7:hover{background-color:#f5f5f5;background-color:var(--grey100)}.dropdown-selector--item-link---2W1T7:focus{box-shadow:inset 0 0 2px 0 #03a9f4;box-shadow:inset 0 0 2px 0 var(--ltblue500);outline:none}.dropdown-selector--item-selected---1q-NK .dropdown-selector--item-link---2W1T7{color:#4caf50;color:var(--green500)}
-:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.footer--trans-color---205XF{transition:color .2s ease-out;transition:var(--link-transition)}.footer--component---1WcTR{position:absolute;bottom:0;width:100%;height:60px;height:var(--footer-height);color:rgba(0,0,0,.38);color:var(--black38);text-align:center}.footer--component---1WcTR p{font-size:12px;margin:10px 0}.footer--component---1WcTR a{color:rgba(0,0,0,.54);color:var(--black54);transition:color .2s ease-out;transition:var(--link-transition)}.footer--component---1WcTR a:hover{color:rgba(0,0,0,.87);color:var(--black87)}
-:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.loader--trans-color---97r08{transition:color .2s ease-out;transition:var(--link-transition)}.loader--component---2grcA{position:fixed;top:0;height:100%;width:100%;background-color:color(#f2f2f2 alpha(60%));background-color:color(var(--body-bg) alpha(60%));padding-top:122px;padding-top:var(--navbar-height)}.loader--wrap---3Fhrc{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:column;flex-direction:column;min-height:200px}.loader--text---3Yu3g{color:color(#000 tint(46.7%));color:var(--gray-light);text-align:center;margin:1rem 0 0}.loader--spinner---2q6MO{border-radius:50%;width:42px;height:42px;border:.25rem solid color(#000 tint(73.5%));border-top-color:color(#000 tint(33.5%));border:.25rem solid var(--gray-medium);border-top-color:var(--gray);-webkit-animation:loader--spin---K6Loh 1s linear infinite;animation:loader--spin---K6Loh 1s linear infinite}@-webkit-keyframes loader--spin---K6Loh{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loader--spin---K6Loh{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@media (min-width:768px){.loader--component---2grcA{padding-top:56px;padding-top:var(--navbar-height-short)}}
-:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.nav-menu--trans-color---1l-R-{transition:color .2s ease-out;transition:var(--link-transition)}.nav-menu--wrap---39S_b{position:fixed;z-index:2010;top:0;right:0;bottom:0;left:0;overflow:hidden;visibility:hidden}.nav-menu--overlay---k2Lwz{display:none;background:rgba(0,0,0,.5)}.nav-menu--close-btn---2m7W7{border:none;background:transparent;padding:0}.nav-menu--close-btn---2m7W7:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none}.nav-menu--close-btn---2m7W7{cursor:pointer;transition:color .2s ease-out;transition:var(--link-transition);position:absolute;top:16px;right:16px;color:rgba(0,0,0,.54);color:var(--black54)}.nav-menu--close-btn---2m7W7:active,.nav-menu--close-btn---2m7W7:hover{color:rgba(0,0,0,.87);color:var(--black87)}.nav-menu--menu---lFcsl{position:absolute;transition:all .15s cubic-bezier(.25,1,.8,1);-webkit-transform:translate(-100%);transform:translate(-100%);width:100%;z-index:1;top:0;bottom:0;left:0;overflow:auto;background:#fff}.nav-menu--close-button---2_OHr{border:none;background:transparent;padding:0}.nav-menu--close-button---2_OHr:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none}.nav-menu--close-button---2_OHr{cursor:pointer;transition:color .2s ease-out;transition:var(--link-transition);position:absolute;top:14px;right:14px;font-size:21px;width:26px;height:26px;color:color(#000 tint(33.5%));color:var(--gray)}.nav-menu--close-button---2_OHr:hover{color:color(#000 tint(20%));color:var(--gray-dark)}.nav-menu--date---3SYOi,.nav-menu--section-head---3LXPD{color:rgba(0,0,0,.54);color:var(--black54)}.nav-menu--section-head---3LXPD{text-transform:uppercase}.nav-menu--control---1JEYH{display:-webkit-flex;display:flex;position:relative;margin:8px 0;-webkit-align-items:center;align-items:center}.nav-menu--control-label---3f2XU{display:inline-block;-webkit-flex-grow:1;flex-grow:1;font-family:var(--font-family--regular);font-size:13px;vertical-align:top;line-height:24px}.nav-menu--control-label---3f2XU.nav-menu--with-icon---qF4hj{margin-left:12px}.nav-menu--control-group---32kKg{margin-bottom:10px}.nav-menu--toggle-icon-passed---132lH{color:#4caf50;color:var(--green500)}.nav-menu--toggle-icon-failed---x-XUB{color:#f44336;color:var(--red500)}.nav-menu--toggle-icon-pending---3ZJAs{color:#03a9f4;color:var(--ltblue500)}.nav-menu--toggle-icon-skipped---FyedH{color:#9e9e9e;color:var(--grey500)}.nav-menu--wrap---39S_b.nav-menu--open---3BW1O{visibility:visible}.nav-menu--wrap---39S_b.nav-menu--open---3BW1O .nav-menu--overlay---k2Lwz{opacity:1}.nav-menu--wrap---39S_b.nav-menu--open---3BW1O .nav-menu--menu---lFcsl{-webkit-transform:translate(0);transform:translate(0)}.nav-menu--section---2z7Dj{padding:0 16px;border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--grey300)}.nav-menu--list---2QMG9{list-style:none;padding-left:0}.nav-menu--main---jkqJW{margin:8px 0}.nav-menu--no-tests---2sRAg>.nav-menu--item---gXWu6:not(.nav-menu--has-tests---1ND4g)>div>.nav-menu--sub---EnSIu{padding-left:0}.nav-menu--no-tests---2sRAg>.nav-menu--item---gXWu6:not(.nav-menu--has-tests---1ND4g):not(:only-child){padding-left:22px}.nav-menu--sub---EnSIu{padding-left:24px;margin:0 0 2px}.nav-menu--link---tywPF{display:-webkit-flex;display:flex;position:relative;-webkit-align-items:center;align-items:center;padding:3px 0;color:color(#000 tint(33.5%));color:var(--gray)}.nav-menu--link---tywPF:hover{color:color(color(#428bca shade(6.5%)) shade(15%));color:var(--link-hover-color);text-decoration:none}.nav-menu--link---tywPF:active,.nav-menu--link---tywPF:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none;text-decoration:none}.nav-menu--link---tywPF span{transition:color .2s ease-out;transition:var(--link-transition);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-menu--link-icon---1Q2NP{margin-right:2px}.nav-menu--link-icon---1Q2NP.nav-menu--pass---1PUeh{color:#4caf50;color:var(--green500)}.nav-menu--link-icon---1Q2NP.nav-menu--fail---3gQQa{color:#f44336;color:var(--red500)}.nav-menu--link-icon---1Q2NP.nav-menu--pending---9zAw0{color:#03a9f4;color:var(--ltblue500)}.nav-menu--link-icon---1Q2NP.nav-menu--skipped---31GPM{color:#9e9e9e;color:var(--grey500)}.nav-menu--disabled---2MoA_{opacity:.3;pointer-events:none}@media (min-width:768px){.nav-menu--menu---lFcsl{width:320px;left:auto}.nav-menu--overlay---k2Lwz{display:block;position:fixed;transition:all .2s ease-out;top:0;right:0;bottom:0;left:0;cursor:pointer;opacity:0}}
-/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.trans-color{transition:color .2s ease-out;transition:var(--link-transition)}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-family:var(--headings-font-family);font-weight:400;font-weight:var(--headings-font-weight);line-height:1.1;line-height:var(--headings-line-height);color:inherit;color:var(--headings-color)}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:color(#000 tint(46.7%));color:var(--headings-small-color)}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-top:var(--line-height-computed);margin-bottom:10px;margin-bottom:calc(var(--line-height-computed)/2)}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-top:calc(var(--line-height-computed)/2);margin-bottom:10px;margin-bottom:calc(var(--line-height-computed)/2)}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px;font-size:var(--font-size-h1)}.h2,h2{font-size:30px;font-size:var(--font-size-h2)}.h3,h3{font-size:24px;font-size:var(--font-size-h3)}.h4,h4{font-size:18px;font-size:var(--font-size-h4)}.h5,h5{font-size:14px;font-size:var(--font-size-h5)}.h6,h6{font-size:12px;font-size:var(--font-size-h6)}p{margin:0 0 10px;margin:0 0 calc(var(--line-height-computed)/2)}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}ol,ul{margin-top:0;margin-bottom:10px;margin-bottom:calc(var(--line-height-computed)/2);ol,ul{margin-bottom:0}}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}code{font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-family:var(--font-family-mono)}.hljs{display:block;overflow-x:auto;padding:.5em;color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-built_in,.hljs-class .hljs-title{color:#c18401}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}.ct-label{fill:rgba(0,0,0,.4);color:rgba(0,0,0,.4);font-size:.75rem;line-height:1}.ct-chart-bar .ct-label,.ct-chart-line .ct-label{display:block;display:-webkit-flex;display:flex}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{dominant-baseline:central}.ct-label.ct-horizontal.ct-start{-webkit-align-items:flex-end;align-items:flex-end}.ct-label.ct-horizontal.ct-end,.ct-label.ct-horizontal.ct-start{-webkit-justify-content:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-horizontal.ct-end{-webkit-align-items:flex-start;align-items:flex-start}.ct-label.ct-vertical.ct-start{-webkit-align-items:flex-end;align-items:flex-end;-webkit-justify-content:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-label.ct-vertical.ct-end{-webkit-align-items:flex-end;align-items:flex-end;-webkit-justify-content:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-start{-webkit-align-items:flex-end;align-items:flex-end;-webkit-justify-content:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-end{-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{-webkit-align-items:flex-end;align-items:flex-end;-webkit-justify-content:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;text-align:left;text-anchor:end}.ct-grid{stroke:rgba(0,0,0,.2);stroke-width:1px;stroke-dasharray:2px}.ct-grid-background{fill:none}.ct-point{stroke-width:10px;stroke-linecap:round}.ct-line{fill:none;stroke-width:4px}.ct-area{stroke:none;fill-opacity:.1}.ct-bar{fill:none;stroke-width:10px}.ct-slice-donut{fill:none;stroke-width:60px}.ct-series-a .ct-bar,.ct-series-a .ct-line,.ct-series-a .ct-point,.ct-series-a .ct-slice-donut{stroke:#d70206}.ct-series-a .ct-area,.ct-series-a .ct-slice-donut-solid,.ct-series-a .ct-slice-pie{fill:#d70206}.ct-series-b .ct-bar,.ct-series-b .ct-line,.ct-series-b .ct-point,.ct-series-b .ct-slice-donut{stroke:#f05b4f}.ct-series-b .ct-area,.ct-series-b .ct-slice-donut-solid,.ct-series-b .ct-slice-pie{fill:#f05b4f}.ct-series-c .ct-bar,.ct-series-c .ct-line,.ct-series-c .ct-point,.ct-series-c .ct-slice-donut{stroke:#f4c63d}.ct-series-c .ct-area,.ct-series-c .ct-slice-donut-solid,.ct-series-c .ct-slice-pie{fill:#f4c63d}.ct-series-d .ct-bar,.ct-series-d .ct-line,.ct-series-d .ct-point,.ct-series-d .ct-slice-donut{stroke:#d17905}.ct-series-d .ct-area,.ct-series-d .ct-slice-donut-solid,.ct-series-d .ct-slice-pie{fill:#d17905}.ct-series-e .ct-bar,.ct-series-e .ct-line,.ct-series-e .ct-point,.ct-series-e .ct-slice-donut{stroke:#453d3f}.ct-series-e .ct-area,.ct-series-e .ct-slice-donut-solid,.ct-series-e .ct-slice-pie{fill:#453d3f}.ct-series-f .ct-bar,.ct-series-f .ct-line,.ct-series-f .ct-point,.ct-series-f .ct-slice-donut{stroke:#59922b}.ct-series-f .ct-area,.ct-series-f .ct-slice-donut-solid,.ct-series-f .ct-slice-pie{fill:#59922b}.ct-series-g .ct-bar,.ct-series-g .ct-line,.ct-series-g .ct-point,.ct-series-g .ct-slice-donut{stroke:#0544d3}.ct-series-g .ct-area,.ct-series-g .ct-slice-donut-solid,.ct-series-g .ct-slice-pie{fill:#0544d3}.ct-series-h .ct-bar,.ct-series-h .ct-line,.ct-series-h .ct-point,.ct-series-h .ct-slice-donut{stroke:#6b0392}.ct-series-h .ct-area,.ct-series-h .ct-slice-donut-solid,.ct-series-h .ct-slice-pie{fill:#6b0392}.ct-series-i .ct-bar,.ct-series-i .ct-line,.ct-series-i .ct-point,.ct-series-i .ct-slice-donut{stroke:#f05b4f}.ct-series-i .ct-area,.ct-series-i .ct-slice-donut-solid,.ct-series-i .ct-slice-pie{fill:#f05b4f}.ct-series-j .ct-bar,.ct-series-j .ct-line,.ct-series-j .ct-point,.ct-series-j .ct-slice-donut{stroke:#dda458}.ct-series-j .ct-area,.ct-series-j .ct-slice-donut-solid,.ct-series-j .ct-slice-pie{fill:#dda458}.ct-series-k .ct-bar,.ct-series-k .ct-line,.ct-series-k .ct-point,.ct-series-k .ct-slice-donut{stroke:#eacf7d}.ct-series-k .ct-area,.ct-series-k .ct-slice-donut-solid,.ct-series-k .ct-slice-pie{fill:#eacf7d}.ct-series-l .ct-bar,.ct-series-l .ct-line,.ct-series-l .ct-point,.ct-series-l .ct-slice-donut{stroke:#86797d}.ct-series-l .ct-area,.ct-series-l .ct-slice-donut-solid,.ct-series-l .ct-slice-pie{fill:#86797d}.ct-series-m .ct-bar,.ct-series-m .ct-line,.ct-series-m .ct-point,.ct-series-m .ct-slice-donut{stroke:#b2c326}.ct-series-m .ct-area,.ct-series-m .ct-slice-donut-solid,.ct-series-m .ct-slice-pie{fill:#b2c326}.ct-series-n .ct-bar,.ct-series-n .ct-line,.ct-series-n .ct-point,.ct-series-n .ct-slice-donut{stroke:#6188e2}.ct-series-n .ct-area,.ct-series-n .ct-slice-donut-solid,.ct-series-n .ct-slice-pie{fill:#6188e2}.ct-series-o .ct-bar,.ct-series-o .ct-line,.ct-series-o .ct-point,.ct-series-o .ct-slice-donut{stroke:#a748ca}.ct-series-o .ct-area,.ct-series-o .ct-slice-donut-solid,.ct-series-o .ct-slice-pie{fill:#a748ca}.ct-square{display:block;position:relative;width:100%}.ct-square:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:100%}.ct-square:after{content:"";display:table;clear:both}.ct-square>svg{display:block;position:absolute;top:0;left:0}.ct-minor-second{display:block;position:relative;width:100%}.ct-minor-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:93.75%}.ct-minor-second:after{content:"";display:table;clear:both}.ct-minor-second>svg{display:block;position:absolute;top:0;left:0}.ct-major-second{display:block;position:relative;width:100%}.ct-major-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:88.8888888889%}.ct-major-second:after{content:"";display:table;clear:both}.ct-major-second>svg{display:block;position:absolute;top:0;left:0}.ct-minor-third{display:block;position:relative;width:100%}.ct-minor-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:83.3333333333%}.ct-minor-third:after{content:"";display:table;clear:both}.ct-minor-third>svg{display:block;position:absolute;top:0;left:0}.ct-major-third{display:block;position:relative;width:100%}.ct-major-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:80%}.ct-major-third:after{content:"";display:table;clear:both}.ct-major-third>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fourth{display:block;position:relative;width:100%}.ct-perfect-fourth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:75%}.ct-perfect-fourth:after{content:"";display:table;clear:both}.ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fifth{display:block;position:relative;width:100%}.ct-perfect-fifth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:66.6666666667%}.ct-perfect-fifth:after{content:"";display:table;clear:both}.ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-sixth{display:block;position:relative;width:100%}.ct-minor-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:62.5%}.ct-minor-sixth:after{content:"";display:table;clear:both}.ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-golden-section{display:block;position:relative;width:100%}.ct-golden-section:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:61.804697157%}.ct-golden-section:after{content:"";display:table;clear:both}.ct-golden-section>svg{display:block;position:absolute;top:0;left:0}.ct-major-sixth{display:block;position:relative;width:100%}.ct-major-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:60%}.ct-major-sixth:after{content:"";display:table;clear:both}.ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-seventh{display:block;position:relative;width:100%}.ct-minor-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:56.25%}.ct-minor-seventh:after{content:"";display:table;clear:both}.ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-seventh{display:block;position:relative;width:100%}.ct-major-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:53.3333333333%}.ct-major-seventh:after{content:"";display:table;clear:both}.ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-octave{display:block;position:relative;width:100%}.ct-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:50%}.ct-octave:after{content:"";display:table;clear:both}.ct-octave>svg{display:block;position:absolute;top:0;left:0}.ct-major-tenth{display:block;position:relative;width:100%}.ct-major-tenth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:40%}.ct-major-tenth:after{content:"";display:table;clear:both}.ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}.ct-major-eleventh{display:block;position:relative;width:100%}.ct-major-eleventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:37.5%}.ct-major-eleventh:after{content:"";display:table;clear:both}.ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-twelfth{display:block;position:relative;width:100%}.ct-major-twelfth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:33.3333333333%}.ct-major-twelfth:after{content:"";display:table;clear:both}.ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}.ct-double-octave{display:block;position:relative;width:100%}.ct-double-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:25%}.ct-double-octave:after{content:"";display:table;clear:both}.ct-double-octave>svg{display:block;position:absolute;top:0;left:0}@font-face{font-family:robotolight;src:url(roboto-light-webfont.woff2) format("woff2"),url(roboto-light-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(roboto-medium-webfont.woff2) format("woff2"),url(roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotoregular;src:url(roboto-regular-webfont.woff2) format("woff2"),url(roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(MaterialIcons-Regular.woff2) format("woff2"),url(MaterialIcons-Regular.woff) format("woff")}.material-icons{display:inline-block;font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;-webkit-font-feature-settings:"liga";font-feature-settings:"liga"}.material-icons.md-18{font-size:18px}.material-icons.md-24{font-size:24px}.material-icons.md-36{font-size:36px}.material-icons.md-48{font-size:48px}.material-icons.md-dark{color:rgba(0,0,0,.54)}.material-icons.md-dark.md-inactive{color:rgba(0,0,0,.26)}.material-icons.md-light{color:#fff}.material-icons.md-light.md-inactive{color:hsla(0,0%,100%,.3)}*,:after,:before{box-sizing:border-box}html{position:relative;min-height:100%}body{font-family:robotoregular,Helvetica Neue,Helvetica,Arial,sans-serif;font-family:var(--font-family-base);font-size:14px;font-size:var(--font-size-base);line-height:1.429;line-height:var(--line-height-base);color:rgba(0,0,0,.87);color:var(--text-color);background-color:#f2f2f2;background-color:var(--body-bg);margin-bottom:60px;margin-bottom:var(--footer-height)}a{text-decoration:none;transition:color .2s ease-out;transition:var(--link-transition)}a:hover{text-decoration:underline}pre{word-break:break-all;word-wrap:break-word;border-radius:4px}.cf:before,.clearfix:before{content:" ";display:table}.cf:after,.clearfix:after{content:" ";display:table;clear:both}.container:after,.container:before{content:" ";display:table}.container:after{clear:both}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-left:calc(var(--grid-gutter-width)/2);padding-right:15px;padding-right:calc(var(--grid-gutter-width)/2)}.row:after,.row:before{content:" ";display:table}.row:after{clear:both}.row{margin-left:-15px;margin-left:calc(var(--grid-gutter-width)/-2);margin-right:-15px;margin-right:calc(var(--grid-gutter-width)/-2)}.details{padding-top:146px;padding-top:calc(var(--navbar-height) + 24px)}.z-depth-0{box-shadow:none!important}.z-depth-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}.z-depth-1-half{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15)}.z-depth-2{box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.z-depth-3{box-shadow:0 12px 15px 0 rgba(0,0,0,.24),0 17px 50px 0 rgba(0,0,0,.19)}.z-depth-4{box-shadow:0 16px 28px 0 rgba(0,0,0,.22),0 25px 55px 0 rgba(0,0,0,.21)}.z-depth-5{box-shadow:0 27px 24px 0 rgba(0,0,0,.2),0 40px 77px 0 rgba(0,0,0,.22)}@media (min-width:768px){.container{width:750px;width:var(--container-sm)}.details{padding-top:80px;padding-top:calc(var(--navbar-height-short) + 24px)}}@media (min-width:992px){.container{width:970px;width:var(--container-md)}}@media (min-width:1200px){.container{width:1170px;width:var(--container-lg)}}
-:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.navbar--trans-color---1tk7E{transition:color .2s ease-out;transition:var(--link-transition)}.navbar--component---2UCEi:after,.navbar--component---2UCEi:before{content:" ";display:table}.navbar--component---2UCEi:after{clear:both}.navbar--component---2UCEi{position:fixed;-webkit-flex-direction:column;flex-direction:column;top:0;right:0;left:0;z-index:1030;min-height:122px;min-height:var(--navbar-height);height:122px;height:var(--navbar-height);margin-bottom:0;border:none;background:#37474f;background:var(--bluegrey800)}.navbar--component---2UCEi,.navbar--report-info-cnt---8y9Bb{display:-webkit-flex;display:flex}.navbar--report-info-cnt---8y9Bb{overflow:hidden;padding-right:12px}.navbar--menu-button---1ZRpz{border:none;background:transparent;padding:0}.navbar--menu-button---1ZRpz:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none}.navbar--menu-button---1ZRpz{cursor:pointer;transition:color .2s ease-out;transition:var(--link-transition);height:40px;margin:8px 8px 0;padding:8px;color:hsla(0,0%,100%,.5);color:var(--light-icon-inactive)}.navbar--menu-button---1ZRpz:hover{color:#fff;color:var(--light-icon-active)}.navbar--report-title---3bXCv{-webkit-flex-grow:1;flex-grow:1;font-family:var(--font-family--light);color:#fff;font-size:18px;line-height:52px;line-height:calc(var(--navbar-height-short) - 4px);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navbar--pct-bar---3EwW-:after,.navbar--pct-bar---3EwW-:before{content:" ";display:table}.navbar--pct-bar---3EwW-:after{clear:both}.navbar--pct-bar---3EwW-{display:-webkit-flex;display:flex;position:absolute;left:0;right:0;bottom:0;height:4px}.navbar--pct-bar---3EwW- .navbar--pass---2oR-w{background-color:#4caf50;background-color:var(--green500)}.navbar--pct-bar---3EwW- .navbar--fail---3mN80{background-color:#f44336;background-color:var(--red500)}.navbar--pct-bar---3EwW- .navbar--pend---2iqjh{background-color:#03a9f4;background-color:var(--ltblue500)}.navbar--pct-bar-segment---3T0_o{height:4px}@media (min-width:768px){.navbar--component---2UCEi{min-height:56px;min-height:var(--navbar-height-short);height:56px;height:var(--navbar-height-short);-webkit-flex-direction:initial;flex-direction:row}.navbar--report-info-cnt---8y9Bb{-webkit-flex-grow:1;flex-grow:1}}
-:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.quick-summary--trans-color---HUJqE{transition:color .2s ease-out;transition:var(--link-transition)}.quick-summary--cnt---3s38x{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;padding:0 12px}.quick-summary--list---2_80W:after,.quick-summary--list---2_80W:before{content:" ";display:table}.quick-summary--list---2_80W:after{clear:both}.quick-summary--list---2_80W{list-style:none;padding-left:0;transition:opacity .2s ease-out;margin:0 0 8px}.quick-summary--item---bfSQ0,.quick-summary--list---2_80W{display:-webkit-flex;display:flex}.quick-summary--item---bfSQ0{font-family:var(--font-family--light);-webkit-align-items:flex-start;align-items:flex-start;color:#fff;font-size:16px;-webkit-flex-basis:25%;flex-basis:25%}.quick-summary--item---bfSQ0 button{border:none;background:transparent;padding:0}.quick-summary--item---bfSQ0 button:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none}.quick-summary--item---bfSQ0 button{transition:color .2s ease-out;transition:var(--link-transition);display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;color:#fff;cursor:pointer}.quick-summary--item---bfSQ0 button:hover .quick-summary--icon---TW1oG{border-color:#fff}.quick-summary--item---bfSQ0.quick-summary--tests---2nNut{color:#fff}.quick-summary--item---bfSQ0.quick-summary--passes---3IjYH .quick-summary--icon---TW1oG{color:#388e3c;color:var(--green700);background-color:#c8e6c9;background-color:var(--green100)}.quick-summary--single-filter---31Thy .quick-summary--item---bfSQ0.quick-summary--passes---3IjYH .quick-summary--icon---TW1oG{background-color:#e0e0e0;background-color:var(--grey300);color:#9e9e9e;color:var(--grey500)}.quick-summary--single-filter--passed---3QnUL .quick-summary--item---bfSQ0.quick-summary--passes---3IjYH .quick-summary--icon---TW1oG{color:#fff;background-color:#388e3c;background-color:var(--green700)}.quick-summary--item---bfSQ0.quick-summary--failures---14s29 .quick-summary--icon---TW1oG{color:#d32f2f;color:var(--red700);background-color:#ffcdd2;background-color:var(--red100)}.quick-summary--single-filter---31Thy .quick-summary--item---bfSQ0.quick-summary--failures---14s29 .quick-summary--icon---TW1oG{background-color:#e0e0e0;background-color:var(--grey300);color:#9e9e9e;color:var(--grey500)}.quick-summary--single-filter--failed---3_tAw .quick-summary--item---bfSQ0.quick-summary--failures---14s29 .quick-summary--icon---TW1oG{color:#fff;background-color:#d32f2f;background-color:var(--red700)}.quick-summary--item---bfSQ0.quick-summary--pending---261aV .quick-summary--icon---TW1oG{color:#0288d1;color:var(--ltblue700);background-color:#b3e5fc;background-color:var(--ltblue100)}.quick-summary--single-filter---31Thy .quick-summary--item---bfSQ0.quick-summary--pending---261aV .quick-summary--icon---TW1oG{background-color:#e0e0e0;background-color:var(--grey300);color:#9e9e9e;color:var(--grey500)}.quick-summary--single-filter--pending---21lZM .quick-summary--item---bfSQ0.quick-summary--pending---261aV .quick-summary--icon---TW1oG{color:#fff;background-color:#0288d1;background-color:var(--ltblue700)}.quick-summary--item---bfSQ0.quick-summary--skipped---tyOc4 .quick-summary--icon---TW1oG{color:#616161;color:var(--grey700);background-color:#f5f5f5;background-color:var(--grey100)}.quick-summary--single-filter---31Thy .quick-summary--item---bfSQ0.quick-summary--skipped---tyOc4 .quick-summary--icon---TW1oG{background-color:#e0e0e0;background-color:var(--grey300);color:#9e9e9e;color:var(--grey500)}.quick-summary--single-filter--skipped---1AdZA .quick-summary--item---bfSQ0.quick-summary--skipped---tyOc4 .quick-summary--icon---TW1oG{color:#fff;background-color:#616161;background-color:var(--grey700)}.quick-summary--icon---TW1oG{position:relative;top:2px;font-size:18px;margin-right:4px}.quick-summary--circle-icon---1HDS7{font-size:12px;border-radius:50%;padding:2px;border:1px solid transparent;transition:border-color .2s ease-out}@media (min-width:768px){.quick-summary--cnt---3s38x{-webkit-flex-direction:initial;flex-direction:row;padding:14px 12px 0 0}.quick-summary--list---2_80W{margin:0}.quick-summary--item---bfSQ0{font-size:18px;-webkit-flex-basis:initial;flex-basis:auto;margin:0 12px}.quick-summary--icon---TW1oG{font-size:24px;width:24px;top:0}.quick-summary--circle-icon---1HDS7{font-size:18px}}
-:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.radio-button--trans-color---egsik{transition:color .2s ease-out;transition:var(--link-transition)}.radio-button--component---1ix3c:after,.radio-button--component---1ix3c:before{content:" ";display:table}.radio-button--component---1ix3c:after{clear:both}.radio-button--component---1ix3c{position:relative;height:24px}.radio-button--outer---a_NqL{position:absolute;top:50%;right:0;margin-top:-9px;width:18px;height:18px;border:2px solid #4caf50;border:2px solid var(--green500);border-radius:12px;cursor:pointer;transition:border-color .2s ease-out}.radio-button--off---dBAOK{border-color:color(#000 tint(73.5%));border-color:var(--gray-medium)}.radio-button--inner---3bo9Q{display:block;position:absolute;top:2px;right:2px;width:10px;height:10px;border-radius:100%;background-color:#4caf50;background-color:var(--green500)}.radio-button--off---dBAOK .radio-button--inner---3bo9Q{background-color:#fff;-webkit-transform:scale(0);transform:scale(0)}.radio-button--inner---3bo9Q{transition:all .15s cubic-bezier(.23,1,.32,1)}
-:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.test--trans-color---3sP2r{transition:color .2s ease-out;transition:var(--link-transition)}.test--component---1mwsi{border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--grey300)}.test--component---1mwsi.test--expanded---3hI0z.test--passed---38wAs .test--body-wrap---3EGPT,.test--component---1mwsi.test--expanded---3hI0z.test--passed---38wAs .test--header-btn---mI0Oy{border-left-color:#4caf50;border-left-color:var(--green500)}.test--component---1mwsi.test--expanded---3hI0z.test--failed---2PZhW .test--body-wrap---3EGPT,.test--component---1mwsi.test--expanded---3hI0z.test--failed---2PZhW .test--header-btn---mI0Oy{border-left-color:#f44336;border-left-color:var(--red500)}.test--list---24Hjy{list-style-type:none;margin:0;padding:0}.test--header-btn---mI0Oy{display:-webkit-flex;display:flex;position:relative;background:#fff;border:none;border-left:3px solid transparent;cursor:pointer;-webkit-flex-wrap:wrap;flex-wrap:wrap;padding:10px 16px 10px 13px;transition:border-color .2s ease-out;width:100%}.test--header-btn---mI0Oy[disabled]{cursor:default}.test--header-btn---mI0Oy:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none}.test--header-btn---mI0Oy:focus:not([disabled]),.test--header-btn---mI0Oy:hover:not([disabled]){border-left-color:#9e9e9e;border-left-color:var(--grey500)}.test--title---4c0rg{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-flex-grow:1;flex-grow:1;font-family:var(--font-family--regular);font-size:13px;line-height:24px;margin:0;padding-right:12px;text-align:left}.test--hook---3T4lI .test--title---4c0rg{color:rgba(0,0,0,.54);color:var(--black54)}.test--expanded---3hI0z .test--title---4c0rg{line-height:1.5;padding-top:3px;white-space:normal}.test--icon---2jgH_{-webkit-align-self:flex-start;align-self:flex-start;padding:3px;border-radius:50%;color:#fff;margin-right:16px}.test--icon---2jgH_.test--pass---C1Mk7{color:#c8e6c9;color:var(--green100);background-color:#4caf50;background-color:var(--green500)}.test--icon---2jgH_.test--fail---3u2w0{color:#ffcdd2;color:var(--red100);background-color:#f44336;background-color:var(--red500)}.test--icon---2jgH_.test--pending---3Ctfm{color:#b3e5fc;color:var(--ltblue100);background-color:#03a9f4;background-color:var(--ltblue500)}.test--icon---2jgH_.test--skipped---3aU0Y{color:#f5f5f5;color:var(--grey100);background-color:#9e9e9e;background-color:var(--grey500)}.test--icon---2jgH_.test--hook---3T4lI{color:rgba(0,0,0,.38);color:var(--black38);padding:0}.test--failed---2PZhW .test--icon---2jgH_.test--hook---3T4lI{color:#f44336;color:var(--red500)}.test--info---1UQNw{display:-webkit-flex;display:flex}.test--duration---2tVp5{font-family:var(--font-family--regular);line-height:24px;color:rgba(0,0,0,.54);color:var(--black54)}.test--component---1mwsi:hover:not(.test--pending---3Ctfm) .test--duration---2tVp5,.test--expanded---3hI0z .test--duration---2tVp5{color:rgba(0,0,0,.87);color:var(--black87)}.test--duration---2tVp5{transition:color .2s ease-out}.test--duration-icon---2KnOU{margin-left:4px;line-height:24px!important;color:rgba(0,0,0,.38);color:var(--black38)}.test--duration-icon---2KnOU.test--slow---MQOnF{color:#e57373;color:var(--red300)}.test--duration-icon---2KnOU.test--medium---5j890{color:#fbc02d;color:var(--yellow700)}.test--context-icon---2POzC{position:relative;line-height:24px!important;color:rgba(0,0,0,.38);color:var(--black38);margin-right:8px;top:1px}.test--body-wrap---3EGPT{border-left:3px solid transparent;transition:border-color .2s ease-out}.test--expanded---3hI0z .test--body-wrap---3EGPT{display:block;padding-bottom:10px}.test--body---Ox0q_{display:none;background-color:#fafafa;border:1px solid #eceff1;border:1px solid var(--grey50);border-radius:4px}.test--expanded---3hI0z .test--body---Ox0q_{display:block;margin:0 16px 0 13px}.test--error-message---3Grn0{color:#f44336;color:var(--red500);font-size:12px;margin:10px 0 0;text-align:left;width:100%;word-break:break-word}.test--code-snippet---3H5Xj{position:relative;font-size:11px;margin:0;border-radius:0}.test--code-snippet---3H5Xj+.test--code-snippet---3H5Xj{border-top:1px solid #fff}.test--code-snippet---3H5Xj.hljs{padding:1em;background:none}.test--code-diff---2XQsb code>span:first-child{margin-right:11px}.test--code-diff-expected---1QWLl span{color:#859900}.test--inline-diff---3OmYO .test--code-diff-expected---1QWLl{background-color:#859900;color:#fff}.test--code-diff-actual---3MMxN span{color:#dc322f}.test--inline-diff---3OmYO .test--code-diff-actual---3MMxN{background-color:#dc322f;color:#fff}.test--code-label---1QEUY{position:absolute;font-family:var(--font-family--regular);top:0;right:0;padding:.2em .6em;background-color:#9e9e9e;background-color:var(--grey500);color:#fff}.test--context---1YYgX{background-color:#fff;border-top:1px solid #eceff1;border-top:1px solid var(--grey50);border-bottom-left-radius:4px;border-bottom-right-radius:4px}.test--context-title---HHH10{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-family--regular);font-size:13px;color:rgba(0,0,0,.54);color:var(--black54);margin:0;padding:11px 11px 0}.test--context-item---R1NNU{padding-top:11px}.test--context-item---R1NNU .test--code-snippet---3H5Xj{padding-top:0}.test--context-item-title---1KxIO{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-family--medium);font-size:13px;margin:0;padding:0 11px 11px}.test--text-link---2_cSn{display:inline-block;padding:0 1em 1em;font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-family:var(--font-family-mono);font-size:11px;color:#0288d1;color:var(--ltblue700)}.test--text-link---2_cSn:hover{color:#03a9f4;color:var(--ltblue500)}.test--image-link---PUFPJ,.test--video-link---1L-2D{display:inline-block;font-size:11px;padding:0 1em 1em}.test--image---2Z5X2,.test--video---2JK7O{display:block;max-width:100%;height:auto}
-:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.suite--trans-color---2pu6T{transition:color .2s ease-out;transition:var(--link-transition)}.suite--component---22Vxk:after,.suite--component---22Vxk:before{content:" ";display:table}.suite--component---22Vxk:after{clear:both}.suite--component---22Vxk{position:relative;background-color:#fff;margin-bottom:20px}.suite--component---22Vxk>.suite--body---1itCO>ul>li>.suite--component---22Vxk{border:1px solid #e0e0e0;border:1px solid var(--grey300);border-right:none;border-bottom:none;margin:16px 0 16px 16px}.suite--component---22Vxk>.suite--body---1itCO>ul>li>.suite--component---22Vxk.suite--no-tests---l47BS{border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--grey300)}.suite--list---3WtMK{list-style-type:none;margin:0;padding:0}.suite--list-main---3KCXR>li>.suite--component---22Vxk,.suite--root-suite---ZDRuj{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);margin:0 0 24px}.suite--list-main---3KCXR>.suite--no-tests---l47BS>.suite--body---1itCO>ul>li>.suite--component---22Vxk:not(.suite--no-suites---2PQFQ){border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--grey300)}.suite--header---TddSn:after,.suite--header---TddSn:before{content:" ";display:table}.suite--header---TddSn:after{clear:both}.suite--header---TddSn{border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--grey300)}.suite--no-tests---l47BS>.suite--header---TddSn{padding-bottom:0;border-bottom:none}.suite--header-btn---25qLz{background:#fff;border:none;cursor:pointer;padding:12px 16px;text-align:left;width:100%}.suite--header-btn---25qLz:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none}.suite--title---3T6OR{display:-webkit-flex;display:flex;font-family:var(--font-family--light);font-size:21px;margin:0}.suite--title---3T6OR span{margin-right:auto}.suite--title---3T6OR .suite--icon---2KPe5{margin-left:58px}.suite--filename---1u8oo{color:rgba(0,0,0,.54);color:var(--black54);font-family:var(--font-family--regular);margin:6px 0 0}.suite--body---1itCO:after,.suite--body---1itCO:before{content:" ";display:table}.suite--body---1itCO:after{clear:both}.suite--body---1itCO.suite--hide---2i8QF{display:none}.suite--has-suites---3OYDf>.suite--body---1itCO{border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--grey300)}.suite--chart-wrap---7hvUh{display:none;position:absolute;top:12px;right:36px;width:50px;height:50px}.suite--chart-slice---1XN2j{stroke:#fff;stroke-width:2px}.ct-series-a .suite--chart-slice---1XN2j{fill:#4caf50;fill:var(--green500)}.ct-series-b .suite--chart-slice---1XN2j{fill:#f44336;fill:var(--red500)}.ct-series-c .suite--chart-slice---1XN2j{fill:#03a9f4;fill:var(--ltblue500)}.ct-series-d .suite--chart-slice---1XN2j{fill:rgba(0,0,0,.38);fill:var(--black38)}@media (min-width:768px){.suite--chart-wrap---7hvUh{display:block}.suite--chart-enabled---1N-VF:not(.suite--no-tests---l47BS) .suite--header---TddSn{min-height:66px}}
-:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.suite-summary--trans-color---14JXk{transition:color .2s ease-out;transition:var(--link-transition)}.suite-summary--component---cFAkx:after,.suite-summary--component---cFAkx:before{content:" ";display:table}.suite-summary--component---cFAkx:after{clear:both}.suite-summary--component---cFAkx{list-style:none;padding-left:0;display:-webkit-flex;display:flex;font-family:var(--font-family--regular);font-size:15px;margin:16px 0 0}.suite-summary--component---cFAkx.suite-summary--no-margin---3WX9n{margin:0}.suite-summary--summary-item---JHYFN{display:-webkit-flex;display:flex;line-height:18px;margin:0 8px;color:rgba(0,0,0,.54);color:var(--black54)}.suite-summary--summary-item---JHYFN:first-child{margin-left:0}.suite-summary--summary-item---JHYFN.suite-summary--duration---AzGUQ,.suite-summary--summary-item---JHYFN.suite-summary--tests---3Zhct{color:rgba(0,0,0,.54);color:var(--black54)}.suite-summary--summary-item---JHYFN.suite-summary--passed---24BnC{color:#4caf50;color:var(--green500)}.suite-summary--summary-item---JHYFN.suite-summary--failed---205C4{color:#f44336;color:var(--red500)}.suite-summary--summary-item---JHYFN.suite-summary--pending---3_Nkj{color:#03a9f4;color:var(--ltblue500)}.suite-summary--summary-item---JHYFN.suite-summary--skipped---TovqF{color:rgba(0,0,0,.38);color:var(--black38)}.suite-summary--icon---3rZ6G{margin-right:2px}
-:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.toggle-switch--trans-color---16in9{transition:color .2s ease-out;transition:var(--link-transition)}.toggle-switch--component---3vjvh:after,.toggle-switch--component---3vjvh:before{content:" ";display:table}.toggle-switch--component---3vjvh:after{clear:both}.toggle-switch--component---3vjvh{height:24px}.toggle-switch--label---1Lu8U{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}.toggle-switch--toggle-input---3BB7e{position:absolute;opacity:0}.toggle-switch--toggle-input---3BB7e:checked+.toggle-switch--toggle---2kPqc{background-color:#a5d6a7;background-color:var(--green200)}.toggle-switch--toggle-input---3BB7e:checked+.toggle-switch--toggle---2kPqc:before{background-color:#4caf50;background-color:var(--green500);-webkit-transform:translateX(14px);transform:translateX(14px)}.toggle-switch--toggle-input---3BB7e:focus+.toggle-switch--toggle---2kPqc:before{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12),0 0 2px 0 #03a9f4;box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12),0 0 2px 0 var(--ltblue500)}.toggle-switch--toggle---2kPqc{display:inline-block;position:relative;background-color:#e0e0e0;background-color:var(--grey300);border-radius:7px;cursor:pointer;height:14px;margin-left:auto;transition:background-color .15s cubic-bezier(.4,0,.2,1) 0s;width:34px}.toggle-switch--toggle---2kPqc:before{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);content:"";position:absolute;background-color:#9e9e9e;background-color:var(--grey500);border-radius:100%;height:20px;left:0;top:-3px;width:20px;transition:-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0s;transition:transform .15s cubic-bezier(.4,0,.2,1) 0s;transition:transform .15s cubic-bezier(.4,0,.2,1) 0s,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0s}.toggle-switch--disabled---1qDLf{opacity:.6}.toggle-switch--disabled---1qDLf .toggle-switch--icon---348nT{color:rgba(0,0,0,.38);color:var(--black38)}.toggle-switch--disabled---1qDLf .toggle-switch--toggle---2kPqc{cursor:default}
mochawesome-report/assets/app.css.mapdiffbeforeafterboth--- a/mochawesome-report/assets/app.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///../../styles/vars.css","webpack:///dropdown.css","webpack:///dropdown-selector.css","webpack:///footer.css","webpack:///loader.css","webpack:///nav-menu.css","webpack:///../../../node_modules/normalize.css/normalize.css","webpack:///vars.css","webpack:///type.css","webpack:///../../../node_modules/highlight.js/styles/atom-one-light.css","webpack:///../../../node_modules/src/styles/chartist.scss","webpack:///../../../node_modules/src/styles/settings/_chartist-settings.scss","webpack:///app.global.css","webpack:///navbar.css","webpack:///quick-summary.css","webpack:///radio-button.css","webpack:///test.css","webpack:///suite.css","webpack:///suite-summary.css","webpack:///toggle-switch.css"],"names":[],"mappings":";AAAA,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,uBACE,6BAAkC,CAAlC,iCACF,CC1LA,qBACE,iBACF,CAEA,kBACE,kBACF,CAEA,iDACE,iBACF,CAEA,gBACE,SAAU,CACV,QAAS,CACT,eAAgB,CAChB,eACF,CAEA,qBACE,iBAAkB,CAClB,QAAS,CACT,YAAa,CACb,iBAAkB,CAClB,eAAgB,CAChB,aACF,CAEA,sBACE,MACF,CAEA,uBACE,OACF,CAEA,oDAEE,aAAc,CACd,iBAAkB,CAClB,kBAAmB,CACnB,oBACF,CAEA,0BACE,cACF,CAEA,gCACE,GACE,SACF,CACA,GACE,SACF,CACF,CAPA,wBACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,iCACE,GACE,SAAU,CACV,kBACF,CACA,GACE,SACF,CACF,CARA,yBACE,GACE,SAAU,CACV,kBACF,CACA,GACE,SACF,CACF,CAEA,iBACE,wCACkC,CADlC,gCACkC,CADlC,mGACkC,CADlC,2FACkC,CAClC,iBACF,CAEA,gBACE,uCACkC,CADlC,+BACkC,CADlC,kGACkC,CADlC,0FACkC,CAClC,kBACF,C;AD/EA,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,gCACE,6BAAkC,CAAlC,iCACF,CE1LA,6BACE,UACF,CAGE,yBF0JA,mEAA6E,CExJ7E,uBAAqC,CAArC,oCAAqC,CACrC,cAAe,CACf,UAAW,CACX,eAAgB,CAChB,KANkB,CASpB,2BACE,oBAAqB,CACrB,yBAAuC,CAAvC,sCAAuC,CACvC,cAAe,CACf,qBAAqB,CAArB,oBAAqB,CACrB,kBAAmB,CACnB,gBAAiB,CACjB,kBAAmB,CACnB,cAAe,CACf,WAAY,CACZ,eAAgB,CAChB,YAAa,CACb,UAKF,CAHE,iCACE,4BAAsC,CAAtC,qCACF,CAGF,gCACE,iBAAkB,CAClB,OAAQ,CACR,SAEF,CAEA,8DAHE,qBAAqB,CAArB,oBAuBF,CApBA,8BACE,WAAY,CAEZ,cAAe,CACf,gBAAiB,CACjB,eAAgB,CAChB,UAcF,CAZE,oCACE,wBAAgC,CAAhC,+BACF,CAEA,oCACE,kCAA4C,CAA5C,2CAA4C,CAC5C,YACF,CAfF,gEAkBI,aAAsB,CAAtB,qBAEJ,C;AF9DA,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,qBACE,6BAAkC,CAAlC,iCACF,CG1LA,mBACE,iBAAkB,CAClB,QAAS,CACT,UAAW,CAGX,WAA4B,CAA5B,2BAA4B,CAC5B,qBAAqB,CAArB,oBAAqB,CACrB,iBAeF,CAbE,qBACE,cAAe,CACf,aACF,CAEA,qBACE,qBAAqB,CAArB,oBAAqB,CACrB,6BAAkC,CAAlC,iCAKF,CAHE,2BACE,qBAAqB,CAArB,oBACF,C;AHvBJ,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,qBACE,6BAAkC,CAAlC,iCACF,CI1LA,mBACE,cAAe,CACf,KAAM,CACN,WAAY,CACZ,UAAW,CACX,0CAAkD,CAAlD,iDAAkD,CAClD,iBAAiC,CAAjC,gCACF,CAEA,cACE,oBAAa,CAAb,YAAa,CACb,0BAAmB,CAAnB,kBAAmB,CACnB,8BAAuB,CAAvB,sBAAuB,CACvB,6BAAsB,CAAtB,qBAAsB,CACtB,gBACF,CAEA,cACE,6BAAwB,CAAxB,uBAAwB,CACxB,iBAAkB,CAClB,eACF,CAEA,iBACE,iBAAkB,CAClB,UAAW,CACX,WAAY,CAEZ,2CAA6B,CAA7B,wCAA6B,CAA7B,sCAA6B,CAA7B,4BAA6B,CAC7B,iDAAkC,CAAlC,yCACF,CAEA,gCACE,GACE,8BAAuB,CAAvB,sBACF,CAEA,GACE,+BAAyB,CAAzB,uBACF,CACF,CARA,wBACE,GACE,8BAAuB,CAAvB,sBACF,CAEA,GACE,+BAAyB,CAAzB,uBACF,CACF,CAGA,yBACE,mBACE,gBAAuC,CAAvC,sCACF,CACF,C;AJjDA,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,uBACE,6BAAkC,CAAlC,iCACF,CK1LA,gBACE,cAAe,CACf,YAAa,CACb,KAAM,CACN,OAAQ,CACR,QAAS,CACT,MAAO,CACP,eAAgB,CAChB,iBACF,CAEA,mBACE,YAAa,CACb,yBACF,CAGE,qBL8FA,WAAY,CACZ,sBAAuB,CACvB,SKhGoB,CLkGpB,2BACE,4BAAsC,CAAtC,qCAAsC,CACtC,YACF,CKrGA,qBL2GA,cAAe,CACf,6BAAkC,CAAlC,iCAAkC,CK1GlC,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,qBAAqB,CAArB,oBALoB,CAOpB,uDAEE,qBAAqB,CAArB,oBACF,CAGF,gBACE,iBAAkB,CAClB,4CAAmD,CACnD,kCAA8B,CAA9B,0BAA8B,CAC9B,UAAW,CACX,SAAU,CACV,KAAM,CACN,QAAS,CACT,MAAO,CACP,aAAc,CACd,eACF,CAGE,wBLmEA,WAAY,CACZ,sBAAuB,CACvB,SKrEoB,CLuEpB,8BACE,4BAAsC,CAAtC,qCAAsC,CACtC,YACF,CK1EA,wBLgFA,cAAe,CACf,6BAAkC,CAAlC,iCAAkC,CK/ElC,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,cAAe,CACf,UAAW,CACX,WAAY,CACZ,6BAAkB,CAAlB,iBARoB,CAUpB,8BACE,2BAAuB,CAAvB,sBACF,CAOF,wCAHE,qBAAqB,CAArB,oBAMF,CAHA,wBACE,wBAEF,CAEA,mBACE,oBAAa,CAAb,YAAa,CACb,iBAAkB,CAClB,YAAa,CACb,0BAAmB,CAAnB,kBACF,CAEA,yBACE,oBAAqB,CACrB,mBAAY,CAAZ,WAAY,CACZ,uCAAwC,CACxC,cAAe,CACf,kBAAmB,CACnB,gBAKF,CAHE,6CACE,gBACF,CAGF,yBACE,kBACF,CAEA,8BACE,aAAsB,CAAtB,qBACF,CAEA,8BACE,aAAoB,CAApB,mBACF,CAEA,+BACE,aAAuB,CAAvB,sBACF,CAEA,+BACE,aAAqB,CAArB,oBACF,CAEA,+BACE,kBASF,CAPE,kDACE,SACF,CAEA,+CACE,8BAA0B,CAA1B,sBACF,CAGF,mBACE,cAAe,CACf,+BAAuC,CAAvC,sCACF,CAGE,gBLsBA,eAAgB,CAChB,cKvBsB,CAGxB,gBACE,YACF,CAIE,iFACE,cACF,CAEA,+EACE,iBACF,CAGF,eACE,iBAAkB,CAClB,cACF,CAEA,gBACE,oBAAa,CAAb,YAAa,CACb,iBAAkB,CAClB,0BAAmB,CAAnB,kBAAmB,CACnB,aAAc,CACd,6BAAkB,CAAlB,iBAkBF,CAhBE,sBACE,kDAA8B,CAA9B,6BAA8B,CAC9B,oBACF,CAEA,6CAEE,4BAAsC,CAAtC,qCAAsC,CACtC,YAAa,CACb,oBACF,CAEA,qBACE,6BAAkC,CAAlC,iCAAkC,CLhBpC,eAAgB,CAChB,sBAAuB,CACvB,kBKgBA,CAGF,qBACE,gBAiBF,CAfE,oCACE,aAAsB,CAAtB,qBACF,CAEA,oCACE,aAAoB,CAApB,mBACF,CAEA,uCACE,aAAuB,CAAvB,sBACF,CAEA,uCACE,aAAqB,CAArB,oBACF,CAGF,oBACE,UAAY,CACZ,mBACF,CAGA,yBACE,gBACE,WAAY,CACZ,SACF,CAEA,mBACE,aAAc,CACd,cAAe,CACf,2BAA6B,CAC7B,KAAM,CACN,OAAQ,CACR,QAAS,CACT,MAAO,CACP,cAAe,CACf,SACF,CACF,C;AC3NA,2EAA2E,CAU3E,KACE,gBAAiB,CACjB,6BACF,CASA,KACE,QACF,CAMA,KACE,aACF,CAOA,GACE,aAAc,CACd,cACF,CAUA,GACE,sBAAuB,CACvB,QAAS,CACT,gBACF,CAOA,IACE,+BAAiC,CACjC,aACF,CASA,EACE,4BACF,CAOA,YACE,kBAAmB,CACnB,yBAA0B,CAC1B,wCAAiC,CAAjC,gCACF,CAMA,SAEE,kBACF,CAOA,cAGE,+BAAiC,CACjC,aACF,CAMA,MACE,aACF,CAOA,QAEE,aAAc,CACd,aAAc,CACd,iBAAkB,CAClB,uBACF,CAEA,IACE,aACF,CAEA,IACE,SACF,CASA,IACE,iBACF,CAUA,sCAKE,mBAAoB,CACpB,cAAe,CACf,gBAAiB,CACjB,QACF,CAOA,aAEE,gBACF,CAOA,cAEE,mBACF,CAMA,gDAIE,yBACF,CAMA,wHAIE,iBAAkB,CAClB,SACF,CAMA,4GAIE,6BACF,CAMA,SACE,0BACF,CASA,OACE,qBAAsB,CACtB,aAAc,CACd,aAAc,CACd,cAAe,CACf,SAAU,CACV,kBACF,CAMA,SACE,uBACF,CAMA,SACE,aACF,CAOA,6BAEE,qBAAsB,CACtB,SACF,CAMA,kFAEE,WACF,CAOA,cACE,4BAA6B,CAC7B,mBACF,CAMA,yCACE,uBACF,CAOA,6BACE,yBAA0B,CAC1B,YACF,CASA,QACE,aACF,CAMA,QACE,iBACF,CAiBA,kBACE,YACF,CC5VA,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,aACE,6BAAkC,CAAlC,iCACF,CC3LA,0CAYE,mBAAwC,CAAxC,uCAAwC,CACxC,eAAwC,CAAxC,uCAAwC,CACxC,eAAwC,CAAxC,uCAAwC,CACxC,aAA4B,CAA5B,2BAQF,CANE,gPAEE,eAAmB,CACnB,aAAc,CACd,6BAAkC,CAAlC,iCACF,CAGF,qBAME,eAAuC,CAAvC,sCAAuC,CACvC,kBAAoD,CAApD,iDAMF,CAJE,wHAEE,aACF,CAGF,qBAME,eAAiD,CAAjD,8CAAiD,CACjD,kBAAoD,CAApD,iDAMF,CAJE,wHAEE,aACF,CAGF,OAEE,cAA8B,CAA9B,6BACF,CAEA,OAEE,cAA8B,CAA9B,6BACF,CAEA,OAEE,cAA8B,CAA9B,6BACF,CAEA,OAEE,cAA8B,CAA9B,6BACF,CAEA,OAEE,cAA8B,CAA9B,6BACF,CAEA,OAEE,cAA8B,CAA9B,6BACF,CAGA,EACE,eAAiD,CAAjD,8CACF,CAEA,WACE,eACF,CACA,YACE,gBACF,CACA,aACE,iBACF,CACA,cACE,kBACF,CACA,aACE,kBACF,CAEA,gBACE,wBACF,CACA,gBACE,wBACF,CACA,iBACE,yBACF,CAGA,MAEE,YAAa,CACb,kBAAoD,CAApD,iDAAoD,CAEpD,MAEE,eACF,CACF,CAOA,4BAJE,cAAe,CACf,eAaF,CAVA,aAGE,gBAOF,CALE,gBACE,oBAAqB,CACrB,gBAAiB,CACjB,iBACF,CAIF,KACE,uDAAoC,CAApC,mCACF,CCjIA,MACE,aAAc,CACd,eAAgB,CAChB,YAAc,CACd,aAAc,CACd,kBACF,CAEA,0BAEE,aAAc,CACd,iBACF,CAEA,yCAGE,aACF,CAEA,uEAKE,aACF,CAEA,cACE,aACF,CAEA,2EAKE,aACF,CAEA,uCAEE,aACF,CAEA,yIAQE,aACF,CAEA,8EAME,aACF,CAEA,eACE,iBACF,CAEA,aACE,eACF,CAEA,WACE,yBACF,CCqBE,UAxDA,mBC7BkB,CD8BlB,oBC9BkB,CD+BlB,gBC9BoB,CD+BpB,aC5BqB,CDqFrB,iDArEA,aAAe,CAIf,oBAAsB,CACtB,YAAc,CAoEd,kDACE,yBAA2B,CAG7B,iCAhGA,4BAiGoC,CA/FpC,oBAiGqB,CAGrB,gEAlGA,kCA6FgD,CA3FhD,0BA2FgD,CAxF9C,eAAiB,CA0FjB,iBAMmB,CAHrB,+BAtGA,8BAuGsC,CArGtC,sBAuGqB,CAGrB,+BA5GA,4BA6GoC,CA3GpC,oBA2GoC,CAzGpC,gCAyG8C,CAvG9C,wBAuG8C,CAlG5C,gBAAkB,CAoGlB,eAAiB,CAGnB,6BAlHA,4BAmHoC,CAjHpC,oBAiHoC,CA/GpC,kCA+GgD,CA7GhD,0BA6GgD,CA1G9C,eAAiB,CA4GjB,iBAAmB,CAGrB,+CAxHA,4BAyHoC,CAvHpC,oBAuHoC,CArHpC,8BAqH4C,CAnH5C,sBAmH4C,CA5G1C,iBAAmB,CA8GnB,iBAAmB,CAGrB,6CA9HA,8BA+HsC,CA7HtC,sBA6HsC,CA3HtC,8BA2H8C,CAzH9C,sBAyH8C,CAlH5C,iBAAmB,CAoHnB,iBAAmB,CAGrB,kEApIA,4BAqIoC,CAnIpC,oBAmIoC,CAjIpC,kCAiIgD,CA/HhD,0BA+HgD,CA5H9C,eAAiB,CA8HjB,iBAAmB,CAGrB,gEA1IA,8BA2IsC,CAzItC,sBAyIsC,CAvItC,kCAuIkD,CArIlD,0BAqIkD,CAlIhD,eAAiB,CAoIjB,iBAAmB,CAGrB,gEAhJA,0BAkJkC,CAhJlC,kBAgJkC,CA9IlC,gCA8I4C,CA5I5C,wBA4I4C,CAvI1C,gBAAkB,CAyIlB,eAAiB,CAGnB,8DAvJA,0BAwJkC,CAtJlC,kBAsJkC,CApJlC,kCAoJ8C,CAlJ9C,0BAkJ8C,CA/I5C,eAAiB,CAiJjB,eAAiB,CAGnB,SA1HA,qBC7BkB,CD8BlB,gBC5BiB,CD+Bf,oBChCmB,CD0JrB,oBACE,SCzJ0B,CD4J5B,UAzHA,iBC9BkB,CD+BlB,oBC7BoB,CDyJpB,SAxHA,SAAW,CACX,gBCtCiB,CDiKjB,SAnHA,WAAa,CACb,eCzCmB,CD+JnB,QAlHA,SAAW,CACX,iBC3CiB,CDgKjB,gBAjHA,SAAW,CACX,iBC7CmB,CDiDnB,+FACE,cClCK,CDqCP,oFACE,YCtCK,CDiCP,+FACE,cCjCK,CDoCP,oFACE,YCrCK,CDgCP,+FACE,cChCK,CDmCP,oFACE,YCpCK,CD+BP,+FACE,cC/BK,CDkCP,oFACE,YCnCK,CD8BP,+FACE,cC9BK,CDiCP,oFACE,YClCK,CD6BP,+FACE,cC7BK,CDgCP,oFACE,YCjCK,CD4BP,+FACE,cC5BK,CD+BP,oFACE,YChCK,CD2BP,+FACE,cC3BK,CD8BP,oFACE,YC/BK,CD0BP,+FACE,cC1BK,CD6BP,oFACE,YC9BK,CDyBP,+FACE,cCzBK,CD4BP,oFACE,YC7BK,CDwBP,+FACE,cCxBK,CD2BP,oFACE,YC5BK,CDuBP,+FACE,cCvBK,CD0BP,oFACE,YC3BK,CDsBP,+FACE,cCtBK,CDyBP,oFACE,YC1BK,CDqBP,+FACE,cCrBK,CDwBP,oFACE,YCzBK,CDoBP,+FACE,cCpBK,CDuBP,oFACE,YCxBK,CDmJH,WAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,kBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,mBAAsB,CA4NpB,iBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,eACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,iBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,wBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,qBAAsB,CA4NpB,uBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,qBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,iBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,wBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,6BAAsB,CA4NpB,uBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,qBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,gBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,uBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,6BAAsB,CA4NpB,sBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,oBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,gBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,uBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,kBAAsB,CA4NpB,sBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,oBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,mBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,0BAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,kBAAsB,CA4NpB,yBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,uBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,kBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,yBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,6BAAsB,CA4NpB,wBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,sBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,gBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,uBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,oBAAsB,CA4NpB,sBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,oBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,mBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,0BAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,4BAAsB,CA4NpB,yBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,uBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,gBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,uBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,kBAAsB,CA4NpB,sBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,oBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,kBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,yBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,qBAAsB,CA4NpB,wBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,sBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,kBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,yBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,6BAAsB,CA4NpB,wBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,sBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,WAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,kBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,kBAAsB,CA4NpB,iBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,eACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,gBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,uBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,kBAAsB,CA4NpB,sBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,oBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,mBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,0BAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,oBAAsB,CA4NpB,yBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,uBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,kBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,yBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,6BAAsB,CA4NpB,wBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,sBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CA+MN,kBAtOJ,aAAe,CACf,iBAAmB,CACnB,UAH6C,CAuOzC,yBAjOF,aAAe,CACf,UAAY,CACZ,UAAY,CACZ,OAAS,CACT,QAAU,CACV,kBAAsB,CA4NpB,wBAxNF,UAAY,CACZ,aAAe,CACf,UAAY,CAGZ,sBACA,aAAe,CACf,iBAAmB,CACnB,KAAO,CACP,MAAQ,CEpBZ,WACE,uBAA0B,CAC1B,8FAC0D,CAC1D,eAAmB,CACnB,iBACF,CAEA,WACE,wBAA2B,CAC3B,8FAC2D,CAC3D,eAAmB,CACnB,iBACF,CAEA,WACE,yBAA4B,CAC5B,8FAC4D,CAC5D,eAAmB,CACnB,iBACF,CAEA,WACE,0BAA6B,CAC7B,iBAAkB,CAClB,eAAmB,CACnB,8FAIF,CAEA,gBACE,oBAAqB,CACrB,0BAA6B,CAC7B,eAAmB,CACnB,iBAAkB,CAClB,cAAe,CACf,aAAc,CACd,mBAAoB,CACpB,qBAAsB,CACtB,gBAAiB,CACjB,kBAAmB,CACnB,aAAc,CAGd,kCAAmC,CAGnC,iCAAkC,CAGlC,iCAAkC,CAGlC,oCAA6B,CAA7B,4BACF,CAGA,sBACE,cACF,CACA,sBACE,cACF,CACA,sBACE,cACF,CACA,sBACE,cACF,CAGA,wBACE,qBACF,CACA,oCACE,qBACF,CAGA,yBACE,UACF,CACA,qCACE,wBACF,CAKE,iBAEE,qBACF,CAGF,KACE,iBAAkB,CAClB,eACF,CAEA,KACE,mEAAoC,CAApC,mCAAoC,CACpC,cAAgC,CAAhC,+BAAgC,CAChC,iBAAoC,CAApC,mCAAoC,CACpC,qBAAwB,CAAxB,uBAAwB,CACxB,wBAAgC,CAAhC,+BAAgC,CAChC,kBAAmC,CAAnC,kCACF,CAEA,EACE,oBAAqB,CACrB,6BAAkC,CAAlC,iCAKF,CAHE,QACE,yBACF,CAGF,IACE,oBAAqB,CACrB,oBAAqB,CACrB,iBACF,CLhCE,4BACE,WAAY,CACZ,aACF,CAEA,0BACE,WAAY,CACZ,aAAc,CACd,UACF,CAJA,mCAJE,WAAY,CACZ,aAOF,CAJA,iBAGE,UACF,CK+BA,WAEA,iBAAkB,CAClB,gBAAiB,CACjB,iBAAgD,CAAhD,6CAAgD,CAChD,kBAAiD,CAAjD,8CALiB,CLnCjB,uBAJE,WAAY,CACZ,aAOF,CAJA,WAGE,UACF,CKwCA,KLJA,iBAAgD,CAAhD,6CAAgD,CAChD,kBAAiD,CAAjD,8CKGY,CAGd,SACE,iBAA8C,CAA9C,6CACF,CAGA,WAEE,yBACF,CAEA,WACE,mEACF,CAEA,gBACE,oEACF,CAEA,WACE,mEACF,CAEA,WACE,sEAEF,CAEA,WACE,sEAEF,CAEA,WACE,qEAEF,CAEA,yBACE,WACE,WAA0B,CAA1B,yBACF,CAEA,SACE,gBAAoD,CAApD,mDACF,CACF,CAEA,yBACE,WACE,WAA0B,CAA1B,yBACF,CACF,CAEA,0BACE,WACE,YAA0B,CAA1B,yBACF,CACF,qM;AZjNA,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,qBACE,6BAAkC,CAAlC,iCACF,CAnFE,mDAJE,WAAY,CACZ,aAOF,CAJA,yBAGE,UACF,Ca1GA,mBAGA,cAAe,CACf,6BAAsB,CAAtB,qBAAsB,CACtB,KAAM,CACN,OAAQ,CACR,MAAO,CACP,YAAa,CACb,gBAAgC,CAAhC,+BAAgC,CAChC,YAA4B,CAA5B,2BAA4B,CAC5B,eAAgB,CAChB,WAAY,CACZ,kBAA8B,CAA9B,6BAbiB,CAgBnB,4CAdE,oBAAa,CAAb,YAkBF,CAJA,yBAEE,eAAgB,CAChB,kBACF,CAGE,qBbuFA,WAAY,CACZ,sBAAuB,CACvB,SazFoB,Cb2FpB,2BACE,4BAAsC,CAAtC,qCAAsC,CACtC,YACF,Ca9FA,qBboGA,cAAe,CACf,6BAAkC,CAAlC,iCAAkC,CanGlC,WAAY,CACZ,gBAAqB,CACrB,WAAY,CACZ,wBAAiC,CAAjC,gCALoB,CAOpB,2BACE,UAA+B,CAA/B,8BACF,CAGF,sBACE,mBAAY,CAAZ,WAAY,CACZ,qCAAsC,CACtC,UAAW,CACX,cAAe,CACf,gBAAmD,CAAnD,kDAAmD,CACnD,QAAS,CACT,eAAgB,CAChB,sBAAuB,CACvB,kBACF,CbyDE,+CAJE,WAAY,CACZ,aAOF,CAJA,uBAGE,UACF,Ca1DA,iBAEA,oBAAa,CAAb,YAAa,CACb,iBAAkB,CAClB,MAAO,CACP,OAAQ,CACR,QAAS,CACT,UAPiB,CASjB,+BACE,wBAAiC,CAAjC,gCACF,CAEA,+BACE,wBAA+B,CAA/B,8BACF,CAEA,+BACE,wBAAkC,CAAlC,iCACF,CAGF,yBACE,UACF,CAGA,yBACE,mBACE,eAAsC,CAAtC,qCAAsC,CACtC,WAAkC,CAAlC,iCAAkC,CAClC,8BAAuB,CAAvB,kBACF,CAEA,yBACE,mBAAY,CAAZ,WACF,CACF,C;AbxFA,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,4BACE,6BAAkC,CAAlC,iCACF,Cc1LA,oBACE,oBAAa,CAAb,YAAa,CACb,6BAAsB,CAAtB,qBAAsB,CACtB,cACF,CdmGE,uDAJE,WAAY,CACZ,aAOF,CAJA,2BAGE,UACF,CcpGA,qBd6IA,eAAgB,CAChB,cAAe,Cc1If,+BAAiC,CACjC,cALiB,CAQnB,0CALE,oBAAa,CAAb,YAiGF,CA5FA,qBAEE,qCAAsC,CACtC,8BAAuB,CAAvB,sBAAuB,CACvB,UAAW,CACX,cAAe,CACf,sBAAe,CAAf,cAsFF,CAnFI,4BduFF,WAAY,CACZ,sBAAuB,CACvB,SczFsB,Cd2FtB,kCACE,4BAAsC,CAAtC,qCAAsC,CACtC,YACF,Cc9FE,4BdqGF,6BAAkC,CAAlC,iCAAkC,CcnGhC,oBAAa,CAAb,YAAa,CACb,0BAAmB,CAAnB,kBAAmB,CACnB,UAAW,CACX,cALoB,CAOpB,uDACE,iBACF,CAGF,0CACE,UACF,CAGE,gEACE,aAAsB,CAAtB,qBAAsB,CACtB,wBAAiC,CAAjC,gCAWF,CAbA,8FAKI,wBAAgC,CAAhC,+BAAgC,CAChC,aAAqB,CAArB,oBAOJ,CAbA,sGAUI,UAAW,CACX,wBAAiC,CAAjC,gCAEJ,CAIA,kEACE,aAAoB,CAApB,mBAAoB,CACpB,wBAA+B,CAA/B,8BAWF,CAbA,gGAKI,wBAAgC,CAAhC,+BAAgC,CAChC,aAAqB,CAArB,oBAOJ,CAbA,wGAUI,UAAW,CACX,wBAA+B,CAA/B,8BAEJ,CAIA,iEACE,aAAuB,CAAvB,sBAAuB,CACvB,wBAAkC,CAAlC,iCAWF,CAbA,+FAKI,wBAAgC,CAAhC,+BAAgC,CAChC,aAAqB,CAArB,oBAOJ,CAbA,wGAUI,UAAW,CACX,wBAAkC,CAAlC,iCAEJ,CAIA,iEACE,aAAqB,CAArB,oBAAqB,CACrB,wBAAgC,CAAhC,+BAWF,CAbA,+FAKI,wBAAgC,CAAhC,+BAAgC,CAChC,aAAqB,CAArB,oBAOJ,CAbA,wGAUI,UAAW,CACX,wBAAgC,CAAhC,+BAEJ,CAKJ,qBACE,iBAAkB,CAClB,OAAQ,CACR,cAAe,CACf,gBACF,CAEA,4BACE,cAAe,CACf,iBAAkB,CAClB,WAAY,CACZ,4BAA6B,CAC7B,oCACF,CAGA,yBACE,oBACE,8BAAuB,CAAvB,kBAAuB,CACvB,qBACF,CAEA,qBACE,QACF,CAEA,qBACE,cAAe,CACf,0BAAmB,CAAnB,eAAmB,CACnB,aACF,CAEA,qBACE,cAAe,CACf,UAAW,CACX,KACF,CAEA,4BACE,cACF,CACF,C;AdzJA,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,2BACE,6BAAkC,CAAlC,iCACF,CAnFE,+DAJE,WAAY,CACZ,aAOF,CAJA,+BAGE,UACF,Ce1GA,yBAEA,iBAAkB,CAClB,WAHiB,CAMnB,qBACE,iBAAkB,CAClB,OAAQ,CACR,OAAQ,CACR,eAAgB,CAChB,UAAW,CACX,WAAY,CACZ,wBAAiC,CAAjC,gCAAiC,CACjC,kBAAmB,CACnB,cAAe,CACf,oCACF,CAEA,mBACE,oCAAgC,CAAhC,+BACF,CAEA,qBACE,aAAc,CACd,iBAAkB,CAClB,OAAQ,CACR,SAAU,CACV,UAAW,CACX,WAAY,CACZ,kBAAmB,CACnB,wBAAiC,CAAjC,gCAQF,CAhBA,wCAWI,qBAAsB,CACtB,0BAAmB,CAAnB,kBAIJ,CAhBA,qBAeE,6CACF,C;Af1CA,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,mBACE,6BAAkC,CAAlC,iCACF,CgB1LA,iBACE,+BAAuC,CAAvC,sCAeF,CAZI,6HAEE,yBAAkC,CAAlC,iCACF,CAIA,6HAEE,yBAAgC,CAAhC,+BACF,CAIJ,YACE,oBAAqB,CACrB,QAAS,CACT,SACF,CAEA,kBACE,oBAAa,CAAb,YAAa,CACb,iBAAkB,CAClB,eAAgB,CAEhB,WAAkC,CAAlC,iCAAkC,CAClC,cAAe,CACf,sBAAe,CAAf,cAAe,CACf,2BAA4B,CAC5B,oCAAsC,CACtC,UAeF,CAbE,4BACE,cACF,CAEA,wBACE,4BAAsC,CAAtC,qCAAsC,CACtC,YACF,CAEA,gFAEE,yBAAiC,CAAjC,gCACF,CAIA,ahBqGA,eAAgB,CAChB,sBAAuB,CACvB,kBAAmB,CgBrGnB,mBAAY,CAAZ,WAAY,CACZ,uCAAwC,CACxC,cAAe,CACf,gBAAiB,CACjB,QAAS,CACT,kBAAmB,CACnB,eARsB,CAAtB,yBAWE,qBAAqB,CAArB,oBAXoB,CAAtB,6BAeE,eAAgB,CAChB,eAAgB,CAChB,kBAjBoB,CAqBxB,YACE,6BAAsB,CAAtB,qBAAsB,CACtB,WAAY,CACZ,iBAAkB,CAClB,UAAW,CACX,iBA8BF,CA5BE,uBACE,aAAsB,CAAtB,qBAAsB,CACtB,wBAAiC,CAAjC,gCACF,CAEA,uBACE,aAAoB,CAApB,mBAAoB,CACpB,wBAA+B,CAA/B,8BACF,CAEA,0BACE,aAAuB,CAAvB,sBAAuB,CACvB,wBAAkC,CAAlC,iCACF,CAEA,0BACE,aAAqB,CAArB,oBAAqB,CACrB,wBAAgC,CAAhC,+BACF,CAEA,uBACE,qBAAqB,CAArB,oBAAqB,CACrB,SAKF,CAPA,qCAKI,aAAoB,CAApB,mBAEJ,CAGF,YACE,oBAAa,CAAb,YACF,CAEA,gBACE,uCAAwC,CACxC,gBAAiB,CACjB,qBAAqB,CAArB,oBAWF,CAdA,2FAUI,qBAAqB,CAArB,oBAIJ,CAdA,gBAaE,6BACF,CAEA,qBACE,eAAgB,CAEhB,0BAA4B,CAC5B,qBAAqB,CAArB,oBASF,CAPE,gCACE,aAAoB,CAApB,mBACF,CAEA,kCACE,aAAuB,CAAvB,sBACF,CAGF,oBACE,iBAAkB,CAElB,0BAA4B,CAC5B,qBAAqB,CAArB,oBAAqB,CACrB,gBAAiB,CACjB,OACF,CAEA,iBACE,iCAAkC,CAClC,oCAMF,CARA,iCAKI,aAAc,CACd,mBAEJ,CAEA,YACE,YAAa,CACb,wBAAyB,CACzB,wBAA+B,CAA/B,8BAA+B,CAC/B,iBAMF,CAVA,4BAOI,aAAc,CACd,oBAEJ,CAEA,qBACE,aAAoB,CAApB,mBAAoB,CACpB,cAAe,CACf,eAAkB,CAClB,eAAgB,CAChB,UAAW,CACX,qBACF,CAEA,oBACE,iBAAkB,CAClB,cAAe,CACf,QAAS,CACT,eAUF,CARE,wCACE,yBACF,CAEA,yBACE,WAAY,CACZ,eACF,CAGF,uCACE,iBACF,CAGE,+BACE,aACF,CAHF,6CAMI,wBAAyB,CACzB,UAEJ,CAGE,6BACE,aACF,CAHF,2CAMI,wBAAyB,CACzB,UAEJ,CAEA,kBACE,iBAAkB,CAClB,uCAAwC,CACxC,KAAM,CACN,OAAQ,CACR,iBAAoB,CACpB,wBAAgC,CAAhC,+BAAgC,CAChC,UACF,CAEA,eACE,qBAAsB,CACtB,4BAAmC,CAAnC,kCAAmC,CACnC,6BAA8B,CAC9B,8BACF,CAGE,qBhB5FA,eAAgB,CAChB,sBAAuB,CACvB,kBAAmB,CgB4FnB,uCAAwC,CACxC,cAAe,CACf,qBAAqB,CAArB,oBAAqB,CACrB,QAAS,CACT,mBANsB,CASxB,oBACE,gBAKF,CAHE,wCACE,aACF,CAIA,0BhB9GA,eAAgB,CAChB,sBAAuB,CACvB,kBAAmB,CgB8GnB,sCAAuC,CACvC,cAAe,CACf,QAAS,CACT,mBALsB,CAQxB,iBACE,oBAAqB,CACrB,iBAAsB,CACtB,uDAAoC,CAApC,mCAAoC,CACpC,cAAe,CACf,aAAuB,CAAvB,sBAKF,CAHE,uBACE,aAAuB,CAAvB,sBACF,CAGF,oCAEE,oBAAqB,CACrB,cAAe,CACf,iBACF,CAEA,0BAEE,aAAc,CACd,cAAe,CACf,WACF,C;AhBzSA,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,oBACE,6BAAkC,CAAlC,iCACF,CAnFE,iDAJE,WAAY,CACZ,aAOF,CAJA,wBAGE,UACF,CiB1GA,kBAEA,iBAAkB,CAClB,qBAAsB,CACtB,kBAJiB,CAQnB,uDACE,wBAAgC,CAAhC,+BAAgC,CAChC,iBAAkB,CAClB,kBAAmB,CACnB,uBAMF,CAHE,uEACE,+BAAuC,CAAvC,sCACF,CAGF,aACE,oBAAqB,CACrB,QAAS,CACT,SACF,CAIE,0DjBkIA,mEAA6E,CiBhI7E,eAFkB,CAMpB,+FACE,+BAAuC,CAAvC,sCACF,CjBkEE,2CAJE,WAAY,CACZ,aAOF,CAJA,qBAGE,UACF,CiBnEA,eAEA,+BAAuC,CAAvC,sCAFiB,CAAjB,gCAKE,gBAAiB,CACjB,kBANe,CAUnB,mBACE,eAAgB,CAChB,WAAY,CACZ,cAAe,CACf,iBAAkB,CAClB,eAAgB,CAChB,UAMF,CAJE,yBACE,4BAAsC,CAAtC,qCAAsC,CACtC,YACF,CAGF,cACE,oBAAa,CAAb,YAAa,CACb,qCAAsC,CACtC,cAAe,CACf,QASF,CAPE,mBACE,iBACF,CAEA,2BACE,gBACF,CAGF,iBACE,qBAAqB,CAArB,oBAAqB,CACrB,uCAAwC,CACxC,cACF,CjBoBE,uCAJE,WAAY,CACZ,aAOF,CAJA,mBAGE,UACF,CiBnBA,yBACE,YACF,CAJA,gCAOE,+BAAuC,CAAvC,sCAPe,CAWnB,mBACE,YAAa,CACb,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,UAAW,CACX,WACF,CAEA,oBACE,WAAY,CACZ,gBAiBF,CAnBA,iCAKI,YAAqB,CAArB,oBAcJ,CAnBA,iCASI,YAAmB,CAAnB,kBAUJ,CAnBA,iCAaI,YAAsB,CAAtB,qBAMJ,CAnBA,iCAiBI,oBAAoB,CAApB,mBAEJ,CAGA,yBACE,mBACE,aACF,CAGE,2DACE,eACF,CAEJ,C;AjB5IA,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,4BACE,6BAAkC,CAAlC,iCACF,CAnFE,iEAJE,WAAY,CACZ,aAOF,CAJA,gCAGE,UACF,CkB1GA,0BlBmJA,eAAgB,CAChB,cAAe,CkBjJf,oBAAa,CAAb,YAAa,CACb,uCAAwC,CACxC,cAAe,CACf,eANiB,CAQjB,mDACE,QACF,CAGF,6BACE,oBAAa,CAAb,YAAa,CACb,gBAAiB,CACjB,YAAa,CACb,qBAAqB,CAArB,oBA0BF,CAxBE,yCACE,aACF,CAEA,uGAEE,qBAAqB,CAArB,oBACF,CAEA,mDACE,aAAsB,CAAtB,qBACF,CAEA,mDACE,aAAoB,CAApB,mBACF,CAEA,oDACE,aAAuB,CAAvB,sBACF,CAEA,oDACE,qBAAqB,CAArB,oBACF,CAGF,qBACE,gBACF,C;AlBlDA,MACE,qBAAsB,CACtB,qBAAsB,CACtB,sBAAuB,CACvB,wBAAyB,CACzB,qDAAsD,CACtD,qDAAsD,CACtD,sDAAuD,CACvD,qBAAsB,CACtB,0BAA2B,CAC3B,6BAA8B,CAC9B,+BAAgC,CAChC,oBAAqB,CACrB,kCAAmC,CACnC,gCAAiC,CAGjC,gBAAiB,CACjB,wDAAyD,CACzD,iDAAkD,CAClD,6CAA8C,CAC9C,0CAA2C,CAC3C,gDAAiD,CACjD,iDAAkD,CAClD,kDAAmD,CACnD,0DAA2D,CAC3D,+CAAgD,CAChD,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAClB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CACjB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,0BAA8B,CAC9B,0BAA8B,CAC9B,0BAA8B,CAC9B,qBAAsB,CACtB,qBAAsB,CACtB,qBAAsB,CACtB,wBAA2C,CAC3C,yCAA+C,CAC/C,iCAAkC,CAClC,mCAAoC,CACpC,kBAAmB,CACnB,kBAAmB,CACnB,kBAAmB,CACnB,mBAAoB,CACpB,mBAAoB,CAGpB,0CAA2C,CAC3C,uBAAwB,CACxB,oBAAqB,CACrB,uBAAwB,CACxB,sBAAuB,CACvB,2BAA4B,CAC5B,iBAAkB,CAClB,iCAAkC,CAClC,sDAAuD,CACvD,wBAAyB,CAGzB,oFACY,CACZ,gDAAiD,CACjD,sEAA2E,CAC3E,qBAAsB,CACtB,wBAAyB,CACzB,2BAA4B,CAC5B,8BAA+B,CAC/B,0BAA2B,CAC3B,0BAA2B,CAC3B,wBAAyB,CACzB,wCAAyC,CACzC,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,mBAAoB,CACpB,oCAAqC,CACrC,mBAAoB,CACpB,iCAAkC,CAClC,qCAAsC,CACtC,mCAAoC,CACpC,qCACF,CA0FA,4BACE,6BAAkC,CAAlC,iCACF,CAnFE,iEAJE,WAAY,CACZ,aAOF,CAJA,gCAGE,UACF,CmB1GA,0BAEA,WAFiB,CAKnB,sBACE,oBAAa,CAAb,YAAa,CACb,0BAAmB,CAAnB,kBACF,CAEA,6BACE,iBAAkB,CAClB,SAaF,CAXE,4DACE,wBAAiC,CAAjC,gCAKF,CAJE,mEACE,wBAAiC,CAAjC,gCAAiC,CACjC,kCAA2B,CAA3B,0BACF,CAGF,iEACE,qFAAyG,CAAzG,8FACF,CAIF,uBACI,oBAAqB,CACrB,iBAAkB,CAClB,wBAAgC,CAAhC,+BAAgC,CAChC,iBAAkB,CAClB,cAAe,CACf,WAAY,CACZ,gBAAiB,CACjB,2DAAkE,CAClE,UAgBJ,CAZI,8BnBqHF,mEAA6E,CmBnH3E,UAAW,CACX,iBAAkB,CAClB,wBAAgC,CAAhC,+BAAgC,CAChC,kBAAmB,CACnB,WAAY,CACZ,MAAO,CACP,QAAS,CACT,UAAW,CACX,4DAA2D,CAA3D,oDAA2D,CAA3D,sGAVkB,CActB,yBACE,UASF,CAPE,8CACE,qBAAqB,CAArB,oBACF,CAEA,gDACE,cACF,C","file":"app.css","sourcesContent":[":root {\n --screen-sm-min: 768px;\n --screen-md-min: 992px;\n --screen-lg-min: 1200px;\n --grid-gutter-width: 30px;\n --container-sm: calc(720px + var(--grid-gutter-width));\n --container-md: calc(940px + var(--grid-gutter-width));\n --container-lg: calc(1140px + var(--grid-gutter-width));\n --navbar-height: 122px;\n --navbar-height-short: 56px;\n --summary-height-stacked: 82px;\n --statusbar-height-stacked: 54px;\n --footer-height: 60px;\n --default-transition-duration: 0.2s;\n --default-transition-easing: ease;\n\n /* Gray Colors */\n --gray-base: #000;\n --gray-darker-faded: color(var(--gray-darker) alpha(95%));\n --gray-darker: color(var(--gray-base) tint(13.5%)); /* #222 */\n --gray-dark: color(var(--gray-base) tint(20%)); /* #333 */\n --gray: color(var(--gray-base) tint(33.5%)); /* #555 */\n --gray-light: color(var(--gray-base) tint(46.7%)); /* #777 */\n --gray-medium: color(var(--gray-base) tint(73.5%)); /* #bbb */\n --gray-lighter: color(var(--gray-base) tint(93.5%)); /* #eee */\n --gray-lighter-faded: color(var(--gray-lighter) alpha(95%));\n --gray-border: color(var(--gray-base) tint(80%)); /* #ccc */\n --grey50: #eceff1;\n --grey100: #f5f5f5;\n --grey300: #e0e0e0;\n --grey500: #9e9e9e;\n --grey700: #616161;\n --green100: #c8e6c9;\n --green200: #a5d6a7;\n --green300: #81c784;\n --green500: #4caf50;\n --green700: #388e3c;\n --red100: #ffcdd2;\n --red300: #e57373;\n --red500: #f44336;\n --red700: #d32f2f;\n --ltblue100: #b3e5fc;\n --ltblue300: #4fc3f7;\n --ltblue500: #03a9f4;\n --ltblue700: #0288d1;\n --black87: rgba(0, 0, 0, 0.87);\n --black54: rgba(0, 0, 0, 0.54);\n --black38: rgba(0, 0, 0, 0.38);\n --bluegrey500: #607d8b;\n --bluegrey800: #37474f;\n --bluegrey900: #263238;\n --light-icon-active: rgba(255, 255, 255, 1);\n --light-icon-inactive: rgba(255, 255, 255, 0.5);\n --dark-icon-active: var(--black54);\n --dark-icon-inactive: var(--black38);\n --amber300: #ffd54f;\n --amber400: #ffca28;\n --amber500: #ffc107;\n --yellow700: #fbc02d;\n --yellow800: #f9a825;\n\n /* Brand Colors */\n --brand-primary: color(#428bca shade(6.5%)); /* #337ab7 */\n --brand-success: #4caf50;\n --brand-info: #5bc0de;\n --brand-warning: #f0ad4e;\n --brand-danger: #d9534f;\n --text-color: var(--black87);\n --body-bg: #f2f2f2;\n --link-color: var(--brand-primary);\n --link-hover-color: color(var(--link-color) shade(15%));\n --list-group-border: #ddd;\n\n /* Type */\n --font-family-sans-serif: 'robotoregular', 'Helvetica Neue', Helvetica, Arial,\n sans-serif;\n --font-family-base: var(--font-family-sans-serif);\n --font-family-mono: 'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace;\n --font-size-base: 14px;\n --line-height-base: 1.429; /* 1.428571429 20/14 */\n --line-height-computed: 20px; /* floor((--font-size-base * --line-height-base)); */\n --headings-font-family: inherit;\n --headings-font-weight: 400;\n --headings-line-height: 1.1;\n --headings-color: inherit;\n --headings-small-color: var(--gray-light);\n --font-size-h1: 36px; /* floor((@font-size-base * 2.6)); */\n --font-size-h2: 30px; /* floor((@font-size-base * 2.15)); */\n --font-size-h3: 24px; /* ceil((@font-size-base * 1.7)); */\n --font-size-h4: 18px; /* ceil((@font-size-base * 1.25)); */\n --font-size-h5: var(--font-size-base);\n --font-size-h6: 12px; /* ceil((@font-size-base * 0.85)); */\n --font-family-light: 'robotolight';\n --font-family-regular: 'robotoregular';\n --font-family-medium: 'robotomedium';\n --link-transition: color 0.2s ease-out;\n}\n\n/* Extend Rules */\n%clearfix {\n &:before {\n content: ' ';\n display: table;\n }\n\n &:after {\n content: ' ';\n display: table;\n clear: both;\n }\n}\n\n%button-reset {\n border: none;\n background: transparent;\n padding: 0;\n\n &:focus {\n box-shadow: 0 0 2px 0 var(--ltblue500);\n outline: none;\n }\n}\n\n%button-base {\n @extend %button-reset;\n\n cursor: pointer;\n transition: var(--link-transition);\n}\n\n%column-base {\n position: relative;\n min-height: 1px;\n}\n\n%column {\n @extend %column-base;\n\n padding-left: calc(var(--grid-gutter-width) / 2);\n padding-right: calc(var(--grid-gutter-width) / 2);\n}\n\n%row {\n @extend %clearfix;\n\n margin-left: calc(var(--grid-gutter-width) / -2);\n margin-right: calc(var(--grid-gutter-width) / -2);\n}\n\n%list-unstyled {\n list-style: none;\n padding-left: 0;\n}\n\n%text-overflow {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n%z-depth-1 {\n box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\n}\n%z-depth-1-half {\n box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);\n}\n%z-depth-2 {\n box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n%z-depth-3 {\n box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24),\n 0 17px 50px 0 rgba(0, 0, 0, 0.19);\n}\n%z-depth-4 {\n box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22),\n 0 25px 55px 0 rgba(0, 0, 0, 0.21);\n}\n%z-depth-5 {\n box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2),\n 0 40px 77px 0 rgba(0, 0, 0, 0.22);\n}\n\n@custom-media --screen-sm (width >= 768px);\n@custom-media --screen-md (width >= 992px);\n@custom-media --screen-lg (width >= 1200px);\n\n.trans-color {\n transition: var(--link-transition);\n}\n","@import '../../styles/vars';\n\n.component {\n position: relative;\n}\n\n.toggle {\n white-space: nowrap;\n}\n\n.toggle-icon:not(.icon-only) {\n margin-left: 0.5rem;\n}\n\n.list {\n padding: 0;\n margin: 0;\n list-style: none;\n text-align: left;\n}\n\n.list-main {\n position: absolute;\n top: 100%;\n z-index: 1000;\n visibility: hidden;\n min-width: 160px;\n overflow: auto;\n}\n\n.align-left {\n left: 0;\n}\n\n.align-right {\n right: 0;\n}\n\n.list-item-text,\n.list-item-link {\n display: block;\n position: relative;\n white-space: nowrap;\n text-decoration: none;\n}\n\n.list-item-text {\n cursor: default;\n}\n\n@keyframes in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes out {\n 0% {\n opacity: 1;\n visibility: visible;\n }\n 100% {\n opacity: 0;\n }\n}\n\n.close {\n animation: out var(--default-transition-duration)\n var(--default-transition-easing);\n visibility: hidden;\n}\n\n.open {\n animation: in var(--default-transition-duration)\n var(--default-transition-easing);\n visibility: visible;\n}\n","@import '../../styles/vars';\n\n.dropdown {\n right: -8px;\n}\n\n.menu {\n @extend %z-depth-1;\n\n font-family: var(--font-family-light);\n min-width: 70px;\n width: 70px;\n background: #fff;\n top: 0;\n}\n\n.toggle {\n display: inline-block;\n font-family: var(--font-family-regular);\n font-size: 14px;\n color: var(--black54);\n vertical-align: top;\n line-height: 24px;\n padding: 0 22px 0 0;\n cursor: pointer;\n border: none;\n background: none;\n outline: none;\n width: 70px;\n\n &:focus {\n box-shadow: 0 0 2px 0 var(--ltblue500);\n }\n}\n\n.toggle-icon {\n position: absolute;\n top: 4px;\n right: 4px;\n color: var(--black38);\n}\n\n.item-link {\n border: none;\n color: var(--black38);\n cursor: pointer;\n padding: 4px 10px;\n text-align: left;\n width: 100%;\n\n &:hover {\n background-color: var(--grey100);\n }\n\n &:focus {\n box-shadow: inset 0 0 2px 0 var(--ltblue500);\n outline: none;\n }\n\n @nest .item-selected & {\n color: var(--green500);\n }\n}\n","@import '../../styles/vars';\n\n.component {\n position: absolute;\n bottom: 0;\n width: 100%;\n\n /* Set the fixed height of the footer here */\n height: var(--footer-height);\n color: var(--black38);\n text-align: center;\n\n & p {\n font-size: 12px;\n margin: 10px 0;\n }\n\n & a {\n color: var(--black54);\n transition: var(--link-transition);\n\n &:hover {\n color: var(--black87);\n }\n }\n}\n","@import '../../styles/vars';\n\n.component {\n position: fixed;\n top: 0;\n height: 100%;\n width: 100%;\n background-color: color(var(--body-bg) alpha(60%));\n padding-top: var(--navbar-height);\n}\n\n.wrap {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n min-height: 200px;\n}\n\n.text {\n color: var(--gray-light);\n text-align: center;\n margin: 1rem 0 0 0;\n}\n\n.spinner {\n border-radius: 50%;\n width: 42px;\n height: 42px;\n border: 0.25rem solid var(--gray-medium);\n border-top-color: var(--gray);\n animation: spin 1s infinite linear;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n/* Tablet 768 and up */\n@media (--screen-sm) {\n .component {\n padding-top: var(--navbar-height-short);\n }\n}\n","@import '../../styles/vars';\n\n.wrap {\n position: fixed;\n z-index: 2010;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n visibility: hidden;\n}\n\n.overlay {\n display: none;\n background: rgba(0, 0, 0, 0.5);\n}\n\n.close-btn {\n @extend %button-base;\n\n position: absolute;\n top: 16px;\n right: 16px;\n color: var(--black54);\n\n &:hover,\n &:active {\n color: var(--black87);\n }\n}\n\n.menu {\n position: absolute;\n transition: all 0.15s cubic-bezier(0.25, 1, 0.8, 1);\n transform: translate(-100%, 0);\n width: 100%;\n z-index: 1;\n top: 0;\n bottom: 0;\n left: 0;\n overflow: auto;\n background: #fff;\n}\n\n.close-button {\n @extend %button-base;\n\n position: absolute;\n top: 14px;\n right: 14px;\n font-size: 21px;\n width: 26px;\n height: 26px;\n color: var(--gray);\n\n &:hover {\n color: var(--gray-dark);\n }\n}\n\n.date {\n color: var(--black54);\n}\n\n.section-head {\n text-transform: uppercase;\n color: var(--black54);\n}\n\n.control {\n display: flex;\n position: relative;\n margin: 8px 0;\n align-items: center;\n}\n\n.control-label {\n display: inline-block;\n flex-grow: 1;\n font-family: var(--font-family--regular);\n font-size: 13px;\n vertical-align: top;\n line-height: 24px;\n\n &.with-icon {\n margin-left: 12px;\n }\n}\n\n.control-group {\n margin-bottom: 10px;\n}\n\n.toggle-icon-passed {\n color: var(--green500);\n}\n\n.toggle-icon-failed {\n color: var(--red500);\n}\n\n.toggle-icon-pending {\n color: var(--ltblue500);\n}\n\n.toggle-icon-skipped {\n color: var(--grey500);\n}\n\n.wrap.open {\n visibility: visible;\n\n & .overlay {\n opacity: 1;\n }\n\n & .menu {\n transform: translate(0, 0);\n }\n}\n\n.section {\n padding: 0 16px;\n border-bottom: 1px solid var(--grey300);\n}\n\n.list {\n @extend %list-unstyled;\n}\n\n.main {\n margin: 8px 0;\n}\n\n.no-tests > .item:not(.has-tests) {\n /* stylelint-disable-next-line selector-max-compound-selectors */\n & > div > .sub {\n padding-left: 0;\n }\n\n &:not(:only-child) {\n padding-left: 22px;\n }\n}\n\n.sub {\n padding-left: 24px;\n margin: 0 0 2px 0;\n}\n\n.link {\n display: flex;\n position: relative;\n align-items: center;\n padding: 3px 0;\n color: var(--gray);\n\n &:hover {\n color: var(--link-hover-color);\n text-decoration: none;\n }\n\n &:active,\n &:focus {\n box-shadow: 0 0 2px 0 var(--ltblue500);\n outline: none;\n text-decoration: none;\n }\n\n & span {\n transition: var(--link-transition);\n @extend %text-overflow;\n }\n}\n\n.link-icon {\n margin-right: 2px;\n\n &.pass {\n color: var(--green500);\n }\n\n &.fail {\n color: var(--red500);\n }\n\n &.pending {\n color: var(--ltblue500);\n }\n\n &.skipped {\n color: var(--grey500);\n }\n}\n\n.disabled {\n opacity: 0.3;\n pointer-events: none;\n}\n\n/* Tablet 768 and up */\n@media (--screen-sm) {\n .menu {\n width: 320px;\n left: auto;\n }\n\n .overlay {\n display: block;\n position: fixed;\n transition: all 0.2s ease-out;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n cursor: pointer;\n opacity: 0;\n }\n}\n",null,null,null,null,null,null,null,"@import '../../styles/vars';\n\n.component {\n @extend %clearfix;\n\n display: flex;\n position: fixed;\n flex-direction: column;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n min-height: var(--navbar-height);\n height: var(--navbar-height);\n margin-bottom: 0;\n border: none;\n background: var(--bluegrey800);\n}\n\n.report-info-cnt {\n display: flex;\n overflow: hidden;\n padding-right: 12px;\n}\n\n.menu-button {\n @extend %button-base;\n\n height: 40px;\n margin: 8px 8px 0 8px;\n padding: 8px;\n color: var(--light-icon-inactive);\n\n &:hover {\n color: var(--light-icon-active);\n }\n}\n\n.report-title {\n flex-grow: 1;\n font-family: var(--font-family--light);\n color: #fff;\n font-size: 18px;\n line-height: calc(var(--navbar-height-short) - 4px);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.pct-bar {\n @extend %clearfix;\n\n display: flex;\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: 4px;\n\n & .pass {\n background-color: var(--green500);\n }\n\n & .fail {\n background-color: var(--red500);\n }\n\n & .pend {\n background-color: var(--ltblue500);\n }\n}\n\n.pct-bar-segment {\n height: 4px;\n}\n\n/* Tablet 768 and up */\n@media (--screen-sm) {\n .component {\n min-height: var(--navbar-height-short);\n height: var(--navbar-height-short);\n flex-direction: initial;\n }\n\n .report-info-cnt {\n flex-grow: 1;\n }\n}\n","@import '../../styles/vars';\n\n.cnt {\n display: flex;\n flex-direction: column;\n padding: 0 12px;\n}\n\n.list {\n @extend %clearfix;\n @extend %list-unstyled;\n\n display: flex;\n transition: opacity 0.2s ease-out;\n margin: 0 0 8px 0;\n}\n\n.item {\n display: flex;\n font-family: var(--font-family--light);\n align-items: flex-start;\n color: #fff;\n font-size: 16px;\n flex-basis: 25%;\n\n & button {\n @extend %button-base;\n\n display: flex;\n align-items: center;\n color: #fff;\n cursor: pointer;\n\n &:hover .icon {\n border-color: #fff;\n }\n }\n\n &.tests {\n color: #fff;\n }\n\n &.passes {\n & .icon {\n color: var(--green700);\n background-color: var(--green100);\n\n @nest .single-filter & {\n background-color: var(--grey300);\n color: var(--grey500);\n }\n\n @nest .single-filter--passed & {\n color: #fff;\n background-color: var(--green700);\n }\n }\n }\n\n &.failures {\n & .icon {\n color: var(--red700);\n background-color: var(--red100);\n\n @nest .single-filter & {\n background-color: var(--grey300);\n color: var(--grey500);\n }\n\n @nest .single-filter--failed & {\n color: #fff;\n background-color: var(--red700);\n }\n }\n }\n\n &.pending {\n & .icon {\n color: var(--ltblue700);\n background-color: var(--ltblue100);\n\n @nest .single-filter & {\n background-color: var(--grey300);\n color: var(--grey500);\n }\n\n @nest .single-filter--pending & {\n color: #fff;\n background-color: var(--ltblue700);\n }\n }\n }\n\n &.skipped {\n & .icon {\n color: var(--grey700);\n background-color: var(--grey100);\n\n @nest .single-filter & {\n background-color: var(--grey300);\n color: var(--grey500);\n }\n\n @nest .single-filter--skipped & {\n color: #fff;\n background-color: var(--grey700);\n }\n }\n }\n}\n\n/* Icons / Colors */\n.icon {\n position: relative;\n top: 2px;\n font-size: 18px;\n margin-right: 4px;\n}\n\n.circle-icon {\n font-size: 12px;\n border-radius: 50%;\n padding: 2px;\n border: 1px solid transparent;\n transition: border-color 0.2s ease-out;\n}\n\n/* Tablet 768 and up */\n@media (--screen-sm) {\n .cnt {\n flex-direction: initial;\n padding: 14px 12px 0 0;\n }\n\n .list {\n margin: 0;\n }\n\n .item {\n font-size: 18px;\n flex-basis: initial;\n margin: 0 12px;\n }\n\n .icon {\n font-size: 24px;\n width: 24px;\n top: 0;\n }\n\n .circle-icon {\n font-size: 18px;\n }\n}\n","@import '../../styles/vars';\n\n.component {\n @extend %clearfix;\n\n position: relative;\n height: 24px;\n}\n\n.outer {\n position: absolute;\n top: 50%;\n right: 0;\n margin-top: -9px;\n width: 18px;\n height: 18px;\n border: 2px solid var(--green500);\n border-radius: 12px;\n cursor: pointer;\n transition: border-color 0.2s ease-out;\n}\n\n.off {\n border-color: var(--gray-medium);\n}\n\n.inner {\n display: block;\n position: absolute;\n top: 2px;\n right: 2px;\n width: 10px;\n height: 10px;\n border-radius: 100%;\n background-color: var(--green500);\n\n @nest .off & {\n background-color: #fff;\n transform: scale(0);\n }\n\n transition: all 0.15s cubic-bezier(0.23, 1, 0.32, 1);\n}\n","@import '../../styles/vars';\n\n.component {\n border-bottom: 1px solid var(--grey300);\n\n &.expanded.passed {\n & .body-wrap,\n & .header-btn {\n border-left-color: var(--green500);\n }\n }\n\n &.expanded.failed {\n & .body-wrap,\n & .header-btn {\n border-left-color: var(--red500);\n }\n }\n}\n\n.list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n\n.header-btn {\n display: flex;\n position: relative;\n background: #fff;\n border: none;\n border-left: 3px solid transparent;\n cursor: pointer;\n flex-wrap: wrap;\n padding: 10px 16px 10px 13px;\n transition: border-color 0.2s ease-out;\n width: 100%;\n\n &[disabled] {\n cursor: default;\n }\n\n &:focus {\n box-shadow: 0 0 2px 0 var(--ltblue500);\n outline: none;\n }\n\n &:focus:not([disabled]),\n &:hover:not([disabled]) {\n border-left-color: var(--grey500);\n }\n}\n\n.title {\n @extend %text-overflow;\n\n flex-grow: 1;\n font-family: var(--font-family--regular);\n font-size: 13px;\n line-height: 24px;\n margin: 0;\n padding-right: 12px;\n text-align: left;\n\n @nest .hook & {\n color: var(--black54);\n }\n\n @nest .expanded & {\n line-height: 1.5;\n padding-top: 3px;\n white-space: normal;\n }\n}\n\n.icon {\n align-self: flex-start;\n padding: 3px;\n border-radius: 50%;\n color: #fff;\n margin-right: 16px;\n\n &.pass {\n color: var(--green100);\n background-color: var(--green500);\n }\n\n &.fail {\n color: var(--red100);\n background-color: var(--red500);\n }\n\n &.pending {\n color: var(--ltblue100);\n background-color: var(--ltblue500);\n }\n\n &.skipped {\n color: var(--grey100);\n background-color: var(--grey500);\n }\n\n &.hook {\n color: var(--black38);\n padding: 0;\n\n @nest .failed & {\n color: var(--red500);\n }\n }\n}\n\n.info {\n display: flex;\n}\n\n.duration {\n font-family: var(--font-family--regular);\n line-height: 24px;\n color: var(--black54);\n\n @nest .component:hover:not(.pending) & {\n color: var(--black87);\n }\n\n @nest .expanded & {\n color: var(--black87);\n }\n\n transition: color 0.2s ease-out;\n}\n\n.duration-icon {\n margin-left: 4px;\n /* stylelint-disable-next-line declaration-no-important */\n line-height: 24px !important;\n color: var(--black38);\n\n &.slow {\n color: var(--red300);\n }\n\n &.medium {\n color: var(--yellow700);\n }\n}\n\n.context-icon {\n position: relative;\n /* stylelint-disable-next-line declaration-no-important */\n line-height: 24px !important;\n color: var(--black38);\n margin-right: 8px;\n top: 1px;\n}\n\n.body-wrap {\n border-left: 3px solid transparent;\n transition: border-color 0.2s ease-out;\n\n @nest .expanded & {\n display: block;\n padding-bottom: 10px;\n }\n}\n\n.body {\n display: none;\n background-color: #fafafa;\n border: 1px solid var(--grey50);\n border-radius: 4px;\n\n @nest .expanded & {\n display: block;\n margin: 0 16px 0 13px;\n }\n}\n\n.error-message {\n color: var(--red500);\n font-size: 12px;\n margin: 10px 0 0 0;\n text-align: left;\n width: 100%;\n word-break: break-word;\n}\n\n.code-snippet {\n position: relative;\n font-size: 11px;\n margin: 0;\n border-radius: 0;\n\n & + .code-snippet {\n border-top: 1px solid #fff;\n }\n\n &:global(.hljs) {\n padding: 1em;\n background: none;\n }\n}\n\n.code-diff code > span:first-child {\n margin-right: 11px;\n}\n\n.code-diff-expected {\n & span {\n color: #859900;\n }\n\n @nest .inline-diff & {\n background-color: #859900;\n color: #fff;\n }\n}\n\n.code-diff-actual {\n & span {\n color: #dc322f;\n }\n\n @nest .inline-diff & {\n background-color: #dc322f;\n color: #fff;\n }\n}\n\n.code-label {\n position: absolute;\n font-family: var(--font-family--regular);\n top: 0;\n right: 0;\n padding: 0.2em 0.6em;\n background-color: var(--grey500);\n color: #fff;\n}\n\n.context {\n background-color: #fff;\n border-top: 1px solid var(--grey50);\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n\n.context-title {\n @extend %text-overflow;\n\n font-family: var(--font-family--regular);\n font-size: 13px;\n color: var(--black54);\n margin: 0;\n padding: 11px 11px 0 11px;\n}\n\n.context-item {\n padding-top: 11px;\n\n & .code-snippet {\n padding-top: 0;\n }\n}\n\n.context-item-title {\n @extend %text-overflow;\n\n font-family: var(--font-family--medium);\n font-size: 13px;\n margin: 0;\n padding: 0 11px 11px 11px;\n}\n\n.text-link {\n display: inline-block;\n padding: 0 1em 1em 1em;\n font-family: var(--font-family-mono);\n font-size: 11px;\n color: var(--ltblue700);\n\n &:hover {\n color: var(--ltblue500);\n }\n}\n\n.image-link,\n.video-link {\n display: inline-block;\n font-size: 11px;\n padding: 0 1em 1em 1em;\n}\n\n.image,\n.video {\n display: block;\n max-width: 100%;\n height: auto;\n}\n","@import '../../styles/vars';\n\n.component {\n @extend %clearfix;\n\n position: relative;\n background-color: #fff;\n margin-bottom: 20px;\n}\n\n/* stylelint-disable-next-line selector-max-compound-selectors */\n.component > .body > ul > li > .component {\n border: 1px solid var(--grey300);\n border-right: none;\n border-bottom: none;\n margin: 16px 0 16px 16px;\n\n /* stylelint-disable-next-line selector-max-compound-selectors */\n &.no-tests {\n border-bottom: 1px solid var(--grey300);\n }\n}\n\n.list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n\n.root-suite,\n.list-main > li > .component {\n @extend %z-depth-1;\n\n margin: 0 0 24px 0;\n}\n\n/* stylelint-disable-next-line selector-max-compound-selectors */\n.list-main > .no-tests > .body > ul > li > .component:not(.no-suites) {\n border-bottom: 1px solid var(--grey300);\n}\n\n.header {\n @extend %clearfix;\n\n border-bottom: 1px solid var(--grey300);\n\n @nest .no-tests > & {\n padding-bottom: 0;\n border-bottom: none;\n }\n}\n\n.header-btn {\n background: #fff;\n border: none;\n cursor: pointer;\n padding: 12px 16px;\n text-align: left;\n width: 100%;\n\n &:focus {\n box-shadow: 0 0 2px 0 var(--ltblue500);\n outline: none;\n }\n}\n\n.title {\n display: flex;\n font-family: var(--font-family--light);\n font-size: 21px;\n margin: 0;\n\n & span {\n margin-right: auto;\n }\n\n & .icon {\n margin-left: 58px;\n }\n}\n\n.filename {\n color: var(--black54);\n font-family: var(--font-family--regular);\n margin: 6px 0 0 0;\n}\n\n.body {\n @extend %clearfix;\n\n &.hide {\n display: none;\n }\n\n @nest .has-suites > & {\n border-bottom: 1px solid var(--grey300);\n }\n}\n\n.chart-wrap {\n display: none;\n position: absolute;\n top: 12px;\n right: 36px;\n width: 50px;\n height: 50px;\n}\n\n.chart-slice {\n stroke: #fff;\n stroke-width: 2px;\n\n @nest :global(.ct-series-a) & {\n fill: var(--green500);\n }\n\n @nest :global(.ct-series-b) & {\n fill: var(--red500);\n }\n\n @nest :global(.ct-series-c) & {\n fill: var(--ltblue500);\n }\n\n @nest :global(.ct-series-d) & {\n fill: var(--black38);\n }\n}\n\n/* Tablet 768 and up */\n@media (--screen-sm) {\n .chart-wrap {\n display: block;\n }\n\n .chart-enabled:not(.no-tests) {\n & .header {\n min-height: 66px;\n }\n }\n}\n","@import '../../styles/vars';\n\n.component {\n @extend %clearfix;\n @extend %list-unstyled;\n\n display: flex;\n font-family: var(--font-family--regular);\n font-size: 15px;\n margin: 16px 0 0 0;\n\n &.no-margin {\n margin: 0;\n }\n}\n\n.summary-item {\n display: flex;\n line-height: 18px;\n margin: 0 8px;\n color: var(--black54);\n\n &:first-child {\n margin-left: 0;\n }\n\n &.tests,\n &.duration {\n color: var(--black54);\n }\n\n &.passed {\n color: var(--green500);\n }\n\n &.failed {\n color: var(--red500);\n }\n\n &.pending {\n color: var(--ltblue500);\n }\n\n &.skipped {\n color: var(--black38);\n }\n}\n\n.icon {\n margin-right: 2px;\n}\n","@import '../../styles/vars';\n\n.component {\n @extend %clearfix;\n\n height: 24px;\n}\n\n.label {\n display: flex;\n align-items: center;\n}\n\n.toggle-input {\n position: absolute;\n opacity: 0;\n\n &:checked + .toggle {\n background-color: var(--green200);\n &:before {\n background-color: var(--green500);\n transform: translateX(14px);\n }\n }\n\n &:focus + .toggle:before {\n box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12), 0 0 2px 0 var(--ltblue500);\n }\n}\n\n/* track styles */\n.toggle {\n display: inline-block;\n position: relative;\n background-color: var(--grey300);\n border-radius: 7px;\n cursor: pointer;\n height: 14px;\n margin-left: auto;\n transition: background-color 0.15s cubic-bezier(0.4, 0, 0.2, 1) 0s;\n width: 34px;\n\n /* knob styles */\n &:before {\n @extend %z-depth-1;\n\n content: '';\n position: absolute;\n background-color: var(--grey500);\n border-radius: 100%;\n height: 20px;\n left: 0;\n top: -3px;\n width: 20px;\n transition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1) 0s;\n }\n}\n\n.disabled {\n opacity: 0.6;\n\n & .icon {\n color: var(--black38);\n }\n\n & .toggle {\n cursor: default;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
mochawesome-report/assets/app.jsdiffbeforeafterboth--- a/mochawesome-report/assets/app.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! mochawesome-report-generator 5.2.0 | https://github.com/adamgruber/mochawesome-report-generator */
-!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=320)}([function(e,t,n){"use strict";e.exports=n(126)},function(e,t,n){e.exports=n(130)()},function(e,t,n){var r=n(198),o=n(51),i=36e5,a=6e4,s=/[T ]/,l=/:/,u=/^(\d{2})$/,c=[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],f=/^(\d{4})/,d=[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],p=/^-(\d{2})$/,h=/^-?(\d{3})$/,m=/^-?(\d{2})-?(\d{2})$/,v=/^-?W(\d{2})$/,g=/^-?W(\d{2})-?(\d{1})$/,y=/^(\d{2}([.,]\d*)?)$/,b=/^(\d{2}):?(\d{2}([.,]\d*)?)$/,_=/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,w=/([Z+-].*)$/,x=/^(Z)$/,E=/^([+-])(\d{2})$/,k=/^([+-])(\d{2}):?(\d{2})$/;function S(e,t,n){t=t||0,n=n||0;var r=new Date(0);r.setUTCFullYear(e,0,4);var o=7*t+n+1-(r.getUTCDay()||7);return r.setUTCDate(r.getUTCDate()+o),r}e.exports=function(e,t){if(o(e))return new Date(e.getTime());if("string"!=typeof e)return new Date(e);var n=(t||{}).additionalDigits;n=null==n?2:Number(n);var O=function(e){var t,n={},r=e.split(s);l.test(r[0])?(n.date=null,t=r[0]):(n.date=r[0],t=r[1]);if(t){var o=w.exec(t);o?(n.time=t.replace(o[1],""),n.timezone=o[1]):n.time=t}return n}(e),T=function(e,t){var n,r=c[t],o=d[t];if(n=f.exec(e)||o.exec(e)){var i=n[1];return{year:parseInt(i,10),restDateString:e.slice(i.length)}}if(n=u.exec(e)||r.exec(e)){var a=n[1];return{year:100*parseInt(a,10),restDateString:e.slice(a.length)}}return{year:null}}(O.date,n),N=T.year,C=function(e,t){if(null===t)return null;var n,r,o;if(0===e.length)return(r=new Date(0)).setUTCFullYear(t),r;if(n=p.exec(e))return r=new Date(0),o=parseInt(n[1],10)-1,r.setUTCFullYear(t,o),r;if(n=h.exec(e)){r=new Date(0);var i=parseInt(n[1],10);return r.setUTCFullYear(t,0,i),r}if(n=m.exec(e)){r=new Date(0),o=parseInt(n[1],10)-1;var a=parseInt(n[2],10);return r.setUTCFullYear(t,o,a),r}if(n=v.exec(e))return S(t,parseInt(n[1],10)-1);if(n=g.exec(e)){return S(t,parseInt(n[1],10)-1,parseInt(n[2],10)-1)}return null}(T.restDateString,N);if(C){var P,M=C.getTime(),j=0;if(O.time&&(j=function(e){var t,n,r;if(t=y.exec(e))return(n=parseFloat(t[1].replace(",",".")))%24*i;if(t=b.exec(e))return n=parseInt(t[1],10),r=parseFloat(t[2].replace(",",".")),n%24*i+r*a;if(t=_.exec(e)){n=parseInt(t[1],10),r=parseInt(t[2],10);var o=parseFloat(t[3].replace(",","."));return n%24*i+r*a+1e3*o}return null}(O.time)),O.timezone)P=function(e){var t,n;if(t=x.exec(e))return 0;if(t=E.exec(e))return n=60*parseInt(t[2],10),"+"===t[1]?-n:n;if(t=k.exec(e))return n=60*parseInt(t[2],10)+parseInt(t[3],10),"+"===t[1]?-n:n;return 0}(O.timezone)*a;else{var D=M+j,A=new Date(D);P=r(A);var I=new Date(D);I.setDate(A.getDate()+1);var R=r(I)-r(A);R>0&&(P+=R)}return new Date(M+j+P)}return new Date(e)}},function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var i=typeof r;if("string"===i||"number"===i)e.push(this&&this[r]||r);else if(Array.isArray(r))e.push(o.apply(this,r));else if("object"===i)for(var a in r)n.call(r,a)&&r[a]&&e.push(this&&this[a]||a)}}return e.join(" ")}e.exports?(o.default=o,e.exports=o):void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r)}()},function(e,t,n){"use strict";(function(e,r){n.d(t,"b",(function(){return Pe})),n.d(t,"o",(function(){return pe})),n.d(t,"f",(function(){return S})),n.d(t,"n",(function(){return Re})),n.d(t,"k",(function(){return jt})),n.d(t,"i",(function(){return yt})),n.d(t,"j",(function(){return xt})),n.d(t,"l",(function(){return $})),n.d(t,"g",(function(){return Qe})),n.d(t,"m",(function(){return Ye})),n.d(t,"d",(function(){return Ue})),n.d(t,"e",(function(){return qe})),n.d(t,"h",(function(){return It})),n.d(t,"c",(function(){return J})),n.d(t,"a",(function(){return x}));var o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};var i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e};function a(e){var t="function"==typeof Symbol&&e[Symbol.iterator],n=0;return t?t.call(e):{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}function s(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}var l=[];Object.freeze(l);var u={};function c(){return++_e.mobxGuid}function f(e){throw d(!1,e),"X"}function d(e,t){if(!e)throw new Error("[mobx] "+(t||"An invariant failed, however the error is obfuscated because this is an production build."))}Object.freeze(u);function p(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var h=function(){};function m(e){return null!==e&&"object"==typeof e}function v(e){if(null===e||"object"!=typeof e)return!1;var t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}function g(e,t,n){Object.defineProperty(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function y(e,t){var n="isMobX"+e;return t.prototype[n]=!0,function(e){return m(e)&&!0===e[n]}}function b(e){return e instanceof Map}function _(e){return e instanceof Set}function w(e){return null===e?null:"object"==typeof e?""+e:e}var x=Symbol("mobx administration"),E=function(){function e(e){void 0===e&&(e="Atom@"+c()),this.name=e,this.isPendingUnobservation=!1,this.isBeingObserved=!1,this.observers=new Set,this.diffValue=0,this.lastAccessedBy=0,this.lowestObserverState=te.NOT_TRACKING}return e.prototype.onBecomeObserved=function(){this.onBecomeObservedListeners&&this.onBecomeObservedListeners.forEach((function(e){return e()}))},e.prototype.onBecomeUnobserved=function(){this.onBecomeUnobservedListeners&&this.onBecomeUnobservedListeners.forEach((function(e){return e()}))},e.prototype.reportObserved=function(){return Te(this)},e.prototype.reportChanged=function(){Se(),function(e){if(e.lowestObserverState===te.STALE)return;e.lowestObserverState=te.STALE,e.observers.forEach((function(t){t.dependenciesState===te.UP_TO_DATE&&(t.isTracing!==re.NONE&&Ne(t,e),t.onBecomeStale()),t.dependenciesState=te.STALE}))}(this),Oe()},e.prototype.toString=function(){return this.name},e}(),k=y("Atom",E);function S(e,t,n){void 0===t&&(t=h),void 0===n&&(n=h);var r,o=new E(e);return t!==h&&$e("onBecomeObserved",o,t,r),n!==h&&function(e,t,n){$e("onBecomeUnobserved",e,t,n)}(o,n),o}var O={identity:function(e,t){return e===t},structural:function(e,t){return zt(e,t)},default:function(e,t){return Object.is(e,t)}},T=Symbol("mobx did run lazy initializers"),N=Symbol("mobx pending decorators"),C={},P={};function M(e,t){var n=t?C:P;return n[e]||(n[e]={configurable:!0,enumerable:t,get:function(){return j(this),this[e]},set:function(t){j(this),this[e]=t}})}function j(e){if(!0!==e[T]){var t=e[N];if(t)for(var n in g(e,T,!0),t){var r=t[n];r.propertyCreator(e,r.prop,r.descriptor,r.decoratorTarget,r.decoratorArguments)}}}function D(e,t){return function(){var n,r=function(r,o,a,s){if(!0===s)return t(r,o,a,r,n),null;if(!Object.prototype.hasOwnProperty.call(r,N)){var l=r[N];g(r,N,i({},l))}return r[N][o]={prop:o,propertyCreator:t,descriptor:a,decoratorTarget:r,decoratorArguments:n},M(o,e)};return A(arguments)?(n=l,r.apply(null,arguments)):(n=Array.prototype.slice.call(arguments),r)}}function A(e){return(2===e.length||3===e.length)&&"string"==typeof e[1]||4===e.length&&!0===e[3]}function I(e,t,n){return Ze(e)?e:Array.isArray(e)?$.array(e,{name:n}):v(e)?$.object(e,void 0,{name:n}):b(e)?$.map(e,{name:n}):_(e)?$.set(e,{name:n}):e}function R(e){return e}function z(t){d(t);var n=D(!0,(function(e,n,r,o,i){var a=r?r.initializer?r.initializer.call(e):r.value:void 0;Tt(e).addObservableProp(n,a,t)})),r=(void 0!==e&&e.env,n);return r.enhancer=t,r}var F={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};function L(e){return null==e?F:"string"==typeof e?{name:e,deep:!0,proxy:!0}:e}Object.freeze(F);var U=z(I),B=z((function(e,t,n){return null==e||jt(e)||yt(e)||xt(e)||St(e)?e:Array.isArray(e)?$.array(e,{name:n,deep:!1}):v(e)?$.object(e,void 0,{name:n,deep:!1}):b(e)?$.map(e,{name:n,deep:!1}):_(e)?$.set(e,{name:n,deep:!1}):f(!1)})),H=z(R),V=z((function(e,t,n){return zt(e,t)?t:e}));function W(e){return e.defaultDecorator?e.defaultDecorator.enhancer:!1===e.deep?R:I}var Y={box:function(e,t){arguments.length>2&&q("box");var n=L(t);return new oe(e,W(n),n.name,!0,n.equals)},array:function(e,t){arguments.length>2&&q("array");var n=L(t);return pt(e,W(n),n.name)},map:function(e,t){arguments.length>2&&q("map");var n=L(t);return new wt(e,W(n),n.name)},set:function(e,t){arguments.length>2&&q("set");var n=L(t);return new kt(e,W(n),n.name)},object:function(e,t,n){"string"==typeof arguments[1]&&q("object");var r=L(n);if(!1===r.proxy)return Qe({},e,t,r);var o=Ge(r),i=Qe({},void 0,void 0,r),a=it(i);return Xe(a,e,t,o),a},ref:H,shallow:B,deep:U,struct:V},$=function(e,t,n){if("string"==typeof arguments[1])return U.apply(null,arguments);if(Ze(e))return e;var r=v(e)?$.object(e,t,n):Array.isArray(e)?$.array(e,t):b(e)?$.map(e,t):_(e)?$.set(e,t):e;if(r!==e)return r;f(!1)};function q(e){f("Expected one or two arguments to observable."+e+". Did you accidentally try to use observable."+e+" as decorator?")}Object.keys(Y).forEach((function(e){return $[e]=Y[e]}));var Q=D(!1,(function(e,t,n,r,o){var a=n.get,s=n.set,l=o[0]||{};Tt(e).addComputedProp(e,t,i({get:a,set:s,context:e},l))}));Q({equals:O.structural});function G(e,t){var n=function(){return X(e,t,this,arguments)};return n.isMobxAction=!0,n}function X(e,t,n,r){var o=function(e,t,n,r){var o=!1,i=0;var a=he();Se();var s=Z(!0);return{prevDerivation:a,prevAllowStateChanges:s,notifySpy:o,startTime:i}}(),i=!0;try{var a=t.apply(n,r);return i=!1,a}finally{i?(_e.suppressReactionErrors=i,K(o),_e.suppressReactionErrors=!1):K(o)}}function K(e){ee(e.prevAllowStateChanges),Oe(),me(e.prevDerivation),e.notifySpy}function J(e,t){var n,r=Z(e);try{n=t()}finally{ee(r)}return n}function Z(e){var t=_e.allowStateChanges;return _e.allowStateChanges=e,t}function ee(e){_e.allowStateChanges=e}var te,ne,re,oe=function(e){function t(t,n,r,o,i){void 0===r&&(r="ObservableValue@"+c()),void 0===o&&(o=!0),void 0===i&&(i=O.default);var a=e.call(this,r)||this;return a.enhancer=n,a.name=r,a.equals=i,a.hasUnreportedChange=!1,a.value=n(t,void 0,r),a}return function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(t,e),t.prototype.dehanceValue=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.prototype.set=function(e){this.value;if((e=this.prepareNewValue(e))!==_e.UNCHANGED){false,this.setNewValue(e)}},t.prototype.prepareNewValue=function(e){if(ce(this),at(this)){var t=lt(this,{object:this,type:"update",newValue:e});if(!t)return _e.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.value,this.name),this.equals(this.value,e)?_e.UNCHANGED:e},t.prototype.setNewValue=function(e){var t=this.value;this.value=e,this.reportChanged(),ut(this)&&ft(this,{type:"update",object:this,newValue:e,oldValue:t})},t.prototype.get=function(){return this.reportObserved(),this.dehanceValue(this.value)},t.prototype.intercept=function(e){return st(this,e)},t.prototype.observe=function(e,t){return t&&e({object:this,type:"update",newValue:this.value,oldValue:void 0}),ct(this,e)},t.prototype.toJSON=function(){return this.get()},t.prototype.toString=function(){return this.name+"["+this.value+"]"},t.prototype.valueOf=function(){return w(this.get())},t.prototype[Symbol.toPrimitive]=function(){return this.valueOf()},t}(E),ie=(y("ObservableValue",oe),function(){function e(e){this.dependenciesState=te.NOT_TRACKING,this.observing=[],this.newObserving=null,this.isBeingObserved=!1,this.isPendingUnobservation=!1,this.observers=new Set,this.diffValue=0,this.runId=0,this.lastAccessedBy=0,this.lowestObserverState=te.UP_TO_DATE,this.unboundDepsCount=0,this.__mapid="#"+c(),this.value=new se(null),this.isComputing=!1,this.isRunningSetter=!1,this.isTracing=re.NONE,this.derivation=e.get,this.name=e.name||"ComputedValue@"+c(),e.set&&(this.setter=G(this.name+"-setter",e.set)),this.equals=e.equals||(e.compareStructural||e.struct?O.structural:O.default),this.scope=e.context,this.requiresReaction=!!e.requiresReaction,this.keepAlive=!!e.keepAlive}return e.prototype.onBecomeStale=function(){!function(e){if(e.lowestObserverState!==te.UP_TO_DATE)return;e.lowestObserverState=te.POSSIBLY_STALE,e.observers.forEach((function(t){t.dependenciesState===te.UP_TO_DATE&&(t.dependenciesState=te.POSSIBLY_STALE,t.isTracing!==re.NONE&&Ne(t,e),t.onBecomeStale())}))}(this)},e.prototype.onBecomeObserved=function(){this.onBecomeObservedListeners&&this.onBecomeObservedListeners.forEach((function(e){return e()}))},e.prototype.onBecomeUnobserved=function(){this.onBecomeUnobservedListeners&&this.onBecomeUnobservedListeners.forEach((function(e){return e()}))},e.prototype.get=function(){this.isComputing&&f("Cycle detected in computation "+this.name+": "+this.derivation),0!==_e.inBatch||0!==this.observers.size||this.keepAlive?(Te(this),ue(this)&&this.trackAndCompute()&&function(e){if(e.lowestObserverState===te.STALE)return;e.lowestObserverState=te.STALE,e.observers.forEach((function(t){t.dependenciesState===te.POSSIBLY_STALE?t.dependenciesState=te.STALE:t.dependenciesState===te.UP_TO_DATE&&(e.lowestObserverState=te.UP_TO_DATE)}))}(this)):ue(this)&&(this.warnAboutUntrackedRead(),Se(),this.value=this.computeValue(!1),Oe());var e=this.value;if(le(e))throw e.cause;return e},e.prototype.peek=function(){var e=this.computeValue(!1);if(le(e))throw e.cause;return e},e.prototype.set=function(e){if(this.setter){d(!this.isRunningSetter,"The setter of computed value '"+this.name+"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?"),this.isRunningSetter=!0;try{this.setter.call(this.scope,e)}finally{this.isRunningSetter=!1}}else d(!1,!1)},e.prototype.trackAndCompute=function(){var e=this.value,t=this.dependenciesState===te.NOT_TRACKING,n=this.computeValue(!0),r=t||le(e)||le(n)||!this.equals(e,n);return r&&(this.value=n),r},e.prototype.computeValue=function(e){var t;if(this.isComputing=!0,_e.computationDepth++,e)t=fe(this,this.derivation,this.scope);else if(!0===_e.disableErrorBoundaries)t=this.derivation.call(this.scope);else try{t=this.derivation.call(this.scope)}catch(e){t=new se(e)}return _e.computationDepth--,this.isComputing=!1,t},e.prototype.suspend=function(){this.keepAlive||(de(this),this.value=void 0)},e.prototype.observe=function(e,t){var n=this,r=!0,o=void 0;return He((function(){var i=n.get();if(!r||t){var a=he();e({type:"update",object:n,newValue:i,oldValue:o}),me(a)}r=!1,o=i}))},e.prototype.warnAboutUntrackedRead=function(){},e.prototype.toJSON=function(){return this.get()},e.prototype.toString=function(){return this.name+"["+this.derivation.toString()+"]"},e.prototype.valueOf=function(){return w(this.get())},e.prototype[Symbol.toPrimitive]=function(){return this.valueOf()},e}()),ae=y("ComputedValue",ie);(ne=te||(te={}))[ne.NOT_TRACKING=-1]="NOT_TRACKING",ne[ne.UP_TO_DATE=0]="UP_TO_DATE",ne[ne.POSSIBLY_STALE=1]="POSSIBLY_STALE",ne[ne.STALE=2]="STALE",function(e){e[e.NONE=0]="NONE",e[e.LOG=1]="LOG",e[e.BREAK=2]="BREAK"}(re||(re={}));var se=function(e){this.cause=e};function le(e){return e instanceof se}function ue(e){switch(e.dependenciesState){case te.UP_TO_DATE:return!1;case te.NOT_TRACKING:case te.STALE:return!0;case te.POSSIBLY_STALE:for(var t=he(),n=e.observing,r=n.length,o=0;o<r;o++){var i=n[o];if(ae(i)){if(_e.disableErrorBoundaries)i.get();else try{i.get()}catch(e){return me(t),!0}if(e.dependenciesState===te.STALE)return me(t),!0}}return ve(e),me(t),!1}}function ce(e){var t=e.observers.size>0;_e.computationDepth>0&&t&&f(!1),_e.allowStateChanges||!t&&"strict"!==_e.enforceActions||f(!1)}function fe(e,t,n){ve(e),e.newObserving=new Array(e.observing.length+100),e.unboundDepsCount=0,e.runId=++_e.runId;var r,o=_e.trackingDerivation;if(_e.trackingDerivation=e,!0===_e.disableErrorBoundaries)r=t.call(n);else try{r=t.call(n)}catch(e){r=new se(e)}return _e.trackingDerivation=o,function(e){for(var t=e.observing,n=e.observing=e.newObserving,r=te.UP_TO_DATE,o=0,i=e.unboundDepsCount,a=0;a<i;a++){0===(s=n[a]).diffValue&&(s.diffValue=1,o!==a&&(n[o]=s),o++),s.dependenciesState>r&&(r=s.dependenciesState)}n.length=o,e.newObserving=null,i=t.length;for(;i--;){0===(s=t[i]).diffValue&&Ee(s,e),s.diffValue=0}for(;o--;){var s;1===(s=n[o]).diffValue&&(s.diffValue=0,xe(s,e))}r!==te.UP_TO_DATE&&(e.dependenciesState=r,e.onBecomeStale())}(e),r}function de(e){var t=e.observing;e.observing=[];for(var n=t.length;n--;)Ee(t[n],e);e.dependenciesState=te.NOT_TRACKING}function pe(e){var t=he();try{return e()}finally{me(t)}}function he(){var e=_e.trackingDerivation;return _e.trackingDerivation=null,e}function me(e){_e.trackingDerivation=e}function ve(e){if(e.dependenciesState!==te.UP_TO_DATE){e.dependenciesState=te.UP_TO_DATE;for(var t=e.observing,n=t.length;n--;)t[n].lowestObserverState=te.UP_TO_DATE}}var ge=function(){this.version=5,this.UNCHANGED={},this.trackingDerivation=null,this.computationDepth=0,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!0,this.enforceActions=!1,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1},ye=!0,be=!1,_e=function(){var e=we();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(ye=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new ge).version&&(ye=!1),ye?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new ge):(setTimeout((function(){be||f("There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`")}),1),new ge)}();function we(){return"undefined"!=typeof window?window:r}function xe(e,t){e.observers.add(t),e.lowestObserverState>t.dependenciesState&&(e.lowestObserverState=t.dependenciesState)}function Ee(e,t){e.observers.delete(t),0===e.observers.size&&ke(e)}function ke(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,_e.pendingUnobservations.push(e))}function Se(){_e.inBatch++}function Oe(){if(0==--_e.inBatch){je();for(var e=_e.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,0===n.observers.size&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBecomeUnobserved()),n instanceof ie&&n.suspend())}_e.pendingUnobservations=[]}}function Te(e){var t=_e.trackingDerivation;return null!==t?(t.runId!==e.lastAccessedBy&&(e.lastAccessedBy=t.runId,t.newObserving[t.unboundDepsCount++]=e,e.isBeingObserved||(e.isBeingObserved=!0,e.onBecomeObserved())),!0):(0===e.observers.size&&_e.inBatch>0&&ke(e),!1)}function Ne(e,t){if(console.log("[mobx.trace] '"+e.name+"' is invalidated due to a change in: '"+t.name+"'"),e.isTracing===re.BREAK){var n=[];Ce(Ke(Dt(e,r)),n,1),new Function("debugger;\n/*\nTracing '"+e.name+"'\n\nYou are entering this break point because derivation '"+e.name+"' is being traced and '"+t.name+"' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n"+(e instanceof ie?e.derivation.toString().replace(/[*]\//g,"/"):"")+"\n\nThe dependencies for this derivation are:\n\n"+n.join("\n")+"\n*/\n ")()}var r}function Ce(e,t,n){t.length>=1e3?t.push("(and many more)"):(t.push(""+new Array(n).join("\t")+e.name),e.dependencies&&e.dependencies.forEach((function(e){return Ce(e,t,n+1)})))}var Pe=function(){function e(e,t,n){void 0===e&&(e="Reaction@"+c()),this.name=e,this.onInvalidate=t,this.errorHandler=n,this.observing=[],this.newObserving=[],this.dependenciesState=te.NOT_TRACKING,this.diffValue=0,this.runId=0,this.unboundDepsCount=0,this.__mapid="#"+c(),this.isDisposed=!1,this._isScheduled=!1,this._isTrackPending=!1,this._isRunning=!1,this.isTracing=re.NONE}return e.prototype.onBecomeStale=function(){this.schedule()},e.prototype.schedule=function(){this._isScheduled||(this._isScheduled=!0,_e.pendingReactions.push(this),je())},e.prototype.isScheduled=function(){return this._isScheduled},e.prototype.runReaction=function(){if(!this.isDisposed){if(Se(),this._isScheduled=!1,ue(this)){this._isTrackPending=!0;try{this.onInvalidate(),this._isTrackPending}catch(e){this.reportExceptionInDerivation(e)}}Oe()}},e.prototype.track=function(e){Se();this._isRunning=!0;var t=fe(this,e,void 0);this._isRunning=!1,this._isTrackPending=!1,this.isDisposed&&de(this),le(t)&&this.reportExceptionInDerivation(t.cause),Oe()},e.prototype.reportExceptionInDerivation=function(e){var t=this;if(this.errorHandler)this.errorHandler(e,this);else{if(_e.disableErrorBoundaries)throw e;var n="[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '"+this+"'";_e.suppressReactionErrors?console.warn("[mobx] (error in reaction '"+this.name+"' suppressed, fix error of causing action below)"):console.error(n,e),_e.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},e.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this._isRunning||(Se(),de(this),Oe()))},e.prototype.getDisposer=function(){var e=this.dispose.bind(this);return e[x]=this,e},e.prototype.toString=function(){return"Reaction["+this.name+"]"},e.prototype.trace=function(e){void 0===e&&(e=!1),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=!1;"boolean"==typeof e[e.length-1]&&(n=e.pop());var r=tt(e);if(!r)return f(!1);r.isTracing===re.NONE&&console.log("[mobx.trace] '"+r.name+"' tracing enabled");r.isTracing=n?re.BREAK:re.LOG}(this,e)},e}();var Me=function(e){return e()};function je(){_e.inBatch>0||_e.isRunningReactions||Me(De)}function De(){_e.isRunningReactions=!0;for(var e=_e.pendingReactions,t=0;e.length>0;){100==++t&&(console.error("Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: "+e[0]),e.splice(0));for(var n=e.splice(0),r=0,o=n.length;r<o;r++)n[r].runReaction()}_e.isRunningReactions=!1}var Ae=y("Reaction",Pe);function Ie(e){var t=Me;Me=function(n){return e((function(){return t(n)}))}}function Re(e){return console.warn("[mobx.spy] Is a no-op in production builds"),function(){}}function ze(){f(!1)}function Fe(e){return function(t,n,r){if(r){if(r.value)return{value:G(e,r.value),enumerable:!1,configurable:!0,writable:!0};var o=r.initializer;return{enumerable:!1,configurable:!0,writable:!0,initializer:function(){return G(e,o.call(this))}}}return Le(e).apply(this,arguments)}}function Le(e){return function(t,n,r){Object.defineProperty(t,n,{configurable:!0,enumerable:!1,get:function(){},set:function(t){g(this,n,Ue(e,t))}})}}var Ue=function(e,t,n,r){return 1===arguments.length&&"function"==typeof e?G(e.name||"<unnamed action>",e):2===arguments.length&&"function"==typeof t?G(e,t):1===arguments.length&&"string"==typeof e?Fe(e):!0!==r?Fe(t).apply(null,arguments):void g(e,t,G(e.name||t,n.value))};function Be(e,t,n){g(e,t,G(t,n.bind(e)))}function He(e,t){void 0===t&&(t=u);var n,r=t&&t.name||e.name||"Autorun@"+c();if(!t.scheduler&&!t.delay)n=new Pe(r,(function(){this.track(a)}),t.onError);else{var o=We(t),i=!1;n=new Pe(r,(function(){i||(i=!0,o((function(){i=!1,n.isDisposed||n.track(a)})))}),t.onError)}function a(){e(n)}return n.schedule(),n.getDisposer()}Ue.bound=function(e,t,n,r){return!0===r?(Be(e,t,n.value),null):n?{configurable:!0,enumerable:!1,get:function(){return Be(this,t,n.value||n.initializer.call(this)),this[t]},set:ze}:{enumerable:!1,configurable:!0,set:function(e){Be(this,t,e)},get:function(){}}};var Ve=function(e){return e()};function We(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Ve}function Ye(e,t,n){void 0===n&&(n=u);var r,o,i,a=n.name||"Reaction@"+c(),s=Ue(a,n.onError?(r=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){r.call(this,e)}}):t),l=!n.scheduler&&!n.delay,f=We(n),d=!0,p=!1,h=n.compareStructural?O.structural:n.equals||O.default,m=new Pe(a,(function(){d||l?v():p||(p=!0,f(v))}),n.onError);function v(){if(p=!1,!m.isDisposed){var t=!1;m.track((function(){var n=e(m);t=d||!h(i,n),i=n})),d&&n.fireImmediately&&s(i,m),d||!0!==t||s(i,m),d&&(d=!1)}}return m.schedule(),m.getDisposer()}function $e(e,t,n,r){var o="string"==typeof n?Dt(t,n):Dt(t),i="string"==typeof n?r:n,a=e+"Listeners";return o[a]?o[a].add(i):o[a]=new Set([i]),"function"!=typeof o[e]?f(!1):function(){var e=o[a];e&&(e.delete(i),0===e.size&&delete o[a])}}function qe(e){var t=e.enforceActions,n=e.computedRequiresReaction,r=e.disableErrorBoundaries,o=e.reactionScheduler;if(!0===e.isolateGlobalState&&((_e.pendingReactions.length||_e.inBatch||_e.isRunningReactions)&&f("isolateGlobalState should be called before MobX is running any reactions"),be=!0,ye&&(0==--we().__mobxInstanceCount&&(we().__mobxGlobals=void 0),_e=new ge)),void 0!==t){var i=void 0;switch(t){case!0:case"observed":i=!0;break;case!1:case"never":i=!1;break;case"strict":case"always":i="strict";break;default:f("Invalid value for 'enforceActions': '"+t+"', expected 'never', 'always' or 'observed'")}_e.enforceActions=i,_e.allowStateChanges=!0!==i&&"strict"!==i}void 0!==n&&(_e.computedRequiresReaction=!!n),void 0!==r&&(!0===r&&console.warn("WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled."),_e.disableErrorBoundaries=!!r),o&&Ie(o)}function Qe(e,t,n,r){var o=Ge(r=L(r));return j(e),Tt(e,r.name,o.enhancer),t&&Xe(e,t,n,o),e}function Ge(e){return e.defaultDecorator||(!1===e.deep?H:U)}function Xe(e,t,n,r){Se();try{for(var o in t){var i=Object.getOwnPropertyDescriptor(t,o);0;var a=(n&&o in n?n[o]:i.get?Q:r)(e,o,i,!0);a&&Object.defineProperty(e,o,a)}}finally{Oe()}}function Ke(e){var t,n,r={name:e.name};return e.observing&&e.observing.length>0&&(r.dependencies=(t=e.observing,n=[],t.forEach((function(e){-1===n.indexOf(e)&&n.push(e)})),n).map(Ke)),r}function Je(e,t){return null!=e&&(void 0!==t?!!jt(e)&&e[x].values.has(t):jt(e)||!!e[x]||k(e)||Ae(e)||ae(e))}function Ze(e){return 1!==arguments.length&&f(!1),Je(e)}function et(e,t,n){if(2!==arguments.length)if(jt(e)){var r=e[x],o=r.values.get(t);o?r.write(t,n):r.addObservableProp(t,n,r.defaultEnhancer)}else if(xt(e))e.set(t,n);else{if(!yt(e))return f(!1);"number"!=typeof t&&(t=parseInt(t,10)),d(t>=0,"Not a valid index: '"+t+"'"),Se(),t>=e.length&&(e.length=t+1),e[t]=n,Oe()}else{Se();var i=t;try{for(var a in i)et(e,a,i[a])}finally{Oe()}}}function tt(e){switch(e.length){case 0:return _e.trackingDerivation;case 1:return Dt(e[0]);case 2:return Dt(e[0],e[1])}}function nt(e,t){void 0===t&&(t=void 0),Se();try{return e.apply(t)}finally{Oe()}}function rt(e){return e[x]}var ot={has:function(e,t){if(t===x||"constructor"===t||t===T)return!0;var n=rt(e);return"string"==typeof t?n.has(t):t in e},get:function(e,t){if(t===x||"constructor"===t||t===T)return e[t];var n=rt(e),r=n.values.get(t);if(r instanceof E){var o=r.get();return void 0===o&&n.has(t),o}return"string"==typeof t&&n.has(t),e[t]},set:function(e,t,n){return"string"==typeof t&&(et(e,t,n),!0)},deleteProperty:function(e,t){return"string"==typeof t&&(rt(e).remove(t),!0)},ownKeys:function(e){return rt(e).keysAtom.reportObserved(),Reflect.ownKeys(e)},preventExtensions:function(e){return f("Dynamic observable objects cannot be frozen"),!1}};function it(e){var t=new Proxy(e,ot);return e[x].proxy=t,t}function at(e){return void 0!==e.interceptors&&e.interceptors.length>0}function st(e,t){var n=e.interceptors||(e.interceptors=[]);return n.push(t),p((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function lt(e,t){var n=he();try{var r=e.interceptors;if(r)for(var o=0,i=r.length;o<i&&(d(!(t=r[o](t))||t.type,"Intercept handlers should return nothing or a change object"),t);o++);return t}finally{me(n)}}function ut(e){return void 0!==e.changeListeners&&e.changeListeners.length>0}function ct(e,t){var n=e.changeListeners||(e.changeListeners=[]);return n.push(t),p((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function ft(e,t){var n=he(),r=e.changeListeners;if(r){for(var o=0,i=(r=r.slice()).length;o<i;o++)r[o](t);me(n)}}var dt={get:function(e,t){return t===x?e[x]:"length"===t?e[x].getArrayLength():"number"==typeof t?mt.get.call(e,t):"string"!=typeof t||isNaN(t)?mt.hasOwnProperty(t)?mt[t]:e[t]:mt.get.call(e,parseInt(t))},set:function(e,t,n){return"length"===t?(e[x].setArrayLength(n),!0):"number"==typeof t?(mt.set.call(e,t,n),!0):!isNaN(t)&&(mt.set.call(e,parseInt(t),n),!0)},preventExtensions:function(e){return f("Observable arrays cannot be frozen"),!1}};function pt(e,t,n,r){void 0===n&&(n="ObservableArray@"+c()),void 0===r&&(r=!1);var o,i,a,s=new ht(n,t,r);o=s.values,i=x,a=s,Object.defineProperty(o,i,{enumerable:!1,writable:!1,configurable:!0,value:a});var l=new Proxy(s.values,dt);if(s.proxy=l,e&&e.length){var u=Z(!0);s.spliceWithArray(0,0,e),ee(u)}return l}var ht=function(){function e(e,t,n){this.owned=n,this.values=[],this.proxy=void 0,this.lastKnownLength=0,this.atom=new E(e||"ObservableArray@"+c()),this.enhancer=function(n,r){return t(n,r,e+"[..]")}}return e.prototype.dehanceValue=function(e){return void 0!==this.dehancer?this.dehancer(e):e},e.prototype.dehanceValues=function(e){return void 0!==this.dehancer&&e.length>0?e.map(this.dehancer):e},e.prototype.intercept=function(e){return st(this,e)},e.prototype.observe=function(e,t){return void 0===t&&(t=!1),t&&e({object:this.proxy,type:"splice",index:0,added:this.values.slice(),addedCount:this.values.length,removed:[],removedCount:0}),ct(this,e)},e.prototype.getArrayLength=function(){return this.atom.reportObserved(),this.values.length},e.prototype.setArrayLength=function(e){if("number"!=typeof e||e<0)throw new Error("[mobx.array] Out of range: "+e);var t=this.values.length;if(e!==t)if(e>t){for(var n=new Array(e-t),r=0;r<e-t;r++)n[r]=void 0;this.spliceWithArray(t,0,n)}else this.spliceWithArray(e,t-e)},e.prototype.updateArrayLength=function(e,t){if(e!==this.lastKnownLength)throw new Error("[mobx] Modification exception: the internal structure of an observable array was changed.");this.lastKnownLength+=t},e.prototype.spliceWithArray=function(e,t,n){var r=this;ce(this.atom);var o=this.values.length;if(void 0===e?e=0:e>o?e=o:e<0&&(e=Math.max(0,o+e)),t=1===arguments.length?o-e:null==t?0:Math.max(0,Math.min(t,o-e)),void 0===n&&(n=l),at(this)){var i=lt(this,{object:this.proxy,type:"splice",index:e,removedCount:t,added:n});if(!i)return l;t=i.removedCount,n=i.added}n=0===n.length?n:n.map((function(e){return r.enhancer(e,void 0)}));var a=this.spliceItemsIntoValues(e,t,n);return 0===t&&0===n.length||this.notifyArraySplice(e,n,a),this.dehanceValues(a)},e.prototype.spliceItemsIntoValues=function(e,t,n){var r;if(n.length<1e4)return(r=this.values).splice.apply(r,function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(s(arguments[t]));return e}([e,t],n));var o=this.values.slice(e,e+t);return this.values=this.values.slice(0,e).concat(n,this.values.slice(e+t)),o},e.prototype.notifyArrayChildUpdate=function(e,t,n){var r=!this.owned&&!1,o=ut(this),i=o||r?{object:this.proxy,type:"update",index:e,newValue:t,oldValue:n}:null;this.atom.reportChanged(),o&&ft(this,i)},e.prototype.notifyArraySplice=function(e,t,n){var r=!this.owned&&!1,o=ut(this),i=o||r?{object:this.proxy,type:"splice",index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.atom.reportChanged(),o&&ft(this,i)},e}(),mt={intercept:function(e){return this[x].intercept(e)},observe:function(e,t){return void 0===t&&(t=!1),this[x].observe(e,t)},clear:function(){return this.splice(0)},replace:function(e){var t=this[x];return t.spliceWithArray(0,t.values.length,e)},toJS:function(){return this.slice()},toJSON:function(){return this.toJS()},splice:function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var o=this[x];switch(arguments.length){case 0:return[];case 1:return o.spliceWithArray(e);case 2:return o.spliceWithArray(e,t)}return o.spliceWithArray(e,t,n)},spliceWithArray:function(e,t,n){return this[x].spliceWithArray(e,t,n)},push:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=this[x];return n.spliceWithArray(n.values.length,0,e),n.values.length},pop:function(){return this.splice(Math.max(this[x].values.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=this[x];return n.spliceWithArray(0,0,e),n.values.length},reverse:function(){var e=this.slice();return e.reverse.apply(e,arguments)},sort:function(e){var t=this.slice();return t.sort.apply(t,arguments)},remove:function(e){var t=this[x],n=t.dehanceValues(t.values).indexOf(e);return n>-1&&(this.splice(n,1),!0)},get:function(e){var t=this[x];if(t){if(e<t.values.length)return t.atom.reportObserved(),t.dehanceValue(t.values[e]);console.warn("[mobx.array] Attempt to read an array index ("+e+") that is out of bounds ("+t.values.length+"). Please check length first. Out of bound indices will not be tracked by MobX")}},set:function(e,t){var n=this[x],r=n.values;if(e<r.length){ce(n.atom);var o=r[e];if(at(n)){var i=lt(n,{type:"update",object:this,index:e,newValue:t});if(!i)return;t=i.newValue}(t=n.enhancer(t,o))!==o&&(r[e]=t,n.notifyArrayChildUpdate(e,t,o))}else{if(e!==r.length)throw new Error("[mobx.array] Index out of bounds, "+e+" is larger than "+r.length);n.spliceWithArray(e,0,[t])}}};["concat","every","filter","forEach","indexOf","join","lastIndexOf","map","reduce","reduceRight","slice","some","toString","toLocaleString"].forEach((function(e){mt[e]=function(){var t=this[x];t.atom.reportObserved();var n=t.dehanceValues(t.values);return n[e].apply(n,arguments)}}));var vt,gt=y("ObservableArrayAdministration",ht);function yt(e){return m(e)&>(e[x])}var bt,_t={},wt=function(){function e(e,t,n){if(void 0===t&&(t=I),void 0===n&&(n="ObservableMap@"+c()),this.enhancer=t,this.name=n,this[vt]=_t,this._keysAtom=S(this.name+".keys()"),this[Symbol.toStringTag]="Map","function"!=typeof Map)throw new Error("mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js");this._data=new Map,this._hasMap=new Map,this.merge(e)}return e.prototype._has=function(e){return this._data.has(e)},e.prototype.has=function(e){return this._hasMap.has(e)?this._hasMap.get(e).get():this._updateHasMapEntry(e,!1).get()},e.prototype.set=function(e,t){var n=this._has(e);if(at(this)){var r=lt(this,{type:n?"update":"add",object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this._updateValue(e,t):this._addValue(e,t),this},e.prototype.delete=function(e){var t=this;if(at(this)&&!(r=lt(this,{type:"delete",object:this,name:e})))return!1;if(this._has(e)){var n=ut(this),r=n?{type:"delete",object:this,oldValue:this._data.get(e).value,name:e}:null;return nt((function(){t._keysAtom.reportChanged(),t._updateHasMapEntry(e,!1),t._data.get(e).setNewValue(void 0),t._data.delete(e)})),n&&ft(this,r),!0}return!1},e.prototype._updateHasMapEntry=function(e,t){var n=this._hasMap.get(e);return n?n.setNewValue(t):(n=new oe(t,R,this.name+"."+e+"?",!1),this._hasMap.set(e,n)),n},e.prototype._updateValue=function(e,t){var n=this._data.get(e);if((t=n.prepareNewValue(t))!==_e.UNCHANGED){var r=!1,o=ut(this),i=o?{type:"update",object:this,oldValue:n.value,name:e,newValue:t}:null;r,n.setNewValue(t),o&&ft(this,i)}},e.prototype._addValue=function(e,t){var n=this;ce(this._keysAtom),nt((function(){var r=new oe(t,n.enhancer,n.name+"."+e,!1);n._data.set(e,r),t=r.value,n._updateHasMapEntry(e,!0),n._keysAtom.reportChanged()}));var r=!1,o=ut(this),i=o?{type:"add",object:this,name:e,newValue:t}:null;o&&ft(this,i)},e.prototype.get=function(e){return this.has(e)?this.dehanceValue(this._data.get(e).get()):this.dehanceValue(void 0)},e.prototype.dehanceValue=function(e){return void 0!==this.dehancer?this.dehancer(e):e},e.prototype.keys=function(){return this._keysAtom.reportObserved(),this._data.keys()},e.prototype.values=function(){var e=this,t=0,n=Array.from(this.keys());return Bt({next:function(){return t<n.length?{value:e.get(n[t++]),done:!1}:{done:!0}}})},e.prototype.entries=function(){var e=this,t=0,n=Array.from(this.keys());return Bt({next:function(){if(t<n.length){var r=n[t++];return{value:[r,e.get(r)],done:!1}}return{done:!0}}})},e.prototype[(vt=x,Symbol.iterator)]=function(){return this.entries()},e.prototype.forEach=function(e,t){var n,r;try{for(var o=a(this),i=o.next();!i.done;i=o.next()){var l=s(i.value,2),u=l[0],c=l[1];e.call(t,c,u,this)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},e.prototype.merge=function(e){var t=this;return xt(e)&&(e=e.toJS()),nt((function(){if(v(e))Object.keys(e).forEach((function(n){return t.set(n,e[n])}));else if(Array.isArray(e))e.forEach((function(e){var n=s(e,2),r=n[0],o=n[1];return t.set(r,o)}));else if(b(e)){if(e.constructor!==Map)return f("Cannot initialize from classes that inherit from Map: "+e.constructor.name);e.forEach((function(e,n){return t.set(n,e)}))}else null!=e&&f("Cannot initialize map from "+e)})),this},e.prototype.clear=function(){var e=this;nt((function(){pe((function(){var t,n;try{for(var r=a(e.keys()),o=r.next();!o.done;o=r.next()){var i=o.value;e.delete(i)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}}))}))},e.prototype.replace=function(e){var t=this;return nt((function(){var n,r=v(n=e)?Object.keys(n):Array.isArray(n)?n.map((function(e){return s(e,1)[0]})):b(n)||xt(n)?Array.from(n.keys()):f("Cannot get keys from '"+n+"'");Array.from(t.keys()).filter((function(e){return-1===r.indexOf(e)})).forEach((function(e){return t.delete(e)})),t.merge(e)})),this},Object.defineProperty(e.prototype,"size",{get:function(){return this._keysAtom.reportObserved(),this._data.size},enumerable:!0,configurable:!0}),e.prototype.toPOJO=function(){var e,t,n={};try{for(var r=a(this),o=r.next();!o.done;o=r.next()){var i=s(o.value,2),l=i[0],u=i[1];n[""+l]=u}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}return n},e.prototype.toJS=function(){return new Map(this)},e.prototype.toJSON=function(){return this.toPOJO()},e.prototype.toString=function(){var e=this;return this.name+"[{ "+Array.from(this.keys()).map((function(t){return t+": "+e.get(t)})).join(", ")+" }]"},e.prototype.observe=function(e,t){return ct(this,e)},e.prototype.intercept=function(e){return st(this,e)},e}(),xt=y("ObservableMap",wt),Et={},kt=function(){function e(e,t,n){if(void 0===t&&(t=I),void 0===n&&(n="ObservableSet@"+c()),this.name=n,this[bt]=Et,this._data=new Set,this._atom=S(this.name),this[Symbol.toStringTag]="Set","function"!=typeof Set)throw new Error("mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js");this.enhancer=function(e,r){return t(e,r,n)},e&&this.replace(e)}return e.prototype.dehanceValue=function(e){return void 0!==this.dehancer?this.dehancer(e):e},e.prototype.clear=function(){var e=this;nt((function(){pe((function(){var t,n;try{for(var r=a(e._data.values()),o=r.next();!o.done;o=r.next()){var i=o.value;e.delete(i)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}}))}))},e.prototype.forEach=function(e,t){var n,r;try{for(var o=a(this),i=o.next();!i.done;i=o.next()){var s=i.value;e.call(t,s,s,this)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},Object.defineProperty(e.prototype,"size",{get:function(){return this._atom.reportObserved(),this._data.size},enumerable:!0,configurable:!0}),e.prototype.add=function(e){var t=this;if((ce(this._atom),at(this))&&!(o=lt(this,{type:"add",object:this,newValue:e})))return this;if(!this.has(e)){nt((function(){t._data.add(t.enhancer(e,void 0)),t._atom.reportChanged()}));var n=!1,r=ut(this),o=r?{type:"add",object:this,newValue:e}:null;n,r&&ft(this,o)}return this},e.prototype.delete=function(e){var t=this;if(at(this)&&!(r=lt(this,{type:"delete",object:this,oldValue:e})))return!1;if(this.has(e)){var n=ut(this),r=n?{type:"delete",object:this,oldValue:e}:null;return nt((function(){t._atom.reportChanged(),t._data.delete(e)})),n&&ft(this,r),!0}return!1},e.prototype.has=function(e){return this._atom.reportObserved(),this._data.has(this.dehanceValue(e))},e.prototype.entries=function(){var e=0,t=Array.from(this.keys()),n=Array.from(this.values());return Bt({next:function(){var r=e;return e+=1,r<n.length?{value:[t[r],n[r]],done:!1}:{done:!0}}})},e.prototype.keys=function(){return this.values()},e.prototype.values=function(){this._atom.reportObserved();var e=this,t=0,n=Array.from(this._data.values());return Bt({next:function(){return t<n.length?{value:e.dehanceValue(n[t++]),done:!1}:{done:!0}}})},e.prototype.replace=function(e){var t=this;return St(e)&&(e=e.toJS()),nt((function(){Array.isArray(e)||_(e)?(t.clear(),e.forEach((function(e){return t.add(e)}))):null!=e&&f("Cannot initialize set from "+e)})),this},e.prototype.observe=function(e,t){return ct(this,e)},e.prototype.intercept=function(e){return st(this,e)},e.prototype.toJS=function(){return new Set(this)},e.prototype.toString=function(){return this.name+"[ "+Array.from(this).join(", ")+" ]"},e.prototype[(bt=x,Symbol.iterator)]=function(){return this.values()},e}(),St=y("ObservableSet",kt),Ot=function(){function e(e,t,n,r){void 0===t&&(t=new Map),this.target=e,this.values=t,this.name=n,this.defaultEnhancer=r,this.keysAtom=new E(n+".keys")}return e.prototype.read=function(e){return this.values.get(e).get()},e.prototype.write=function(e,t){var n=this.target,r=this.values.get(e);if(r instanceof ie)r.set(t);else{if(at(this)){if(!(a=lt(this,{type:"update",object:this.proxy||n,name:e,newValue:t})))return;t=a.newValue}if((t=r.prepareNewValue(t))!==_e.UNCHANGED){var o=ut(this),i=!1,a=o?{type:"update",object:this.proxy||n,oldValue:r.value,name:e,newValue:t}:null;i,r.setNewValue(t),o&&ft(this,a)}}},e.prototype.has=function(e){var t=this.pendingKeys||(this.pendingKeys=new Map),n=t.get(e);if(n)return n.get();var r=!!this.values.get(e);return n=new oe(r,R,this.name+"."+e.toString()+"?",!1),t.set(e,n),n.get()},e.prototype.addObservableProp=function(e,t,n){void 0===n&&(n=this.defaultEnhancer);var r=this.target;if(at(this)){var o=lt(this,{object:this.proxy||r,name:e,type:"add",newValue:t});if(!o)return;t=o.newValue}var i=new oe(t,n,this.name+"."+e,!1);this.values.set(e,i),t=i.value,Object.defineProperty(r,e,function(e){return Nt[e]||(Nt[e]={configurable:!0,enumerable:!0,get:function(){return this[x].read(e)},set:function(t){this[x].write(e,t)}})}(e)),this.notifyPropertyAddition(e,t)},e.prototype.addComputedProp=function(e,t,n){var r,o,i,a=this.target;n.name=n.name||this.name+"."+t,this.values.set(t,new ie(n)),(e===a||(r=e,o=t,!(i=Object.getOwnPropertyDescriptor(r,o))||!1!==i.configurable&&!1!==i.writable))&&Object.defineProperty(e,t,function(e){return Ct[e]||(Ct[e]={configurable:!1,enumerable:!1,get:function(){return Pt(this).read(e)},set:function(t){Pt(this).write(e,t)}})}(t))},e.prototype.remove=function(e){if(this.values.has(e)){var t=this.target;if(at(this))if(!(s=lt(this,{object:this.proxy||t,name:e,type:"remove"})))return;try{Se();var n=ut(this),r=!1,o=this.values.get(e),i=o&&o.get();if(o&&o.set(void 0),this.keysAtom.reportChanged(),this.values.delete(e),this.pendingKeys){var a=this.pendingKeys.get(e);a&&a.set(!1)}delete this.target[e];var s=n?{type:"remove",object:this.proxy||t,oldValue:i,name:e}:null;r,n&&ft(this,s)}finally{Oe()}}},e.prototype.illegalAccess=function(e,t){console.warn("Property '"+t+"' of '"+e+"' was accessed through the prototype chain. Use 'decorate' instead to declare the prop or access it statically through it's owner")},e.prototype.observe=function(e,t){return ct(this,e)},e.prototype.intercept=function(e){return st(this,e)},e.prototype.notifyPropertyAddition=function(e,t){var n=ut(this),r=n?{type:"add",object:this.proxy||this.target,name:e,newValue:t}:null;if(n&&ft(this,r),this.pendingKeys){var o=this.pendingKeys.get(e);o&&o.set(!0)}this.keysAtom.reportChanged()},e.prototype.getKeys=function(){var e,t;this.keysAtom.reportObserved();var n=[];try{for(var r=a(this.values),o=r.next();!o.done;o=r.next()){var i=s(o.value,2),l=i[0];i[1]instanceof oe&&n.push(l)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}return n},e}();function Tt(e,t,n){if(void 0===t&&(t=""),void 0===n&&(n=I),Object.prototype.hasOwnProperty.call(e,x))return e[x];v(e)||(t=(e.constructor.name||"ObservableObject")+"@"+c()),t||(t="ObservableObject@"+c());var r=new Ot(e,new Map,t,n);return g(e,x,r),r}var Nt=Object.create(null),Ct=Object.create(null);function Pt(e){var t=e[x];return t||(j(e),e[x])}var Mt=y("ObservableObjectAdministration",Ot);function jt(e){return!!m(e)&&(j(e),Mt(e[x]))}function Dt(e,t){if("object"==typeof e&&null!==e){if(yt(e))return void 0!==t&&f(!1),e[x].atom;if(St(e))return e[x];if(xt(e)){var n=e;return void 0===t?n._keysAtom:((r=n._data.get(t)||n._hasMap.get(t))||f(!1),r)}var r;if(j(e),t&&!e[x]&&e[t],jt(e))return t?((r=e[x].values.get(t))||f(!1),r):f(!1);if(k(e)||ae(e)||Ae(e))return e}else if("function"==typeof e&&Ae(e[x]))return e[x];return f(!1)}function At(e,t){return e||f("Expecting some object"),void 0!==t?At(Dt(e,t)):k(e)||ae(e)||Ae(e)||xt(e)||St(e)?e:(j(e),e[x]?e[x]:void f(!1))}function It(e,t){return(void 0!==t?Dt(e,t):jt(e)||xt(e)||St(e)?At(e):Dt(e)).name}var Rt=Object.prototype.toString;function zt(e,t){return Ft(e,t)}function Ft(e,t,n,r){if(e===t)return 0!==e||1/e==1/t;if(null==e||null==t)return!1;if(e!=e)return t!=t;var o=typeof e;return("function"===o||"object"===o||"object"==typeof t)&&function(e,t,n,r){e=Lt(e),t=Lt(t);var o=Rt.call(e);if(o!==Rt.call(t))return!1;switch(o){case"[object RegExp]":case"[object String]":return""+e==""+t;case"[object Number]":return+e!=+e?+t!=+t:0==+e?1/+e==1/t:+e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object Symbol]":return"undefined"!=typeof Symbol&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t)}var i="[object Array]"===o;if(!i){if("object"!=typeof e||"object"!=typeof t)return!1;var a=e.constructor,s=t.constructor;if(a!==s&&!("function"==typeof a&&a instanceof a&&"function"==typeof s&&s instanceof s)&&"constructor"in e&&"constructor"in t)return!1}r=r||[];var l=(n=n||[]).length;for(;l--;)if(n[l]===e)return r[l]===t;if(n.push(e),r.push(t),i){if((l=e.length)!==t.length)return!1;for(;l--;)if(!Ft(e[l],t[l],n,r))return!1}else{var u,c=Object.keys(e);if(l=c.length,Object.keys(t).length!==l)return!1;for(;l--;)if(!Ut(t,u=c[l])||!Ft(e[u],t[u],n,r))return!1}return n.pop(),r.pop(),!0}(e,t,n,r)}function Lt(e){return yt(e)?e.slice():b(e)||xt(e)||_(e)||St(e)?Array.from(e.entries()):e}function Ut(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Bt(e){return e[Symbol.iterator]=Ht,e}function Ht(){return this}if("undefined"==typeof Proxy||"undefined"==typeof Symbol)throw new Error("[mobx] MobX 5+ requires Proxy and Symbol objects. If your environment doesn't support Proxy objects, please downgrade to MobX 4. For React Native Android, consider upgrading JSCore.");"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Re,extras:{getDebugName:It},$mobx:x})}).call(this,n(197),n(65))},function(e,t,n){var r=n(72),o=n(74),i=n(46),a=n(6),s=n(50),l=n(47),u=n(73),c=n(48),f=Object.prototype.hasOwnProperty;e.exports=function(e){if(null==e)return!0;if(s(e)&&(a(e)||"string"==typeof e||"function"==typeof e.splice||l(e)||c(e)||i(e)))return!e.length;var t=o(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(u(e))return!r(e).length;for(var n in e)if(f.call(e,n))return!1;return!0}},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){var r=n(44);e.exports=function(e,t){return r(e,t)}},function(e,t,n){var r=n(64),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t,n){e.exports={"trans-color":"test--trans-color---3sP2r",component:"test--component---1mwsi",expanded:"test--expanded---3hI0z",passed:"test--passed---38wAs","body-wrap":"test--body-wrap---3EGPT","header-btn":"test--header-btn---mI0Oy",failed:"test--failed---2PZhW",list:"test--list---24Hjy",title:"test--title---4c0rg",hook:"test--hook---3T4lI",icon:"test--icon---2jgH_",pass:"test--pass---C1Mk7",fail:"test--fail---3u2w0",pending:"test--pending---3Ctfm",skipped:"test--skipped---3aU0Y",info:"test--info---1UQNw",duration:"test--duration---2tVp5","duration-icon":"test--duration-icon---2KnOU",slow:"test--slow---MQOnF",medium:"test--medium---5j890","context-icon":"test--context-icon---2POzC",body:"test--body---Ox0q_","error-message":"test--error-message---3Grn0","code-snippet":"test--code-snippet---3H5Xj","code-diff":"test--code-diff---2XQsb","code-diff-expected":"test--code-diff-expected---1QWLl","inline-diff":"test--inline-diff---3OmYO","code-diff-actual":"test--code-diff-actual---3MMxN","code-label":"test--code-label---1QEUY",context:"test--context---1YYgX","context-title":"test--context-title---HHH10","context-item":"test--context-item---R1NNU","context-item-title":"test--context-item-title---1KxIO","text-link":"test--text-link---2_cSn","image-link":"test--image-link---PUFPJ","video-link":"test--video-link---1L-2D",image:"test--image---2Z5X2",video:"test--video---2JK7O"}},function(e,t,n){var r=n(2),o=n(11);e.exports=function(e){var t=r(e),n=t.getFullYear(),i=new Date(0);i.setFullYear(n+1,0,4),i.setHours(0,0,0,0);var a=o(i),s=new Date(0);s.setFullYear(n,0,4),s.setHours(0,0,0,0);var l=o(s);return t.getTime()>=a.getTime()?n+1:t.getTime()>=l.getTime()?n:n-1}},function(e,t,n){var r=n(34);e.exports=function(e){return r(e,{weekStartsOn:1})}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setHours(0,0,0,0),t}},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(127)},function(e,t,n){var r=n(27),o=n(132),i=n(133),a=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":a&&a in Object(e)?o(e):i(e)}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){var r=n(140),o=n(143);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var i=typeof r;if("string"===i||"number"===i)e.push(r);else if(Array.isArray(r)&&r.length){var a=o.apply(null,r);a&&e.push(a)}else if("object"===i)for(var s in r)n.call(r,s)&&r[s]&&e.push(s)}}return e.join(" ")}e.exports?(o.default=o,e.exports=o):void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r)}()},function(e,t,n){e.exports={"trans-color":"nav-menu--trans-color---1l-R-",wrap:"nav-menu--wrap---39S_b",overlay:"nav-menu--overlay---k2Lwz","close-btn":"nav-menu--close-btn---2m7W7",menu:"nav-menu--menu---lFcsl","close-button":"nav-menu--close-button---2_OHr",date:"nav-menu--date---3SYOi","section-head":"nav-menu--section-head---3LXPD",control:"nav-menu--control---1JEYH","control-label":"nav-menu--control-label---3f2XU","with-icon":"nav-menu--with-icon---qF4hj","control-group":"nav-menu--control-group---32kKg","toggle-icon-passed":"nav-menu--toggle-icon-passed---132lH","toggle-icon-failed":"nav-menu--toggle-icon-failed---x-XUB","toggle-icon-pending":"nav-menu--toggle-icon-pending---3ZJAs","toggle-icon-skipped":"nav-menu--toggle-icon-skipped---FyedH",open:"nav-menu--open---3BW1O",section:"nav-menu--section---2z7Dj",list:"nav-menu--list---2QMG9",main:"nav-menu--main---jkqJW","no-tests":"nav-menu--no-tests---2sRAg",item:"nav-menu--item---gXWu6","has-tests":"nav-menu--has-tests---1ND4g",sub:"nav-menu--sub---EnSIu",link:"nav-menu--link---tywPF","link-icon":"nav-menu--link-icon---1Q2NP",pass:"nav-menu--pass---1PUeh",fail:"nav-menu--fail---3gQQa",pending:"nav-menu--pending---9zAw0",skipped:"nav-menu--skipped---31GPM",disabled:"nav-menu--disabled---2MoA_"}},function(e,t,n){e.exports={"trans-color":"suite--trans-color---2pu6T",component:"suite--component---22Vxk",body:"suite--body---1itCO","no-tests":"suite--no-tests---l47BS",list:"suite--list---3WtMK","list-main":"suite--list-main---3KCXR","root-suite":"suite--root-suite---ZDRuj","no-suites":"suite--no-suites---2PQFQ",header:"suite--header---TddSn","header-btn":"suite--header-btn---25qLz",title:"suite--title---3T6OR",icon:"suite--icon---2KPe5",filename:"suite--filename---1u8oo",hide:"suite--hide---2i8QF","has-suites":"suite--has-suites---3OYDf","chart-wrap":"suite--chart-wrap---7hvUh","chart-slice":"suite--chart-slice---1XN2j","chart-enabled":"suite--chart-enabled---1N-VF"}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setDate(n.getDate()+o),n}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e).getTime(),o=Number(t);return new Date(n+o)}},function(e,t,n){var r=n(10),o=n(11);e.exports=function(e){var t=r(e),n=new Date(0);return n.setFullYear(t,0,4),n.setHours(0,0,0,0),o(n)}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e).getTime(),o=r(t).getTime();return n<o?-1:n>o?1:0}},function(e,t,n){var r=n(62);e.exports=function(e,t,n){var o=null==e?void 0:r(e,t);return void 0===o?n:o}},function(e,t,n){!function(e){"object"==typeof window&&window||"object"==typeof self&&self;(function(e){var t,n=[],r=Object.keys,o={},i={},a=/^(no-?highlight|plain|text)$/i,s=/\blang(?:uage)?-([\w-]+)\b/i,l=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,u="</span>",c={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function f(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function d(e){return e.nodeName.toLowerCase()}function p(e,t){var n=e&&e.exec(t);return n&&0===n.index}function h(e){return a.test(e)}function m(e){var t,n,r,o,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",n=s.exec(i))return j(n[1])?n[1]:"no-highlight";for(t=0,r=(i=i.split(/\s+/)).length;t<r;t++)if(h(o=i[t])||j(o))return o}function v(e){var t,n={},r=Array.prototype.slice.call(arguments,1);for(t in e)n[t]=e[t];return r.forEach((function(e){for(t in e)n[t]=e[t]})),n}function g(e){var t=[];return function e(n,r){for(var o=n.firstChild;o;o=o.nextSibling)3===o.nodeType?r+=o.nodeValue.length:1===o.nodeType&&(t.push({event:"start",offset:r,node:o}),r=e(o,r),d(o).match(/br|hr|img|input/)||t.push({event:"stop",offset:r,node:o}));return r}(e,0),t}function y(e,t,r){var o=0,i="",a=[];function s(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset<t[0].offset?e:t:"start"===t[0].event?e:t:e.length?e:t}function l(e){function t(e){return" "+e.nodeName+'="'+f(e.value).replace('"',""")+'"'}i+="<"+d(e)+n.map.call(e.attributes,t).join("")+">"}function u(e){i+="</"+d(e)+">"}function c(e){("start"===e.event?l:u)(e.node)}for(;e.length||t.length;){var p=s();if(i+=f(r.substring(o,p[0].offset)),o=p[0].offset,p===e){a.reverse().forEach(u);do{c(p.splice(0,1)[0]),p=s()}while(p===e&&p.length&&p[0].offset===o);a.reverse().forEach(l)}else"start"===p[0].event?a.push(p[0].node):a.pop(),c(p.splice(0,1)[0])}return i+f(r.substr(o))}function b(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map((function(t){return v(e,{variants:null},t)}))),e.cached_variants||e.endsWithParent&&[v(e)]||[e]}function _(e){if(t&&!e.langApiRestored){for(var n in e.langApiRestored=!0,t)e[n]&&(e[t[n]]=e[n]);(e.contains||[]).concat(e.variants||[]).forEach(_)}}function w(e){function t(e){return e&&e.source||e}function n(n,r){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(r?"g":""))}function o(e,n){for(var r=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,o=0,i="",a=0;a<e.length;a++){var s=o,l=t(e[a]);for(a>0&&(i+=n);l.length>0;){var u=r.exec(l);if(null==u){i+=l;break}i+=l.substring(0,u.index),l=l.substring(u.index+u[0].length),"\\"==u[0][0]&&u[1]?i+="\\"+String(Number(u[1])+s):(i+=u[0],"("==u[0]&&o++)}}return i}function i(a,s){if(!a.compiled){if(a.compiled=!0,a.keywords=a.keywords||a.beginKeywords,a.keywords){var l={},u=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach((function(e){var n=e.split("|");l[n[0]]=[t,n[1]?Number(n[1]):1]}))};"string"==typeof a.keywords?u("keyword",a.keywords):r(a.keywords).forEach((function(e){u(e,a.keywords[e])})),a.keywords=l}a.lexemesRe=n(a.lexemes||/\w+/,!0),s&&(a.beginKeywords&&(a.begin="\\b("+a.beginKeywords.split(" ").join("|")+")\\b"),a.begin||(a.begin=/\B|\b/),a.beginRe=n(a.begin),a.endSameAsBegin&&(a.end=a.begin),a.end||a.endsWithParent||(a.end=/\B|\b/),a.end&&(a.endRe=n(a.end)),a.terminator_end=t(a.end)||"",a.endsWithParent&&s.terminator_end&&(a.terminator_end+=(a.end?"|":"")+s.terminator_end)),a.illegal&&(a.illegalRe=n(a.illegal)),null==a.relevance&&(a.relevance=1),a.contains||(a.contains=[]),a.contains=Array.prototype.concat.apply([],a.contains.map((function(e){return b("self"===e?a:e)}))),a.contains.forEach((function(e){i(e,a)})),a.starts&&i(a.starts,s);var c=a.contains.map((function(e){return e.beginKeywords?"\\.?(?:"+e.begin+")\\.?":e.begin})).concat([a.terminator_end,a.illegal]).map(t).filter(Boolean);a.terminators=c.length?n(o(c,"|"),!0):{exec:function(){return null}}}}i(e)}function x(e,t,n,r){function i(e){return new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}function a(e,t){var n,r;for(n=0,r=t.contains.length;n<r;n++)if(p(t.contains[n].beginRe,e))return t.contains[n].endSameAsBegin&&(t.contains[n].endRe=i(t.contains[n].beginRe.exec(e)[0])),t.contains[n]}function s(e,t){if(p(e.endRe,t)){for(;e.endsParent&&e.parent;)e=e.parent;return e}if(e.endsWithParent)return s(e.parent,t)}function l(e,t){return!n&&p(t.illegalRe,e)}function d(e,t){var n=_.case_insensitive?t[0].toLowerCase():t[0];return e.keywords.hasOwnProperty(n)&&e.keywords[n]}function h(e,t,n,r){var o='<span class="'+(r?"":c.classPrefix);return(o+=e+'">')+t+(n?"":u)}function m(){var e,t,n,r;if(!S.keywords)return f(N);for(r="",t=0,S.lexemesRe.lastIndex=0,n=S.lexemesRe.exec(N);n;)r+=f(N.substring(t,n.index)),(e=d(S,n))?(C+=e[1],r+=h(e[0],f(n[0]))):r+=f(n[0]),t=S.lexemesRe.lastIndex,n=S.lexemesRe.exec(N);return r+f(N.substr(t))}function v(){var e="string"==typeof S.subLanguage;if(e&&!o[S.subLanguage])return f(N);var t=e?x(S.subLanguage,N,!0,O[S.subLanguage]):E(N,S.subLanguage.length?S.subLanguage:void 0);return S.relevance>0&&(C+=t.relevance),e&&(O[S.subLanguage]=t.top),h(t.language,t.value,!1,!0)}function g(){T+=null!=S.subLanguage?v():m(),N=""}function y(e){T+=e.className?h(e.className,"",!0):"",S=Object.create(e,{parent:{value:S}})}function b(e,t){if(N+=e,null==t)return g(),0;var n=a(t,S);if(n)return n.skip?N+=t:(n.excludeBegin&&(N+=t),g(),n.returnBegin||n.excludeBegin||(N=t)),y(n,t),n.returnBegin?0:t.length;var r=s(S,t);if(r){var o=S;o.skip?N+=t:(o.returnEnd||o.excludeEnd||(N+=t),g(),o.excludeEnd&&(N=t));do{S.className&&(T+=u),S.skip||S.subLanguage||(C+=S.relevance),S=S.parent}while(S!==r.parent);return r.starts&&(r.endSameAsBegin&&(r.starts.endRe=r.endRe),y(r.starts,"")),o.returnEnd?0:t.length}if(l(t,S))throw new Error('Illegal lexeme "'+t+'" for mode "'+(S.className||"<unnamed>")+'"');return N+=t,t.length||1}var _=j(e);if(!_)throw new Error('Unknown language: "'+e+'"');w(_);var k,S=r||_,O={},T="";for(k=S;k!==_;k=k.parent)k.className&&(T=h(k.className,"",!0)+T);var N="",C=0;try{for(var P,M,D=0;S.terminators.lastIndex=D,P=S.terminators.exec(t);)M=b(t.substring(D,P.index),P[0]),D=P.index+M;for(b(t.substr(D)),k=S;k.parent;k=k.parent)k.className&&(T+=u);return{relevance:C,value:T,language:e,top:S}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:f(t)};throw e}}function E(e,t){t=t||c.languages||r(o);var n={relevance:0,value:f(e)},i=n;return t.filter(j).filter(D).forEach((function(t){var r=x(t,e,!1);r.language=t,r.relevance>i.relevance&&(i=r),r.relevance>n.relevance&&(i=n,n=r)})),i.language&&(n.second_best=i),n}function k(e){return c.tabReplace||c.useBR?e.replace(l,(function(e,t){return c.useBR&&"\n"===e?"<br>":c.tabReplace?t.replace(/\t/g,c.tabReplace):""})):e}function S(e,t,n){var r=t?i[t]:n,o=[e.trim()];return e.match(/\bhljs\b/)||o.push("hljs"),-1===e.indexOf(r)&&o.push(r),o.join(" ").trim()}function O(e){var t,n,r,o,i,a=m(e);h(a)||(c.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):t=e,i=t.textContent,r=a?x(a,i,!0):E(i),(n=g(t)).length&&((o=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=r.value,r.value=y(n,g(o),i)),r.value=k(r.value),e.innerHTML=r.value,e.className=S(e.className,a,r.language),e.result={language:r.language,re:r.relevance},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.relevance}))}function T(e){c=v(c,e)}function N(){if(!N.called){N.called=!0;var e=document.querySelectorAll("pre code");n.forEach.call(e,O)}}function C(){addEventListener("DOMContentLoaded",N,!1),addEventListener("load",N,!1)}function P(t,n){var r=o[t]=n(e);_(r),r.aliases&&r.aliases.forEach((function(e){i[e]=t}))}function M(){return r(o)}function j(e){return e=(e||"").toLowerCase(),o[e]||o[i[e]]}function D(e){var t=j(e);return t&&!t.disableAutodetect}e.highlight=x,e.highlightAuto=E,e.fixMarkup=k,e.highlightBlock=O,e.configure=T,e.initHighlighting=N,e.initHighlightingOnLoad=C,e.registerLanguage=P,e.listLanguages=M,e.getLanguage=j,e.autoDetection=D,e.inherit=v,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,r){var o=e.inherit({className:"comment",begin:t,end:n,contains:[]},r||{});return o.contains.push(e.PHRASAL_WORDS_MODE),o.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),o},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0}})(t)}()},function(e,t,n){var r=n(14),o=n(15);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(8).Symbol;e.exports=r},function(e,t,n){var r=n(16)(Object,"create");e.exports=r},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){var r=n(148),o=n(149),i=n(150),a=n(151),s=n(152);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=i,l.prototype.has=a,l.prototype.set=s,e.exports=l},function(e,t,n){var r=n(67);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(154);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t,n){var r=n(26);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=t&&Number(t.weekStartsOn)||0,o=r(e),i=o.getDay(),a=(i<n?7:0)+i-n;return o.setDate(o.getDate()-a),o.setHours(0,0,0,0),o}},function(e,t,n){var r=n(12);e.exports=function(e,t){var n=r(e),o=r(t),i=n.getTime()-6e4*n.getTimezoneOffset(),a=o.getTime()-6e4*o.getTimezoneOffset();return Math.round((i-a)/864e5)}},function(e,t,n){var r=n(2),o=n(52);e.exports=function(e,t){var n=r(e),i=Number(t),a=n.getMonth()+i,s=new Date(0);s.setFullYear(n.getFullYear(),a,1),s.setHours(0,0,0,0);var l=o(s);return n.setMonth(a,Math.min(l,n.getDate())),n}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()-o.getTime()}},function(e,t,n){var r=n(14),o=n(29);e.exports=function(e){if(!o(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},function(e,t,n){e.exports={"trans-color":"dropdown--trans-color---3ixtY",component:"dropdown--component---21Q9c",toggle:"dropdown--toggle---3gdzr","toggle-icon":"dropdown--toggle-icon---1j9Ga","icon-only":"dropdown--icon-only---3vq2I",list:"dropdown--list---8GPrA","list-main":"dropdown--list-main---3QZnQ","align-left":"dropdown--align-left---3-3Hu","align-right":"dropdown--align-right---2ZQx0","list-item-link":"dropdown--list-item-link---JRrOY","list-item-text":"dropdown--list-item-text---2COKZ",close:"dropdown--close---2LnDu",out:"dropdown--out---2HVe1",open:"dropdown--open---3bwiy",in:"dropdown--in---FpwEb"}},function(e,t,n){var r=n(14),o=n(6),i=n(15);e.exports=function(e){return"string"==typeof e||!o(e)&&i(e)&&"[object String]"==r(e)}},function(e,t,n){var r=n(6),o=n(26),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!o(e))||(a.test(e)||!i.test(e)||null!=t&&e in Object(t))}},function(e,t,n){var r=n(137),o=n(153),i=n(155),a=n(156),s=n(157);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=i,l.prototype.has=a,l.prototype.set=s,e.exports=l},function(e,t,n){var r=n(16)(n(8),"Map");e.exports=r},function(e,t,n){var r=n(161),o=n(15);e.exports=function e(t,n,i,a,s){return t===n||(null==t||null==n||!o(t)&&!o(n)?t!=t&&n!=n:r(t,n,i,a,e,s))}},function(e,t,n){var r=n(183),o=n(72),i=n(50);e.exports=function(e){return i(e)?r(e):o(e)}},function(e,t,n){var r=n(185),o=n(15),i=Object.prototype,a=i.hasOwnProperty,s=i.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return o(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},function(e,t,n){(function(e){var r=n(8),o=n(186),i=t&&!t.nodeType&&t,a=i&&"object"==typeof e&&e&&!e.nodeType&&e,s=a&&a.exports===i?r.Buffer:void 0,l=(s?s.isBuffer:void 0)||o;e.exports=l}).call(this,n(70)(e))},function(e,t,n){var r=n(187),o=n(188),i=n(189),a=i&&i.isTypedArray,s=a?o(a):r;e.exports=s},function(e,t){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){var r=n(38),o=n(49);e.exports=function(e){return null!=e&&o(e.length)&&!r(e)}},function(e,t){e.exports=function(e){return e instanceof Date}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getFullYear(),o=t.getMonth(),i=new Date(0);return i.setFullYear(n,o+1,0),i.setHours(0,0,0,0),i.getDate()}},function(e,t,n){var r=n(20);e.exports=function(e,t){var n=Number(t);return r(e,7*n)}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e).getTime(),o=r(t).getTime();return n>o?-1:n<o?1:0}},function(e,t,n){var r=n(2),o=n(83),i=n(23);e.exports=function(e,t){var n=r(e),a=r(t),s=i(n,a),l=Math.abs(o(n,a));return n.setMonth(n.getMonth()-s*l),s*(l-(i(n,a)===-s))}},function(e,t,n){var r=n(37);e.exports=function(e,t){var n=r(e,t)/1e3;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(211),o=n(212);e.exports={distanceInWords:r(),format:o()}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setHours(23,59,59,999),t}},function(e,t,n){var r=n(2),o=n(11),i=n(22);e.exports=function(e){var t=r(e),n=o(t).getTime()-i(t).getTime();return Math.round(n/6048e5)+1}},function(e,t,n){var r=n(34);e.exports=function(e,t,n){var o=r(e,n),i=r(t,n);return o.getTime()===i.getTime()}},function(e,t,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,l=a(e),u=1;u<arguments.length;u++){for(var c in n=Object(arguments[u]))o.call(n,c)&&(l[c]=n[c]);if(r){s=r(n);for(var f=0;f<s.length;f++)i.call(n,s[f])&&(l[s[f]]=n[s[f]])}}return l}},function(e,t,n){var r=n(63),o=n(33);e.exports=function(e,t){for(var n=0,i=(t=r(t,e)).length;null!=e&&n<i;)e=e[o(t[n++])];return n&&n==i?e:void 0}},function(e,t,n){var r=n(6),o=n(41),i=n(134),a=n(158);e.exports=function(e,t){return r(e)?e:o(e,t)?[e]:i(a(e))}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(65))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,n){var r=n(30),o=n(162),i=n(163),a=n(164),s=n(165),l=n(166);function u(e){var t=this.__data__=new r(e);this.size=t.size}u.prototype.clear=o,u.prototype.delete=i,u.prototype.get=a,u.prototype.has=s,u.prototype.set=l,e.exports=u},function(e,t,n){var r=n(167),o=n(170),i=n(171);e.exports=function(e,t,n,a,s,l){var u=1&n,c=e.length,f=t.length;if(c!=f&&!(u&&f>c))return!1;var d=l.get(e);if(d&&l.get(t))return d==t;var p=-1,h=!0,m=2&n?new r:void 0;for(l.set(e,t),l.set(t,e);++p<c;){var v=e[p],g=t[p];if(a)var y=u?a(g,v,p,t,e,l):a(v,g,p,e,t,l);if(void 0!==y){if(y)continue;h=!1;break}if(m){if(!o(t,(function(e,t){if(!i(m,t)&&(v===e||s(v,e,n,a,l)))return m.push(t)}))){h=!1;break}}else if(v!==g&&!s(v,g,n,a,l)){h=!1;break}}return l.delete(e),l.delete(t),h}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){var n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&n.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t,n){var r=n(73),o=n(190),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=[];for(var n in Object(e))i.call(e,n)&&"constructor"!=n&&t.push(n);return t}},function(e,t){var n=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||n)}},function(e,t,n){var r=n(192),o=n(43),i=n(193),a=n(194),s=n(195),l=n(14),u=n(66),c="[object Map]",f="[object Promise]",d="[object Set]",p="[object WeakMap]",h="[object DataView]",m=u(r),v=u(o),g=u(i),y=u(a),b=u(s),_=l;(r&&_(new r(new ArrayBuffer(1)))!=h||o&&_(new o)!=c||i&&_(i.resolve())!=f||a&&_(new a)!=d||s&&_(new s)!=p)&&(_=function(e){var t=l(e),n="[object Object]"==t?e.constructor:void 0,r=n?u(n):"";if(r)switch(r){case m:return h;case v:return c;case g:return f;case y:return d;case b:return p}return t}),e.exports=_},function(e,t,n){var r=n(21);e.exports=function(e,t){var n=Number(t);return r(e,36e5*n)}},function(e,t,n){var r=n(10),o=n(77);e.exports=function(e,t){var n=Number(t);return o(e,r(e)+n)}},function(e,t,n){var r=n(2),o=n(22),i=n(35);e.exports=function(e,t){var n=r(e),a=Number(t),s=i(n,o(n)),l=new Date(0);return l.setFullYear(a,0,4),l.setHours(0,0,0,0),(n=o(l)).setDate(n.getDate()+s),n}},function(e,t,n){var r=n(21);e.exports=function(e,t){var n=Number(t);return r(e,6e4*n)}},function(e,t,n){var r=n(36);e.exports=function(e,t){var n=Number(t);return r(e,3*n)}},function(e,t,n){var r=n(21);e.exports=function(e,t){var n=Number(t);return r(e,1e3*n)}},function(e,t,n){var r=n(36);e.exports=function(e,t){var n=Number(t);return r(e,12*n)}},function(e,t,n){var r=n(10);e.exports=function(e,t){return r(e)-r(t)}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=r(t);return 12*(n.getFullYear()-o.getFullYear())+(n.getMonth()-o.getMonth())}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return Math.floor(t.getMonth()/3)+1}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=r(t);return n.getFullYear()-o.getFullYear()}},function(e,t,n){var r=n(2),o=n(35),i=n(23);e.exports=function(e,t){var n=r(e),a=r(t),s=i(n,a),l=Math.abs(o(n,a));return n.setDate(n.getDate()-s*l),s*(l-(i(n,a)===-s))}},function(e,t,n){var r=n(76);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(54),o=n(2),i=n(56),a=n(55),s=n(57),l=43200;e.exports=function(e,t,n){var u=n||{},c=r(e,t),f=u.locale,d=s.distanceInWords.localize;f&&f.distanceInWords&&f.distanceInWords.localize&&(d=f.distanceInWords.localize);var p,h,m={addSuffix:Boolean(u.addSuffix),comparison:c};c>0?(p=o(e),h=o(t)):(p=o(t),h=o(e));var v,g=i(h,p),y=h.getTimezoneOffset()-p.getTimezoneOffset(),b=Math.round(g/60)-y;if(b<2)return u.includeSeconds?g<5?d("lessThanXSeconds",5,m):g<10?d("lessThanXSeconds",10,m):g<20?d("lessThanXSeconds",20,m):g<40?d("halfAMinute",null,m):d(g<60?"lessThanXMinutes":"xMinutes",1,m):0===b?d("lessThanXMinutes",1,m):d("xMinutes",b,m);if(b<45)return d("xMinutes",b,m);if(b<90)return d("aboutXHours",1,m);if(b<1440)return d("aboutXHours",Math.round(b/60),m);if(b<2520)return d("xDays",1,m);if(b<l)return d("xDays",Math.round(b/1440),m);if(b<86400)return d("aboutXMonths",v=Math.round(b/l),m);if((v=a(h,p))<12)return d("xMonths",Math.round(b/l),m);var _=v%12,w=Math.floor(v/12);return _<3?d("aboutXYears",w,m):_<9?d("overXYears",w,m):d("almostXYears",w+1,m)}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=t&&Number(t.weekStartsOn)||0,o=r(e),i=o.getDay(),a=6+(i<n?-7:0)-(i-n);return o.setDate(o.getDate()+a),o.setHours(23,59,59,999),o}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}},function(e,t,n){var r=n(2),o=n(92),i=n(35);e.exports=function(e){var t=r(e);return i(t,o(t))+1}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=new Date(0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}},function(e,t,n){var r=n(51);e.exports=function(e){if(r(e))return!isNaN(e);throw new TypeError(toString.call(e)+" is not an instance of Date")}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e).getFullYear();return t%400==0||t%4==0&&t%100!=0}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e).getDay();return 0===t&&(t=7),t}},function(e,t,n){var r=n(97);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setMinutes(0,0,0),t}},function(e,t,n){var r=n(60);e.exports=function(e,t){return r(e,t,{weekStartsOn:1})}},function(e,t,n){var r=n(22);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(101);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setSeconds(0,0),t}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=r(t);return n.getFullYear()===o.getFullYear()&&n.getMonth()===o.getMonth()}},function(e,t,n){var r=n(104);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getMonth(),o=n-n%3;return t.setMonth(o,1),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(106);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setMilliseconds(0),t}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=r(t);return n.getFullYear()===o.getFullYear()}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=t&&Number(t.weekStartsOn)||0,o=r(e),i=o.getDay(),a=6+(i<n?-7:0)-(i-n);return o.setHours(0,0,0,0),o.setDate(o.getDate()+a),o}},function(e,t,n){var r=n(2),o=n(52);e.exports=function(e,t){var n=r(e),i=Number(t),a=n.getFullYear(),s=n.getDate(),l=new Date(0);l.setFullYear(a,i,15),l.setHours(0,0,0,0);var u=o(l);return n.setMonth(i,Math.min(s,u)),n}},function(e,t,n){var r=n(301),o=n(304),i=n(308),a=n(6),s=n(309);e.exports=function(e){return"function"==typeof e?e:null==e?i:"object"==typeof e?a(e)?o(e[0],e[1]):r(e):s(e)}},function(e,t,n){var r=n(29);e.exports=function(e){return e==e&&!r(e)}},function(e,t){e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},function(e,t,n){e.exports={"trans-color":"dropdown-selector--trans-color---3nePW",dropdown:"dropdown-selector--dropdown---AT5ee",menu:"dropdown-selector--menu---nW4gv",toggle:"dropdown-selector--toggle---WEnEe","toggle-icon":"dropdown-selector--toggle-icon---10VKo","item-link":"dropdown-selector--item-link---2W1T7","item-selected":"dropdown-selector--item-selected---1q-NK"}},function(e,t,n){"use strict";const r=n(196);e.exports=(e,t={})=>{if(!Number.isFinite(e))throw new TypeError("Expected a finite number");t.colonNotation&&(t.compact=!1,t.formatSubMilliseconds=!1,t.separateMilliseconds=!1,t.verbose=!1),t.compact&&(t.secondsDecimalDigits=0,t.millisecondsDecimalDigits=0);const n=[],o=(e,r,o,i)=>{if(!(0!==n.length&&t.colonNotation||0!==e||t.colonNotation&&"m"===o))return;let a,s;if(i=(i||e||"0").toString(),t.colonNotation){a=n.length>0?":":"",s="";const e=i.includes(".")?i.split(".")[0].length:i.length,t=n.length>0?2:1;i="0".repeat(Math.max(0,t-e))+i}else a="",s=t.verbose?" "+(l=r,1===e?l:`${l}s`):o;var l;n.push(a+i+s)},i=r(e);if(o(Math.trunc(i.days/365),"year","y"),o(i.days%365,"day","d"),o(i.hours,"hour","h"),o(i.minutes,"minute","m"),t.separateMilliseconds||t.formatSubMilliseconds||e<1e3)if(o(i.seconds,"second","s"),t.formatSubMilliseconds)o(i.milliseconds,"millisecond","ms"),o(i.microseconds,"microsecond","µs"),o(i.nanoseconds,"nanosecond","ns");else{const e=i.milliseconds+i.microseconds/1e3+i.nanoseconds/1e6,n="number"==typeof t.millisecondsDecimalDigits?t.millisecondsDecimalDigits:0,r=e>=1?Math.round(e):Math.ceil(e),a=n?e.toFixed(n):r;o(Number.parseFloat(a,10),"millisecond","ms",a)}else{const n=((e,t)=>{const n=Math.floor(e*10**t+1e-7);return(Math.round(n)/10**t).toFixed(t)})(e/1e3%60,"number"==typeof t.secondsDecimalDigits?t.secondsDecimalDigits:1),r=t.keepDecimalsOnWholeSeconds?n:n.replace(/\.0+$/,"");o(Number.parseFloat(r,10),"second","s",r)}if(0===n.length)return"0"+(t.verbose?" milliseconds":"ms");if(t.compact)return n[0];if("number"==typeof t.unitCount){const e=t.colonNotation?"":" ";return n.slice(0,Math.max(t.unitCount,1)).join(e)}return t.colonNotation?n.join(""):n.join(" ")}},function(e,t,n){e.exports={"trans-color":"footer--trans-color---205XF",component:"footer--component---1WcTR"}},function(e){e.exports={"3d_rotation":"e84d",ac_unit:"eb3b",access_alarm:"e190",access_alarms:"e191",access_time:"e192",accessibility:"e84e",accessible:"e914",account_balance:"e84f",account_balance_wallet:"e850",account_box:"e851",account_circle:"e853",adb:"e60e",add:"e145",add_a_photo:"e439",add_alarm:"e193",add_alert:"e003",add_box:"e146",add_circle:"e147",add_circle_outline:"e148",add_location:"e567",add_shopping_cart:"e854",add_to_photos:"e39d",add_to_queue:"e05c",adjust:"e39e",airline_seat_flat:"e630",airline_seat_flat_angled:"e631",airline_seat_individual_suite:"e632",airline_seat_legroom_extra:"e633",airline_seat_legroom_normal:"e634",airline_seat_legroom_reduced:"e635",airline_seat_recline_extra:"e636",airline_seat_recline_normal:"e637",airplanemode_active:"e195",airplanemode_inactive:"e194",airplay:"e055",airport_shuttle:"eb3c",alarm:"e855",alarm_add:"e856",alarm_off:"e857",alarm_on:"e858",album:"e019",all_inclusive:"eb3d",all_out:"e90b",android:"e859",announcement:"e85a",apps:"e5c3",archive:"e149",arrow_back:"e5c4",arrow_downward:"e5db",arrow_drop_down:"e5c5",arrow_drop_down_circle:"e5c6",arrow_drop_up:"e5c7",arrow_forward:"e5c8",arrow_upward:"e5d8",art_track:"e060",aspect_ratio:"e85b",assessment:"e85c",assignment:"e85d",assignment_ind:"e85e",assignment_late:"e85f",assignment_return:"e860",assignment_returned:"e861",assignment_turned_in:"e862",assistant:"e39f",assistant_photo:"e3a0",attach_file:"e226",attach_money:"e227",attachment:"e2bc",audiotrack:"e3a1",autorenew:"e863",av_timer:"e01b",backspace:"e14a",backup:"e864",battery_alert:"e19c",battery_charging_full:"e1a3",battery_full:"e1a4",battery_std:"e1a5",battery_unknown:"e1a6",beach_access:"eb3e",beenhere:"e52d",block:"e14b",bluetooth:"e1a7",bluetooth_audio:"e60f",bluetooth_connected:"e1a8",bluetooth_disabled:"e1a9",bluetooth_searching:"e1aa",blur_circular:"e3a2",blur_linear:"e3a3",blur_off:"e3a4",blur_on:"e3a5",book:"e865",bookmark:"e866",bookmark_border:"e867",border_all:"e228",border_bottom:"e229",border_clear:"e22a",border_color:"e22b",border_horizontal:"e22c",border_inner:"e22d",border_left:"e22e",border_outer:"e22f",border_right:"e230",border_style:"e231",border_top:"e232",border_vertical:"e233",branding_watermark:"e06b",brightness_1:"e3a6",brightness_2:"e3a7",brightness_3:"e3a8",brightness_4:"e3a9",brightness_5:"e3aa",brightness_6:"e3ab",brightness_7:"e3ac",brightness_auto:"e1ab",brightness_high:"e1ac",brightness_low:"e1ad",brightness_medium:"e1ae",broken_image:"e3ad",brush:"e3ae",bubble_chart:"e6dd",bug_report:"e868",build:"e869",burst_mode:"e43c",business:"e0af",business_center:"eb3f",cached:"e86a",cake:"e7e9",call:"e0b0",call_end:"e0b1",call_made:"e0b2",call_merge:"e0b3",call_missed:"e0b4",call_missed_outgoing:"e0e4",call_received:"e0b5",call_split:"e0b6",call_to_action:"e06c",camera:"e3af",camera_alt:"e3b0",camera_enhance:"e8fc",camera_front:"e3b1",camera_rear:"e3b2",camera_roll:"e3b3",cancel:"e5c9",card_giftcard:"e8f6",card_membership:"e8f7",card_travel:"e8f8",casino:"eb40",cast:"e307",cast_connected:"e308",center_focus_strong:"e3b4",center_focus_weak:"e3b5",change_history:"e86b",chat:"e0b7",chat_bubble:"e0ca",chat_bubble_outline:"e0cb",check:"e5ca",check_box:"e834",check_box_outline_blank:"e835",check_circle:"e86c",chevron_left:"e5cb",chevron_right:"e5cc",child_care:"eb41",child_friendly:"eb42",chrome_reader_mode:"e86d",class:"e86e",clear:"e14c",clear_all:"e0b8",close:"e5cd",closed_caption:"e01c",cloud:"e2bd",cloud_circle:"e2be",cloud_done:"e2bf",cloud_download:"e2c0",cloud_off:"e2c1",cloud_queue:"e2c2",cloud_upload:"e2c3",code:"e86f",collections:"e3b6",collections_bookmark:"e431",color_lens:"e3b7",colorize:"e3b8",comment:"e0b9",compare:"e3b9",compare_arrows:"e915",computer:"e30a",confirmation_number:"e638",contact_mail:"e0d0",contact_phone:"e0cf",contacts:"e0ba",content_copy:"e14d",content_cut:"e14e",content_paste:"e14f",control_point:"e3ba",control_point_duplicate:"e3bb",copyright:"e90c",create:"e150",create_new_folder:"e2cc",credit_card:"e870",crop:"e3be",crop_16_9:"e3bc",crop_3_2:"e3bd",crop_5_4:"e3bf",crop_7_5:"e3c0",crop_din:"e3c1",crop_free:"e3c2",crop_landscape:"e3c3",crop_original:"e3c4",crop_portrait:"e3c5",crop_rotate:"e437",crop_square:"e3c6",dashboard:"e871",data_usage:"e1af",date_range:"e916",dehaze:"e3c7",delete:"e872",delete_forever:"e92b",delete_sweep:"e16c",description:"e873",desktop_mac:"e30b",desktop_windows:"e30c",details:"e3c8",developer_board:"e30d",developer_mode:"e1b0",device_hub:"e335",devices:"e1b1",devices_other:"e337",dialer_sip:"e0bb",dialpad:"e0bc",directions:"e52e",directions_bike:"e52f",directions_boat:"e532",directions_bus:"e530",directions_car:"e531",directions_railway:"e534",directions_run:"e566",directions_subway:"e533",directions_transit:"e535",directions_walk:"e536",disc_full:"e610",dns:"e875",do_not_disturb:"e612",do_not_disturb_alt:"e611",do_not_disturb_off:"e643",do_not_disturb_on:"e644",dock:"e30e",domain:"e7ee",done:"e876",done_all:"e877",donut_large:"e917",donut_small:"e918",drafts:"e151",drag_handle:"e25d",drive_eta:"e613",dvr:"e1b2",edit:"e3c9",edit_location:"e568",eject:"e8fb",email:"e0be",enhanced_encryption:"e63f",equalizer:"e01d",error:"e000",error_outline:"e001",euro_symbol:"e926",ev_station:"e56d",event:"e878",event_available:"e614",event_busy:"e615",event_note:"e616",event_seat:"e903",exit_to_app:"e879",expand_less:"e5ce",expand_more:"e5cf",explicit:"e01e",explore:"e87a",exposure:"e3ca",exposure_neg_1:"e3cb",exposure_neg_2:"e3cc",exposure_plus_1:"e3cd",exposure_plus_2:"e3ce",exposure_zero:"e3cf",extension:"e87b",face:"e87c",fast_forward:"e01f",fast_rewind:"e020",favorite:"e87d",favorite_border:"e87e",featured_play_list:"e06d",featured_video:"e06e",feedback:"e87f",fiber_dvr:"e05d",fiber_manual_record:"e061",fiber_new:"e05e",fiber_pin:"e06a",fiber_smart_record:"e062",file_download:"e2c4",file_upload:"e2c6",filter:"e3d3",filter_1:"e3d0",filter_2:"e3d1",filter_3:"e3d2",filter_4:"e3d4",filter_5:"e3d5",filter_6:"e3d6",filter_7:"e3d7",filter_8:"e3d8",filter_9:"e3d9",filter_9_plus:"e3da",filter_b_and_w:"e3db",filter_center_focus:"e3dc",filter_drama:"e3dd",filter_frames:"e3de",filter_hdr:"e3df",filter_list:"e152",filter_none:"e3e0",filter_tilt_shift:"e3e2",filter_vintage:"e3e3",find_in_page:"e880",find_replace:"e881",fingerprint:"e90d",first_page:"e5dc",fitness_center:"eb43",flag:"e153",flare:"e3e4",flash_auto:"e3e5",flash_off:"e3e6",flash_on:"e3e7",flight:"e539",flight_land:"e904",flight_takeoff:"e905",flip:"e3e8",flip_to_back:"e882",flip_to_front:"e883",folder:"e2c7",folder_open:"e2c8",folder_shared:"e2c9",folder_special:"e617",font_download:"e167",format_align_center:"e234",format_align_justify:"e235",format_align_left:"e236",format_align_right:"e237",format_bold:"e238",format_clear:"e239",format_color_fill:"e23a",format_color_reset:"e23b",format_color_text:"e23c",format_indent_decrease:"e23d",format_indent_increase:"e23e",format_italic:"e23f",format_line_spacing:"e240",format_list_bulleted:"e241",format_list_numbered:"e242",format_paint:"e243",format_quote:"e244",format_shapes:"e25e",format_size:"e245",format_strikethrough:"e246",format_textdirection_l_to_r:"e247",format_textdirection_r_to_l:"e248",format_underlined:"e249",forum:"e0bf",forward:"e154",forward_10:"e056",forward_30:"e057",forward_5:"e058",free_breakfast:"eb44",fullscreen:"e5d0",fullscreen_exit:"e5d1",functions:"e24a",g_translate:"e927",gamepad:"e30f",games:"e021",gavel:"e90e",gesture:"e155",get_app:"e884",gif:"e908",golf_course:"eb45",gps_fixed:"e1b3",gps_not_fixed:"e1b4",gps_off:"e1b5",grade:"e885",gradient:"e3e9",grain:"e3ea",graphic_eq:"e1b8",grid_off:"e3eb",grid_on:"e3ec",group:"e7ef",group_add:"e7f0",group_work:"e886",hd:"e052",hdr_off:"e3ed",hdr_on:"e3ee",hdr_strong:"e3f1",hdr_weak:"e3f2",headset:"e310",headset_mic:"e311",healing:"e3f3",hearing:"e023",help:"e887",help_outline:"e8fd",high_quality:"e024",highlight:"e25f",highlight_off:"e888",history:"e889",home:"e88a",hot_tub:"eb46",hotel:"e53a",hourglass_empty:"e88b",hourglass_full:"e88c",http:"e902",https:"e88d",image:"e3f4",image_aspect_ratio:"e3f5",import_contacts:"e0e0",import_export:"e0c3",important_devices:"e912",inbox:"e156",indeterminate_check_box:"e909",info:"e88e",info_outline:"e88f",input:"e890",insert_chart:"e24b",insert_comment:"e24c",insert_drive_file:"e24d",insert_emoticon:"e24e",insert_invitation:"e24f",insert_link:"e250",insert_photo:"e251",invert_colors:"e891",invert_colors_off:"e0c4",iso:"e3f6",keyboard:"e312",keyboard_arrow_down:"e313",keyboard_arrow_left:"e314",keyboard_arrow_right:"e315",keyboard_arrow_up:"e316",keyboard_backspace:"e317",keyboard_capslock:"e318",keyboard_hide:"e31a",keyboard_return:"e31b",keyboard_tab:"e31c",keyboard_voice:"e31d",kitchen:"eb47",label:"e892",label_outline:"e893",landscape:"e3f7",language:"e894",laptop:"e31e",laptop_chromebook:"e31f",laptop_mac:"e320",laptop_windows:"e321",last_page:"e5dd",launch:"e895",layers:"e53b",layers_clear:"e53c",leak_add:"e3f8",leak_remove:"e3f9",lens:"e3fa",library_add:"e02e",library_books:"e02f",library_music:"e030",lightbulb_outline:"e90f",line_style:"e919",line_weight:"e91a",linear_scale:"e260",link:"e157",linked_camera:"e438",list:"e896",live_help:"e0c6",live_tv:"e639",local_activity:"e53f",local_airport:"e53d",local_atm:"e53e",local_bar:"e540",local_cafe:"e541",local_car_wash:"e542",local_convenience_store:"e543",local_dining:"e556",local_drink:"e544",local_florist:"e545",local_gas_station:"e546",local_grocery_store:"e547",local_hospital:"e548",local_hotel:"e549",local_laundry_service:"e54a",local_library:"e54b",local_mall:"e54c",local_movies:"e54d",local_offer:"e54e",local_parking:"e54f",local_pharmacy:"e550",local_phone:"e551",local_pizza:"e552",local_play:"e553",local_post_office:"e554",local_printshop:"e555",local_see:"e557",local_shipping:"e558",local_taxi:"e559",location_city:"e7f1",location_disabled:"e1b6",location_off:"e0c7",location_on:"e0c8",location_searching:"e1b7",lock:"e897",lock_open:"e898",lock_outline:"e899",looks:"e3fc",looks_3:"e3fb",looks_4:"e3fd",looks_5:"e3fe",looks_6:"e3ff",looks_one:"e400",looks_two:"e401",loop:"e028",loupe:"e402",low_priority:"e16d",loyalty:"e89a",mail:"e158",mail_outline:"e0e1",map:"e55b",markunread:"e159",markunread_mailbox:"e89b",memory:"e322",menu:"e5d2",merge_type:"e252",message:"e0c9",mic:"e029",mic_none:"e02a",mic_off:"e02b",mms:"e618",mode_comment:"e253",mode_edit:"e254",monetization_on:"e263",money_off:"e25c",monochrome_photos:"e403",mood:"e7f2",mood_bad:"e7f3",more:"e619",more_horiz:"e5d3",more_vert:"e5d4",motorcycle:"e91b",mouse:"e323",move_to_inbox:"e168",movie:"e02c",movie_creation:"e404",movie_filter:"e43a",multiline_chart:"e6df",music_note:"e405",music_video:"e063",my_location:"e55c",nature:"e406",nature_people:"e407",navigate_before:"e408",navigate_next:"e409",navigation:"e55d",near_me:"e569",network_cell:"e1b9",network_check:"e640",network_locked:"e61a",network_wifi:"e1ba",new_releases:"e031",next_week:"e16a",nfc:"e1bb",no_encryption:"e641",no_sim:"e0cc",not_interested:"e033",note:"e06f",note_add:"e89c",notifications:"e7f4",notifications_active:"e7f7",notifications_none:"e7f5",notifications_off:"e7f6",notifications_paused:"e7f8",offline_pin:"e90a",ondemand_video:"e63a",opacity:"e91c",open_in_browser:"e89d",open_in_new:"e89e",open_with:"e89f",pages:"e7f9",pageview:"e8a0",palette:"e40a",pan_tool:"e925",panorama:"e40b",panorama_fish_eye:"e40c",panorama_horizontal:"e40d",panorama_vertical:"e40e",panorama_wide_angle:"e40f",party_mode:"e7fa",pause:"e034",pause_circle_filled:"e035",pause_circle_outline:"e036",payment:"e8a1",people:"e7fb",people_outline:"e7fc",perm_camera_mic:"e8a2",perm_contact_calendar:"e8a3",perm_data_setting:"e8a4",perm_device_information:"e8a5",perm_identity:"e8a6",perm_media:"e8a7",perm_phone_msg:"e8a8",perm_scan_wifi:"e8a9",person:"e7fd",person_add:"e7fe",person_outline:"e7ff",person_pin:"e55a",person_pin_circle:"e56a",personal_video:"e63b",pets:"e91d",phone:"e0cd",phone_android:"e324",phone_bluetooth_speaker:"e61b",phone_forwarded:"e61c",phone_in_talk:"e61d",phone_iphone:"e325",phone_locked:"e61e",phone_missed:"e61f",phone_paused:"e620",phonelink:"e326",phonelink_erase:"e0db",phonelink_lock:"e0dc",phonelink_off:"e327",phonelink_ring:"e0dd",phonelink_setup:"e0de",photo:"e410",photo_album:"e411",photo_camera:"e412",photo_filter:"e43b",photo_library:"e413",photo_size_select_actual:"e432",photo_size_select_large:"e433",photo_size_select_small:"e434",picture_as_pdf:"e415",picture_in_picture:"e8aa",picture_in_picture_alt:"e911",pie_chart:"e6c4",pie_chart_outlined:"e6c5",pin_drop:"e55e",place:"e55f",play_arrow:"e037",play_circle_filled:"e038",play_circle_outline:"e039",play_for_work:"e906",playlist_add:"e03b",playlist_add_check:"e065",playlist_play:"e05f",plus_one:"e800",poll:"e801",polymer:"e8ab",pool:"eb48",portable_wifi_off:"e0ce",portrait:"e416",power:"e63c",power_input:"e336",power_settings_new:"e8ac",pregnant_woman:"e91e",present_to_all:"e0df",print:"e8ad",priority_high:"e645",public:"e80b",publish:"e255",query_builder:"e8ae",question_answer:"e8af",queue:"e03c",queue_music:"e03d",queue_play_next:"e066",radio:"e03e",radio_button_checked:"e837",radio_button_unchecked:"e836",rate_review:"e560",receipt:"e8b0",recent_actors:"e03f",record_voice_over:"e91f",redeem:"e8b1",redo:"e15a",refresh:"e5d5",remove:"e15b",remove_circle:"e15c",remove_circle_outline:"e15d",remove_from_queue:"e067",remove_red_eye:"e417",remove_shopping_cart:"e928",reorder:"e8fe",repeat:"e040",repeat_one:"e041",replay:"e042",replay_10:"e059",replay_30:"e05a",replay_5:"e05b",reply:"e15e",reply_all:"e15f",report:"e160",report_problem:"e8b2",restaurant:"e56c",restaurant_menu:"e561",restore:"e8b3",restore_page:"e929",ring_volume:"e0d1",room:"e8b4",room_service:"eb49",rotate_90_degrees_ccw:"e418",rotate_left:"e419",rotate_right:"e41a",rounded_corner:"e920",router:"e328",rowing:"e921",rss_feed:"e0e5",rv_hookup:"e642",satellite:"e562",save:"e161",scanner:"e329",schedule:"e8b5",school:"e80c",screen_lock_landscape:"e1be",screen_lock_portrait:"e1bf",screen_lock_rotation:"e1c0",screen_rotation:"e1c1",screen_share:"e0e2",sd_card:"e623",sd_storage:"e1c2",search:"e8b6",security:"e32a",select_all:"e162",send:"e163",sentiment_dissatisfied:"e811",sentiment_neutral:"e812",sentiment_satisfied:"e813",sentiment_very_dissatisfied:"e814",sentiment_very_satisfied:"e815",settings:"e8b8",settings_applications:"e8b9",settings_backup_restore:"e8ba",settings_bluetooth:"e8bb",settings_brightness:"e8bd",settings_cell:"e8bc",settings_ethernet:"e8be",settings_input_antenna:"e8bf",settings_input_component:"e8c0",settings_input_composite:"e8c1",settings_input_hdmi:"e8c2",settings_input_svideo:"e8c3",settings_overscan:"e8c4",settings_phone:"e8c5",settings_power:"e8c6",settings_remote:"e8c7",settings_system_daydream:"e1c3",settings_voice:"e8c8",share:"e80d",shop:"e8c9",shop_two:"e8ca",shopping_basket:"e8cb",shopping_cart:"e8cc",short_text:"e261",show_chart:"e6e1",shuffle:"e043",signal_cellular_4_bar:"e1c8",signal_cellular_connected_no_internet_4_bar:"e1cd",signal_cellular_no_sim:"e1ce",signal_cellular_null:"e1cf",signal_cellular_off:"e1d0",signal_wifi_4_bar:"e1d8",signal_wifi_4_bar_lock:"e1d9",signal_wifi_off:"e1da",sim_card:"e32b",sim_card_alert:"e624",skip_next:"e044",skip_previous:"e045",slideshow:"e41b",slow_motion_video:"e068",smartphone:"e32c",smoke_free:"eb4a",smoking_rooms:"eb4b",sms:"e625",sms_failed:"e626",snooze:"e046",sort:"e164",sort_by_alpha:"e053",spa:"eb4c",space_bar:"e256",speaker:"e32d",speaker_group:"e32e",speaker_notes:"e8cd",speaker_notes_off:"e92a",speaker_phone:"e0d2",spellcheck:"e8ce",star:"e838",star_border:"e83a",star_half:"e839",stars:"e8d0",stay_current_landscape:"e0d3",stay_current_portrait:"e0d4",stay_primary_landscape:"e0d5",stay_primary_portrait:"e0d6",stop:"e047",stop_screen_share:"e0e3",storage:"e1db",store:"e8d1",store_mall_directory:"e563",straighten:"e41c",streetview:"e56e",strikethrough_s:"e257",style:"e41d",subdirectory_arrow_left:"e5d9",subdirectory_arrow_right:"e5da",subject:"e8d2",subscriptions:"e064",subtitles:"e048",subway:"e56f",supervisor_account:"e8d3",surround_sound:"e049",swap_calls:"e0d7",swap_horiz:"e8d4",swap_vert:"e8d5",swap_vertical_circle:"e8d6",switch_camera:"e41e",switch_video:"e41f",sync:"e627",sync_disabled:"e628",sync_problem:"e629",system_update:"e62a",system_update_alt:"e8d7",tab:"e8d8",tab_unselected:"e8d9",tablet:"e32f",tablet_android:"e330",tablet_mac:"e331",tag_faces:"e420",tap_and_play:"e62b",terrain:"e564",text_fields:"e262",text_format:"e165",textsms:"e0d8",texture:"e421",theaters:"e8da",thumb_down:"e8db",thumb_up:"e8dc",thumbs_up_down:"e8dd",time_to_leave:"e62c",timelapse:"e422",timeline:"e922",timer:"e425",timer_10:"e423",timer_3:"e424",timer_off:"e426",title:"e264",toc:"e8de",today:"e8df",toll:"e8e0",tonality:"e427",touch_app:"e913",toys:"e332",track_changes:"e8e1",traffic:"e565",train:"e570",tram:"e571",transfer_within_a_station:"e572",transform:"e428",translate:"e8e2",trending_down:"e8e3",trending_flat:"e8e4",trending_up:"e8e5",tune:"e429",turned_in:"e8e6",turned_in_not:"e8e7",tv:"e333",unarchive:"e169",undo:"e166",unfold_less:"e5d6",unfold_more:"e5d7",update:"e923",usb:"e1e0",verified_user:"e8e8",vertical_align_bottom:"e258",vertical_align_center:"e259",vertical_align_top:"e25a",vibration:"e62d",video_call:"e070",video_label:"e071",video_library:"e04a",videocam:"e04b",videocam_off:"e04c",videogame_asset:"e338",view_agenda:"e8e9",view_array:"e8ea",view_carousel:"e8eb",view_column:"e8ec",view_comfy:"e42a",view_compact:"e42b",view_day:"e8ed",view_headline:"e8ee",view_list:"e8ef",view_module:"e8f0",view_quilt:"e8f1",view_stream:"e8f2",view_week:"e8f3",vignette:"e435",visibility:"e8f4",visibility_off:"e8f5",voice_chat:"e62e",voicemail:"e0d9",volume_down:"e04d",volume_mute:"e04e",volume_off:"e04f",volume_up:"e050",vpn_key:"e0da",vpn_lock:"e62f",wallpaper:"e1bc",warning:"e002",watch:"e334",watch_later:"e924",wb_auto:"e42c",wb_cloudy:"e42d",wb_incandescent:"e42e",wb_iridescent:"e436",wb_sunny:"e430",wc:"e63d",web:"e051",web_asset:"e069",weekend:"e16b",whatshot:"e80e",widgets:"e1bd",wifi:"e63e",wifi_lock:"e1e1",wifi_tethering:"e1e2",work:"e8f9",wrap_text:"e25b",youtube_searched_for:"e8fa",zoom_in:"e8ff",zoom_out:"e900",zoom_out_map:"e56b"}},function(e,t,n){e.exports={"trans-color":"loader--trans-color---97r08",component:"loader--component---2grcA",wrap:"loader--wrap---3Fhrc",text:"loader--text---3Yu3g",spinner:"loader--spinner---2q6MO",spin:"loader--spin---K6Loh"}},function(e,t,n){e.exports={addDays:n(20),addHours:n(75),addISOYears:n(76),addMilliseconds:n(21),addMinutes:n(78),addMonths:n(36),addQuarters:n(79),addSeconds:n(80),addWeeks:n(53),addYears:n(81),areRangesOverlapping:n(199),closestIndexTo:n(200),closestTo:n(201),compareAsc:n(23),compareDesc:n(54),differenceInCalendarDays:n(35),differenceInCalendarISOWeeks:n(202),differenceInCalendarISOYears:n(82),differenceInCalendarMonths:n(83),differenceInCalendarQuarters:n(203),differenceInCalendarWeeks:n(204),differenceInCalendarYears:n(85),differenceInDays:n(86),differenceInHours:n(205),differenceInISOYears:n(206),differenceInMilliseconds:n(37),differenceInMinutes:n(207),differenceInMonths:n(55),differenceInQuarters:n(208),differenceInSeconds:n(56),differenceInWeeks:n(209),differenceInYears:n(210),distanceInWords:n(88),distanceInWordsStrict:n(214),distanceInWordsToNow:n(215),eachDay:n(216),endOfDay:n(58),endOfHour:n(217),endOfISOWeek:n(218),endOfISOYear:n(219),endOfMinute:n(220),endOfMonth:n(90),endOfQuarter:n(221),endOfSecond:n(222),endOfToday:n(223),endOfTomorrow:n(224),endOfWeek:n(89),endOfYear:n(225),endOfYesterday:n(226),format:n(227),getDate:n(228),getDay:n(229),getDayOfYear:n(91),getDaysInMonth:n(52),getDaysInYear:n(230),getHours:n(231),getISODay:n(95),getISOWeek:n(59),getISOWeeksInYear:n(232),getISOYear:n(10),getMilliseconds:n(233),getMinutes:n(234),getMonth:n(235),getOverlappingDaysInRanges:n(236),getQuarter:n(84),getSeconds:n(237),getTime:n(238),getYear:n(239),isAfter:n(240),isBefore:n(241),isDate:n(51),isEqual:n(242),isFirstDayOfMonth:n(243),isFriday:n(244),isFuture:n(245),isLastDayOfMonth:n(246),isLeapYear:n(94),isMonday:n(247),isPast:n(248),isSameDay:n(249),isSameHour:n(96),isSameISOWeek:n(98),isSameISOYear:n(99),isSameMinute:n(100),isSameMonth:n(102),isSameQuarter:n(103),isSameSecond:n(105),isSameWeek:n(60),isSameYear:n(107),isSaturday:n(250),isSunday:n(251),isThisHour:n(252),isThisISOWeek:n(253),isThisISOYear:n(254),isThisMinute:n(255),isThisMonth:n(256),isThisQuarter:n(257),isThisSecond:n(258),isThisWeek:n(259),isThisYear:n(260),isThursday:n(261),isToday:n(262),isTomorrow:n(263),isTuesday:n(264),isValid:n(93),isWednesday:n(265),isWeekend:n(266),isWithinRange:n(267),isYesterday:n(268),lastDayOfISOWeek:n(269),lastDayOfISOYear:n(270),lastDayOfMonth:n(271),lastDayOfQuarter:n(272),lastDayOfWeek:n(108),lastDayOfYear:n(273),max:n(274),min:n(275),parse:n(2),setDate:n(276),setDay:n(277),setDayOfYear:n(278),setHours:n(279),setISODay:n(280),setISOWeek:n(281),setISOYear:n(77),setMilliseconds:n(282),setMinutes:n(283),setMonth:n(109),setQuarter:n(284),setSeconds:n(285),setYear:n(286),startOfDay:n(12),startOfHour:n(97),startOfISOWeek:n(11),startOfISOYear:n(22),startOfMinute:n(101),startOfMonth:n(287),startOfQuarter:n(104),startOfSecond:n(106),startOfToday:n(288),startOfTomorrow:n(289),startOfWeek:n(34),startOfYear:n(92),startOfYesterday:n(290),subDays:n(291),subHours:n(292),subISOYears:n(87),subMilliseconds:n(293),subMinutes:n(294),subMonths:n(295),subQuarters:n(296),subSeconds:n(297),subWeeks:n(298),subYears:n(299)}},function(e,t,n){var r=n(300)(n(312));e.exports=r},function(e,t,n){e.exports={"trans-color":"navbar--trans-color---1tk7E",component:"navbar--component---2UCEi","report-info-cnt":"navbar--report-info-cnt---8y9Bb","menu-button":"navbar--menu-button---1ZRpz","report-title":"navbar--report-title---3bXCv","pct-bar":"navbar--pct-bar---3EwW-",pass:"navbar--pass---2oR-w",fail:"navbar--fail---3mN80",pend:"navbar--pend---2iqjh","pct-bar-segment":"navbar--pct-bar-segment---3T0_o"}},function(e,t,n){e.exports={"trans-color":"quick-summary--trans-color---HUJqE",cnt:"quick-summary--cnt---3s38x",list:"quick-summary--list---2_80W",item:"quick-summary--item---bfSQ0",icon:"quick-summary--icon---TW1oG",tests:"quick-summary--tests---2nNut",passes:"quick-summary--passes---3IjYH","single-filter":"quick-summary--single-filter---31Thy","single-filter--passed":"quick-summary--single-filter--passed---3QnUL",failures:"quick-summary--failures---14s29","single-filter--failed":"quick-summary--single-filter--failed---3_tAw",pending:"quick-summary--pending---261aV","single-filter--pending":"quick-summary--single-filter--pending---21lZM",skipped:"quick-summary--skipped---tyOc4","single-filter--skipped":"quick-summary--single-filter--skipped---1AdZA","circle-icon":"quick-summary--circle-icon---1HDS7"}},function(e,t,n){e.exports={"trans-color":"radio-button--trans-color---egsik",component:"radio-button--component---1ix3c",outer:"radio-button--outer---a_NqL",off:"radio-button--off---dBAOK",inner:"radio-button--inner---3bo9Q"}},function(e,t,n){var r,o;o=this,void 0===(r=function(){return o.Chartist=(e={version:"0.11.0"},function(e,t,n){"use strict";n.namespaces={svg:"http://www.w3.org/2000/svg",xmlns:"http://www.w3.org/2000/xmlns/",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",ct:"http://gionkunz.github.com/chartist-js/ct"},n.noop=function(e){return e},n.alphaNumerate=function(e){return String.fromCharCode(97+e%26)},n.extend=function(e){var t,r,o;for(e=e||{},t=1;t<arguments.length;t++)for(var i in r=arguments[t])o=r[i],e[i]="object"!=typeof o||null===o||o instanceof Array?o:n.extend(e[i],o);return e},n.replaceAll=function(e,t,n){return e.replace(new RegExp(t,"g"),n)},n.ensureUnit=function(e,t){return"number"==typeof e&&(e+=t),e},n.quantity=function(e){if("string"==typeof e){var t=/^(\d+)\s*(.*)$/g.exec(e);return{value:+t[1],unit:t[2]||void 0}}return{value:e}},n.querySelector=function(e){return e instanceof Node?e:t.querySelector(e)},n.times=function(e){return Array.apply(null,new Array(e))},n.sum=function(e,t){return e+(t||0)},n.mapMultiply=function(e){return function(t){return t*e}},n.mapAdd=function(e){return function(t){return t+e}},n.serialMap=function(e,t){var r=[],o=Math.max.apply(null,e.map((function(e){return e.length})));return n.times(o).forEach((function(n,o){var i=e.map((function(e){return e[o]}));r[o]=t.apply(null,i)})),r},n.roundWithPrecision=function(e,t){var r=Math.pow(10,t||n.precision);return Math.round(e*r)/r},n.precision=8,n.escapingMap={"&":"&","<":"<",">":">",'"':""","'":"'"},n.serialize=function(e){return null==e?e:("number"==typeof e?e=""+e:"object"==typeof e&&(e=JSON.stringify({data:e})),Object.keys(n.escapingMap).reduce((function(e,t){return n.replaceAll(e,t,n.escapingMap[t])}),e))},n.deserialize=function(e){if("string"!=typeof e)return e;e=Object.keys(n.escapingMap).reduce((function(e,t){return n.replaceAll(e,n.escapingMap[t],t)}),e);try{e=void 0!==(e=JSON.parse(e)).data?e.data:e}catch(e){}return e},n.createSvg=function(e,t,r,o){var i;return t=t||"100%",r=r||"100%",Array.prototype.slice.call(e.querySelectorAll("svg")).filter((function(e){return e.getAttributeNS(n.namespaces.xmlns,"ct")})).forEach((function(t){e.removeChild(t)})),(i=new n.Svg("svg").attr({width:t,height:r}).addClass(o))._node.style.width=t,i._node.style.height=r,e.appendChild(i._node),i},n.normalizeData=function(e,t,r){var o,i={raw:e,normalized:{}};return i.normalized.series=n.getDataArray({series:e.series||[]},t,r),o=i.normalized.series.every((function(e){return e instanceof Array}))?Math.max.apply(null,i.normalized.series.map((function(e){return e.length}))):i.normalized.series.length,i.normalized.labels=(e.labels||[]).slice(),Array.prototype.push.apply(i.normalized.labels,n.times(Math.max(0,o-i.normalized.labels.length)).map((function(){return""}))),t&&n.reverseData(i.normalized),i},n.safeHasProperty=function(e,t){return null!==e&&"object"==typeof e&&e.hasOwnProperty(t)},n.isDataHoleValue=function(e){return null==e||"number"==typeof e&&isNaN(e)},n.reverseData=function(e){e.labels.reverse(),e.series.reverse();for(var t=0;t<e.series.length;t++)"object"==typeof e.series[t]&&void 0!==e.series[t].data?e.series[t].data.reverse():e.series[t]instanceof Array&&e.series[t].reverse()},n.getDataArray=function(e,t,r){function o(e){if(n.safeHasProperty(e,"value"))return o(e.value);if(n.safeHasProperty(e,"data"))return o(e.data);if(e instanceof Array)return e.map(o);if(!n.isDataHoleValue(e)){if(r){var t={};return"string"==typeof r?t[r]=n.getNumberOrUndefined(e):t.y=n.getNumberOrUndefined(e),t.x=e.hasOwnProperty("x")?n.getNumberOrUndefined(e.x):t.x,t.y=e.hasOwnProperty("y")?n.getNumberOrUndefined(e.y):t.y,t}return n.getNumberOrUndefined(e)}}return e.series.map(o)},n.normalizePadding=function(e,t){return t=t||0,"number"==typeof e?{top:e,right:e,bottom:e,left:e}:{top:"number"==typeof e.top?e.top:t,right:"number"==typeof e.right?e.right:t,bottom:"number"==typeof e.bottom?e.bottom:t,left:"number"==typeof e.left?e.left:t}},n.getMetaData=function(e,t){var n=e.data?e.data[t]:e[t];return n?n.meta:void 0},n.orderOfMagnitude=function(e){return Math.floor(Math.log(Math.abs(e))/Math.LN10)},n.projectLength=function(e,t,n){return t/n.range*e},n.getAvailableHeight=function(e,t){return Math.max((n.quantity(t.height).value||e.height())-(t.chartPadding.top+t.chartPadding.bottom)-t.axisX.offset,0)},n.getHighLow=function(e,t,r){var o={high:void 0===(t=n.extend({},t,r?t["axis"+r.toUpperCase()]:{})).high?-Number.MAX_VALUE:+t.high,low:void 0===t.low?Number.MAX_VALUE:+t.low},i=void 0===t.high,a=void 0===t.low;function s(e){if(void 0!==e)if(e instanceof Array)for(var t=0;t<e.length;t++)s(e[t]);else{var n=r?+e[r]:+e;i&&n>o.high&&(o.high=n),a&&n<o.low&&(o.low=n)}}return(i||a)&&s(e),(t.referenceValue||0===t.referenceValue)&&(o.high=Math.max(t.referenceValue,o.high),o.low=Math.min(t.referenceValue,o.low)),o.high<=o.low&&(0===o.low?o.high=1:o.low<0?o.high=0:(o.high>0||(o.high=1),o.low=0)),o},n.isNumeric=function(e){return null!==e&&isFinite(e)},n.isFalseyButZero=function(e){return!e&&0!==e},n.getNumberOrUndefined=function(e){return n.isNumeric(e)?+e:void 0},n.isMultiValue=function(e){return"object"==typeof e&&("x"in e||"y"in e)},n.getMultiValue=function(e,t){return n.isMultiValue(e)?n.getNumberOrUndefined(e[t||"y"]):n.getNumberOrUndefined(e)},n.rho=function(e){if(1===e)return e;function t(e,n){return e%n==0?n:t(n,e%n)}function n(e){return e*e+1}var r,o=2,i=2;if(e%2==0)return 2;do{o=n(o)%e,i=n(n(i))%e,r=t(Math.abs(o-i),e)}while(1===r);return r},n.getBounds=function(e,t,r,o){var i,a,s,l=0,u={high:t.high,low:t.low};u.valueRange=u.high-u.low,u.oom=n.orderOfMagnitude(u.valueRange),u.step=Math.pow(10,u.oom),u.min=Math.floor(u.low/u.step)*u.step,u.max=Math.ceil(u.high/u.step)*u.step,u.range=u.max-u.min,u.numberOfSteps=Math.round(u.range/u.step);var c=n.projectLength(e,u.step,u)<r,f=o?n.rho(u.range):0;if(o&&n.projectLength(e,1,u)>=r)u.step=1;else if(o&&f<u.step&&n.projectLength(e,f,u)>=r)u.step=f;else for(;;){if(c&&n.projectLength(e,u.step,u)<=r)u.step*=2;else{if(c||!(n.projectLength(e,u.step/2,u)>=r))break;if(u.step/=2,o&&u.step%1!=0){u.step*=2;break}}if(l++>1e3)throw new Error("Exceeded maximum number of iterations while optimizing scale step!")}var d=2221e-19;function p(e,t){return e===(e+=t)&&(e*=1+(t>0?d:-d)),e}for(u.step=Math.max(u.step,d),a=u.min,s=u.max;a+u.step<=u.low;)a=p(a,u.step);for(;s-u.step>=u.high;)s=p(s,-u.step);u.min=a,u.max=s,u.range=u.max-u.min;var h=[];for(i=u.min;i<=u.max;i=p(i,u.step)){var m=n.roundWithPrecision(i);m!==h[h.length-1]&&h.push(m)}return u.values=h,u},n.polarToCartesian=function(e,t,n,r){var o=(r-90)*Math.PI/180;return{x:e+n*Math.cos(o),y:t+n*Math.sin(o)}},n.createChartRect=function(e,t,r){var o=!(!t.axisX&&!t.axisY),i=o?t.axisY.offset:0,a=o?t.axisX.offset:0,s=e.width()||n.quantity(t.width).value||0,l=e.height()||n.quantity(t.height).value||0,u=n.normalizePadding(t.chartPadding,r);s=Math.max(s,i+u.left+u.right),l=Math.max(l,a+u.top+u.bottom);var c={padding:u,width:function(){return this.x2-this.x1},height:function(){return this.y1-this.y2}};return o?("start"===t.axisX.position?(c.y2=u.top+a,c.y1=Math.max(l-u.bottom,c.y2+1)):(c.y2=u.top,c.y1=Math.max(l-u.bottom-a,c.y2+1)),"start"===t.axisY.position?(c.x1=u.left+i,c.x2=Math.max(s-u.right,c.x1+1)):(c.x1=u.left,c.x2=Math.max(s-u.right-i,c.x1+1))):(c.x1=u.left,c.x2=Math.max(s-u.right,c.x1+1),c.y2=u.top,c.y1=Math.max(l-u.bottom,c.y2+1)),c},n.createGrid=function(e,t,r,o,i,a,s,l){var u={};u[r.units.pos+"1"]=e,u[r.units.pos+"2"]=e,u[r.counterUnits.pos+"1"]=o,u[r.counterUnits.pos+"2"]=o+i;var c=a.elem("line",u,s.join(" "));l.emit("draw",n.extend({type:"grid",axis:r,index:t,group:a,element:c},u))},n.createGridBackground=function(e,t,n,r){var o=e.elem("rect",{x:t.x1,y:t.y2,width:t.width(),height:t.height()},n,!0);r.emit("draw",{type:"gridBackground",group:e,element:o})},n.createLabel=function(e,r,o,i,a,s,l,u,c,f,d){var p,h={};if(h[a.units.pos]=e+l[a.units.pos],h[a.counterUnits.pos]=l[a.counterUnits.pos],h[a.units.len]=r,h[a.counterUnits.len]=Math.max(0,s-10),f){var m=t.createElement("span");m.className=c.join(" "),m.setAttribute("xmlns",n.namespaces.xhtml),m.innerText=i[o],m.style[a.units.len]=Math.round(h[a.units.len])+"px",m.style[a.counterUnits.len]=Math.round(h[a.counterUnits.len])+"px",p=u.foreignObject(m,n.extend({style:"overflow: visible;"},h))}else p=u.elem("text",h,c.join(" ")).text(i[o]);d.emit("draw",n.extend({type:"label",axis:a,index:o,group:u,element:p,text:i[o]},h))},n.getSeriesOption=function(e,t,n){if(e.name&&t.series&&t.series[e.name]){var r=t.series[e.name];return r.hasOwnProperty(n)?r[n]:t[n]}return t[n]},n.optionsProvider=function(t,r,o){var i,a,s=n.extend({},t),l=[];function u(t){var l=i;if(i=n.extend({},s),r)for(a=0;a<r.length;a++)e.matchMedia(r[a][0]).matches&&(i=n.extend(i,r[a][1]));o&&t&&o.emit("optionsChanged",{previousOptions:l,currentOptions:i})}function c(){l.forEach((function(e){e.removeListener(u)}))}if(!e.matchMedia)throw"window.matchMedia not found! Make sure you're using a polyfill.";if(r)for(a=0;a<r.length;a++){var f=e.matchMedia(r[a][0]);f.addListener(u),l.push(f)}return u(),{removeMediaQueryListeners:c,getCurrentOptions:function(){return n.extend({},i)}}},n.splitIntoSegments=function(e,t,r){var o={increasingX:!1,fillHoles:!1};r=n.extend({},o,r);for(var i=[],a=!0,s=0;s<e.length;s+=2)void 0===n.getMultiValue(t[s/2].value)?r.fillHoles||(a=!0):(r.increasingX&&s>=2&&e[s]<=e[s-2]&&(a=!0),a&&(i.push({pathCoordinates:[],valueData:[]}),a=!1),i[i.length-1].pathCoordinates.push(e[s],e[s+1]),i[i.length-1].valueData.push(t[s/2]));return i}}(window,document,e),function(e,t,n){"use strict";n.Interpolation={},n.Interpolation.none=function(e){var t={fillHoles:!1};return e=n.extend({},t,e),function(t,r){for(var o=new n.Svg.Path,i=!0,a=0;a<t.length;a+=2){var s=t[a],l=t[a+1],u=r[a/2];void 0!==n.getMultiValue(u.value)?(i?o.move(s,l,!1,u):o.line(s,l,!1,u),i=!1):e.fillHoles||(i=!0)}return o}},n.Interpolation.simple=function(e){var t={divisor:2,fillHoles:!1};e=n.extend({},t,e);var r=1/Math.max(1,e.divisor);return function(t,o){for(var i,a,s,l=new n.Svg.Path,u=0;u<t.length;u+=2){var c=t[u],f=t[u+1],d=(c-i)*r,p=o[u/2];void 0!==p.value?(void 0===s?l.move(c,f,!1,p):l.curve(i+d,a,c-d,f,c,f,!1,p),i=c,a=f,s=p):e.fillHoles||(i=c=s=void 0)}return l}},n.Interpolation.cardinal=function(e){var t={tension:1,fillHoles:!1};e=n.extend({},t,e);var r=Math.min(1,Math.max(0,e.tension)),o=1-r;return function t(i,a){var s=n.splitIntoSegments(i,a,{fillHoles:e.fillHoles});if(s.length){if(s.length>1){var l=[];return s.forEach((function(e){l.push(t(e.pathCoordinates,e.valueData))})),n.Svg.Path.join(l)}if(i=s[0].pathCoordinates,a=s[0].valueData,i.length<=4)return n.Interpolation.none()(i,a);for(var u,c=(new n.Svg.Path).move(i[0],i[1],!1,a[0]),f=0,d=i.length;d-2*!u>f;f+=2){var p=[{x:+i[f-2],y:+i[f-1]},{x:+i[f],y:+i[f+1]},{x:+i[f+2],y:+i[f+3]},{x:+i[f+4],y:+i[f+5]}];u?f?d-4===f?p[3]={x:+i[0],y:+i[1]}:d-2===f&&(p[2]={x:+i[0],y:+i[1]},p[3]={x:+i[2],y:+i[3]}):p[0]={x:+i[d-2],y:+i[d-1]}:d-4===f?p[3]=p[2]:f||(p[0]={x:+i[f],y:+i[f+1]}),c.curve(r*(-p[0].x+6*p[1].x+p[2].x)/6+o*p[2].x,r*(-p[0].y+6*p[1].y+p[2].y)/6+o*p[2].y,r*(p[1].x+6*p[2].x-p[3].x)/6+o*p[2].x,r*(p[1].y+6*p[2].y-p[3].y)/6+o*p[2].y,p[2].x,p[2].y,!1,a[(f+2)/2])}return c}return n.Interpolation.none()([])}},n.Interpolation.monotoneCubic=function(e){var t={fillHoles:!1};return e=n.extend({},t,e),function t(r,o){var i=n.splitIntoSegments(r,o,{fillHoles:e.fillHoles,increasingX:!0});if(i.length){if(i.length>1){var a=[];return i.forEach((function(e){a.push(t(e.pathCoordinates,e.valueData))})),n.Svg.Path.join(a)}if(r=i[0].pathCoordinates,o=i[0].valueData,r.length<=4)return n.Interpolation.none()(r,o);var s,l,u=[],c=[],f=r.length/2,d=[],p=[],h=[],m=[];for(s=0;s<f;s++)u[s]=r[2*s],c[s]=r[2*s+1];for(s=0;s<f-1;s++)h[s]=c[s+1]-c[s],m[s]=u[s+1]-u[s],p[s]=h[s]/m[s];for(d[0]=p[0],d[f-1]=p[f-2],s=1;s<f-1;s++)0===p[s]||0===p[s-1]||p[s-1]>0!=p[s]>0?d[s]=0:(d[s]=3*(m[s-1]+m[s])/((2*m[s]+m[s-1])/p[s-1]+(m[s]+2*m[s-1])/p[s]),isFinite(d[s])||(d[s]=0));for(l=(new n.Svg.Path).move(u[0],c[0],!1,o[0]),s=0;s<f-1;s++)l.curve(u[s]+m[s]/3,c[s]+d[s]*m[s]/3,u[s+1]-m[s]/3,c[s+1]-d[s+1]*m[s]/3,u[s+1],c[s+1],!1,o[s+1]);return l}return n.Interpolation.none()([])}},n.Interpolation.step=function(e){var t={postpone:!0,fillHoles:!1};return e=n.extend({},t,e),function(t,r){for(var o,i,a,s=new n.Svg.Path,l=0;l<t.length;l+=2){var u=t[l],c=t[l+1],f=r[l/2];void 0!==f.value?(void 0===a?s.move(u,c,!1,f):(e.postpone?s.line(u,i,!1,a):s.line(o,c,!1,f),s.line(u,c,!1,f)),o=u,i=c,a=f):e.fillHoles||(o=i=a=void 0)}return s}}}(window,document,e),function(e,t,n){"use strict";n.EventEmitter=function(){var e=[];function t(t,n){e[t]=e[t]||[],e[t].push(n)}function n(t,n){e[t]&&(n?(e[t].splice(e[t].indexOf(n),1),0===e[t].length&&delete e[t]):delete e[t])}function r(t,n){e[t]&&e[t].forEach((function(e){e(n)})),e["*"]&&e["*"].forEach((function(e){e(t,n)}))}return{addEventHandler:t,removeEventHandler:n,emit:r}}}(window,document,e),function(e,t,n){"use strict";function r(e){var t=[];if(e.length)for(var n=0;n<e.length;n++)t.push(e[n]);return t}function o(e,t){var r=t||this.prototype||n.Class,o=Object.create(r);n.Class.cloneDefinitions(o,e);var i=function(){var e,t=o.constructor||function(){};return e=this===n?Object.create(o):this,t.apply(e,Array.prototype.slice.call(arguments,0)),e};return i.prototype=o,i.super=r,i.extend=this.extend,i}function i(){var e=r(arguments),t=e[0];return e.splice(1,e.length-1).forEach((function(e){Object.getOwnPropertyNames(e).forEach((function(n){delete t[n],Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}))})),t}n.Class={extend:o,cloneDefinitions:i}}(window,document,e),function(e,t,n){"use strict";function r(e,t,r){return e&&(this.data=e||{},this.data.labels=this.data.labels||[],this.data.series=this.data.series||[],this.eventEmitter.emit("data",{type:"update",data:this.data})),t&&(this.options=n.extend({},r?this.options:this.defaultOptions,t),this.initializeTimeoutId||(this.optionsProvider.removeMediaQueryListeners(),this.optionsProvider=n.optionsProvider(this.options,this.responsiveOptions,this.eventEmitter))),this.initializeTimeoutId||this.createChart(this.optionsProvider.getCurrentOptions()),this}function o(){return this.initializeTimeoutId?e.clearTimeout(this.initializeTimeoutId):(e.removeEventListener("resize",this.resizeListener),this.optionsProvider.removeMediaQueryListeners()),this}function i(e,t){return this.eventEmitter.addEventHandler(e,t),this}function a(e,t){return this.eventEmitter.removeEventHandler(e,t),this}function s(){e.addEventListener("resize",this.resizeListener),this.optionsProvider=n.optionsProvider(this.options,this.responsiveOptions,this.eventEmitter),this.eventEmitter.addEventHandler("optionsChanged",function(){this.update()}.bind(this)),this.options.plugins&&this.options.plugins.forEach(function(e){e instanceof Array?e[0](this,e[1]):e(this)}.bind(this)),this.eventEmitter.emit("data",{type:"initial",data:this.data}),this.createChart(this.optionsProvider.getCurrentOptions()),this.initializeTimeoutId=void 0}function l(e,t,r,o,i){this.container=n.querySelector(e),this.data=t||{},this.data.labels=this.data.labels||[],this.data.series=this.data.series||[],this.defaultOptions=r,this.options=o,this.responsiveOptions=i,this.eventEmitter=n.EventEmitter(),this.supportsForeignObject=n.Svg.isSupported("Extensibility"),this.supportsAnimations=n.Svg.isSupported("AnimationEventsAttribute"),this.resizeListener=function(){this.update()}.bind(this),this.container&&(this.container.__chartist__&&this.container.__chartist__.detach(),this.container.__chartist__=this),this.initializeTimeoutId=setTimeout(s.bind(this),0)}n.Base=n.Class.extend({constructor:l,optionsProvider:void 0,container:void 0,svg:void 0,eventEmitter:void 0,createChart:function(){throw new Error("Base chart type can't be instantiated!")},update:r,detach:o,on:i,off:a,version:n.version,supportsForeignObject:!1})}(window,document,e),function(e,t,n){"use strict";function r(e,r,o,i,a){e instanceof Element?this._node=e:(this._node=t.createElementNS(n.namespaces.svg,e),"svg"===e&&this.attr({"xmlns:ct":n.namespaces.ct})),r&&this.attr(r),o&&this.addClass(o),i&&(a&&i._node.firstChild?i._node.insertBefore(this._node,i._node.firstChild):i._node.appendChild(this._node))}function o(e,t){return"string"==typeof e?t?this._node.getAttributeNS(t,e):this._node.getAttribute(e):(Object.keys(e).forEach(function(t){if(void 0!==e[t])if(-1!==t.indexOf(":")){var r=t.split(":");this._node.setAttributeNS(n.namespaces[r[0]],t,e[t])}else this._node.setAttribute(t,e[t])}.bind(this)),this)}function i(e,t,r,o){return new n.Svg(e,t,r,this,o)}function a(){return this._node.parentNode instanceof SVGElement?new n.Svg(this._node.parentNode):null}function s(){for(var e=this._node;"svg"!==e.nodeName;)e=e.parentNode;return new n.Svg(e)}function l(e){var t=this._node.querySelector(e);return t?new n.Svg(t):null}function u(e){var t=this._node.querySelectorAll(e);return t.length?new n.Svg.List(t):null}function c(){return this._node}function f(e,r,o,i){if("string"==typeof e){var a=t.createElement("div");a.innerHTML=e,e=a.firstChild}e.setAttribute("xmlns",n.namespaces.xmlns);var s=this.elem("foreignObject",r,o,i);return s._node.appendChild(e),s}function d(e){return this._node.appendChild(t.createTextNode(e)),this}function p(){for(;this._node.firstChild;)this._node.removeChild(this._node.firstChild);return this}function h(){return this._node.parentNode.removeChild(this._node),this.parent()}function m(e){return this._node.parentNode.replaceChild(e._node,this._node),e}function v(e,t){return t&&this._node.firstChild?this._node.insertBefore(e._node,this._node.firstChild):this._node.appendChild(e._node),this}function g(){return this._node.getAttribute("class")?this._node.getAttribute("class").trim().split(/\s+/):[]}function y(e){return this._node.setAttribute("class",this.classes(this._node).concat(e.trim().split(/\s+/)).filter((function(e,t,n){return n.indexOf(e)===t})).join(" ")),this}function b(e){var t=e.trim().split(/\s+/);return this._node.setAttribute("class",this.classes(this._node).filter((function(e){return-1===t.indexOf(e)})).join(" ")),this}function _(){return this._node.setAttribute("class",""),this}function w(){return this._node.getBoundingClientRect().height}function x(){return this._node.getBoundingClientRect().width}function E(e,t,r){return void 0===t&&(t=!0),Object.keys(e).forEach(function(o){function i(e,t){var i,a,s,l={};e.easing&&(s=e.easing instanceof Array?e.easing:n.Svg.Easing[e.easing],delete e.easing),e.begin=n.ensureUnit(e.begin,"ms"),e.dur=n.ensureUnit(e.dur,"ms"),s&&(e.calcMode="spline",e.keySplines=s.join(" "),e.keyTimes="0;1"),t&&(e.fill="freeze",l[o]=e.from,this.attr(l),a=n.quantity(e.begin||0).value,e.begin="indefinite"),i=this.elem("animate",n.extend({attributeName:o},e)),t&&setTimeout(function(){try{i._node.beginElement()}catch(t){l[o]=e.to,this.attr(l),i.remove()}}.bind(this),a),r&&i._node.addEventListener("beginEvent",function(){r.emit("animationBegin",{element:this,animate:i._node,params:e})}.bind(this)),i._node.addEventListener("endEvent",function(){r&&r.emit("animationEnd",{element:this,animate:i._node,params:e}),t&&(l[o]=e.to,this.attr(l),i.remove())}.bind(this))}e[o]instanceof Array?e[o].forEach(function(e){i.bind(this)(e,!1)}.bind(this)):i.bind(this)(e[o],t)}.bind(this)),this}n.Svg=n.Class.extend({constructor:r,attr:o,elem:i,parent:a,root:s,querySelector:l,querySelectorAll:u,getNode:c,foreignObject:f,text:d,empty:p,remove:h,replace:m,append:v,classes:g,addClass:y,removeClass:b,removeAllClasses:_,height:w,width:x,animate:E}),n.Svg.isSupported=function(e){return t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#"+e,"1.1")};var k={easeInSine:[.47,0,.745,.715],easeOutSine:[.39,.575,.565,1],easeInOutSine:[.445,.05,.55,.95],easeInQuad:[.55,.085,.68,.53],easeOutQuad:[.25,.46,.45,.94],easeInOutQuad:[.455,.03,.515,.955],easeInCubic:[.55,.055,.675,.19],easeOutCubic:[.215,.61,.355,1],easeInOutCubic:[.645,.045,.355,1],easeInQuart:[.895,.03,.685,.22],easeOutQuart:[.165,.84,.44,1],easeInOutQuart:[.77,0,.175,1],easeInQuint:[.755,.05,.855,.06],easeOutQuint:[.23,1,.32,1],easeInOutQuint:[.86,0,.07,1],easeInExpo:[.95,.05,.795,.035],easeOutExpo:[.19,1,.22,1],easeInOutExpo:[1,0,0,1],easeInCirc:[.6,.04,.98,.335],easeOutCirc:[.075,.82,.165,1],easeInOutCirc:[.785,.135,.15,.86],easeInBack:[.6,-.28,.735,.045],easeOutBack:[.175,.885,.32,1.275],easeInOutBack:[.68,-.55,.265,1.55]};function S(e){var t=this;this.svgElements=[];for(var r=0;r<e.length;r++)this.svgElements.push(new n.Svg(e[r]));Object.keys(n.Svg.prototype).filter((function(e){return-1===["constructor","parent","querySelector","querySelectorAll","replace","append","classes","height","width"].indexOf(e)})).forEach((function(e){t[e]=function(){var r=Array.prototype.slice.call(arguments,0);return t.svgElements.forEach((function(t){n.Svg.prototype[e].apply(t,r)})),t}}))}n.Svg.Easing=k,n.Svg.List=n.Class.extend({constructor:S})}(window,document,e),function(e,t,n){"use strict";var r={m:["x","y"],l:["x","y"],c:["x1","y1","x2","y2","x","y"],a:["rx","ry","xAr","lAf","sf","x","y"]},o={accuracy:3};function i(e,t,r,o,i,a){var s=n.extend({command:i?e.toLowerCase():e.toUpperCase()},t,a?{data:a}:{});r.splice(o,0,s)}function a(e,t){e.forEach((function(n,o){r[n.command.toLowerCase()].forEach((function(r,i){t(n,r,o,i,e)}))}))}function s(e,t){this.pathElements=[],this.pos=0,this.close=e,this.options=n.extend({},o,t)}function l(e){return void 0!==e?(this.pos=Math.max(0,Math.min(this.pathElements.length,e)),this):this.pos}function u(e){return this.pathElements.splice(this.pos,e),this}function c(e,t,n,r){return i("M",{x:+e,y:+t},this.pathElements,this.pos++,n,r),this}function f(e,t,n,r){return i("L",{x:+e,y:+t},this.pathElements,this.pos++,n,r),this}function d(e,t,n,r,o,a,s,l){return i("C",{x1:+e,y1:+t,x2:+n,y2:+r,x:+o,y:+a},this.pathElements,this.pos++,s,l),this}function p(e,t,n,r,o,a,s,l,u){return i("A",{rx:+e,ry:+t,xAr:+n,lAf:+r,sf:+o,x:+a,y:+s},this.pathElements,this.pos++,l,u),this}function h(e){var t=e.replace(/([A-Za-z])([0-9])/g,"$1 $2").replace(/([0-9])([A-Za-z])/g,"$1 $2").split(/[\s,]+/).reduce((function(e,t){return t.match(/[A-Za-z]/)&&e.push([]),e[e.length-1].push(t),e}),[]);"Z"===t[t.length-1][0].toUpperCase()&&t.pop();var o=t.map((function(e){var t=e.shift(),o=r[t.toLowerCase()];return n.extend({command:t},o.reduce((function(t,n,r){return t[n]=+e[r],t}),{}))})),i=[this.pos,0];return Array.prototype.push.apply(i,o),Array.prototype.splice.apply(this.pathElements,i),this.pos+=o.length,this}function m(){var e=Math.pow(10,this.options.accuracy);return this.pathElements.reduce(function(t,n){var o=r[n.command.toLowerCase()].map(function(t){return this.options.accuracy?Math.round(n[t]*e)/e:n[t]}.bind(this));return t+n.command+o.join(",")}.bind(this),"")+(this.close?"Z":"")}function v(e,t){return a(this.pathElements,(function(n,r){n[r]*="x"===r[0]?e:t})),this}function g(e,t){return a(this.pathElements,(function(n,r){n[r]+="x"===r[0]?e:t})),this}function y(e){return a(this.pathElements,(function(t,n,r,o,i){var a=e(t,n,r,o,i);(a||0===a)&&(t[n]=a)})),this}function b(e){var t=new n.Svg.Path(e||this.close);return t.pos=this.pos,t.pathElements=this.pathElements.slice().map((function(e){return n.extend({},e)})),t.options=n.extend({},this.options),t}function _(e){var t=[new n.Svg.Path];return this.pathElements.forEach((function(r){r.command===e.toUpperCase()&&0!==t[t.length-1].pathElements.length&&t.push(new n.Svg.Path),t[t.length-1].pathElements.push(r)})),t}function w(e,t,r){for(var o=new n.Svg.Path(t,r),i=0;i<e.length;i++)for(var a=e[i],s=0;s<a.pathElements.length;s++)o.pathElements.push(a.pathElements[s]);return o}n.Svg.Path=n.Class.extend({constructor:s,position:l,remove:u,move:c,line:f,curve:d,arc:p,scale:v,translate:g,transform:y,parse:h,stringify:m,clone:b,splitByCommand:_}),n.Svg.Path.elementDescriptions=r,n.Svg.Path.join=w}(window,document,e),function(e,t,n){"use strict";var r={x:{pos:"x",len:"width",dir:"horizontal",rectStart:"x1",rectEnd:"x2",rectOffset:"y2"},y:{pos:"y",len:"height",dir:"vertical",rectStart:"y2",rectEnd:"y1",rectOffset:"x1"}};function o(e,t,n,o){this.units=e,this.counterUnits=e===r.x?r.y:r.x,this.chartRect=t,this.axisLength=t[e.rectEnd]-t[e.rectStart],this.gridOffset=t[e.rectOffset],this.ticks=n,this.options=o}function i(e,t,r,o,i){var a=o["axis"+this.units.pos.toUpperCase()],s=this.ticks.map(this.projectValue.bind(this)),l=this.ticks.map(a.labelInterpolationFnc);s.forEach(function(u,c){var f,d={x:0,y:0};f=s[c+1]?s[c+1]-u:Math.max(this.axisLength-u,30),n.isFalseyButZero(l[c])&&""!==l[c]||("x"===this.units.pos?(u=this.chartRect.x1+u,d.x=o.axisX.labelOffset.x,"start"===o.axisX.position?d.y=this.chartRect.padding.top+o.axisX.labelOffset.y+(r?5:20):d.y=this.chartRect.y1+o.axisX.labelOffset.y+(r?5:20)):(u=this.chartRect.y1-u,d.y=o.axisY.labelOffset.y-(r?f:0),"start"===o.axisY.position?d.x=r?this.chartRect.padding.left+o.axisY.labelOffset.x:this.chartRect.x1-10:d.x=this.chartRect.x2+o.axisY.labelOffset.x+10),a.showGrid&&n.createGrid(u,c,this,this.gridOffset,this.chartRect[this.counterUnits.len](),e,[o.classNames.grid,o.classNames[this.units.dir]],i),a.showLabel&&n.createLabel(u,f,c,l,this,a.offset,d,t,[o.classNames.label,o.classNames[this.units.dir],"start"===a.position?o.classNames[a.position]:o.classNames.end],r,i))}.bind(this))}n.Axis=n.Class.extend({constructor:o,createGridAndLabels:i,projectValue:function(e,t,n){throw new Error("Base axis can't be instantiated!")}}),n.Axis.units=r}(window,document,e),function(e,t,n){"use strict";function r(e,t,r,o){var i=o.highLow||n.getHighLow(t,o,e.pos);this.bounds=n.getBounds(r[e.rectEnd]-r[e.rectStart],i,o.scaleMinSpace||20,o.onlyInteger),this.range={min:this.bounds.min,max:this.bounds.max},n.AutoScaleAxis.super.constructor.call(this,e,r,this.bounds.values,o)}function o(e){return this.axisLength*(+n.getMultiValue(e,this.units.pos)-this.bounds.min)/this.bounds.range}n.AutoScaleAxis=n.Axis.extend({constructor:r,projectValue:o})}(window,document,e),function(e,t,n){"use strict";function r(e,t,r,o){var i=o.highLow||n.getHighLow(t,o,e.pos);this.divisor=o.divisor||1,this.ticks=o.ticks||n.times(this.divisor).map(function(e,t){return i.low+(i.high-i.low)/this.divisor*t}.bind(this)),this.ticks.sort((function(e,t){return e-t})),this.range={min:i.low,max:i.high},n.FixedScaleAxis.super.constructor.call(this,e,r,this.ticks,o),this.stepLength=this.axisLength/this.divisor}function o(e){return this.axisLength*(+n.getMultiValue(e,this.units.pos)-this.range.min)/(this.range.max-this.range.min)}n.FixedScaleAxis=n.Axis.extend({constructor:r,projectValue:o})}(window,document,e),function(e,t,n){"use strict";function r(e,t,r,o){n.StepAxis.super.constructor.call(this,e,r,o.ticks,o);var i=Math.max(1,o.ticks.length-(o.stretch?1:0));this.stepLength=this.axisLength/i}function o(e,t){return this.stepLength*t}n.StepAxis=n.Axis.extend({constructor:r,projectValue:o})}(window,document,e),function(e,t,n){"use strict";var r={axisX:{offset:30,position:"end",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:n.noop,type:void 0},axisY:{offset:40,position:"start",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:n.noop,type:void 0,scaleMinSpace:20,onlyInteger:!1},width:void 0,height:void 0,showLine:!0,showPoint:!0,showArea:!1,areaBase:0,lineSmooth:!0,showGridBackground:!1,low:void 0,high:void 0,chartPadding:{top:15,right:15,bottom:5,left:10},fullWidth:!1,reverseData:!1,classNames:{chart:"ct-chart-line",label:"ct-label",labelGroup:"ct-labels",series:"ct-series",line:"ct-line",point:"ct-point",area:"ct-area",grid:"ct-grid",gridGroup:"ct-grids",gridBackground:"ct-grid-background",vertical:"ct-vertical",horizontal:"ct-horizontal",start:"ct-start",end:"ct-end"}};function o(e){var t=n.normalizeData(this.data,e.reverseData,!0);this.svg=n.createSvg(this.container,e.width,e.height,e.classNames.chart);var o,i,a=this.svg.elem("g").addClass(e.classNames.gridGroup),s=this.svg.elem("g"),l=this.svg.elem("g").addClass(e.classNames.labelGroup),u=n.createChartRect(this.svg,e,r.padding);o=void 0===e.axisX.type?new n.StepAxis(n.Axis.units.x,t.normalized.series,u,n.extend({},e.axisX,{ticks:t.normalized.labels,stretch:e.fullWidth})):e.axisX.type.call(n,n.Axis.units.x,t.normalized.series,u,e.axisX),i=void 0===e.axisY.type?new n.AutoScaleAxis(n.Axis.units.y,t.normalized.series,u,n.extend({},e.axisY,{high:n.isNumeric(e.high)?e.high:e.axisY.high,low:n.isNumeric(e.low)?e.low:e.axisY.low})):e.axisY.type.call(n,n.Axis.units.y,t.normalized.series,u,e.axisY),o.createGridAndLabels(a,l,this.supportsForeignObject,e,this.eventEmitter),i.createGridAndLabels(a,l,this.supportsForeignObject,e,this.eventEmitter),e.showGridBackground&&n.createGridBackground(a,u,e.classNames.gridBackground,this.eventEmitter),t.raw.series.forEach(function(r,a){var l=s.elem("g");l.attr({"ct:series-name":r.name,"ct:meta":n.serialize(r.meta)}),l.addClass([e.classNames.series,r.className||e.classNames.series+"-"+n.alphaNumerate(a)].join(" "));var c=[],f=[];t.normalized.series[a].forEach(function(e,s){var l={x:u.x1+o.projectValue(e,s,t.normalized.series[a]),y:u.y1-i.projectValue(e,s,t.normalized.series[a])};c.push(l.x,l.y),f.push({value:e,valueIndex:s,meta:n.getMetaData(r,s)})}.bind(this));var d={lineSmooth:n.getSeriesOption(r,e,"lineSmooth"),showPoint:n.getSeriesOption(r,e,"showPoint"),showLine:n.getSeriesOption(r,e,"showLine"),showArea:n.getSeriesOption(r,e,"showArea"),areaBase:n.getSeriesOption(r,e,"areaBase")},p=("function"==typeof d.lineSmooth?d.lineSmooth:d.lineSmooth?n.Interpolation.monotoneCubic():n.Interpolation.none())(c,f);if(d.showPoint&&p.pathElements.forEach(function(t){var s=l.elem("line",{x1:t.x,y1:t.y,x2:t.x+.01,y2:t.y},e.classNames.point).attr({"ct:value":[t.data.value.x,t.data.value.y].filter(n.isNumeric).join(","),"ct:meta":n.serialize(t.data.meta)});this.eventEmitter.emit("draw",{type:"point",value:t.data.value,index:t.data.valueIndex,meta:t.data.meta,series:r,seriesIndex:a,axisX:o,axisY:i,group:l,element:s,x:t.x,y:t.y})}.bind(this)),d.showLine){var h=l.elem("path",{d:p.stringify()},e.classNames.line,!0);this.eventEmitter.emit("draw",{type:"line",values:t.normalized.series[a],path:p.clone(),chartRect:u,index:a,series:r,seriesIndex:a,seriesMeta:r.meta,axisX:o,axisY:i,group:l,element:h})}if(d.showArea&&i.range){var m=Math.max(Math.min(d.areaBase,i.range.max),i.range.min),v=u.y1-i.projectValue(m);p.splitByCommand("M").filter((function(e){return e.pathElements.length>1})).map((function(e){var t=e.pathElements[0],n=e.pathElements[e.pathElements.length-1];return e.clone(!0).position(0).remove(1).move(t.x,v).line(t.x,t.y).position(e.pathElements.length+1).line(n.x,v)})).forEach(function(n){var s=l.elem("path",{d:n.stringify()},e.classNames.area,!0);this.eventEmitter.emit("draw",{type:"area",values:t.normalized.series[a],path:n.clone(),series:r,seriesIndex:a,axisX:o,axisY:i,chartRect:u,index:a,group:l,element:s})}.bind(this))}}.bind(this)),this.eventEmitter.emit("created",{bounds:i.bounds,chartRect:u,axisX:o,axisY:i,svg:this.svg,options:e})}function i(e,t,o,i){n.Line.super.constructor.call(this,e,t,r,n.extend({},r,o),i)}n.Line=n.Base.extend({constructor:i,createChart:o})}(window,document,e),function(e,t,n){"use strict";var r={axisX:{offset:30,position:"end",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:n.noop,scaleMinSpace:30,onlyInteger:!1},axisY:{offset:40,position:"start",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:n.noop,scaleMinSpace:20,onlyInteger:!1},width:void 0,height:void 0,high:void 0,low:void 0,referenceValue:0,chartPadding:{top:15,right:15,bottom:5,left:10},seriesBarDistance:15,stackBars:!1,stackMode:"accumulate",horizontalBars:!1,distributeSeries:!1,reverseData:!1,showGridBackground:!1,classNames:{chart:"ct-chart-bar",horizontalBars:"ct-horizontal-bars",label:"ct-label",labelGroup:"ct-labels",series:"ct-series",bar:"ct-bar",grid:"ct-grid",gridGroup:"ct-grids",gridBackground:"ct-grid-background",vertical:"ct-vertical",horizontal:"ct-horizontal",start:"ct-start",end:"ct-end"}};function o(e){var t,o;e.distributeSeries?(t=n.normalizeData(this.data,e.reverseData,e.horizontalBars?"x":"y")).normalized.series=t.normalized.series.map((function(e){return[e]})):t=n.normalizeData(this.data,e.reverseData,e.horizontalBars?"x":"y"),this.svg=n.createSvg(this.container,e.width,e.height,e.classNames.chart+(e.horizontalBars?" "+e.classNames.horizontalBars:""));var i=this.svg.elem("g").addClass(e.classNames.gridGroup),a=this.svg.elem("g"),s=this.svg.elem("g").addClass(e.classNames.labelGroup);if(e.stackBars&&0!==t.normalized.series.length){var l=n.serialMap(t.normalized.series,(function(){return Array.prototype.slice.call(arguments).map((function(e){return e})).reduce((function(e,t){return{x:e.x+(t&&t.x)||0,y:e.y+(t&&t.y)||0}}),{x:0,y:0})}));o=n.getHighLow([l],e,e.horizontalBars?"x":"y")}else o=n.getHighLow(t.normalized.series,e,e.horizontalBars?"x":"y");o.high=+e.high||(0===e.high?0:o.high),o.low=+e.low||(0===e.low?0:o.low);var u,c,f,d,p,h=n.createChartRect(this.svg,e,r.padding);c=e.distributeSeries&&e.stackBars?t.normalized.labels.slice(0,1):t.normalized.labels,e.horizontalBars?(u=d=void 0===e.axisX.type?new n.AutoScaleAxis(n.Axis.units.x,t.normalized.series,h,n.extend({},e.axisX,{highLow:o,referenceValue:0})):e.axisX.type.call(n,n.Axis.units.x,t.normalized.series,h,n.extend({},e.axisX,{highLow:o,referenceValue:0})),f=p=void 0===e.axisY.type?new n.StepAxis(n.Axis.units.y,t.normalized.series,h,{ticks:c}):e.axisY.type.call(n,n.Axis.units.y,t.normalized.series,h,e.axisY)):(f=d=void 0===e.axisX.type?new n.StepAxis(n.Axis.units.x,t.normalized.series,h,{ticks:c}):e.axisX.type.call(n,n.Axis.units.x,t.normalized.series,h,e.axisX),u=p=void 0===e.axisY.type?new n.AutoScaleAxis(n.Axis.units.y,t.normalized.series,h,n.extend({},e.axisY,{highLow:o,referenceValue:0})):e.axisY.type.call(n,n.Axis.units.y,t.normalized.series,h,n.extend({},e.axisY,{highLow:o,referenceValue:0})));var m=e.horizontalBars?h.x1+u.projectValue(0):h.y1-u.projectValue(0),v=[];f.createGridAndLabels(i,s,this.supportsForeignObject,e,this.eventEmitter),u.createGridAndLabels(i,s,this.supportsForeignObject,e,this.eventEmitter),e.showGridBackground&&n.createGridBackground(i,h,e.classNames.gridBackground,this.eventEmitter),t.raw.series.forEach(function(r,o){var i,s,l=o-(t.raw.series.length-1)/2;i=e.distributeSeries&&!e.stackBars?f.axisLength/t.normalized.series.length/2:e.distributeSeries&&e.stackBars?f.axisLength/2:f.axisLength/t.normalized.series[o].length/2,(s=a.elem("g")).attr({"ct:series-name":r.name,"ct:meta":n.serialize(r.meta)}),s.addClass([e.classNames.series,r.className||e.classNames.series+"-"+n.alphaNumerate(o)].join(" ")),t.normalized.series[o].forEach(function(a,c){var g,y,b,_;if(_=e.distributeSeries&&!e.stackBars?o:e.distributeSeries&&e.stackBars?0:c,g=e.horizontalBars?{x:h.x1+u.projectValue(a&&a.x?a.x:0,c,t.normalized.series[o]),y:h.y1-f.projectValue(a&&a.y?a.y:0,_,t.normalized.series[o])}:{x:h.x1+f.projectValue(a&&a.x?a.x:0,_,t.normalized.series[o]),y:h.y1-u.projectValue(a&&a.y?a.y:0,c,t.normalized.series[o])},f instanceof n.StepAxis&&(f.options.stretch||(g[f.units.pos]+=i*(e.horizontalBars?-1:1)),g[f.units.pos]+=e.stackBars||e.distributeSeries?0:l*e.seriesBarDistance*(e.horizontalBars?-1:1)),b=v[c]||m,v[c]=b-(m-g[f.counterUnits.pos]),void 0!==a){var w={};w[f.units.pos+"1"]=g[f.units.pos],w[f.units.pos+"2"]=g[f.units.pos],!e.stackBars||"accumulate"!==e.stackMode&&e.stackMode?(w[f.counterUnits.pos+"1"]=m,w[f.counterUnits.pos+"2"]=g[f.counterUnits.pos]):(w[f.counterUnits.pos+"1"]=b,w[f.counterUnits.pos+"2"]=v[c]),w.x1=Math.min(Math.max(w.x1,h.x1),h.x2),w.x2=Math.min(Math.max(w.x2,h.x1),h.x2),w.y1=Math.min(Math.max(w.y1,h.y2),h.y1),w.y2=Math.min(Math.max(w.y2,h.y2),h.y1);var x=n.getMetaData(r,c);y=s.elem("line",w,e.classNames.bar).attr({"ct:value":[a.x,a.y].filter(n.isNumeric).join(","),"ct:meta":n.serialize(x)}),this.eventEmitter.emit("draw",n.extend({type:"bar",value:a,index:c,meta:x,series:r,seriesIndex:o,axisX:d,axisY:p,chartRect:h,group:s,element:y},w))}}.bind(this))}.bind(this)),this.eventEmitter.emit("created",{bounds:u.bounds,chartRect:h,axisX:d,axisY:p,svg:this.svg,options:e})}function i(e,t,o,i){n.Bar.super.constructor.call(this,e,t,r,n.extend({},r,o),i)}n.Bar=n.Base.extend({constructor:i,createChart:o})}(window,document,e),function(e,t,n){"use strict";var r={width:void 0,height:void 0,chartPadding:5,classNames:{chartPie:"ct-chart-pie",chartDonut:"ct-chart-donut",series:"ct-series",slicePie:"ct-slice-pie",sliceDonut:"ct-slice-donut",sliceDonutSolid:"ct-slice-donut-solid",label:"ct-label"},startAngle:0,total:void 0,donut:!1,donutSolid:!1,donutWidth:60,showLabel:!0,labelOffset:0,labelPosition:"inside",labelInterpolationFnc:n.noop,labelDirection:"neutral",reverseData:!1,ignoreEmptyValues:!1};function o(e,t,n){var r=t.x>e.x;return r&&"explode"===n||!r&&"implode"===n?"start":r&&"implode"===n||!r&&"explode"===n?"end":"middle"}function i(e){var t,i,a,s,l,u=n.normalizeData(this.data),c=[],f=e.startAngle;this.svg=n.createSvg(this.container,e.width,e.height,e.donut?e.classNames.chartDonut:e.classNames.chartPie),i=n.createChartRect(this.svg,e,r.padding),a=Math.min(i.width()/2,i.height()/2),l=e.total||u.normalized.series.reduce((function(e,t){return e+t}),0);var d=n.quantity(e.donutWidth);"%"===d.unit&&(d.value*=a/100),a-=e.donut&&!e.donutSolid?d.value/2:0,s="outside"===e.labelPosition||e.donut&&!e.donutSolid?a:"center"===e.labelPosition?0:e.donutSolid?a-d.value/2:a/2,s+=e.labelOffset;var p={x:i.x1+i.width()/2,y:i.y2+i.height()/2},h=1===u.raw.series.filter((function(e){return e.hasOwnProperty("value")?0!==e.value:0!==e})).length;u.raw.series.forEach(function(e,t){c[t]=this.svg.elem("g",null,null)}.bind(this)),e.showLabel&&(t=this.svg.elem("g",null,null)),u.raw.series.forEach(function(r,i){if(0!==u.normalized.series[i]||!e.ignoreEmptyValues){c[i].attr({"ct:series-name":r.name}),c[i].addClass([e.classNames.series,r.className||e.classNames.series+"-"+n.alphaNumerate(i)].join(" "));var m=l>0?f+u.normalized.series[i]/l*360:0,v=Math.max(0,f-(0===i||h?0:.2));m-v>=359.99&&(m=v+359.99);var g,y,b,_=n.polarToCartesian(p.x,p.y,a,v),w=n.polarToCartesian(p.x,p.y,a,m),x=new n.Svg.Path(!e.donut||e.donutSolid).move(w.x,w.y).arc(a,a,0,m-f>180,0,_.x,_.y);e.donut?e.donutSolid&&(b=a-d.value,g=n.polarToCartesian(p.x,p.y,b,f-(0===i||h?0:.2)),y=n.polarToCartesian(p.x,p.y,b,m),x.line(g.x,g.y),x.arc(b,b,0,m-f>180,1,y.x,y.y)):x.line(p.x,p.y);var E=e.classNames.slicePie;e.donut&&(E=e.classNames.sliceDonut,e.donutSolid&&(E=e.classNames.sliceDonutSolid));var k=c[i].elem("path",{d:x.stringify()},E);if(k.attr({"ct:value":u.normalized.series[i],"ct:meta":n.serialize(r.meta)}),e.donut&&!e.donutSolid&&(k._node.style.strokeWidth=d.value+"px"),this.eventEmitter.emit("draw",{type:"slice",value:u.normalized.series[i],totalDataSum:l,index:i,meta:r.meta,series:r,group:c[i],element:k,path:x.clone(),center:p,radius:a,startAngle:f,endAngle:m}),e.showLabel){var S,O;S=1===u.raw.series.length?{x:p.x,y:p.y}:n.polarToCartesian(p.x,p.y,s,f+(m-f)/2),O=u.normalized.labels&&!n.isFalseyButZero(u.normalized.labels[i])?u.normalized.labels[i]:u.normalized.series[i];var T=e.labelInterpolationFnc(O,i);if(T||0===T){var N=t.elem("text",{dx:S.x,dy:S.y,"text-anchor":o(p,S,e.labelDirection)},e.classNames.label).text(""+T);this.eventEmitter.emit("draw",{type:"label",index:i,group:t,element:N,text:""+T,x:S.x,y:S.y})}}f=m}}.bind(this)),this.eventEmitter.emit("created",{chartRect:i,svg:this.svg,options:e})}function a(e,t,o,i){n.Pie.super.constructor.call(this,e,t,r,n.extend({},r,o),i)}n.Pie=n.Base.extend({constructor:a,createChart:i,determineAnchorPosition:o})}(window,document,e),e);var e}.apply(t,[]))||(e.exports=r)},function(e,t,n){e.exports={"trans-color":"suite-summary--trans-color---14JXk",component:"suite-summary--component---cFAkx","no-margin":"suite-summary--no-margin---3WX9n","summary-item":"suite-summary--summary-item---JHYFN",duration:"suite-summary--duration---AzGUQ",tests:"suite-summary--tests---3Zhct",passed:"suite-summary--passed---24BnC",failed:"suite-summary--failed---205C4",pending:"suite-summary--pending---3_Nkj",skipped:"suite-summary--skipped---TovqF",icon:"suite-summary--icon---3rZ6G"}},function(e,t,n){e.exports={"trans-color":"toggle-switch--trans-color---16in9",component:"toggle-switch--component---3vjvh",label:"toggle-switch--label---1Lu8U","toggle-input":"toggle-switch--toggle-input---3BB7e",toggle:"toggle-switch--toggle---2kPqc",disabled:"toggle-switch--disabled---1qDLf",icon:"toggle-switch--icon---348nT"}},function(e,t,n){"use strict";var r=n(61),o="function"==typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,s=o?Symbol.for("react.fragment"):60107,l=o?Symbol.for("react.strict_mode"):60108,u=o?Symbol.for("react.profiler"):60114,c=o?Symbol.for("react.provider"):60109,f=o?Symbol.for("react.context"):60110,d=o?Symbol.for("react.forward_ref"):60112,p=o?Symbol.for("react.suspense"):60113,h=o?Symbol.for("react.memo"):60115,m=o?Symbol.for("react.lazy"):60116,v="function"==typeof Symbol&&Symbol.iterator;function g(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b={};function _(e,t,n){this.props=e,this.context=t,this.refs=b,this.updater=n||y}function w(){}function x(e,t,n){this.props=e,this.context=t,this.refs=b,this.updater=n||y}_.prototype.isReactComponent={},_.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(g(85));this.updater.enqueueSetState(this,e,t,"setState")},_.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},w.prototype=_.prototype;var E=x.prototype=new w;E.constructor=x,r(E,_.prototype),E.isPureReactComponent=!0;var k={current:null},S=Object.prototype.hasOwnProperty,O={key:!0,ref:!0,__self:!0,__source:!0};function T(e,t,n){var r,o={},a=null,s=null;if(null!=t)for(r in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(a=""+t.key),t)S.call(t,r)&&!O.hasOwnProperty(r)&&(o[r]=t[r]);var l=arguments.length-2;if(1===l)o.children=n;else if(1<l){for(var u=Array(l),c=0;c<l;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in l=e.defaultProps)void 0===o[r]&&(o[r]=l[r]);return{$$typeof:i,type:e,key:a,ref:s,props:o,_owner:k.current}}function N(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var C=/\/+/g,P=[];function M(e,t,n,r){if(P.length){var o=P.pop();return o.result=e,o.keyPrefix=t,o.func=n,o.context=r,o.count=0,o}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function j(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>P.length&&P.push(e)}function D(e,t,n,r){var o=typeof e;"undefined"!==o&&"boolean"!==o||(e=null);var s=!1;if(null===e)s=!0;else switch(o){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case i:case a:s=!0}}if(s)return n(r,e,""===t?"."+I(e,0):t),1;if(s=0,t=""===t?".":t+":",Array.isArray(e))for(var l=0;l<e.length;l++){var u=t+I(o=e[l],l);s+=D(o,u,n,r)}else if(null===e||"object"!=typeof e?u=null:u="function"==typeof(u=v&&e[v]||e["@@iterator"])?u:null,"function"==typeof u)for(e=u.call(e),l=0;!(o=e.next()).done;)s+=D(o=o.value,u=t+I(o,l++),n,r);else if("object"===o)throw n=""+e,Error(g(31,"[object Object]"===n?"object with keys {"+Object.keys(e).join(", ")+"}":n,""));return s}function A(e,t,n){return null==e?0:D(e,"",t,n)}function I(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function R(e,t){e.func.call(e.context,t,e.count++)}function z(e,t,n){var r=e.result,o=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?F(e,r,n,(function(e){return e})):null!=e&&(N(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,o+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(C,"$&/")+"/")+n)),r.push(e))}function F(e,t,n,r,o){var i="";null!=n&&(i=(""+n).replace(C,"$&/")+"/"),A(e,z,t=M(t,i,r,o)),j(t)}var L={current:null};function U(){var e=L.current;if(null===e)throw Error(g(321));return e}var B={ReactCurrentDispatcher:L,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:k,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:function(e,t,n){if(null==e)return e;var r=[];return F(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;A(e,R,t=M(null,null,t,n)),j(t)},count:function(e){return A(e,(function(){return null}),null)},toArray:function(e){var t=[];return F(e,t,null,(function(e){return e})),t},only:function(e){if(!N(e))throw Error(g(143));return e}},t.Component=_,t.Fragment=s,t.Profiler=u,t.PureComponent=x,t.StrictMode=l,t.Suspense=p,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=B,t.cloneElement=function(e,t,n){if(null==e)throw Error(g(267,e));var o=r({},e.props),a=e.key,s=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,l=k.current),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)S.call(t,c)&&!O.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){u=Array(c);for(var f=0;f<c;f++)u[f]=arguments[f+2];o.children=u}return{$$typeof:i,type:e.type,key:a,ref:s,props:o,_owner:l}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:f,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:c,_context:e},e.Consumer=e},t.createElement=T,t.createFactory=function(e){var t=T.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:d,render:e}},t.isValidElement=N,t.lazy=function(e){return{$$typeof:m,_ctor:e,_status:-1,_result:null}},t.memo=function(e,t){return{$$typeof:h,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return U().useCallback(e,t)},t.useContext=function(e,t){return U().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return U().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return U().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return U().useLayoutEffect(e,t)},t.useMemo=function(e,t){return U().useMemo(e,t)},t.useReducer=function(e,t,n){return U().useReducer(e,t,n)},t.useRef=function(e){return U().useRef(e)},t.useState=function(e){return U().useState(e)},t.version="16.13.1"},function(e,t,n){"use strict";var r=n(0),o=n(61),i=n(128);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(a(227));function s(e,t,n,r,o,i,a,s,l){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(e){this.onError(e)}}var l=!1,u=null,c=!1,f=null,d={onError:function(e){l=!0,u=e}};function p(e,t,n,r,o,i,a,c,f){l=!1,u=null,s.apply(d,arguments)}var h=null,m=null,v=null;function g(e,t,n){var r=e.type||"unknown-event";e.currentTarget=v(n),function(e,t,n,r,o,i,s,d,h){if(p.apply(this,arguments),l){if(!l)throw Error(a(198));var m=u;l=!1,u=null,c||(c=!0,f=m)}}(r,t,void 0,e),e.currentTarget=null}var y=null,b={};function _(){if(y)for(var e in b){var t=b[e],n=y.indexOf(e);if(!(-1<n))throw Error(a(96,e));if(!x[n]){if(!t.extractEvents)throw Error(a(97,e));for(var r in x[n]=t,n=t.eventTypes){var o=void 0,i=n[r],s=t,l=r;if(E.hasOwnProperty(l))throw Error(a(99,l));E[l]=i;var u=i.phasedRegistrationNames;if(u){for(o in u)u.hasOwnProperty(o)&&w(u[o],s,l);o=!0}else i.registrationName?(w(i.registrationName,s,l),o=!0):o=!1;if(!o)throw Error(a(98,r,e))}}}}function w(e,t,n){if(k[e])throw Error(a(100,e));k[e]=t,S[e]=t.eventTypes[n].dependencies}var x=[],E={},k={},S={};function O(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var r=e[t];if(!b.hasOwnProperty(t)||b[t]!==r){if(b[t])throw Error(a(102,t));b[t]=r,n=!0}}n&&_()}var T=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),N=null,C=null,P=null;function M(e){if(e=m(e)){if("function"!=typeof N)throw Error(a(280));var t=e.stateNode;t&&(t=h(t),N(e.stateNode,e.type,t))}}function j(e){C?P?P.push(e):P=[e]:C=e}function D(){if(C){var e=C,t=P;if(P=C=null,M(e),t)for(e=0;e<t.length;e++)M(t[e])}}function A(e,t){return e(t)}function I(e,t,n,r,o){return e(t,n,r,o)}function R(){}var z=A,F=!1,L=!1;function U(){null===C&&null===P||(R(),D())}function B(e,t,n){if(L)return e(t,n);L=!0;try{return z(e,t,n)}finally{L=!1,U()}}var H=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,V=Object.prototype.hasOwnProperty,W={},Y={};function $(e,t,n,r,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i}var q={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){q[e]=new $(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];q[t]=new $(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){q[e]=new $(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){q[e]=new $(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){q[e]=new $(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){q[e]=new $(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){q[e]=new $(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){q[e]=new $(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){q[e]=new $(e,5,!1,e.toLowerCase(),null,!1)}));var Q=/[\-:]([a-z])/g;function G(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(Q,G);q[t]=new $(t,1,!1,e,null,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(Q,G);q[t]=new $(t,1,!1,e,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(Q,G);q[t]=new $(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(e){q[e]=new $(e,1,!1,e.toLowerCase(),null,!1)})),q.xlinkHref=new $("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(e){q[e]=new $(e,1,!1,e.toLowerCase(),null,!0)}));var X=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function K(e,t,n,r){var o=q.hasOwnProperty(t)?q[t]:null;(null!==o?0===o.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!V.call(Y,e)||!V.call(W,e)&&(H.test(e)?Y[e]=!0:(W[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}X.hasOwnProperty("ReactCurrentDispatcher")||(X.ReactCurrentDispatcher={current:null}),X.hasOwnProperty("ReactCurrentBatchConfig")||(X.ReactCurrentBatchConfig={suspense:null});var J=/^(.*)[\\\/]/,Z="function"==typeof Symbol&&Symbol.for,ee=Z?Symbol.for("react.element"):60103,te=Z?Symbol.for("react.portal"):60106,ne=Z?Symbol.for("react.fragment"):60107,re=Z?Symbol.for("react.strict_mode"):60108,oe=Z?Symbol.for("react.profiler"):60114,ie=Z?Symbol.for("react.provider"):60109,ae=Z?Symbol.for("react.context"):60110,se=Z?Symbol.for("react.concurrent_mode"):60111,le=Z?Symbol.for("react.forward_ref"):60112,ue=Z?Symbol.for("react.suspense"):60113,ce=Z?Symbol.for("react.suspense_list"):60120,fe=Z?Symbol.for("react.memo"):60115,de=Z?Symbol.for("react.lazy"):60116,pe=Z?Symbol.for("react.block"):60121,he="function"==typeof Symbol&&Symbol.iterator;function me(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=he&&e[he]||e["@@iterator"])?e:null}function ve(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case ne:return"Fragment";case te:return"Portal";case oe:return"Profiler";case re:return"StrictMode";case ue:return"Suspense";case ce:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case ae:return"Context.Consumer";case ie:return"Context.Provider";case le:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case fe:return ve(e.type);case pe:return ve(e.render);case de:if(e=1===e._status?e._result:null)return ve(e)}return null}function ge(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var r=e._debugOwner,o=e._debugSource,i=ve(e.type);n=null,r&&(n=ve(r.type)),r=i,i="",o?i=" (at "+o.fileName.replace(J,"")+":"+o.lineNumber+")":n&&(i=" (created by "+n+")"),n="\n in "+(r||"Unknown")+i}t+=n,e=e.return}while(e);return t}function ye(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function be(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function _e(e){e._valueTracker||(e._valueTracker=function(e){var t=be(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function we(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=be(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function xe(e,t){var n=t.checked;return o({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=ye(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function ke(e,t){null!=(t=t.checked)&&K(e,"checked",t,!1)}function Se(e,t){ke(e,t);var n=ye(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?Te(e,t.type,n):t.hasOwnProperty("defaultValue")&&Te(e,t.type,ye(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Oe(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function Te(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function Ne(e,t){return e=o({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function Ce(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+ye(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function Pe(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return o({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Me(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(a(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(a(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:ye(n)}}function je(e,t){var n=ye(t.value),r=ye(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function De(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var Ae="http://www.w3.org/1999/xhtml",Ie="http://www.w3.org/2000/svg";function Re(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function ze(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?Re(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var Fe,Le,Ue=(Le=function(e,t){if(e.namespaceURI!==Ie||"innerHTML"in e)e.innerHTML=t;else{for((Fe=Fe||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=Fe.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return Le(e,t)}))}:Le);function Be(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}function He(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Ve={animationend:He("Animation","AnimationEnd"),animationiteration:He("Animation","AnimationIteration"),animationstart:He("Animation","AnimationStart"),transitionend:He("Transition","TransitionEnd")},We={},Ye={};function $e(e){if(We[e])return We[e];if(!Ve[e])return e;var t,n=Ve[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ye)return We[e]=n[t];return e}T&&(Ye=document.createElement("div").style,"AnimationEvent"in window||(delete Ve.animationend.animation,delete Ve.animationiteration.animation,delete Ve.animationstart.animation),"TransitionEvent"in window||delete Ve.transitionend.transition);var qe=$e("animationend"),Qe=$e("animationiteration"),Ge=$e("animationstart"),Xe=$e("transitionend"),Ke="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Je=new("function"==typeof WeakMap?WeakMap:Map);function Ze(e){var t=Je.get(e);return void 0===t&&(t=new Map,Je.set(e,t)),t}function et(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).effectTag)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function tt(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function nt(e){if(et(e)!==e)throw Error(a(188))}function rt(e){if(!(e=function(e){var t=e.alternate;if(!t){if(null===(t=et(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var i=o.alternate;if(null===i){if(null!==(r=o.return)){n=r;continue}break}if(o.child===i.child){for(i=o.child;i;){if(i===n)return nt(o),e;if(i===r)return nt(o),t;i=i.sibling}throw Error(a(188))}if(n.return!==r.return)n=o,r=i;else{for(var s=!1,l=o.child;l;){if(l===n){s=!0,n=o,r=i;break}if(l===r){s=!0,r=o,n=i;break}l=l.sibling}if(!s){for(l=i.child;l;){if(l===n){s=!0,n=i,r=o;break}if(l===r){s=!0,r=i,n=o;break}l=l.sibling}if(!s)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function ot(e,t){if(null==t)throw Error(a(30));return null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function it(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var at=null;function st(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var r=0;r<t.length&&!e.isPropagationStopped();r++)g(e,t[r],n[r]);else t&&g(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}function lt(e){if(null!==e&&(at=ot(at,e)),e=at,at=null,e){if(it(e,st),at)throw Error(a(95));if(c)throw e=f,c=!1,f=null,e}}function ut(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function ct(e){if(!T)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}var ft=[];function dt(e){e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,10>ft.length&&ft.push(e)}function pt(e,t,n,r){if(ft.length){var o=ft.pop();return o.topLevelType=e,o.eventSystemFlags=r,o.nativeEvent=t,o.targetInst=n,o}return{topLevelType:e,eventSystemFlags:r,nativeEvent:t,targetInst:n,ancestors:[]}}function ht(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r=n;if(3===r.tag)r=r.stateNode.containerInfo;else{for(;r.return;)r=r.return;r=3!==r.tag?null:r.stateNode.containerInfo}if(!r)break;5!==(t=n.tag)&&6!==t||e.ancestors.push(n),n=Mn(r)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var o=ut(e.nativeEvent);r=e.topLevelType;var i=e.nativeEvent,a=e.eventSystemFlags;0===n&&(a|=64);for(var s=null,l=0;l<x.length;l++){var u=x[l];u&&(u=u.extractEvents(r,t,i,o,a))&&(s=ot(s,u))}lt(s)}}function mt(e,t,n){if(!n.has(e)){switch(e){case"scroll":Gt(t,"scroll",!0);break;case"focus":case"blur":Gt(t,"focus",!0),Gt(t,"blur",!0),n.set("blur",null),n.set("focus",null);break;case"cancel":case"close":ct(e)&&Gt(t,e,!0);break;case"invalid":case"submit":case"reset":break;default:-1===Ke.indexOf(e)&&Qt(e,t)}n.set(e,null)}}var vt,gt,yt,bt=!1,_t=[],wt=null,xt=null,Et=null,kt=new Map,St=new Map,Ot=[],Tt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit".split(" "),Nt="focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture".split(" ");function Ct(e,t,n,r,o){return{blockedOn:e,topLevelType:t,eventSystemFlags:32|n,nativeEvent:o,container:r}}function Pt(e,t){switch(e){case"focus":case"blur":wt=null;break;case"dragenter":case"dragleave":xt=null;break;case"mouseover":case"mouseout":Et=null;break;case"pointerover":case"pointerout":kt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":St.delete(t.pointerId)}}function Mt(e,t,n,r,o,i){return null===e||e.nativeEvent!==i?(e=Ct(t,n,r,o,i),null!==t&&(null!==(t=jn(t))&>(t)),e):(e.eventSystemFlags|=r,e)}function jt(e){var t=Mn(e.target);if(null!==t){var n=et(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=tt(n)))return e.blockedOn=t,void i.unstable_runWithPriority(e.priority,(function(){yt(n)}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Dt(e){if(null!==e.blockedOn)return!1;var t=Zt(e.topLevelType,e.eventSystemFlags,e.container,e.nativeEvent);if(null!==t){var n=jn(t);return null!==n&>(n),e.blockedOn=t,!1}return!0}function At(e,t,n){Dt(e)&&n.delete(t)}function It(){for(bt=!1;0<_t.length;){var e=_t[0];if(null!==e.blockedOn){null!==(e=jn(e.blockedOn))&&vt(e);break}var t=Zt(e.topLevelType,e.eventSystemFlags,e.container,e.nativeEvent);null!==t?e.blockedOn=t:_t.shift()}null!==wt&&Dt(wt)&&(wt=null),null!==xt&&Dt(xt)&&(xt=null),null!==Et&&Dt(Et)&&(Et=null),kt.forEach(At),St.forEach(At)}function Rt(e,t){e.blockedOn===t&&(e.blockedOn=null,bt||(bt=!0,i.unstable_scheduleCallback(i.unstable_NormalPriority,It)))}function zt(e){function t(t){return Rt(t,e)}if(0<_t.length){Rt(_t[0],e);for(var n=1;n<_t.length;n++){var r=_t[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==wt&&Rt(wt,e),null!==xt&&Rt(xt,e),null!==Et&&Rt(Et,e),kt.forEach(t),St.forEach(t),n=0;n<Ot.length;n++)(r=Ot[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Ot.length&&null===(n=Ot[0]).blockedOn;)jt(n),null===n.blockedOn&&Ot.shift()}var Ft={},Lt=new Map,Ut=new Map,Bt=["abort","abort",qe,"animationEnd",Qe,"animationIteration",Ge,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Xe,"transitionEnd","waiting","waiting"];function Ht(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],o=e[n+1],i="on"+(o[0].toUpperCase()+o.slice(1));i={phasedRegistrationNames:{bubbled:i,captured:i+"Capture"},dependencies:[r],eventPriority:t},Ut.set(r,t),Lt.set(r,i),Ft[o]=i}}Ht("blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Ht("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Ht(Bt,2);for(var Vt="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Wt=0;Wt<Vt.length;Wt++)Ut.set(Vt[Wt],0);var Yt=i.unstable_UserBlockingPriority,$t=i.unstable_runWithPriority,qt=!0;function Qt(e,t){Gt(t,e,!1)}function Gt(e,t,n){var r=Ut.get(t);switch(void 0===r?2:r){case 0:r=Xt.bind(null,t,1,e);break;case 1:r=Kt.bind(null,t,1,e);break;default:r=Jt.bind(null,t,1,e)}n?e.addEventListener(t,r,!0):e.addEventListener(t,r,!1)}function Xt(e,t,n,r){F||R();var o=Jt,i=F;F=!0;try{I(o,e,t,n,r)}finally{(F=i)||U()}}function Kt(e,t,n,r){$t(Yt,Jt.bind(null,e,t,n,r))}function Jt(e,t,n,r){if(qt)if(0<_t.length&&-1<Tt.indexOf(e))e=Ct(null,e,t,n,r),_t.push(e);else{var o=Zt(e,t,n,r);if(null===o)Pt(e,r);else if(-1<Tt.indexOf(e))e=Ct(o,e,t,n,r),_t.push(e);else if(!function(e,t,n,r,o){switch(t){case"focus":return wt=Mt(wt,e,t,n,r,o),!0;case"dragenter":return xt=Mt(xt,e,t,n,r,o),!0;case"mouseover":return Et=Mt(Et,e,t,n,r,o),!0;case"pointerover":var i=o.pointerId;return kt.set(i,Mt(kt.get(i)||null,e,t,n,r,o)),!0;case"gotpointercapture":return i=o.pointerId,St.set(i,Mt(St.get(i)||null,e,t,n,r,o)),!0}return!1}(o,e,t,n,r)){Pt(e,r),e=pt(e,r,null,t);try{B(ht,e)}finally{dt(e)}}}}function Zt(e,t,n,r){if(null!==(n=Mn(n=ut(r)))){var o=et(n);if(null===o)n=null;else{var i=o.tag;if(13===i){if(null!==(n=tt(o)))return n;n=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;n=null}else o!==n&&(n=null)}}e=pt(e,r,n,t);try{B(ht,e)}finally{dt(e)}return null}var en={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},tn=["Webkit","ms","Moz","O"];function nn(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||en.hasOwnProperty(e)&&en[e]?(""+t).trim():t+"px"}function rn(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=nn(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(en).forEach((function(e){tn.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),en[t]=en[e]}))}));var on=o({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function an(e,t){if(t){if(on[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e,""));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(a(62,""))}}function sn(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ln=Ae;function un(e,t){var n=Ze(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=S[t];for(var r=0;r<t.length;r++)mt(t[r],e,n)}function cn(){}function fn(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function dn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pn(e,t){var n,r=dn(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=dn(r)}}function hn(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?hn(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function mn(){for(var e=window,t=fn();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=fn((e=t.contentWindow).document)}return t}function vn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var gn="$?",yn="$!",bn=null,_n=null;function wn(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function xn(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var En="function"==typeof setTimeout?setTimeout:void 0,kn="function"==typeof clearTimeout?clearTimeout:void 0;function Sn(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function On(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||n===yn||n===gn){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Tn=Math.random().toString(36).slice(2),Nn="__reactInternalInstance$"+Tn,Cn="__reactEventHandlers$"+Tn,Pn="__reactContainere$"+Tn;function Mn(e){var t=e[Nn];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Pn]||n[Nn]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=On(e);null!==e;){if(n=e[Nn])return n;e=On(e)}return t}n=(e=n).parentNode}return null}function jn(e){return!(e=e[Nn]||e[Pn])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function Dn(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function An(e){return e[Cn]||null}function In(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function Rn(e,t){var n=e.stateNode;if(!n)return null;var r=h(n);if(!r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(a(231,t,typeof n));return n}function zn(e,t,n){(t=Rn(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=ot(n._dispatchListeners,t),n._dispatchInstances=ot(n._dispatchInstances,e))}function Fn(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=In(t);for(t=n.length;0<t--;)zn(n[t],"captured",e);for(t=0;t<n.length;t++)zn(n[t],"bubbled",e)}}function Ln(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=Rn(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=ot(n._dispatchListeners,t),n._dispatchInstances=ot(n._dispatchInstances,e))}function Un(e){e&&e.dispatchConfig.registrationName&&Ln(e._targetInst,null,e)}function Bn(e){it(e,Fn)}var Hn=null,Vn=null,Wn=null;function Yn(){if(Wn)return Wn;var e,t,n=Vn,r=n.length,o="value"in Hn?Hn.value:Hn.textContent,i=o.length;for(e=0;e<r&&n[e]===o[e];e++);var a=r-e;for(t=1;t<=a&&n[r-t]===o[i-t];t++);return Wn=o.slice(e,1<t?1-t:void 0)}function $n(){return!0}function qn(){return!1}function Qn(e,t,n,r){for(var o in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(o)&&((t=e[o])?this[o]=t(n):"target"===o?this.target=r:this[o]=n[o]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?$n:qn,this.isPropagationStopped=qn,this}function Gn(e,t,n,r){if(this.eventPool.length){var o=this.eventPool.pop();return this.call(o,e,t,n,r),o}return new this(e,t,n,r)}function Xn(e){if(!(e instanceof this))throw Error(a(279));e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function Kn(e){e.eventPool=[],e.getPooled=Gn,e.release=Xn}o(Qn.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=$n)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=$n)},persist:function(){this.isPersistent=$n},isPersistent:qn,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=qn,this._dispatchInstances=this._dispatchListeners=null}}),Qn.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},Qn.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var i=new t;return o(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=o({},r.Interface,e),n.extend=r.extend,Kn(n),n},Kn(Qn);var Jn=Qn.extend({data:null}),Zn=Qn.extend({data:null}),er=[9,13,27,32],tr=T&&"CompositionEvent"in window,nr=null;T&&"documentMode"in document&&(nr=document.documentMode);var rr=T&&"TextEvent"in window&&!nr,or=T&&(!tr||nr&&8<nr&&11>=nr),ir=String.fromCharCode(32),ar={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},sr=!1;function lr(e,t){switch(e){case"keyup":return-1!==er.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function ur(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var cr=!1;var fr={eventTypes:ar,extractEvents:function(e,t,n,r){var o;if(tr)e:{switch(e){case"compositionstart":var i=ar.compositionStart;break e;case"compositionend":i=ar.compositionEnd;break e;case"compositionupdate":i=ar.compositionUpdate;break e}i=void 0}else cr?lr(e,n)&&(i=ar.compositionEnd):"keydown"===e&&229===n.keyCode&&(i=ar.compositionStart);return i?(or&&"ko"!==n.locale&&(cr||i!==ar.compositionStart?i===ar.compositionEnd&&cr&&(o=Yn()):(Vn="value"in(Hn=r)?Hn.value:Hn.textContent,cr=!0)),i=Jn.getPooled(i,t,n,r),o?i.data=o:null!==(o=ur(n))&&(i.data=o),Bn(i),o=i):o=null,(e=rr?function(e,t){switch(e){case"compositionend":return ur(t);case"keypress":return 32!==t.which?null:(sr=!0,ir);case"textInput":return(e=t.data)===ir&&sr?null:e;default:return null}}(e,n):function(e,t){if(cr)return"compositionend"===e||!tr&&lr(e,t)?(e=Yn(),Wn=Vn=Hn=null,cr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return or&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=Zn.getPooled(ar.beforeInput,t,n,r)).data=e,Bn(t)):t=null,null===o?t:null===t?o:[o,t]}},dr={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!dr[e.type]:"textarea"===t}var hr={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function mr(e,t,n){return(e=Qn.getPooled(hr.change,e,t,n)).type="change",j(n),Bn(e),e}var vr=null,gr=null;function yr(e){lt(e)}function br(e){if(we(Dn(e)))return e}function _r(e,t){if("change"===e)return t}var wr=!1;function xr(){vr&&(vr.detachEvent("onpropertychange",Er),gr=vr=null)}function Er(e){if("value"===e.propertyName&&br(gr))if(e=mr(gr,e,ut(e)),F)lt(e);else{F=!0;try{A(yr,e)}finally{F=!1,U()}}}function kr(e,t,n){"focus"===e?(xr(),gr=n,(vr=t).attachEvent("onpropertychange",Er)):"blur"===e&&xr()}function Sr(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return br(gr)}function Or(e,t){if("click"===e)return br(t)}function Tr(e,t){if("input"===e||"change"===e)return br(t)}T&&(wr=ct("input")&&(!document.documentMode||9<document.documentMode));var Nr={eventTypes:hr,_isInputEventSupported:wr,extractEvents:function(e,t,n,r){var o=t?Dn(t):window,i=o.nodeName&&o.nodeName.toLowerCase();if("select"===i||"input"===i&&"file"===o.type)var a=_r;else if(pr(o))if(wr)a=Tr;else{a=Sr;var s=kr}else(i=o.nodeName)&&"input"===i.toLowerCase()&&("checkbox"===o.type||"radio"===o.type)&&(a=Or);if(a&&(a=a(e,t)))return mr(a,n,r);s&&s(e,o,t),"blur"===e&&(e=o._wrapperState)&&e.controlled&&"number"===o.type&&Te(o,"number",o.value)}},Cr=Qn.extend({view:null,detail:null}),Pr={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Mr(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Pr[e])&&!!t[e]}function jr(){return Mr}var Dr=0,Ar=0,Ir=!1,Rr=!1,zr=Cr.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:jr,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=Dr;return Dr=e.screenX,Ir?"mousemove"===e.type?e.screenX-t:0:(Ir=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=Ar;return Ar=e.screenY,Rr?"mousemove"===e.type?e.screenY-t:0:(Rr=!0,0)}}),Fr=zr.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Lr={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Ur={eventTypes:Lr,extractEvents:function(e,t,n,r,o){var i="mouseover"===e||"pointerover"===e,a="mouseout"===e||"pointerout"===e;if(i&&0==(32&o)&&(n.relatedTarget||n.fromElement)||!a&&!i)return null;(i=r.window===r?r:(i=r.ownerDocument)?i.defaultView||i.parentWindow:window,a)?(a=t,null!==(t=(t=n.relatedTarget||n.toElement)?Mn(t):null)&&(t!==et(t)||5!==t.tag&&6!==t.tag)&&(t=null)):a=null;if(a===t)return null;if("mouseout"===e||"mouseover"===e)var s=zr,l=Lr.mouseLeave,u=Lr.mouseEnter,c="mouse";else"pointerout"!==e&&"pointerover"!==e||(s=Fr,l=Lr.pointerLeave,u=Lr.pointerEnter,c="pointer");if(e=null==a?i:Dn(a),i=null==t?i:Dn(t),(l=s.getPooled(l,a,n,r)).type=c+"leave",l.target=e,l.relatedTarget=i,(n=s.getPooled(u,t,n,r)).type=c+"enter",n.target=i,n.relatedTarget=e,c=t,(r=a)&&c)e:{for(u=c,a=0,e=s=r;e;e=In(e))a++;for(e=0,t=u;t;t=In(t))e++;for(;0<a-e;)s=In(s),a--;for(;0<e-a;)u=In(u),e--;for(;a--;){if(s===u||s===u.alternate)break e;s=In(s),u=In(u)}s=null}else s=null;for(u=s,s=[];r&&r!==u&&(null===(a=r.alternate)||a!==u);)s.push(r),r=In(r);for(r=[];c&&c!==u&&(null===(a=c.alternate)||a!==u);)r.push(c),c=In(c);for(c=0;c<s.length;c++)Ln(s[c],"bubbled",l);for(c=r.length;0<c--;)Ln(r[c],"captured",n);return 0==(64&o)?[l]:[l,n]}};var Br="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},Hr=Object.prototype.hasOwnProperty;function Vr(e,t){if(Br(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!Hr.call(t,n[r])||!Br(e[n[r]],t[n[r]]))return!1;return!0}var Wr=T&&"documentMode"in document&&11>=document.documentMode,Yr={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},$r=null,qr=null,Qr=null,Gr=!1;function Xr(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return Gr||null==$r||$r!==fn(n)?null:("selectionStart"in(n=$r)&&vn(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Qr&&Vr(Qr,n)?null:(Qr=n,(e=Qn.getPooled(Yr.select,qr,e,t)).type="select",e.target=$r,Bn(e),e))}var Kr={eventTypes:Yr,extractEvents:function(e,t,n,r,o,i){if(!(i=!(o=i||(r.window===r?r.document:9===r.nodeType?r:r.ownerDocument)))){e:{o=Ze(o),i=S.onSelect;for(var a=0;a<i.length;a++)if(!o.has(i[a])){o=!1;break e}o=!0}i=!o}if(i)return null;switch(o=t?Dn(t):window,e){case"focus":(pr(o)||"true"===o.contentEditable)&&($r=o,qr=t,Qr=null);break;case"blur":Qr=qr=$r=null;break;case"mousedown":Gr=!0;break;case"contextmenu":case"mouseup":case"dragend":return Gr=!1,Xr(n,r);case"selectionchange":if(Wr)break;case"keydown":case"keyup":return Xr(n,r)}return null}},Jr=Qn.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Zr=Qn.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),eo=Cr.extend({relatedTarget:null});function to(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var no={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},ro={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},oo=Cr.extend({key:function(e){if(e.key){var t=no[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=to(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?ro[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:jr,charCode:function(e){return"keypress"===e.type?to(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?to(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),io=zr.extend({dataTransfer:null}),ao=Cr.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:jr}),so=Qn.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),lo=zr.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),uo={eventTypes:Ft,extractEvents:function(e,t,n,r){var o=Lt.get(e);if(!o)return null;switch(e){case"keypress":if(0===to(n))return null;case"keydown":case"keyup":e=oo;break;case"blur":case"focus":e=eo;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=zr;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=io;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=ao;break;case qe:case Qe:case Ge:e=Jr;break;case Xe:e=so;break;case"scroll":e=Cr;break;case"wheel":e=lo;break;case"copy":case"cut":case"paste":e=Zr;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=Fr;break;default:e=Qn}return Bn(t=e.getPooled(o,t,n,r)),t}};if(y)throw Error(a(101));y=Array.prototype.slice.call("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),_(),h=An,m=jn,v=Dn,O({SimpleEventPlugin:uo,EnterLeaveEventPlugin:Ur,ChangeEventPlugin:Nr,SelectEventPlugin:Kr,BeforeInputEventPlugin:fr});var co=[],fo=-1;function po(e){0>fo||(e.current=co[fo],co[fo]=null,fo--)}function ho(e,t){fo++,co[fo]=e.current,e.current=t}var mo={},vo={current:mo},go={current:!1},yo=mo;function bo(e,t){var n=e.type.contextTypes;if(!n)return mo;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,i={};for(o in n)i[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function _o(e){return null!=(e=e.childContextTypes)}function wo(){po(go),po(vo)}function xo(e,t,n){if(vo.current!==mo)throw Error(a(168));ho(vo,t),ho(go,n)}function Eo(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var i in r=r.getChildContext())if(!(i in e))throw Error(a(108,ve(t)||"Unknown",i));return o({},n,{},r)}function ko(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||mo,yo=vo.current,ho(vo,e),ho(go,go.current),!0}function So(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=Eo(e,t,yo),r.__reactInternalMemoizedMergedChildContext=e,po(go),po(vo),ho(vo,e)):po(go),ho(go,n)}var Oo=i.unstable_runWithPriority,To=i.unstable_scheduleCallback,No=i.unstable_cancelCallback,Co=i.unstable_requestPaint,Po=i.unstable_now,Mo=i.unstable_getCurrentPriorityLevel,jo=i.unstable_ImmediatePriority,Do=i.unstable_UserBlockingPriority,Ao=i.unstable_NormalPriority,Io=i.unstable_LowPriority,Ro=i.unstable_IdlePriority,zo={},Fo=i.unstable_shouldYield,Lo=void 0!==Co?Co:function(){},Uo=null,Bo=null,Ho=!1,Vo=Po(),Wo=1e4>Vo?Po:function(){return Po()-Vo};function Yo(){switch(Mo()){case jo:return 99;case Do:return 98;case Ao:return 97;case Io:return 96;case Ro:return 95;default:throw Error(a(332))}}function $o(e){switch(e){case 99:return jo;case 98:return Do;case 97:return Ao;case 96:return Io;case 95:return Ro;default:throw Error(a(332))}}function qo(e,t){return e=$o(e),Oo(e,t)}function Qo(e,t,n){return e=$o(e),To(e,t,n)}function Go(e){return null===Uo?(Uo=[e],Bo=To(jo,Ko)):Uo.push(e),zo}function Xo(){if(null!==Bo){var e=Bo;Bo=null,No(e)}Ko()}function Ko(){if(!Ho&&null!==Uo){Ho=!0;var e=0;try{var t=Uo;qo(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Uo=null}catch(t){throw null!==Uo&&(Uo=Uo.slice(e+1)),To(jo,Xo),t}finally{Ho=!1}}}function Jo(e,t,n){return 1073741821-(1+((1073741821-e+t/10)/(n/=10)|0))*n}function Zo(e,t){if(e&&e.defaultProps)for(var n in t=o({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var ei={current:null},ti=null,ni=null,ri=null;function oi(){ri=ni=ti=null}function ii(e){var t=ei.current;po(ei),e.type._context._currentValue=t}function ai(e,t){for(;null!==e;){var n=e.alternate;if(e.childExpirationTime<t)e.childExpirationTime=t,null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t);else{if(!(null!==n&&n.childExpirationTime<t))break;n.childExpirationTime=t}e=e.return}}function si(e,t){ti=e,ri=ni=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(e.expirationTime>=t&&(Aa=!0),e.firstContext=null)}function li(e,t){if(ri!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(ri=e,t=1073741823),t={context:e,observedBits:t,next:null},null===ni){if(null===ti)throw Error(a(308));ni=t,ti.dependencies={expirationTime:0,firstContext:t,responders:null}}else ni=ni.next=t;return e._currentValue}var ui=!1;function ci(e){e.updateQueue={baseState:e.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}function fi(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,baseQueue:e.baseQueue,shared:e.shared,effects:e.effects})}function di(e,t){return(e={expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null}).next=e}function pi(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function hi(e,t){var n=e.alternate;null!==n&&fi(n,e),null===(n=(e=e.updateQueue).baseQueue)?(e.baseQueue=t.next=t,t.next=t):(t.next=n.next,n.next=t)}function mi(e,t,n,r){var i=e.updateQueue;ui=!1;var a=i.baseQueue,s=i.shared.pending;if(null!==s){if(null!==a){var l=a.next;a.next=s.next,s.next=l}a=s,i.shared.pending=null,null!==(l=e.alternate)&&(null!==(l=l.updateQueue)&&(l.baseQueue=s))}if(null!==a){l=a.next;var u=i.baseState,c=0,f=null,d=null,p=null;if(null!==l)for(var h=l;;){if((s=h.expirationTime)<r){var m={expirationTime:h.expirationTime,suspenseConfig:h.suspenseConfig,tag:h.tag,payload:h.payload,callback:h.callback,next:null};null===p?(d=p=m,f=u):p=p.next=m,s>c&&(c=s)}else{null!==p&&(p=p.next={expirationTime:1073741823,suspenseConfig:h.suspenseConfig,tag:h.tag,payload:h.payload,callback:h.callback,next:null}),pl(s,h.suspenseConfig);e:{var v=e,g=h;switch(s=t,m=n,g.tag){case 1:if("function"==typeof(v=g.payload)){u=v.call(m,u,s);break e}u=v;break e;case 3:v.effectTag=-4097&v.effectTag|64;case 0:if(null==(s="function"==typeof(v=g.payload)?v.call(m,u,s):v))break e;u=o({},u,s);break e;case 2:ui=!0}}null!==h.callback&&(e.effectTag|=32,null===(s=i.effects)?i.effects=[h]:s.push(h))}if(null===(h=h.next)||h===l){if(null===(s=i.shared.pending))break;h=a.next=s.next,s.next=l,i.baseQueue=a=s,i.shared.pending=null}}null===p?f=u:p.next=d,i.baseState=f,i.baseQueue=p,hl(c),e.expirationTime=c,e.memoizedState=u}}function vi(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=o,o=n,"function"!=typeof r)throw Error(a(191,r));r.call(o)}}}var gi=X.ReactCurrentBatchConfig,yi=(new r.Component).refs;function bi(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:o({},t,n),e.memoizedState=n,0===e.expirationTime&&(e.updateQueue.baseState=n)}var _i={isMounted:function(e){return!!(e=e._reactInternalFiber)&&et(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var r=el(),o=gi.suspense;(o=di(r=tl(r,e,o),o)).payload=t,null!=n&&(o.callback=n),pi(e,o),nl(e,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var r=el(),o=gi.suspense;(o=di(r=tl(r,e,o),o)).tag=1,o.payload=t,null!=n&&(o.callback=n),pi(e,o),nl(e,r)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=el(),r=gi.suspense;(r=di(n=tl(n,e,r),r)).tag=2,null!=t&&(r.callback=t),pi(e,r),nl(e,n)}};function wi(e,t,n,r,o,i,a){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,i,a):!t.prototype||!t.prototype.isPureReactComponent||(!Vr(n,r)||!Vr(o,i))}function xi(e,t,n){var r=!1,o=mo,i=t.contextType;return"object"==typeof i&&null!==i?i=li(i):(o=_o(t)?yo:vo.current,i=(r=null!=(r=t.contextTypes))?bo(e,o):mo),t=new t(n,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=_i,e.stateNode=t,t._reactInternalFiber=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=i),t}function Ei(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&_i.enqueueReplaceState(t,t.state,null)}function ki(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=yi,ci(e);var i=t.contextType;"object"==typeof i&&null!==i?o.context=li(i):(i=_o(t)?yo:vo.current,o.context=bo(e,i)),mi(e,n,o,r),o.state=e.memoizedState,"function"==typeof(i=t.getDerivedStateFromProps)&&(bi(e,t,i,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&_i.enqueueReplaceState(o,o.state,null),mi(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.effectTag|=4)}var Si=Array.isArray;function Oi(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var o=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===o?t.ref:((t=function(e){var t=r.refs;t===yi&&(t=r.refs={}),null===e?delete t[o]:t[o]=e})._stringRef=o,t)}if("string"!=typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function Ti(e,t){if("textarea"!==e.type)throw Error(a(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,""))}function Ni(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=Al(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.effectTag=2,n):r:(t.effectTag=2,n):n}function s(t){return e&&null===t.alternate&&(t.effectTag=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=zl(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=o(t,n.props)).ref=Oi(e,t,n),r.return=e,r):((r=Il(n.type,n.key,n.props,null,e.mode,r)).ref=Oi(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Fl(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function f(e,t,n,r,i){return null===t||7!==t.tag?((t=Rl(n,e.mode,r,i)).return=e,t):((t=o(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=zl(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case ee:return(n=Il(t.type,t.key,t.props,null,e.mode,n)).ref=Oi(e,null,t),n.return=e,n;case te:return(t=Fl(t,e.mode,n)).return=e,t}if(Si(t)||me(t))return(t=Rl(t,e.mode,n,null)).return=e,t;Ti(e,t)}return null}function p(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==o?null:l(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case ee:return n.key===o?n.type===ne?f(e,t,n.props.children,r,o):u(e,t,n,r):null;case te:return n.key===o?c(e,t,n,r):null}if(Si(n)||me(n))return null!==o?null:f(e,t,n,r,null);Ti(e,n)}return null}function h(e,t,n,r,o){if("string"==typeof r||"number"==typeof r)return l(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case ee:return e=e.get(null===r.key?n:r.key)||null,r.type===ne?f(t,e,r.props.children,o,r.key):u(t,e,r,o);case te:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o)}if(Si(r)||me(r))return f(t,e=e.get(n)||null,r,o,null);Ti(t,r)}return null}function m(o,a,s,l){for(var u=null,c=null,f=a,m=a=0,v=null;null!==f&&m<s.length;m++){f.index>m?(v=f,f=null):v=f.sibling;var g=p(o,f,s[m],l);if(null===g){null===f&&(f=v);break}e&&f&&null===g.alternate&&t(o,f),a=i(g,a,m),null===c?u=g:c.sibling=g,c=g,f=v}if(m===s.length)return n(o,f),u;if(null===f){for(;m<s.length;m++)null!==(f=d(o,s[m],l))&&(a=i(f,a,m),null===c?u=f:c.sibling=f,c=f);return u}for(f=r(o,f);m<s.length;m++)null!==(v=h(f,o,m,s[m],l))&&(e&&null!==v.alternate&&f.delete(null===v.key?m:v.key),a=i(v,a,m),null===c?u=v:c.sibling=v,c=v);return e&&f.forEach((function(e){return t(o,e)})),u}function v(o,s,l,u){var c=me(l);if("function"!=typeof c)throw Error(a(150));if(null==(l=c.call(l)))throw Error(a(151));for(var f=c=null,m=s,v=s=0,g=null,y=l.next();null!==m&&!y.done;v++,y=l.next()){m.index>v?(g=m,m=null):g=m.sibling;var b=p(o,m,y.value,u);if(null===b){null===m&&(m=g);break}e&&m&&null===b.alternate&&t(o,m),s=i(b,s,v),null===f?c=b:f.sibling=b,f=b,m=g}if(y.done)return n(o,m),c;if(null===m){for(;!y.done;v++,y=l.next())null!==(y=d(o,y.value,u))&&(s=i(y,s,v),null===f?c=y:f.sibling=y,f=y);return c}for(m=r(o,m);!y.done;v++,y=l.next())null!==(y=h(m,o,v,y.value,u))&&(e&&null!==y.alternate&&m.delete(null===y.key?v:y.key),s=i(y,s,v),null===f?c=y:f.sibling=y,f=y);return e&&m.forEach((function(e){return t(o,e)})),c}return function(e,r,i,l){var u="object"==typeof i&&null!==i&&i.type===ne&&null===i.key;u&&(i=i.props.children);var c="object"==typeof i&&null!==i;if(c)switch(i.$$typeof){case ee:e:{for(c=i.key,u=r;null!==u;){if(u.key===c){switch(u.tag){case 7:if(i.type===ne){n(e,u.sibling),(r=o(u,i.props.children)).return=e,e=r;break e}break;default:if(u.elementType===i.type){n(e,u.sibling),(r=o(u,i.props)).ref=Oi(e,u,i),r.return=e,e=r;break e}}n(e,u);break}t(e,u),u=u.sibling}i.type===ne?((r=Rl(i.props.children,e.mode,l,i.key)).return=e,e=r):((l=Il(i.type,i.key,i.props,null,e.mode,l)).ref=Oi(e,r,i),l.return=e,e=l)}return s(e);case te:e:{for(u=i.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===i.containerInfo&&r.stateNode.implementation===i.implementation){n(e,r.sibling),(r=o(r,i.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Fl(i,e.mode,l)).return=e,e=r}return s(e)}if("string"==typeof i||"number"==typeof i)return i=""+i,null!==r&&6===r.tag?(n(e,r.sibling),(r=o(r,i)).return=e,e=r):(n(e,r),(r=zl(i,e.mode,l)).return=e,e=r),s(e);if(Si(i))return m(e,r,i,l);if(me(i))return v(e,r,i,l);if(c&&Ti(e,i),void 0===i&&!u)switch(e.tag){case 1:case 0:throw e=e.type,Error(a(152,e.displayName||e.name||"Component"))}return n(e,r)}}var Ci=Ni(!0),Pi=Ni(!1),Mi={},ji={current:Mi},Di={current:Mi},Ai={current:Mi};function Ii(e){if(e===Mi)throw Error(a(174));return e}function Ri(e,t){switch(ho(Ai,t),ho(Di,e),ho(ji,Mi),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:ze(null,"");break;default:t=ze(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}po(ji),ho(ji,t)}function zi(){po(ji),po(Di),po(Ai)}function Fi(e){Ii(Ai.current);var t=Ii(ji.current),n=ze(t,e.type);t!==n&&(ho(Di,e),ho(ji,n))}function Li(e){Di.current===e&&(po(ji),po(Di))}var Ui={current:0};function Bi(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||n.data===gn||n.data===yn))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Hi(e,t){return{responder:e,props:t}}var Vi=X.ReactCurrentDispatcher,Wi=X.ReactCurrentBatchConfig,Yi=0,$i=null,qi=null,Qi=null,Gi=!1;function Xi(){throw Error(a(321))}function Ki(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Br(e[n],t[n]))return!1;return!0}function Ji(e,t,n,r,o,i){if(Yi=i,$i=t,t.memoizedState=null,t.updateQueue=null,t.expirationTime=0,Vi.current=null===e||null===e.memoizedState?wa:xa,e=n(r,o),t.expirationTime===Yi){i=0;do{if(t.expirationTime=0,!(25>i))throw Error(a(301));i+=1,Qi=qi=null,t.updateQueue=null,Vi.current=Ea,e=n(r,o)}while(t.expirationTime===Yi)}if(Vi.current=_a,t=null!==qi&&null!==qi.next,Yi=0,Qi=qi=$i=null,Gi=!1,t)throw Error(a(300));return e}function Zi(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Qi?$i.memoizedState=Qi=e:Qi=Qi.next=e,Qi}function ea(){if(null===qi){var e=$i.alternate;e=null!==e?e.memoizedState:null}else e=qi.next;var t=null===Qi?$i.memoizedState:Qi.next;if(null!==t)Qi=t,qi=e;else{if(null===e)throw Error(a(310));e={memoizedState:(qi=e).memoizedState,baseState:qi.baseState,baseQueue:qi.baseQueue,queue:qi.queue,next:null},null===Qi?$i.memoizedState=Qi=e:Qi=Qi.next=e}return Qi}function ta(e,t){return"function"==typeof t?t(e):t}function na(e){var t=ea(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=qi,o=r.baseQueue,i=n.pending;if(null!==i){if(null!==o){var s=o.next;o.next=i.next,i.next=s}r.baseQueue=o=i,n.pending=null}if(null!==o){o=o.next,r=r.baseState;var l=s=i=null,u=o;do{var c=u.expirationTime;if(c<Yi){var f={expirationTime:u.expirationTime,suspenseConfig:u.suspenseConfig,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===l?(s=l=f,i=r):l=l.next=f,c>$i.expirationTime&&($i.expirationTime=c,hl(c))}else null!==l&&(l=l.next={expirationTime:1073741823,suspenseConfig:u.suspenseConfig,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),pl(c,u.suspenseConfig),r=u.eagerReducer===e?u.eagerState:e(r,u.action);u=u.next}while(null!==u&&u!==o);null===l?i=r:l.next=s,Br(r,t.memoizedState)||(Aa=!0),t.memoizedState=r,t.baseState=i,t.baseQueue=l,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function ra(e){var t=ea(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,i=t.memoizedState;if(null!==o){n.pending=null;var s=o=o.next;do{i=e(i,s.action),s=s.next}while(s!==o);Br(i,t.memoizedState)||(Aa=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function oa(e){var t=Zi();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ta,lastRenderedState:e}).dispatch=ba.bind(null,$i,e),[t.memoizedState,e]}function ia(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=$i.updateQueue)?(t={lastEffect:null},$i.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function aa(){return ea().memoizedState}function sa(e,t,n,r){var o=Zi();$i.effectTag|=e,o.memoizedState=ia(1|t,n,void 0,void 0===r?null:r)}function la(e,t,n,r){var o=ea();r=void 0===r?null:r;var i=void 0;if(null!==qi){var a=qi.memoizedState;if(i=a.destroy,null!==r&&Ki(r,a.deps))return void ia(t,n,i,r)}$i.effectTag|=e,o.memoizedState=ia(1|t,n,i,r)}function ua(e,t){return sa(516,4,e,t)}function ca(e,t){return la(516,4,e,t)}function fa(e,t){return la(4,2,e,t)}function da(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function pa(e,t,n){return n=null!=n?n.concat([e]):null,la(4,2,da.bind(null,t,e),n)}function ha(){}function ma(e,t){return Zi().memoizedState=[e,void 0===t?null:t],e}function va(e,t){var n=ea();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Ki(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function ga(e,t){var n=ea();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Ki(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function ya(e,t,n){var r=Yo();qo(98>r?98:r,(function(){e(!0)})),qo(97<r?97:r,(function(){var r=Wi.suspense;Wi.suspense=void 0===t?null:t;try{e(!1),n()}finally{Wi.suspense=r}}))}function ba(e,t,n){var r=el(),o=gi.suspense;o={expirationTime:r=tl(r,e,o),suspenseConfig:o,action:n,eagerReducer:null,eagerState:null,next:null};var i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===$i||null!==i&&i===$i)Gi=!0,o.expirationTime=Yi,$i.expirationTime=Yi;else{if(0===e.expirationTime&&(null===i||0===i.expirationTime)&&null!==(i=t.lastRenderedReducer))try{var a=t.lastRenderedState,s=i(a,n);if(o.eagerReducer=i,o.eagerState=s,Br(s,a))return}catch(e){}nl(e,r)}}var _a={readContext:li,useCallback:Xi,useContext:Xi,useEffect:Xi,useImperativeHandle:Xi,useLayoutEffect:Xi,useMemo:Xi,useReducer:Xi,useRef:Xi,useState:Xi,useDebugValue:Xi,useResponder:Xi,useDeferredValue:Xi,useTransition:Xi},wa={readContext:li,useCallback:ma,useContext:li,useEffect:ua,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,sa(4,2,da.bind(null,t,e),n)},useLayoutEffect:function(e,t){return sa(4,2,e,t)},useMemo:function(e,t){var n=Zi();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Zi();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=ba.bind(null,$i,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Zi().memoizedState=e},useState:oa,useDebugValue:ha,useResponder:Hi,useDeferredValue:function(e,t){var n=oa(e),r=n[0],o=n[1];return ua((function(){var n=Wi.suspense;Wi.suspense=void 0===t?null:t;try{o(e)}finally{Wi.suspense=n}}),[e,t]),r},useTransition:function(e){var t=oa(!1),n=t[0];return t=t[1],[ma(ya.bind(null,t,e),[t,e]),n]}},xa={readContext:li,useCallback:va,useContext:li,useEffect:ca,useImperativeHandle:pa,useLayoutEffect:fa,useMemo:ga,useReducer:na,useRef:aa,useState:function(){return na(ta)},useDebugValue:ha,useResponder:Hi,useDeferredValue:function(e,t){var n=na(ta),r=n[0],o=n[1];return ca((function(){var n=Wi.suspense;Wi.suspense=void 0===t?null:t;try{o(e)}finally{Wi.suspense=n}}),[e,t]),r},useTransition:function(e){var t=na(ta),n=t[0];return t=t[1],[va(ya.bind(null,t,e),[t,e]),n]}},Ea={readContext:li,useCallback:va,useContext:li,useEffect:ca,useImperativeHandle:pa,useLayoutEffect:fa,useMemo:ga,useReducer:ra,useRef:aa,useState:function(){return ra(ta)},useDebugValue:ha,useResponder:Hi,useDeferredValue:function(e,t){var n=ra(ta),r=n[0],o=n[1];return ca((function(){var n=Wi.suspense;Wi.suspense=void 0===t?null:t;try{o(e)}finally{Wi.suspense=n}}),[e,t]),r},useTransition:function(e){var t=ra(ta),n=t[0];return t=t[1],[va(ya.bind(null,t,e),[t,e]),n]}},ka=null,Sa=null,Oa=!1;function Ta(e,t){var n=jl(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Na(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function Ca(e){if(Oa){var t=Sa;if(t){var n=t;if(!Na(e,t)){if(!(t=Sn(n.nextSibling))||!Na(e,t))return e.effectTag=-1025&e.effectTag|2,Oa=!1,void(ka=e);Ta(ka,n)}ka=e,Sa=Sn(t.firstChild)}else e.effectTag=-1025&e.effectTag|2,Oa=!1,ka=e}}function Pa(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;ka=e}function Ma(e){if(e!==ka)return!1;if(!Oa)return Pa(e),Oa=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!xn(t,e.memoizedProps))for(t=Sa;t;)Ta(e,t),t=Sn(t.nextSibling);if(Pa(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Sa=Sn(e.nextSibling);break e}t--}else"$"!==n&&n!==yn&&n!==gn||t++}e=e.nextSibling}Sa=null}}else Sa=ka?Sn(e.stateNode.nextSibling):null;return!0}function ja(){Sa=ka=null,Oa=!1}var Da=X.ReactCurrentOwner,Aa=!1;function Ia(e,t,n,r){t.child=null===e?Pi(t,null,n,r):Ci(t,e.child,n,r)}function Ra(e,t,n,r,o){n=n.render;var i=t.ref;return si(t,o),r=Ji(e,t,n,r,i,o),null===e||Aa?(t.effectTag|=1,Ia(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=o&&(e.expirationTime=0),Ja(e,t,o))}function za(e,t,n,r,o,i){if(null===e){var a=n.type;return"function"!=typeof a||Dl(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Il(n.type,null,r,null,t.mode,i)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Fa(e,t,a,r,o,i))}return a=e.child,o<i&&(o=a.memoizedProps,(n=null!==(n=n.compare)?n:Vr)(o,r)&&e.ref===t.ref)?Ja(e,t,i):(t.effectTag|=1,(e=Al(a,r)).ref=t.ref,e.return=t,t.child=e)}function Fa(e,t,n,r,o,i){return null!==e&&Vr(e.memoizedProps,r)&&e.ref===t.ref&&(Aa=!1,o<i)?(t.expirationTime=e.expirationTime,Ja(e,t,i)):Ua(e,t,n,r,i)}function La(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function Ua(e,t,n,r,o){var i=_o(n)?yo:vo.current;return i=bo(t,i),si(t,o),n=Ji(e,t,n,r,i,o),null===e||Aa?(t.effectTag|=1,Ia(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=o&&(e.expirationTime=0),Ja(e,t,o))}function Ba(e,t,n,r,o){if(_o(n)){var i=!0;ko(t)}else i=!1;if(si(t,o),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),xi(t,n,r),ki(t,n,r,o),r=!0;else if(null===e){var a=t.stateNode,s=t.memoizedProps;a.props=s;var l=a.context,u=n.contextType;"object"==typeof u&&null!==u?u=li(u):u=bo(t,u=_o(n)?yo:vo.current);var c=n.getDerivedStateFromProps,f="function"==typeof c||"function"==typeof a.getSnapshotBeforeUpdate;f||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==r||l!==u)&&Ei(t,a,r,u),ui=!1;var d=t.memoizedState;a.state=d,mi(t,r,a,o),l=t.memoizedState,s!==r||d!==l||go.current||ui?("function"==typeof c&&(bi(t,n,c,r),l=t.memoizedState),(s=ui||wi(t,n,s,r,d,l,u))?(f||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.effectTag|=4)):("function"==typeof a.componentDidMount&&(t.effectTag|=4),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=u,r=s):("function"==typeof a.componentDidMount&&(t.effectTag|=4),r=!1)}else a=t.stateNode,fi(e,t),s=t.memoizedProps,a.props=t.type===t.elementType?s:Zo(t.type,s),l=a.context,"object"==typeof(u=n.contextType)&&null!==u?u=li(u):u=bo(t,u=_o(n)?yo:vo.current),(f="function"==typeof(c=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==r||l!==u)&&Ei(t,a,r,u),ui=!1,l=t.memoizedState,a.state=l,mi(t,r,a,o),d=t.memoizedState,s!==r||l!==d||go.current||ui?("function"==typeof c&&(bi(t,n,c,r),d=t.memoizedState),(c=ui||wi(t,n,s,r,l,d,u))?(f||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,d,u),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,d,u)),"function"==typeof a.componentDidUpdate&&(t.effectTag|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),t.memoizedProps=r,t.memoizedState=d),a.props=r,a.state=d,a.context=u,r=c):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),r=!1);return Ha(e,t,n,r,i,o)}function Ha(e,t,n,r,o,i){La(e,t);var a=0!=(64&t.effectTag);if(!r&&!a)return o&&So(t,n,!1),Ja(e,t,i);r=t.stateNode,Da.current=t;var s=a&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.effectTag|=1,null!==e&&a?(t.child=Ci(t,e.child,null,i),t.child=Ci(t,null,s,i)):Ia(e,t,s,i),t.memoizedState=r.state,o&&So(t,n,!0),t.child}function Va(e){var t=e.stateNode;t.pendingContext?xo(0,t.pendingContext,t.pendingContext!==t.context):t.context&&xo(0,t.context,!1),Ri(e,t.containerInfo)}var Wa,Ya,$a,qa={dehydrated:null,retryTime:0};function Qa(e,t,n){var r,o=t.mode,i=t.pendingProps,a=Ui.current,s=!1;if((r=0!=(64&t.effectTag))||(r=0!=(2&a)&&(null===e||null!==e.memoizedState)),r?(s=!0,t.effectTag&=-65):null!==e&&null===e.memoizedState||void 0===i.fallback||!0===i.unstable_avoidThisFallback||(a|=1),ho(Ui,1&a),null===e){if(void 0!==i.fallback&&Ca(t),s){if(s=i.fallback,(i=Rl(null,o,0,null)).return=t,0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,i.child=e;null!==e;)e.return=i,e=e.sibling;return(n=Rl(s,o,n,null)).return=t,i.sibling=n,t.memoizedState=qa,t.child=i,n}return o=i.children,t.memoizedState=null,t.child=Pi(t,null,o,n)}if(null!==e.memoizedState){if(o=(e=e.child).sibling,s){if(i=i.fallback,(n=Al(e,e.pendingProps)).return=t,0==(2&t.mode)&&(s=null!==t.memoizedState?t.child.child:t.child)!==e.child)for(n.child=s;null!==s;)s.return=n,s=s.sibling;return(o=Al(o,i)).return=t,n.sibling=o,n.childExpirationTime=0,t.memoizedState=qa,t.child=n,o}return n=Ci(t,e.child,i.children,n),t.memoizedState=null,t.child=n}if(e=e.child,s){if(s=i.fallback,(i=Rl(null,o,0,null)).return=t,i.child=e,null!==e&&(e.return=i),0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,i.child=e;null!==e;)e.return=i,e=e.sibling;return(n=Rl(s,o,n,null)).return=t,i.sibling=n,n.effectTag|=2,i.childExpirationTime=0,t.memoizedState=qa,t.child=i,n}return t.memoizedState=null,t.child=Ci(t,e,i.children,n)}function Ga(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t),ai(e.return,t)}function Xa(e,t,n,r,o,i){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailExpiration:0,tailMode:o,lastEffect:i}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailExpiration=0,a.tailMode=o,a.lastEffect=i)}function Ka(e,t,n){var r=t.pendingProps,o=r.revealOrder,i=r.tail;if(Ia(e,t,r.children,n),0!=(2&(r=Ui.current)))r=1&r|2,t.effectTag|=64;else{if(null!==e&&0!=(64&e.effectTag))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Ga(e,n);else if(19===e.tag)Ga(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ho(Ui,r),0==(2&t.mode))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===Bi(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Xa(t,!1,o,n,i,t.lastEffect);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===Bi(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Xa(t,!0,n,null,i,t.lastEffect);break;case"together":Xa(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function Ja(e,t,n){null!==e&&(t.dependencies=e.dependencies);var r=t.expirationTime;if(0!==r&&hl(r),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Al(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Al(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Za(e,t){switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function es(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return _o(t.type)&&wo(),null;case 3:return zi(),po(go),po(vo),(n=t.stateNode).pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),null!==e&&null!==e.child||!Ma(t)||(t.effectTag|=4),null;case 5:Li(t),n=Ii(Ai.current);var i=t.type;if(null!==e&&null!=t.stateNode)Ya(e,t,i,r,n),e.ref!==t.ref&&(t.effectTag|=128);else{if(!r){if(null===t.stateNode)throw Error(a(166));return null}if(e=Ii(ji.current),Ma(t)){r=t.stateNode,i=t.type;var s=t.memoizedProps;switch(r[Nn]=t,r[Cn]=s,i){case"iframe":case"object":case"embed":Qt("load",r);break;case"video":case"audio":for(e=0;e<Ke.length;e++)Qt(Ke[e],r);break;case"source":Qt("error",r);break;case"img":case"image":case"link":Qt("error",r),Qt("load",r);break;case"form":Qt("reset",r),Qt("submit",r);break;case"details":Qt("toggle",r);break;case"input":Ee(r,s),Qt("invalid",r),un(n,"onChange");break;case"select":r._wrapperState={wasMultiple:!!s.multiple},Qt("invalid",r),un(n,"onChange");break;case"textarea":Me(r,s),Qt("invalid",r),un(n,"onChange")}for(var l in an(i,s),e=null,s)if(s.hasOwnProperty(l)){var u=s[l];"children"===l?"string"==typeof u?r.textContent!==u&&(e=["children",u]):"number"==typeof u&&r.textContent!==""+u&&(e=["children",""+u]):k.hasOwnProperty(l)&&null!=u&&un(n,l)}switch(i){case"input":_e(r),Oe(r,s,!0);break;case"textarea":_e(r),De(r);break;case"select":case"option":break;default:"function"==typeof s.onClick&&(r.onclick=cn)}n=e,t.updateQueue=n,null!==n&&(t.effectTag|=4)}else{switch(l=9===n.nodeType?n:n.ownerDocument,e===ln&&(e=Re(i)),e===ln?"script"===i?((e=l.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=l.createElement(i,{is:r.is}):(e=l.createElement(i),"select"===i&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,i),e[Nn]=t,e[Cn]=r,Wa(e,t),t.stateNode=e,l=sn(i,r),i){case"iframe":case"object":case"embed":Qt("load",e),u=r;break;case"video":case"audio":for(u=0;u<Ke.length;u++)Qt(Ke[u],e);u=r;break;case"source":Qt("error",e),u=r;break;case"img":case"image":case"link":Qt("error",e),Qt("load",e),u=r;break;case"form":Qt("reset",e),Qt("submit",e),u=r;break;case"details":Qt("toggle",e),u=r;break;case"input":Ee(e,r),u=xe(e,r),Qt("invalid",e),un(n,"onChange");break;case"option":u=Ne(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},u=o({},r,{value:void 0}),Qt("invalid",e),un(n,"onChange");break;case"textarea":Me(e,r),u=Pe(e,r),Qt("invalid",e),un(n,"onChange");break;default:u=r}an(i,u);var c=u;for(s in c)if(c.hasOwnProperty(s)){var f=c[s];"style"===s?rn(e,f):"dangerouslySetInnerHTML"===s?null!=(f=f?f.__html:void 0)&&Ue(e,f):"children"===s?"string"==typeof f?("textarea"!==i||""!==f)&&Be(e,f):"number"==typeof f&&Be(e,""+f):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(k.hasOwnProperty(s)?null!=f&&un(n,s):null!=f&&K(e,s,f,l))}switch(i){case"input":_e(e),Oe(e,r,!1);break;case"textarea":_e(e),De(e);break;case"option":null!=r.value&&e.setAttribute("value",""+ye(r.value));break;case"select":e.multiple=!!r.multiple,null!=(n=r.value)?Ce(e,!!r.multiple,n,!1):null!=r.defaultValue&&Ce(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof u.onClick&&(e.onclick=cn)}wn(i,r)&&(t.effectTag|=4)}null!==t.ref&&(t.effectTag|=128)}return null;case 6:if(e&&null!=t.stateNode)$a(0,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(a(166));n=Ii(Ai.current),Ii(ji.current),Ma(t)?(n=t.stateNode,r=t.memoizedProps,n[Nn]=t,n.nodeValue!==r&&(t.effectTag|=4)):((n=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Nn]=t,t.stateNode=n)}return null;case 13:return po(Ui),r=t.memoizedState,0!=(64&t.effectTag)?(t.expirationTime=n,t):(n=null!==r,r=!1,null===e?void 0!==t.memoizedProps.fallback&&Ma(t):(r=null!==(i=e.memoizedState),n||null===i||null!==(i=e.child.sibling)&&(null!==(s=t.firstEffect)?(t.firstEffect=i,i.nextEffect=s):(t.firstEffect=t.lastEffect=i,i.nextEffect=null),i.effectTag=8)),n&&!r&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Ui.current)?Is===Ns&&(Is=Cs):(Is!==Ns&&Is!==Cs||(Is=Ps),0!==Us&&null!==js&&(Bl(js,As),Hl(js,Us)))),(n||r)&&(t.effectTag|=4),null);case 4:return zi(),null;case 10:return ii(t),null;case 17:return _o(t.type)&&wo(),null;case 19:if(po(Ui),null===(r=t.memoizedState))return null;if(i=0!=(64&t.effectTag),null===(s=r.rendering)){if(i)Za(r,!1);else if(Is!==Ns||null!==e&&0!=(64&e.effectTag))for(s=t.child;null!==s;){if(null!==(e=Bi(s))){for(t.effectTag|=64,Za(r,!1),null!==(i=e.updateQueue)&&(t.updateQueue=i,t.effectTag|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=t.child;null!==r;)s=n,(i=r).effectTag&=2,i.nextEffect=null,i.firstEffect=null,i.lastEffect=null,null===(e=i.alternate)?(i.childExpirationTime=0,i.expirationTime=s,i.child=null,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null):(i.childExpirationTime=e.childExpirationTime,i.expirationTime=e.expirationTime,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,s=e.dependencies,i.dependencies=null===s?null:{expirationTime:s.expirationTime,firstContext:s.firstContext,responders:s.responders}),r=r.sibling;return ho(Ui,1&Ui.current|2),t.child}s=s.sibling}}else{if(!i)if(null!==(e=Bi(s))){if(t.effectTag|=64,i=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.effectTag|=4),Za(r,!0),null===r.tail&&"hidden"===r.tailMode&&!s.alternate)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Wo()-r.renderingStartTime>r.tailExpiration&&1<n&&(t.effectTag|=64,i=!0,Za(r,!1),t.expirationTime=t.childExpirationTime=n-1);r.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=r.last)?n.sibling=s:t.child=s,r.last=s)}return null!==r.tail?(0===r.tailExpiration&&(r.tailExpiration=Wo()+500),n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Wo(),n.sibling=null,t=Ui.current,ho(Ui,i?1&t|2:1&t),n):null}throw Error(a(156,t.tag))}function ts(e){switch(e.tag){case 1:_o(e.type)&&wo();var t=e.effectTag;return 4096&t?(e.effectTag=-4097&t|64,e):null;case 3:if(zi(),po(go),po(vo),0!=(64&(t=e.effectTag)))throw Error(a(285));return e.effectTag=-4097&t|64,e;case 5:return Li(e),null;case 13:return po(Ui),4096&(t=e.effectTag)?(e.effectTag=-4097&t|64,e):null;case 19:return po(Ui),null;case 4:return zi(),null;case 10:return ii(e),null;default:return null}}function ns(e,t){return{value:e,source:t,stack:ge(t)}}Wa=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Ya=function(e,t,n,r,i){var a=e.memoizedProps;if(a!==r){var s,l,u=t.stateNode;switch(Ii(ji.current),e=null,n){case"input":a=xe(u,a),r=xe(u,r),e=[];break;case"option":a=Ne(u,a),r=Ne(u,r),e=[];break;case"select":a=o({},a,{value:void 0}),r=o({},r,{value:void 0}),e=[];break;case"textarea":a=Pe(u,a),r=Pe(u,r),e=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(u.onclick=cn)}for(s in an(n,r),n=null,a)if(!r.hasOwnProperty(s)&&a.hasOwnProperty(s)&&null!=a[s])if("style"===s)for(l in u=a[s])u.hasOwnProperty(l)&&(n||(n={}),n[l]="");else"dangerouslySetInnerHTML"!==s&&"children"!==s&&"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(k.hasOwnProperty(s)?e||(e=[]):(e=e||[]).push(s,null));for(s in r){var c=r[s];if(u=null!=a?a[s]:void 0,r.hasOwnProperty(s)&&c!==u&&(null!=c||null!=u))if("style"===s)if(u){for(l in u)!u.hasOwnProperty(l)||c&&c.hasOwnProperty(l)||(n||(n={}),n[l]="");for(l in c)c.hasOwnProperty(l)&&u[l]!==c[l]&&(n||(n={}),n[l]=c[l])}else n||(e||(e=[]),e.push(s,n)),n=c;else"dangerouslySetInnerHTML"===s?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(e=e||[]).push(s,c)):"children"===s?u===c||"string"!=typeof c&&"number"!=typeof c||(e=e||[]).push(s,""+c):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&(k.hasOwnProperty(s)?(null!=c&&un(i,s),e||u===c||(e=[])):(e=e||[]).push(s,c))}n&&(e=e||[]).push("style",n),i=e,(t.updateQueue=i)&&(t.effectTag|=4)}},$a=function(e,t,n,r){n!==r&&(t.effectTag|=4)};var rs="function"==typeof WeakSet?WeakSet:Set;function os(e,t){var n=t.source,r=t.stack;null===r&&null!==n&&(r=ge(n)),null!==n&&ve(n.type),t=t.value,null!==e&&1===e.tag&&ve(e.type);try{console.error(t)}catch(e){setTimeout((function(){throw e}))}}function is(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(t){Ol(e,t)}else t.current=null}function as(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(256&t.effectTag&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Zo(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(a(163))}function ss(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.destroy;n.destroy=void 0,void 0!==r&&r()}n=n.next}while(n!==t)}}function ls(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function us(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:return void ls(3,n);case 1:if(e=n.stateNode,4&n.effectTag)if(null===t)e.componentDidMount();else{var r=n.elementType===n.type?t.memoizedProps:Zo(n.type,t.memoizedProps);e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate)}return void(null!==(t=n.updateQueue)&&vi(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:e=n.child.stateNode;break;case 1:e=n.child.stateNode}vi(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.effectTag&&wn(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&zt(n)))));case 19:case 17:case 20:case 21:return}throw Error(a(163))}function cs(e,t,n){switch("function"==typeof Pl&&Pl(t),t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var r=e.next;qo(97<n?97:n,(function(){var e=r;do{var n=e.destroy;if(void 0!==n){var o=t;try{n()}catch(e){Ol(o,e)}}e=e.next}while(e!==r)}))}break;case 1:is(t),"function"==typeof(n=t.stateNode).componentWillUnmount&&function(e,t){try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(t){Ol(e,t)}}(t,n);break;case 5:is(t);break;case 4:vs(e,t,n)}}function fs(e){var t=e.alternate;e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.alternate=null,e.firstEffect=null,e.lastEffect=null,e.pendingProps=null,e.memoizedProps=null,e.stateNode=null,null!==t&&fs(t)}function ds(e){return 5===e.tag||3===e.tag||4===e.tag}function ps(e){e:{for(var t=e.return;null!==t;){if(ds(t)){var n=t;break e}t=t.return}throw Error(a(160))}switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(a(161))}16&n.effectTag&&(Be(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ds(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}r?hs(e,n,t):ms(e,n,t)}function hs(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=cn));else if(4!==r&&null!==(e=e.child))for(hs(e,t,n),e=e.sibling;null!==e;)hs(e,t,n),e=e.sibling}function ms(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(ms(e,t,n),e=e.sibling;null!==e;)ms(e,t,n),e=e.sibling}function vs(e,t,n){for(var r,o,i=t,s=!1;;){if(!s){s=i.return;e:for(;;){if(null===s)throw Error(a(160));switch(r=s.stateNode,s.tag){case 5:o=!1;break e;case 3:case 4:r=r.containerInfo,o=!0;break e}s=s.return}s=!0}if(5===i.tag||6===i.tag){e:for(var l=e,u=i,c=n,f=u;;)if(cs(l,f,c),null!==f.child&&4!==f.tag)f.child.return=f,f=f.child;else{if(f===u)break e;for(;null===f.sibling;){if(null===f.return||f.return===u)break e;f=f.return}f.sibling.return=f.return,f=f.sibling}o?(l=r,u=i.stateNode,8===l.nodeType?l.parentNode.removeChild(u):l.removeChild(u)):r.removeChild(i.stateNode)}else if(4===i.tag){if(null!==i.child){r=i.stateNode.containerInfo,o=!0,i.child.return=i,i=i.child;continue}}else if(cs(e,i,n),null!==i.child){i.child.return=i,i=i.child;continue}if(i===t)break;for(;null===i.sibling;){if(null===i.return||i.return===t)return;4===(i=i.return).tag&&(s=!1)}i.sibling.return=i.return,i=i.sibling}}function gs(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:return void ss(3,t);case 1:return;case 5:var n=t.stateNode;if(null!=n){var r=t.memoizedProps,o=null!==e?e.memoizedProps:r;e=t.type;var i=t.updateQueue;if(t.updateQueue=null,null!==i){for(n[Cn]=r,"input"===e&&"radio"===r.type&&null!=r.name&&ke(n,r),sn(e,o),t=sn(e,r),o=0;o<i.length;o+=2){var s=i[o],l=i[o+1];"style"===s?rn(n,l):"dangerouslySetInnerHTML"===s?Ue(n,l):"children"===s?Be(n,l):K(n,s,l,t)}switch(e){case"input":Se(n,r);break;case"textarea":je(n,r);break;case"select":t=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(e=r.value)?Ce(n,!!r.multiple,e,!1):t!==!!r.multiple&&(null!=r.defaultValue?Ce(n,!!r.multiple,r.defaultValue,!0):Ce(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(a(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((t=t.stateNode).hydrate&&(t.hydrate=!1,zt(t.containerInfo)));case 12:return;case 13:if(n=t,null===t.memoizedState?r=!1:(r=!0,n=t.child,Hs=Wo()),null!==n)e:for(e=n;;){if(5===e.tag)i=e.stateNode,r?"function"==typeof(i=i.style).setProperty?i.setProperty("display","none","important"):i.display="none":(i=e.stateNode,o=null!=(o=e.memoizedProps.style)&&o.hasOwnProperty("display")?o.display:null,i.style.display=nn("display",o));else if(6===e.tag)e.stateNode.nodeValue=r?"":e.memoizedProps;else{if(13===e.tag&&null!==e.memoizedState&&null===e.memoizedState.dehydrated){(i=e.child.sibling).return=e,e=i;continue}if(null!==e.child){e.child.return=e,e=e.child;continue}}if(e===n)break;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}return void ys(t);case 19:return void ys(t);case 17:return}throw Error(a(163))}function ys(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new rs),t.forEach((function(t){var r=Nl.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}var bs="function"==typeof WeakMap?WeakMap:Map;function _s(e,t,n){(n=di(n,null)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Ws||(Ws=!0,Ys=r),os(e,t)},n}function ws(e,t,n){(n=di(n,null)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return os(e,t),r(o)}}var i=e.stateNode;return null!==i&&"function"==typeof i.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===$s?$s=new Set([this]):$s.add(this),os(e,t));var n=t.stack;this.componentDidCatch(t.value,{componentStack:null!==n?n:""})}),n}var xs,Es=Math.ceil,ks=X.ReactCurrentDispatcher,Ss=X.ReactCurrentOwner,Os=16,Ts=32,Ns=0,Cs=3,Ps=4,Ms=0,js=null,Ds=null,As=0,Is=Ns,Rs=null,zs=1073741823,Fs=1073741823,Ls=null,Us=0,Bs=!1,Hs=0,Vs=null,Ws=!1,Ys=null,$s=null,qs=!1,Qs=null,Gs=90,Xs=null,Ks=0,Js=null,Zs=0;function el(){return 0!=(48&Ms)?1073741821-(Wo()/10|0):0!==Zs?Zs:Zs=1073741821-(Wo()/10|0)}function tl(e,t,n){if(0==(2&(t=t.mode)))return 1073741823;var r=Yo();if(0==(4&t))return 99===r?1073741823:1073741822;if(0!=(Ms&Os))return As;if(null!==n)e=Jo(e,0|n.timeoutMs||5e3,250);else switch(r){case 99:e=1073741823;break;case 98:e=Jo(e,150,100);break;case 97:case 96:e=Jo(e,5e3,250);break;case 95:e=2;break;default:throw Error(a(326))}return null!==js&&e===As&&--e,e}function nl(e,t){if(50<Ks)throw Ks=0,Js=null,Error(a(185));if(null!==(e=rl(e,t))){var n=Yo();1073741823===t?0!=(8&Ms)&&0==(48&Ms)?sl(e):(il(e),0===Ms&&Xo()):il(e),0==(4&Ms)||98!==n&&99!==n||(null===Xs?Xs=new Map([[e,t]]):(void 0===(n=Xs.get(e))||n>t)&&Xs.set(e,t))}}function rl(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var r=e.return,o=null;if(null===r&&3===e.tag)o=e.stateNode;else for(;null!==r;){if(n=r.alternate,r.childExpirationTime<t&&(r.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===r.return&&3===r.tag){o=r.stateNode;break}r=r.return}return null!==o&&(js===o&&(hl(t),Is===Ps&&Bl(o,As)),Hl(o,t)),o}function ol(e){var t=e.lastExpiredTime;if(0!==t)return t;if(!Ul(e,t=e.firstPendingTime))return t;var n=e.lastPingedTime;return 2>=(e=n>(e=e.nextKnownPendingLevel)?n:e)&&t!==e?0:e}function il(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=Go(sl.bind(null,e));else{var t=ol(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=el();if(1073741823===t?r=99:1===t||2===t?r=95:r=0>=(r=10*(1073741821-t)-10*(1073741821-r))?99:250>=r?98:5250>=r?97:95,null!==n){var o=e.callbackPriority;if(e.callbackExpirationTime===t&&o>=r)return;n!==zo&&No(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?Go(sl.bind(null,e)):Qo(r,al.bind(null,e),{timeout:10*(1073741821-t)-Wo()}),e.callbackNode=t}}}function al(e,t){if(Zs=0,t)return Vl(e,t=el()),il(e),null;var n=ol(e);if(0!==n){if(t=e.callbackNode,0!=(48&Ms))throw Error(a(327));if(El(),e===js&&n===As||cl(e,n),null!==Ds){var r=Ms;Ms|=Os;for(var o=dl();;)try{vl();break}catch(t){fl(e,t)}if(oi(),Ms=r,ks.current=o,1===Is)throw t=Rs,cl(e,n),Bl(e,n),il(e),t;if(null===Ds)switch(o=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,r=Is,js=null,r){case Ns:case 1:throw Error(a(345));case 2:Vl(e,2<n?2:n);break;case Cs:if(Bl(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=bl(o)),1073741823===zs&&10<(o=Hs+500-Wo())){if(Bs){var i=e.lastPingedTime;if(0===i||i>=n){e.lastPingedTime=n,cl(e,n);break}}if(0!==(i=ol(e))&&i!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}e.timeoutHandle=En(_l.bind(null,e),o);break}_l(e);break;case Ps:if(Bl(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=bl(o)),Bs&&(0===(o=e.lastPingedTime)||o>=n)){e.lastPingedTime=n,cl(e,n);break}if(0!==(o=ol(e))&&o!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}if(1073741823!==Fs?r=10*(1073741821-Fs)-Wo():1073741823===zs?r=0:(r=10*(1073741821-zs)-5e3,0>(r=(o=Wo())-r)&&(r=0),(n=10*(1073741821-n)-o)<(r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Es(r/1960))-r)&&(r=n)),10<r){e.timeoutHandle=En(_l.bind(null,e),r);break}_l(e);break;case 5:if(1073741823!==zs&&null!==Ls){i=zs;var s=Ls;if(0>=(r=0|s.busyMinDurationMs)?r=0:(o=0|s.busyDelayMs,r=(i=Wo()-(10*(1073741821-i)-(0|s.timeoutMs||5e3)))<=o?0:o+r-i),10<r){Bl(e,n),e.timeoutHandle=En(_l.bind(null,e),r);break}}_l(e);break;default:throw Error(a(329))}if(il(e),e.callbackNode===t)return al.bind(null,e)}}return null}function sl(e){var t=e.lastExpiredTime;if(t=0!==t?t:1073741823,0!=(48&Ms))throw Error(a(327));if(El(),e===js&&t===As||cl(e,t),null!==Ds){var n=Ms;Ms|=Os;for(var r=dl();;)try{ml();break}catch(t){fl(e,t)}if(oi(),Ms=n,ks.current=r,1===Is)throw n=Rs,cl(e,t),Bl(e,t),il(e),n;if(null!==Ds)throw Error(a(261));e.finishedWork=e.current.alternate,e.finishedExpirationTime=t,js=null,_l(e),il(e)}return null}function ll(e,t){var n=Ms;Ms|=1;try{return e(t)}finally{0===(Ms=n)&&Xo()}}function ul(e,t){var n=Ms;Ms&=-2,Ms|=8;try{return e(t)}finally{0===(Ms=n)&&Xo()}}function cl(e,t){e.finishedWork=null,e.finishedExpirationTime=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,kn(n)),null!==Ds)for(n=Ds.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&wo();break;case 3:zi(),po(go),po(vo);break;case 5:Li(r);break;case 4:zi();break;case 13:case 19:po(Ui);break;case 10:ii(r)}n=n.return}js=e,Ds=Al(e.current,null),As=t,Is=Ns,Rs=null,Fs=zs=1073741823,Ls=null,Us=0,Bs=!1}function fl(e,t){for(;;){try{if(oi(),Vi.current=_a,Gi)for(var n=$i.memoizedState;null!==n;){var r=n.queue;null!==r&&(r.pending=null),n=n.next}if(Yi=0,Qi=qi=$i=null,Gi=!1,null===Ds||null===Ds.return)return Is=1,Rs=t,Ds=null;e:{var o=e,i=Ds.return,a=Ds,s=t;if(t=As,a.effectTag|=2048,a.firstEffect=a.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var l=s;if(0==(2&a.mode)){var u=a.alternate;u?(a.updateQueue=u.updateQueue,a.memoizedState=u.memoizedState,a.expirationTime=u.expirationTime):(a.updateQueue=null,a.memoizedState=null)}var c=0!=(1&Ui.current),f=i;do{var d;if(d=13===f.tag){var p=f.memoizedState;if(null!==p)d=null!==p.dehydrated;else{var h=f.memoizedProps;d=void 0!==h.fallback&&(!0!==h.unstable_avoidThisFallback||!c)}}if(d){var m=f.updateQueue;if(null===m){var v=new Set;v.add(l),f.updateQueue=v}else m.add(l);if(0==(2&f.mode)){if(f.effectTag|=64,a.effectTag&=-2981,1===a.tag)if(null===a.alternate)a.tag=17;else{var g=di(1073741823,null);g.tag=2,pi(a,g)}a.expirationTime=1073741823;break e}s=void 0,a=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new bs,s=new Set,y.set(l,s)):void 0===(s=y.get(l))&&(s=new Set,y.set(l,s)),!s.has(a)){s.add(a);var b=Tl.bind(null,o,l,a);l.then(b,b)}f.effectTag|=4096,f.expirationTime=t;break e}f=f.return}while(null!==f);s=Error((ve(a.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+ge(a))}5!==Is&&(Is=2),s=ns(s,a),f=i;do{switch(f.tag){case 3:l=s,f.effectTag|=4096,f.expirationTime=t,hi(f,_s(f,l,t));break e;case 1:l=s;var _=f.type,w=f.stateNode;if(0==(64&f.effectTag)&&("function"==typeof _.getDerivedStateFromError||null!==w&&"function"==typeof w.componentDidCatch&&(null===$s||!$s.has(w)))){f.effectTag|=4096,f.expirationTime=t,hi(f,ws(f,l,t));break e}}f=f.return}while(null!==f)}Ds=yl(Ds)}catch(e){t=e;continue}break}}function dl(){var e=ks.current;return ks.current=_a,null===e?_a:e}function pl(e,t){e<zs&&2<e&&(zs=e),null!==t&&e<Fs&&2<e&&(Fs=e,Ls=t)}function hl(e){e>Us&&(Us=e)}function ml(){for(;null!==Ds;)Ds=gl(Ds)}function vl(){for(;null!==Ds&&!Fo();)Ds=gl(Ds)}function gl(e){var t=xs(e.alternate,e,As);return e.memoizedProps=e.pendingProps,null===t&&(t=yl(e)),Ss.current=null,t}function yl(e){Ds=e;do{var t=Ds.alternate;if(e=Ds.return,0==(2048&Ds.effectTag)){if(t=es(t,Ds,As),1===As||1!==Ds.childExpirationTime){for(var n=0,r=Ds.child;null!==r;){var o=r.expirationTime,i=r.childExpirationTime;o>n&&(n=o),i>n&&(n=i),r=r.sibling}Ds.childExpirationTime=n}if(null!==t)return t;null!==e&&0==(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=Ds.firstEffect),null!==Ds.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=Ds.firstEffect),e.lastEffect=Ds.lastEffect),1<Ds.effectTag&&(null!==e.lastEffect?e.lastEffect.nextEffect=Ds:e.firstEffect=Ds,e.lastEffect=Ds))}else{if(null!==(t=ts(Ds)))return t.effectTag&=2047,t;null!==e&&(e.firstEffect=e.lastEffect=null,e.effectTag|=2048)}if(null!==(t=Ds.sibling))return t;Ds=e}while(null!==Ds);return Is===Ns&&(Is=5),null}function bl(e){var t=e.expirationTime;return t>(e=e.childExpirationTime)?t:e}function _l(e){var t=Yo();return qo(99,wl.bind(null,e,t)),null}function wl(e,t){do{El()}while(null!==Qs);if(0!=(48&Ms))throw Error(a(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var o=bl(n);if(e.firstPendingTime=o,r<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:r<=e.firstSuspendedTime&&(e.firstSuspendedTime=r-1),r<=e.lastPingedTime&&(e.lastPingedTime=0),r<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===js&&(Ds=js=null,As=0),1<n.effectTag?null!==n.lastEffect?(n.lastEffect.nextEffect=n,o=n.firstEffect):o=n:o=n.firstEffect,null!==o){var i=Ms;Ms|=Ts,Ss.current=null,bn=qt;var s=mn();if(vn(s)){if("selectionStart"in s)var l={start:s.selectionStart,end:s.selectionEnd};else e:{var u=(l=(l=s.ownerDocument)&&l.defaultView||window).getSelection&&l.getSelection();if(u&&0!==u.rangeCount){l=u.anchorNode;var c=u.anchorOffset,f=u.focusNode;u=u.focusOffset;try{l.nodeType,f.nodeType}catch(e){l=null;break e}var d=0,p=-1,h=-1,m=0,v=0,g=s,y=null;t:for(;;){for(var b;g!==l||0!==c&&3!==g.nodeType||(p=d+c),g!==f||0!==u&&3!==g.nodeType||(h=d+u),3===g.nodeType&&(d+=g.nodeValue.length),null!==(b=g.firstChild);)y=g,g=b;for(;;){if(g===s)break t;if(y===l&&++m===c&&(p=d),y===f&&++v===u&&(h=d),null!==(b=g.nextSibling))break;y=(g=y).parentNode}g=b}l=-1===p||-1===h?null:{start:p,end:h}}else l=null}l=l||{start:0,end:0}}else l=null;_n={activeElementDetached:null,focusedElem:s,selectionRange:l},qt=!1,Vs=o;do{try{xl()}catch(e){if(null===Vs)throw Error(a(330));Ol(Vs,e),Vs=Vs.nextEffect}}while(null!==Vs);Vs=o;do{try{for(s=e,l=t;null!==Vs;){var _=Vs.effectTag;if(16&_&&Be(Vs.stateNode,""),128&_){var w=Vs.alternate;if(null!==w){var x=w.ref;null!==x&&("function"==typeof x?x(null):x.current=null)}}switch(1038&_){case 2:ps(Vs),Vs.effectTag&=-3;break;case 6:ps(Vs),Vs.effectTag&=-3,gs(Vs.alternate,Vs);break;case 1024:Vs.effectTag&=-1025;break;case 1028:Vs.effectTag&=-1025,gs(Vs.alternate,Vs);break;case 4:gs(Vs.alternate,Vs);break;case 8:vs(s,c=Vs,l),fs(c)}Vs=Vs.nextEffect}}catch(e){if(null===Vs)throw Error(a(330));Ol(Vs,e),Vs=Vs.nextEffect}}while(null!==Vs);if(x=_n,w=mn(),_=x.focusedElem,l=x.selectionRange,w!==_&&_&&_.ownerDocument&&hn(_.ownerDocument.documentElement,_)){null!==l&&vn(_)&&(w=l.start,void 0===(x=l.end)&&(x=w),"selectionStart"in _?(_.selectionStart=w,_.selectionEnd=Math.min(x,_.value.length)):(x=(w=_.ownerDocument||document)&&w.defaultView||window).getSelection&&(x=x.getSelection(),c=_.textContent.length,s=Math.min(l.start,c),l=void 0===l.end?s:Math.min(l.end,c),!x.extend&&s>l&&(c=l,l=s,s=c),c=pn(_,s),f=pn(_,l),c&&f&&(1!==x.rangeCount||x.anchorNode!==c.node||x.anchorOffset!==c.offset||x.focusNode!==f.node||x.focusOffset!==f.offset)&&((w=w.createRange()).setStart(c.node,c.offset),x.removeAllRanges(),s>l?(x.addRange(w),x.extend(f.node,f.offset)):(w.setEnd(f.node,f.offset),x.addRange(w))))),w=[];for(x=_;x=x.parentNode;)1===x.nodeType&&w.push({element:x,left:x.scrollLeft,top:x.scrollTop});for("function"==typeof _.focus&&_.focus(),_=0;_<w.length;_++)(x=w[_]).element.scrollLeft=x.left,x.element.scrollTop=x.top}qt=!!bn,_n=bn=null,e.current=n,Vs=o;do{try{for(_=e;null!==Vs;){var E=Vs.effectTag;if(36&E&&us(_,Vs.alternate,Vs),128&E){w=void 0;var k=Vs.ref;if(null!==k){var S=Vs.stateNode;switch(Vs.tag){case 5:w=S;break;default:w=S}"function"==typeof k?k(w):k.current=w}}Vs=Vs.nextEffect}}catch(e){if(null===Vs)throw Error(a(330));Ol(Vs,e),Vs=Vs.nextEffect}}while(null!==Vs);Vs=null,Lo(),Ms=i}else e.current=n;if(qs)qs=!1,Qs=e,Gs=t;else for(Vs=o;null!==Vs;)t=Vs.nextEffect,Vs.nextEffect=null,Vs=t;if(0===(t=e.firstPendingTime)&&($s=null),1073741823===t?e===Js?Ks++:(Ks=0,Js=e):Ks=0,"function"==typeof Cl&&Cl(n.stateNode,r),il(e),Ws)throw Ws=!1,e=Ys,Ys=null,e;return 0!=(8&Ms)||Xo(),null}function xl(){for(;null!==Vs;){var e=Vs.effectTag;0!=(256&e)&&as(Vs.alternate,Vs),0==(512&e)||qs||(qs=!0,Qo(97,(function(){return El(),null}))),Vs=Vs.nextEffect}}function El(){if(90!==Gs){var e=97<Gs?97:Gs;return Gs=90,qo(e,kl)}}function kl(){if(null===Qs)return!1;var e=Qs;if(Qs=null,0!=(48&Ms))throw Error(a(331));var t=Ms;for(Ms|=Ts,e=e.current.firstEffect;null!==e;){try{var n=e;if(0!=(512&n.effectTag))switch(n.tag){case 0:case 11:case 15:case 22:ss(5,n),ls(5,n)}}catch(t){if(null===e)throw Error(a(330));Ol(e,t)}n=e.nextEffect,e.nextEffect=null,e=n}return Ms=t,Xo(),!0}function Sl(e,t,n){pi(e,t=_s(e,t=ns(n,t),1073741823)),null!==(e=rl(e,1073741823))&&il(e)}function Ol(e,t){if(3===e.tag)Sl(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Sl(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===$s||!$s.has(r))){pi(n,e=ws(n,e=ns(t,e),1073741823)),null!==(n=rl(n,1073741823))&&il(n);break}}n=n.return}}function Tl(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),js===e&&As===n?Is===Ps||Is===Cs&&1073741823===zs&&Wo()-Hs<500?cl(e,As):Bs=!0:Ul(e,n)&&(0!==(t=e.lastPingedTime)&&t<n||(e.lastPingedTime=n,il(e)))}function Nl(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(t=tl(t=el(),e,null)),null!==(e=rl(e,t))&&il(e)}xs=function(e,t,n){var r=t.expirationTime;if(null!==e){var o=t.pendingProps;if(e.memoizedProps!==o||go.current)Aa=!0;else{if(r<n){switch(Aa=!1,t.tag){case 3:Va(t),ja();break;case 5:if(Fi(t),4&t.mode&&1!==n&&o.hidden)return t.expirationTime=t.childExpirationTime=1,null;break;case 1:_o(t.type)&&ko(t);break;case 4:Ri(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value,o=t.type._context,ho(ei,o._currentValue),o._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!==(r=t.child.childExpirationTime)&&r>=n?Qa(e,t,n):(ho(Ui,1&Ui.current),null!==(t=Ja(e,t,n))?t.sibling:null);ho(Ui,1&Ui.current);break;case 19:if(r=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(r)return Ka(e,t,n);t.effectTag|=64}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null),ho(Ui,Ui.current),!r)return null}return Ja(e,t,n)}Aa=!1}}else Aa=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,o=bo(t,vo.current),si(t,n),o=Ji(null,t,r,e,o,n),t.effectTag|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,_o(r)){var i=!0;ko(t)}else i=!1;t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,ci(t);var s=r.getDerivedStateFromProps;"function"==typeof s&&bi(t,r,s,e),o.updater=_i,t.stateNode=o,o._reactInternalFiber=t,ki(t,r,e,n),t=Ha(null,t,r,!0,i,n)}else t.tag=0,Ia(null,t,o,n),t=t.child;return t;case 16:e:{if(o=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(o),1!==o._status)throw o._result;switch(o=o._result,t.type=o,i=t.tag=function(e){if("function"==typeof e)return Dl(e)?1:0;if(null!=e){if((e=e.$$typeof)===le)return 11;if(e===fe)return 14}return 2}(o),e=Zo(o,e),i){case 0:t=Ua(null,t,o,e,n);break e;case 1:t=Ba(null,t,o,e,n);break e;case 11:t=Ra(null,t,o,e,n);break e;case 14:t=za(null,t,o,Zo(o.type,e),r,n);break e}throw Error(a(306,o,""))}return t;case 0:return r=t.type,o=t.pendingProps,Ua(e,t,r,o=t.elementType===r?o:Zo(r,o),n);case 1:return r=t.type,o=t.pendingProps,Ba(e,t,r,o=t.elementType===r?o:Zo(r,o),n);case 3:if(Va(t),r=t.updateQueue,null===e||null===r)throw Error(a(282));if(r=t.pendingProps,o=null!==(o=t.memoizedState)?o.element:null,fi(e,t),mi(t,r,null,n),(r=t.memoizedState.element)===o)ja(),t=Ja(e,t,n);else{if((o=t.stateNode.hydrate)&&(Sa=Sn(t.stateNode.containerInfo.firstChild),ka=t,o=Oa=!0),o)for(n=Pi(t,null,r,n),t.child=n;n;)n.effectTag=-3&n.effectTag|1024,n=n.sibling;else Ia(e,t,r,n),ja();t=t.child}return t;case 5:return Fi(t),null===e&&Ca(t),r=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,s=o.children,xn(r,o)?s=null:null!==i&&xn(r,i)&&(t.effectTag|=16),La(e,t),4&t.mode&&1!==n&&o.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Ia(e,t,s,n),t=t.child),t;case 6:return null===e&&Ca(t),null;case 13:return Qa(e,t,n);case 4:return Ri(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Ci(t,null,r,n):Ia(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,Ra(e,t,r,o=t.elementType===r?o:Zo(r,o),n);case 7:return Ia(e,t,t.pendingProps,n),t.child;case 8:case 12:return Ia(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,o=t.pendingProps,s=t.memoizedProps,i=o.value;var l=t.type._context;if(ho(ei,l._currentValue),l._currentValue=i,null!==s)if(l=s.value,0===(i=Br(l,i)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(l,i):1073741823))){if(s.children===o.children&&!go.current){t=Ja(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var u=l.dependencies;if(null!==u){s=l.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&i)){1===l.tag&&((c=di(n,null)).tag=2,pi(l,c)),l.expirationTime<n&&(l.expirationTime=n),null!==(c=l.alternate)&&c.expirationTime<n&&(c.expirationTime=n),ai(l.return,n),u.expirationTime<n&&(u.expirationTime=n);break}c=c.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}Ia(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=(i=t.pendingProps).children,si(t,n),r=r(o=li(o,i.unstable_observedBits)),t.effectTag|=1,Ia(e,t,r,n),t.child;case 14:return i=Zo(o=t.type,t.pendingProps),za(e,t,o,i=Zo(o.type,i),r,n);case 15:return Fa(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Zo(r,o),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,_o(r)?(e=!0,ko(t)):e=!1,si(t,n),xi(t,r,o),ki(t,r,o,n),Ha(null,t,r,!0,e,n);case 19:return Ka(e,t,n)}throw Error(a(156,t.tag))};var Cl=null,Pl=null;function Ml(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function jl(e,t,n,r){return new Ml(e,t,n,r)}function Dl(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Al(e,t){var n=e.alternate;return null===n?((n=jl(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{expirationTime:t.expirationTime,firstContext:t.firstContext,responders:t.responders},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Il(e,t,n,r,o,i){var s=2;if(r=e,"function"==typeof e)Dl(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case ne:return Rl(n.children,o,i,t);case se:s=8,o|=7;break;case re:s=8,o|=1;break;case oe:return(e=jl(12,n,t,8|o)).elementType=oe,e.type=oe,e.expirationTime=i,e;case ue:return(e=jl(13,n,t,o)).type=ue,e.elementType=ue,e.expirationTime=i,e;case ce:return(e=jl(19,n,t,o)).elementType=ce,e.expirationTime=i,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case ie:s=10;break e;case ae:s=9;break e;case le:s=11;break e;case fe:s=14;break e;case de:s=16,r=null;break e;case pe:s=22;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=jl(s,n,t,o)).elementType=e,t.type=r,t.expirationTime=i,t}function Rl(e,t,n,r){return(e=jl(7,e,r,t)).expirationTime=n,e}function zl(e,t,n){return(e=jl(6,e,null,t)).expirationTime=n,e}function Fl(e,t,n){return(t=jl(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Ll(e,t,n){this.tag=t,this.current=null,this.containerInfo=e,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Ul(e,t){var n=e.firstSuspendedTime;return e=e.lastSuspendedTime,0!==n&&n>=t&&e<=t}function Bl(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;n<t&&(e.firstSuspendedTime=t),(r>t||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function Hl(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function Vl(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Wl(e,t,n,r){var o=t.current,i=el(),s=gi.suspense;i=tl(i,o,s);e:if(n){t:{if(et(n=n._reactInternalFiber)!==n||1!==n.tag)throw Error(a(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(_o(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw Error(a(171))}if(1===n.tag){var u=n.type;if(_o(u)){n=Eo(n,u,l);break e}}n=l}else n=mo;return null===t.context?t.context=n:t.pendingContext=n,(t=di(i,s)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),pi(o,t),nl(o,i),i}function Yl(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function $l(e,t){null!==(e=e.memoizedState)&&null!==e.dehydrated&&e.retryTime<t&&(e.retryTime=t)}function ql(e,t){$l(e,t),(e=e.alternate)&&$l(e,t)}function Ql(e,t,n){var r=new Ll(e,t,n=null!=n&&!0===n.hydrate),o=jl(3,null,null,2===t?7:1===t?3:0);r.current=o,o.stateNode=r,ci(o),e[Pn]=r.current,n&&0!==t&&function(e,t){var n=Ze(t);Tt.forEach((function(e){mt(e,t,n)})),Nt.forEach((function(e){mt(e,t,n)}))}(0,9===e.nodeType?e:e.ownerDocument),this._internalRoot=r}function Gl(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Xl(e,t,n,r,o){var i=n._reactRootContainer;if(i){var a=i._internalRoot;if("function"==typeof o){var s=o;o=function(){var e=Yl(a);s.call(e)}}Wl(t,a,e,o)}else{if(i=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new Ql(e,0,t?{hydrate:!0}:void 0)}(n,r),a=i._internalRoot,"function"==typeof o){var l=o;o=function(){var e=Yl(a);l.call(e)}}ul((function(){Wl(t,a,e,o)}))}return Yl(a)}function Kl(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:te,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function Jl(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Gl(t))throw Error(a(200));return Kl(e,t,null,n)}Ql.prototype.render=function(e){Wl(e,this._internalRoot,null,null)},Ql.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Wl(null,e,null,(function(){t[Pn]=null}))},vt=function(e){if(13===e.tag){var t=Jo(el(),150,100);nl(e,t),ql(e,t)}},gt=function(e){13===e.tag&&(nl(e,3),ql(e,3))},yt=function(e){if(13===e.tag){var t=el();nl(e,t=tl(t,e,null)),ql(e,t)}},N=function(e,t,n){switch(t){case"input":if(Se(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=An(r);if(!o)throw Error(a(90));we(r),Se(r,o)}}}break;case"textarea":je(e,n);break;case"select":null!=(t=n.value)&&Ce(e,!!n.multiple,t,!1)}},A=ll,I=function(e,t,n,r,o){var i=Ms;Ms|=4;try{return qo(98,e.bind(null,t,n,r,o))}finally{0===(Ms=i)&&Xo()}},R=function(){0==(49&Ms)&&(function(){if(null!==Xs){var e=Xs;Xs=null,e.forEach((function(e,t){Vl(t,e),il(t)})),Xo()}}(),El())},z=function(e,t){var n=Ms;Ms|=2;try{return e(t)}finally{0===(Ms=n)&&Xo()}};var Zl={Events:[jn,Dn,An,O,E,Bn,function(e){it(e,Un)},j,D,Jt,lt,El,{current:!1}]};!function(e){var t=e.findFiberByHostInstance;(function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);Cl=function(e){try{t.onCommitFiberRoot(n,e,void 0,64==(64&e.current.effectTag))}catch(e){}},Pl=function(e){try{t.onCommitFiberUnmount(n,e)}catch(e){}}}catch(e){}})(o({},e,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:X.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=rt(e))?null:e.stateNode},findFiberByHostInstance:function(e){return t?t(e):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))}({findFiberByHostInstance:Mn,bundleType:0,version:"16.13.1",rendererPackageName:"react-dom"}),t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Zl,t.createPortal=Jl,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw Error(a(268,Object.keys(e)))}return e=null===(e=rt(t))?null:e.stateNode},t.flushSync=function(e,t){if(0!=(48&Ms))throw Error(a(187));var n=Ms;Ms|=1;try{return qo(99,e.bind(null,t))}finally{Ms=n,Xo()}},t.hydrate=function(e,t,n){if(!Gl(t))throw Error(a(200));return Xl(null,e,t,!0,n)},t.render=function(e,t,n){if(!Gl(t))throw Error(a(200));return Xl(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Gl(e))throw Error(a(40));return!!e._reactRootContainer&&(ul((function(){Xl(null,null,e,!1,(function(){e._reactRootContainer=null,e[Pn]=null}))})),!0)},t.unstable_batchedUpdates=ll,t.unstable_createPortal=function(e,t){return Jl(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Gl(n))throw Error(a(200));if(null==e||void 0===e._reactInternalFiber)throw Error(a(38));return Xl(e,t,n,!1,r)},t.version="16.13.1"},function(e,t,n){"use strict";e.exports=n(129)},function(e,t,n){"use strict";var r,o,i,a,s;if("undefined"==typeof window||"function"!=typeof MessageChannel){var l=null,u=null,c=function(){if(null!==l)try{var e=t.unstable_now();l(!0,e),l=null}catch(e){throw setTimeout(c,0),e}},f=Date.now();t.unstable_now=function(){return Date.now()-f},r=function(e){null!==l?setTimeout(r,0,e):(l=e,setTimeout(c,0))},o=function(e,t){u=setTimeout(e,t)},i=function(){clearTimeout(u)},a=function(){return!1},s=t.unstable_forceFrameRate=function(){}}else{var d=window.performance,p=window.Date,h=window.setTimeout,m=window.clearTimeout;if("undefined"!=typeof console){var v=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof v&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof d&&"function"==typeof d.now)t.unstable_now=function(){return d.now()};else{var g=p.now();t.unstable_now=function(){return p.now()-g}}var y=!1,b=null,_=-1,w=5,x=0;a=function(){return t.unstable_now()>=x},s=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):w=0<e?Math.floor(1e3/e):5};var E=new MessageChannel,k=E.port2;E.port1.onmessage=function(){if(null!==b){var e=t.unstable_now();x=e+w;try{b(!0,e)?k.postMessage(null):(y=!1,b=null)}catch(e){throw k.postMessage(null),e}}else y=!1},r=function(e){b=e,y||(y=!0,k.postMessage(null))},o=function(e,n){_=h((function(){e(t.unstable_now())}),n)},i=function(){m(_),_=-1}}function S(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,o=e[r];if(!(void 0!==o&&0<N(o,t)))break e;e[r]=t,e[n]=o,n=r}}function O(e){return void 0===(e=e[0])?null:e}function T(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length;r<o;){var i=2*(r+1)-1,a=e[i],s=i+1,l=e[s];if(void 0!==a&&0>N(a,n))void 0!==l&&0>N(l,a)?(e[r]=l,e[s]=n,r=s):(e[r]=a,e[i]=n,r=i);else{if(!(void 0!==l&&0>N(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function N(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],P=[],M=1,j=null,D=3,A=!1,I=!1,R=!1;function z(e){for(var t=O(P);null!==t;){if(null===t.callback)T(P);else{if(!(t.startTime<=e))break;T(P),t.sortIndex=t.expirationTime,S(C,t)}t=O(P)}}function F(e){if(R=!1,z(e),!I)if(null!==O(C))I=!0,r(L);else{var t=O(P);null!==t&&o(F,t.startTime-e)}}function L(e,n){I=!1,R&&(R=!1,i()),A=!0;var r=D;try{for(z(n),j=O(C);null!==j&&(!(j.expirationTime>n)||e&&!a());){var s=j.callback;if(null!==s){j.callback=null,D=j.priorityLevel;var l=s(j.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?j.callback=l:j===O(C)&&T(C),z(n)}else T(C);j=O(C)}if(null!==j)var u=!0;else{var c=O(P);null!==c&&o(F,c.startTime-n),u=!1}return u}finally{j=null,D=r,A=!1}}function U(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var B=s;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){I||A||(I=!0,r(L))},t.unstable_getCurrentPriorityLevel=function(){return D},t.unstable_getFirstCallbackNode=function(){return O(C)},t.unstable_next=function(e){switch(D){case 1:case 2:case 3:var t=3;break;default:t=D}var n=D;D=t;try{return e()}finally{D=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=B,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=D;D=e;try{return t()}finally{D=n}},t.unstable_scheduleCallback=function(e,n,a){var s=t.unstable_now();if("object"==typeof a&&null!==a){var l=a.delay;l="number"==typeof l&&0<l?s+l:s,a="number"==typeof a.timeout?a.timeout:U(e)}else a=U(e),l=s;return e={id:M++,callback:n,priorityLevel:e,startTime:l,expirationTime:a=l+a,sortIndex:-1},l>s?(e.sortIndex=l,S(P,e),null===O(C)&&e===O(P)&&(R?i():R=!0,o(F,l-s))):(e.sortIndex=a,S(C,e),I||A||(I=!0,r(L))),e},t.unstable_shouldYield=function(){var e=t.unstable_now();z(e);var n=O(C);return n!==j&&null!==j&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime<j.expirationTime||a()},t.unstable_wrapCallback=function(e){var t=D;return function(){var n=D;D=t;try{return e.apply(this,arguments)}finally{D=n}}}},function(e,t,n){"use strict";var r=n(131);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){var r=n(27),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=i.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(e){}var o=a.call(e);return r&&(t?e[s]=n:delete e[s]),o}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r=n(135),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,a=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(o,(function(e,n,r,o){t.push(r?o.replace(i,"$1"):n||e)})),t}));e.exports=a},function(e,t,n){var r=n(136);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},function(e,t,n){var r=n(42);function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=e.apply(this,r);return n.cache=i.set(o,a)||i,a};return n.cache=new(o.Cache||r),n}o.Cache=r,e.exports=o},function(e,t,n){var r=n(138),o=n(30),i=n(43);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(e,t,n){var r=n(139),o=n(144),i=n(145),a=n(146),s=n(147);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}l.prototype.clear=r,l.prototype.delete=o,l.prototype.get=i,l.prototype.has=a,l.prototype.set=s,e.exports=l},function(e,t,n){var r=n(28);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(e,t,n){var r=n(38),o=n(141),i=n(29),a=n(66),s=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,c=l.toString,f=u.hasOwnProperty,d=RegExp("^"+c.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!i(e)||o(e))&&(r(e)?d:s).test(a(e))}},function(e,t,n){var r,o=n(142),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!i&&i in e}},function(e,t,n){var r=n(8)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},function(e,t,n){var r=n(28),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return o.call(t,e)?t[e]:void 0}},function(e,t,n){var r=n(28),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:o.call(t,e)}},function(e,t,n){var r=n(28);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},function(e,t){e.exports=function(){this.__data__=[],this.size=0}},function(e,t,n){var r=n(31),o=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():o.call(t,n,1),--this.size,!0)}},function(e,t,n){var r=n(31);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},function(e,t,n){var r=n(31);e.exports=function(e){return r(this.__data__,e)>-1}},function(e,t,n){var r=n(31);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},function(e,t,n){var r=n(32);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,n){var r=n(32);e.exports=function(e){return r(this,e).get(e)}},function(e,t,n){var r=n(32);e.exports=function(e){return r(this,e).has(e)}},function(e,t,n){var r=n(32);e.exports=function(e,t){var n=r(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this}},function(e,t,n){var r=n(159);e.exports=function(e){return null==e?"":r(e)}},function(e,t,n){var r=n(27),o=n(160),i=n(6),a=n(26),s=r?r.prototype:void 0,l=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(i(t))return o(t,e)+"";if(a(t))return l?l.call(t):"";var n=t+"";return"0"==n&&1/t==-Infinity?"-0":n}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=Array(r);++n<r;)o[n]=t(e[n],n,e);return o}},function(e,t,n){var r=n(68),o=n(69),i=n(172),a=n(176),s=n(74),l=n(6),u=n(47),c=n(48),f="[object Arguments]",d="[object Array]",p="[object Object]",h=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,m,v,g){var y=l(e),b=l(t),_=y?d:s(e),w=b?d:s(t),x=(_=_==f?p:_)==p,E=(w=w==f?p:w)==p,k=_==w;if(k&&u(e)){if(!u(t))return!1;y=!0,x=!1}if(k&&!x)return g||(g=new r),y||c(e)?o(e,t,n,m,v,g):i(e,t,_,n,m,v,g);if(!(1&n)){var S=x&&h.call(e,"__wrapped__"),O=E&&h.call(t,"__wrapped__");if(S||O){var T=S?e.value():e,N=O?t.value():t;return g||(g=new r),v(T,N,n,m,g)}}return!!k&&(g||(g=new r),a(e,t,n,m,v,g))}},function(e,t,n){var r=n(30);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(30),o=n(43),i=n(42);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([e,t]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(42),o=n(168),i=n(169);function a(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}a.prototype.add=a.prototype.push=o,a.prototype.has=i,e.exports=a},function(e,t){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},function(e,t){e.exports=function(e,t){return e.has(t)}},function(e,t,n){var r=n(27),o=n(173),i=n(67),a=n(69),s=n(174),l=n(175),u=r?r.prototype:void 0,c=u?u.valueOf:void 0;e.exports=function(e,t,n,r,u,f,d){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!f(new o(e),new o(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return i(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var p=s;case"[object Set]":var h=1&r;if(p||(p=l),e.size!=t.size&&!h)return!1;var m=d.get(e);if(m)return m==t;r|=2,d.set(e,t);var v=a(p(e),p(t),r,u,f,d);return d.delete(e),v;case"[object Symbol]":if(c)return c.call(e)==c.call(t)}return!1}},function(e,t,n){var r=n(8).Uint8Array;e.exports=r},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},function(e,t,n){var r=n(177),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,i,a,s){var l=1&n,u=r(e),c=u.length;if(c!=r(t).length&&!l)return!1;for(var f=c;f--;){var d=u[f];if(!(l?d in t:o.call(t,d)))return!1}var p=s.get(e);if(p&&s.get(t))return p==t;var h=!0;s.set(e,t),s.set(t,e);for(var m=l;++f<c;){var v=e[d=u[f]],g=t[d];if(i)var y=l?i(g,v,d,t,e,s):i(v,g,d,e,t,s);if(!(void 0===y?v===g||a(v,g,n,i,s):y)){h=!1;break}m||(m="constructor"==d)}if(h&&!m){var b=e.constructor,_=t.constructor;b==_||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof _&&_ instanceof _||(h=!1)}return s.delete(e),s.delete(t),h}},function(e,t,n){var r=n(178),o=n(180),i=n(45);e.exports=function(e){return r(e,i,o)}},function(e,t,n){var r=n(179),o=n(6);e.exports=function(e,t,n){var i=t(e);return o(e)?i:r(i,n(e))}},function(e,t){e.exports=function(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];return e}},function(e,t,n){var r=n(181),o=n(182),i=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,s=a?function(e){return null==e?[]:(e=Object(e),r(a(e),(function(t){return i.call(e,t)})))}:o;e.exports=s},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=0,i=[];++n<r;){var a=e[n];t(a,n,e)&&(i[o++]=a)}return i}},function(e,t){e.exports=function(){return[]}},function(e,t,n){var r=n(184),o=n(46),i=n(6),a=n(47),s=n(71),l=n(48),u=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=i(e),c=!n&&o(e),f=!n&&!c&&a(e),d=!n&&!c&&!f&&l(e),p=n||c||f||d,h=p?r(e.length,String):[],m=h.length;for(var v in e)!t&&!u.call(e,v)||p&&("length"==v||f&&("offset"==v||"parent"==v)||d&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||s(v,m))||h.push(v);return h}},function(e,t){e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},function(e,t,n){var r=n(14),o=n(15);e.exports=function(e){return o(e)&&"[object Arguments]"==r(e)}},function(e,t){e.exports=function(){return!1}},function(e,t,n){var r=n(14),o=n(49),i=n(15),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,e.exports=function(e){return i(e)&&o(e.length)&&!!a[r(e)]}},function(e,t){e.exports=function(e){return function(t){return e(t)}}},function(e,t,n){(function(e){var r=n(64),o=t&&!t.nodeType&&t,i=o&&"object"==typeof e&&e&&!e.nodeType&&e,a=i&&i.exports===o&&r.process,s=function(){try{var e=i&&i.require&&i.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(e){}}();e.exports=s}).call(this,n(70)(e))},function(e,t,n){var r=n(191)(Object.keys,Object);e.exports=r},function(e,t){e.exports=function(e,t){return function(n){return e(t(n))}}},function(e,t,n){var r=n(16)(n(8),"DataView");e.exports=r},function(e,t,n){var r=n(16)(n(8),"Promise");e.exports=r},function(e,t,n){var r=n(16)(n(8),"Set");e.exports=r},function(e,t,n){var r=n(16)(n(8),"WeakMap");e.exports=r},function(e,t,n){"use strict";e.exports=e=>{if("number"!=typeof e)throw new TypeError("Expected a number");const t=e>0?Math.floor:Math.ceil;return{days:t(e/864e5),hours:t(e/36e5)%24,minutes:t(e/6e4)%60,seconds:t(e/1e3)%60,milliseconds:t(e)%1e3,microseconds:t(1e3*e)%1e3,nanoseconds:t(1e6*e)%1e3}}},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var l,u=[],c=!1,f=-1;function d(){c&&l&&(c=!1,l.length?u=l.concat(u):f=-1,u.length&&p())}function p(){if(!c){var e=s(d);c=!0;for(var t=u.length;t;){for(l=u,u=[];++f<t;)l&&l[f].run();f=-1,t=u.length}l=null,c=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function m(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new h(e,t)),1!==u.length||c||s(p)},h.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=m,o.addListener=m,o.once=m,o.off=m,o.removeListener=m,o.removeAllListeners=m,o.emit=m,o.prependListener=m,o.prependOnceListener=m,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(e,t){e.exports=function(e){var t=new Date(e.getTime()),n=t.getTimezoneOffset();return t.setSeconds(0,0),6e4*n+t.getTime()%6e4}},function(e,t,n){var r=n(2);e.exports=function(e,t,n,o){var i=r(e).getTime(),a=r(t).getTime(),s=r(n).getTime(),l=r(o).getTime();if(i>a||s>l)throw new Error("The start of the range cannot be after the end of the range");return i<l&&s<a}},function(e,t,n){var r=n(2);e.exports=function(e,t){if(!(t instanceof Array))throw new TypeError(toString.call(t)+" is not an instance of Array");var n,o,i=r(e).getTime();return t.forEach((function(e,t){var a=r(e),s=Math.abs(i-a.getTime());(void 0===n||s<o)&&(n=t,o=s)})),n}},function(e,t,n){var r=n(2);e.exports=function(e,t){if(!(t instanceof Array))throw new TypeError(toString.call(t)+" is not an instance of Array");var n,o,i=r(e).getTime();return t.forEach((function(e){var t=r(e),a=Math.abs(i-t.getTime());(void 0===n||a<o)&&(n=t,o=a)})),n}},function(e,t,n){var r=n(11);e.exports=function(e,t){var n=r(e),o=r(t),i=n.getTime()-6e4*n.getTimezoneOffset(),a=o.getTime()-6e4*o.getTimezoneOffset();return Math.round((i-a)/6048e5)}},function(e,t,n){var r=n(84),o=n(2);e.exports=function(e,t){var n=o(e),i=o(t);return 4*(n.getFullYear()-i.getFullYear())+(r(n)-r(i))}},function(e,t,n){var r=n(34);e.exports=function(e,t,n){var o=r(e,n),i=r(t,n),a=o.getTime()-6e4*o.getTimezoneOffset(),s=i.getTime()-6e4*i.getTimezoneOffset();return Math.round((a-s)/6048e5)}},function(e,t,n){var r=n(37);e.exports=function(e,t){var n=r(e,t)/36e5;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(2),o=n(82),i=n(23),a=n(87);e.exports=function(e,t){var n=r(e),s=r(t),l=i(n,s),u=Math.abs(o(n,s));return n=a(n,l*u),l*(u-(i(n,s)===-l))}},function(e,t,n){var r=n(37);e.exports=function(e,t){var n=r(e,t)/6e4;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(55);e.exports=function(e,t){var n=r(e,t)/3;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(86);e.exports=function(e,t){var n=r(e,t)/7;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(2),o=n(85),i=n(23);e.exports=function(e,t){var n=r(e),a=r(t),s=i(n,a),l=Math.abs(o(n,a));return n.setFullYear(n.getFullYear()-s*l),s*(l-(i(n,a)===-s))}},function(e,t){e.exports=function(){var e={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};return{localize:function(t,n,r){var o;return r=r||{},o="string"==typeof e[t]?e[t]:1===n?e[t].one:e[t].other.replace("{{count}}",n),r.addSuffix?r.comparison>0?"in "+o:o+" ago":o}}}},function(e,t,n){var r=n(213);e.exports=function(){var e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],t=["January","February","March","April","May","June","July","August","September","October","November","December"],n=["Su","Mo","Tu","We","Th","Fr","Sa"],o=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["AM","PM"],s=["am","pm"],l=["a.m.","p.m."],u={MMM:function(t){return e[t.getMonth()]},MMMM:function(e){return t[e.getMonth()]},dd:function(e){return n[e.getDay()]},ddd:function(e){return o[e.getDay()]},dddd:function(e){return i[e.getDay()]},A:function(e){return e.getHours()/12>=1?a[1]:a[0]},a:function(e){return e.getHours()/12>=1?s[1]:s[0]},aa:function(e){return e.getHours()/12>=1?l[1]:l[0]}};return["M","D","DDD","d","Q","W"].forEach((function(e){u[e+"o"]=function(t,n){return function(e){var t=e%100;if(t>20||t<10)switch(t%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"}(n[e](t))}})),{formatters:u,formattingTokensRegExp:r(u)}}},function(e,t){var n=["M","MM","Q","D","DD","DDD","DDDD","d","E","W","WW","YY","YYYY","GG","GGGG","H","HH","h","hh","m","mm","s","ss","S","SS","SSS","Z","ZZ","X","x"];e.exports=function(e){var t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(r);var o=n.concat(t).sort().reverse();return new RegExp("(\\[[^\\[]*\\])|(\\\\)?("+o.join("|")+"|.)","g")}},function(e,t,n){var r=n(54),o=n(2),i=n(56),a=n(57),s=525600;e.exports=function(e,t,n){var l=n||{},u=r(e,t),c=l.locale,f=a.distanceInWords.localize;c&&c.distanceInWords&&c.distanceInWords.localize&&(f=c.distanceInWords.localize);var d,p,h,m={addSuffix:Boolean(l.addSuffix),comparison:u};u>0?(d=o(e),p=o(t)):(d=o(t),p=o(e));var v=Math[l.partialMethod?String(l.partialMethod):"floor"],g=i(p,d),y=p.getTimezoneOffset()-d.getTimezoneOffset(),b=v(g/60)-y;if("s"===(h=l.unit?String(l.unit):b<1?"s":b<60?"m":b<1440?"h":b<43200?"d":b<s?"M":"Y"))return f("xSeconds",g,m);if("m"===h)return f("xMinutes",b,m);if("h"===h)return f("xHours",v(b/60),m);if("d"===h)return f("xDays",v(b/1440),m);if("M"===h)return f("xMonths",v(b/43200),m);if("Y"===h)return f("xYears",v(b/s),m);throw new Error("Unknown unit: "+h)}},function(e,t,n){var r=n(88);e.exports=function(e,t){return r(Date.now(),e,t)}},function(e,t,n){var r=n(2);e.exports=function(e,t,n){var o=r(e),i=void 0!==n?n:1,a=r(t).getTime();if(o.getTime()>a)throw new Error("The first date cannot be after the second date");var s=[],l=o;for(l.setHours(0,0,0,0);l.getTime()<=a;)s.push(r(l)),l.setDate(l.getDate()+i);return s}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setMinutes(59,59,999),t}},function(e,t,n){var r=n(89);e.exports=function(e){return r(e,{weekStartsOn:1})}},function(e,t,n){var r=n(10),o=n(11);e.exports=function(e){var t=r(e),n=new Date(0);n.setFullYear(t+1,0,4),n.setHours(0,0,0,0);var i=o(n);return i.setMilliseconds(i.getMilliseconds()-1),i}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setSeconds(59,999),t}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getMonth(),o=n-n%3+3;return t.setMonth(o,0),t.setHours(23,59,59,999),t}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setMilliseconds(999),t}},function(e,t,n){var r=n(58);e.exports=function(){return r(new Date)}},function(e,t){e.exports=function(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),r=e.getDate(),o=new Date(0);return o.setFullYear(t,n,r+1),o.setHours(23,59,59,999),o}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getFullYear();return t.setFullYear(n+1,0,0),t.setHours(23,59,59,999),t}},function(e,t){e.exports=function(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),r=e.getDate(),o=new Date(0);return o.setFullYear(t,n,r-1),o.setHours(23,59,59,999),o}},function(e,t,n){var r=n(91),o=n(59),i=n(10),a=n(2),s=n(93),l=n(57);var u={M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1,2)},Q:function(e){return Math.ceil((e.getMonth()+1)/3)},D:function(e){return e.getDate()},DD:function(e){return d(e.getDate(),2)},DDD:function(e){return r(e)},DDDD:function(e){return d(r(e),3)},d:function(e){return e.getDay()},E:function(e){return e.getDay()||7},W:function(e){return o(e)},WW:function(e){return d(o(e),2)},YY:function(e){return d(e.getFullYear(),4).substr(2)},YYYY:function(e){return d(e.getFullYear(),4)},GG:function(e){return String(i(e)).substr(2)},GGGG:function(e){return i(e)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours(),2)},h:function(e){var t=e.getHours();return 0===t?12:t>12?t%12:t},hh:function(e){return d(u.h(e),2)},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes(),2)},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds(),2)},S:function(e){return Math.floor(e.getMilliseconds()/100)},SS:function(e){return d(Math.floor(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},Z:function(e){return f(e.getTimezoneOffset(),":")},ZZ:function(e){return f(e.getTimezoneOffset())},X:function(e){return Math.floor(e.getTime()/1e3)},x:function(e){return e.getTime()}};function c(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|]$/g,""):e.replace(/\\/g,"")}function f(e,t){t=t||"";var n=e>0?"-":"+",r=Math.abs(e),o=r%60;return n+d(Math.floor(r/60),2)+t+d(o,2)}function d(e,t){for(var n=Math.abs(e).toString();n.length<t;)n="0"+n;return n}e.exports=function(e,t,n){var r=t?String(t):"YYYY-MM-DDTHH:mm:ss.SSSZ",o=(n||{}).locale,i=l.format.formatters,f=l.format.formattingTokensRegExp;o&&o.format&&o.format.formatters&&(i=o.format.formatters,o.format.formattingTokensRegExp&&(f=o.format.formattingTokensRegExp));var d=a(e);return s(d)?function(e,t,n){var r,o,i=e.match(n),a=i.length;for(r=0;r<a;r++)o=t[i[r]]||u[i[r]],i[r]=o||c(i[r]);return function(e){for(var t="",n=0;n<a;n++)i[n]instanceof Function?t+=i[n](e,u):t+=i[n];return t}}(r,i,f)(d):"Invalid Date"}},function(e,t,n){var r=n(2);e.exports=function(e){return r(e).getDate()}},function(e,t,n){var r=n(2);e.exports=function(e){return r(e).getDay()}},function(e,t,n){var r=n(94);e.exports=function(e){return r(e)?366:365}},function(e,t,n){var r=n(2);e.exports=function(e){return r(e).getHours()}},function(e,t,n){var r=n(22),o=n(53);e.exports=function(e){var t=r(e),n=r(o(t,60)).valueOf()-t.valueOf();return Math.round(n/6048e5)}},function(e,t,n){var r=n(2);e.exports=function(e){return r(e).getMilliseconds()}},function(e,t,n){var r=n(2);e.exports=function(e){return r(e).getMinutes()}},function(e,t,n){var r=n(2);e.exports=function(e){return r(e).getMonth()}},function(e,t,n){var r=n(2);e.exports=function(e,t,n,o){var i=r(e).getTime(),a=r(t).getTime(),s=r(n).getTime(),l=r(o).getTime();if(i>a||s>l)throw new Error("The start of the range cannot be after the end of the range");if(!(i<l&&s<a))return 0;var u=(l>a?a:l)-(s<i?i:s);return Math.ceil(u/864e5)}},function(e,t,n){var r=n(2);e.exports=function(e){return r(e).getSeconds()}},function(e,t,n){var r=n(2);e.exports=function(e){return r(e).getTime()}},function(e,t,n){var r=n(2);e.exports=function(e){return r(e).getFullYear()}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()>o.getTime()}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()<o.getTime()}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(2);e.exports=function(e){return 1===r(e).getDate()}},function(e,t,n){var r=n(2);e.exports=function(e){return 5===r(e).getDay()}},function(e,t,n){var r=n(2);e.exports=function(e){return r(e).getTime()>(new Date).getTime()}},function(e,t,n){var r=n(2),o=n(58),i=n(90);e.exports=function(e){var t=r(e);return o(t).getTime()===i(t).getTime()}},function(e,t,n){var r=n(2);e.exports=function(e){return 1===r(e).getDay()}},function(e,t,n){var r=n(2);e.exports=function(e){return r(e).getTime()<(new Date).getTime()}},function(e,t,n){var r=n(12);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(2);e.exports=function(e){return 6===r(e).getDay()}},function(e,t,n){var r=n(2);e.exports=function(e){return 0===r(e).getDay()}},function(e,t,n){var r=n(96);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(98);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(99);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(100);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(102);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(103);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(105);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(60);e.exports=function(e,t){return r(new Date,e,t)}},function(e,t,n){var r=n(107);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(2);e.exports=function(e){return 4===r(e).getDay()}},function(e,t,n){var r=n(12);e.exports=function(e){return r(e).getTime()===r(new Date).getTime()}},function(e,t,n){var r=n(12);e.exports=function(e){var t=new Date;return t.setDate(t.getDate()+1),r(e).getTime()===r(t).getTime()}},function(e,t,n){var r=n(2);e.exports=function(e){return 2===r(e).getDay()}},function(e,t,n){var r=n(2);e.exports=function(e){return 3===r(e).getDay()}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e).getDay();return 0===t||6===t}},function(e,t,n){var r=n(2);e.exports=function(e,t,n){var o=r(e).getTime(),i=r(t).getTime(),a=r(n).getTime();if(i>a)throw new Error("The start of the range cannot be after the end of the range");return o>=i&&o<=a}},function(e,t,n){var r=n(12);e.exports=function(e){var t=new Date;return t.setDate(t.getDate()-1),r(e).getTime()===r(t).getTime()}},function(e,t,n){var r=n(108);e.exports=function(e){return r(e,{weekStartsOn:1})}},function(e,t,n){var r=n(10),o=n(11);e.exports=function(e){var t=r(e),n=new Date(0);n.setFullYear(t+1,0,4),n.setHours(0,0,0,0);var i=o(n);return i.setDate(i.getDate()-1),i}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getMonth(),o=n-n%3+3;return t.setMonth(o,0),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getFullYear();return t.setFullYear(n+1,0,0),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(2);e.exports=function(){var e=Array.prototype.slice.call(arguments),t=e.map((function(e){return r(e)})),n=Math.max.apply(null,t);return new Date(n)}},function(e,t,n){var r=n(2);e.exports=function(){var e=Array.prototype.slice.call(arguments),t=e.map((function(e){return r(e)})),n=Math.min.apply(null,t);return new Date(n)}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setDate(o),n}},function(e,t,n){var r=n(2),o=n(20);e.exports=function(e,t,n){var i=n&&Number(n.weekStartsOn)||0,a=r(e),s=Number(t),l=a.getDay();return o(a,((s%7+7)%7<i?7:0)+s-l)}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setMonth(0),n.setDate(o),n}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setHours(o),n}},function(e,t,n){var r=n(2),o=n(20),i=n(95);e.exports=function(e,t){var n=r(e),a=Number(t),s=i(n);return o(n,a-s)}},function(e,t,n){var r=n(2),o=n(59);e.exports=function(e,t){var n=r(e),i=Number(t),a=o(n)-i;return n.setDate(n.getDate()-7*a),n}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setMilliseconds(o),n}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setMinutes(o),n}},function(e,t,n){var r=n(2),o=n(109);e.exports=function(e,t){var n=r(e),i=Number(t)-(Math.floor(n.getMonth()/3)+1);return o(n,n.getMonth()+3*i)}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setSeconds(o),n}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setFullYear(o),n}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setDate(1),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(12);e.exports=function(){return r(new Date)}},function(e,t){e.exports=function(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),r=e.getDate(),o=new Date(0);return o.setFullYear(t,n,r+1),o.setHours(0,0,0,0),o}},function(e,t){e.exports=function(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),r=e.getDate(),o=new Date(0);return o.setFullYear(t,n,r-1),o.setHours(0,0,0,0),o}},function(e,t,n){var r=n(20);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(75);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(21);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(78);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(36);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(79);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(80);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(53);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(81);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(110),o=n(50),i=n(45);e.exports=function(e){return function(t,n,a){var s=Object(t);if(!o(t)){var l=r(n,3);t=i(t),n=function(e){return l(s[e],e,s)}}var u=e(t,n,a);return u>-1?s[l?t[u]:u]:void 0}}},function(e,t,n){var r=n(302),o=n(303),i=n(112);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?i(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(68),o=n(44);e.exports=function(e,t,n,i){var a=n.length,s=a,l=!i;if(null==e)return!s;for(e=Object(e);a--;){var u=n[a];if(l&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++a<s;){var c=(u=n[a])[0],f=e[c],d=u[1];if(l&&u[2]){if(void 0===f&&!(c in e))return!1}else{var p=new r;if(i)var h=i(f,d,c,e,t,p);if(!(void 0===h?o(d,f,3,i,p):h))return!1}}return!0}},function(e,t,n){var r=n(111),o=n(45);e.exports=function(e){for(var t=o(e),n=t.length;n--;){var i=t[n],a=e[i];t[n]=[i,a,r(a)]}return t}},function(e,t,n){var r=n(44),o=n(24),i=n(305),a=n(41),s=n(111),l=n(112),u=n(33);e.exports=function(e,t){return a(e)&&s(t)?l(u(e),t):function(n){var a=o(n,e);return void 0===a&&a===t?i(n,e):r(t,a,3)}}},function(e,t,n){var r=n(306),o=n(307);e.exports=function(e,t){return null!=e&&o(e,t,r)}},function(e,t){e.exports=function(e,t){return null!=e&&t in Object(e)}},function(e,t,n){var r=n(63),o=n(46),i=n(6),a=n(71),s=n(49),l=n(33);e.exports=function(e,t,n){for(var u=-1,c=(t=r(t,e)).length,f=!1;++u<c;){var d=l(t[u]);if(!(f=null!=e&&n(e,d)))break;e=e[d]}return f||++u!=c?f:!!(c=null==e?0:e.length)&&s(c)&&a(d,c)&&(i(e)||o(e))}},function(e,t){e.exports=function(e){return e}},function(e,t,n){var r=n(310),o=n(311),i=n(41),a=n(33);e.exports=function(e){return i(e)?r(a(e)):o(e)}},function(e,t){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},function(e,t,n){var r=n(62);e.exports=function(e){return function(t){return r(t,e)}}},function(e,t,n){var r=n(313),o=n(110),i=n(314),a=Math.max;e.exports=function(e,t,n){var s=null==e?0:e.length;if(!s)return-1;var l=null==n?0:i(n);return l<0&&(l=a(s+l,0)),r(e,o(t,3),l)}},function(e,t){e.exports=function(e,t,n,r){for(var o=e.length,i=n+(r?1:-1);r?i--:++i<o;)if(t(e[i],i,e))return i;return-1}},function(e,t,n){var r=n(315);e.exports=function(e){var t=r(e),n=t%1;return t==t?n?t-n:t:0}},function(e,t,n){var r=n(316),o=1/0;e.exports=function(e){return e?(e=r(e))===o||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},function(e,t,n){var r=n(29),o=n(26),i=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return NaN;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(i,"");var n=s.test(e);return n||l.test(e)?u(e.slice(2),n?2:8):a.test(e)?NaN:+e}},function(e,t,n){},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},i={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,o]};o.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,r,e.REGEXP_MODE];var a=o.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin:/</,end:/(\/\w+|\w+\/)>/,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor get set",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){return{aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/\*{5}/,end:/\*{5}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}}},function(e,t,n){"use strict";n.r(t);var r=n(0),o=n.n(r),i=n(13),a=n.n(i),s=n(1),l=n.n(s),u=n(24),c=n.n(u),f=n(3),d=n.n(f),p=n(39),h=n.n(p),m=n(7),v=n.n(m),g=n(38),y=n.n(g);function b(e){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function E(e,t){return!t||"object"!==b(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function k(e){return(k=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function S(e,t){return(S=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var O=d.a.bind(h.a),T=function(e){function t(){var e,n;w(this,t);for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];return(n=E(this,(e=k(t)).call.apply(e,[this].concat(i))))._getItemText=function(e){return c()(e,n.props.itemTitleProp)},n._renderMenu=function(e,t){var r=n.props,i=r.selected,a=r.showSelected,s=r.selectedClassName,l=r.linkClassName,u=r.itemClassName,c=r.itemRenderFn,f=r.itemClickFn,d=e.items,p=n._getItemText(e),h=v()(e,i),m=function(t){t.preventDefault(),y()(f)&&f(e)},g=O("list","list-sub"),b=O("list-item",u,_({"link-item":!e.items,selected:a&&h},s,a&&h&&s)),w=O("list-item-text"),x=O("list-item-link",l);return o.a.createElement("li",{key:t,className:b},d?o.a.createElement("span",{className:w},p):c?c(e,p,f):o.a.createElement("button",{type:"button",className:x,onClick:m},p),d&&o.a.createElement("ul",{className:g},d.map(n._renderMenu)))},n}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&S(e,t)}(t,e),n=t,(r=[{key:"render",value:function(){var e=this.props,t=e.className,n=e.menuRef,r=e.style,i=e.list,a=e.menuAlign,s=e.open,l=O("list","list-main",t,"align-".concat(a),{open:s,close:!1===s});return o.a.createElement("ul",{className:l,style:r,ref:n},!!i&&i.map(this._renderMenu))}}])&&x(n.prototype,r),i&&x(n,i),t}(r.Component);T.propTypes={className:l.a.string,menuRef:l.a.func,list:l.a.arrayOf(l.a.shape({title:l.a.string,items:l.a.array})),menuAlign:l.a.oneOf(["left","right"]),open:l.a.bool,style:l.a.object,selected:l.a.object,showSelected:l.a.bool,selectedClassName:l.a.string,linkClassName:l.a.string,itemClassName:l.a.string,itemRenderFn:l.a.func,itemClickFn:l.a.func,itemTitleProp:l.a.string},T.defaultProps={menuAlign:"left",showSelected:!1,itemTitleProp:"title"},T.displayName="DropdownMenu";var N=T;function C(e){return(C="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function P(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function M(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function j(e,t){return!t||"object"!==C(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function D(e){return(D=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function A(e,t){return(A=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var I=d.a.bind(h.a),R=function(e){function t(){var e,n;P(this,t);for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return(n=j(this,(e=D(t)).call.apply(e,[this].concat(o)))).state={open:null},n.select=function(e){n.closeMenu(),n.props.onItemSelected(e)},n.closeMenu=function(){n.setState({open:!1}),n.props.onToggle&&n.props.onToggle(!1)},n.toggleListDisplay=function(){var e=n.state.open;n.setState({open:!e}),n.props.onToggle&&n.props.onToggle(!n.state.open)},n._getItemText=function(e){return c()(e,n.props.itemTitleProp)},n}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&A(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){document.addEventListener("click",this.documentClickHandler.bind(this))}},{key:"componentWillUnmount",value:function(){document.removeEventListener("click",this.documentClickHandler.bind(this))}},{key:"documentClickHandler",value:function(e){var t=this.node;t&&e.target!==t&&!t.contains(e.target)&&this.state.open&&this.closeMenu()}},{key:"render",value:function(){var e=this,t=this.props,n=t.list,r=t.selected,i=t.className,a=t.iconOnly,s=t.menuAlign,l=t.menuClassName,u=t.menuStyle,c=t.toggleClassName,f=t.selectedClassName,d=t.showSelected,p=t.linkClassName,h=t.itemClassName,m=t.itemTitleProp,v=t.itemRenderFn,g=t.toggleIcon,y=this.state.open,b=r||{title:"Please select"},_=I("component",i),w=I("toggle",c);return o.a.createElement("div",{ref:function(t){e.node=t},className:_},o.a.createElement("button",{type:"button",className:w,onClick:function(){return e.toggleListDisplay()}},!a&&this._getItemText(b),!!g&&g),o.a.createElement(N,{className:l,menuAlign:s,open:y,style:u,list:n,selected:r,showSelected:d,selectedClassName:f,linkClassName:p,itemClassName:h,itemTitleProp:m,itemRenderFn:v,itemClickFn:v?this.closeMenu:this.select}))}}])&&M(n.prototype,r),i&&M(n,i),t}(r.Component);R.displayName="Dropdown",R.propTypes={className:l.a.any,iconOnly:l.a.bool,itemClassName:l.a.string,list:l.a.array,linkClassName:l.a.string,menuClassName:l.a.string,menuAlign:l.a.oneOf(["left","right"]),menuStyle:l.a.object,selected:l.a.object,selectedClassName:l.a.string,showSelected:l.a.bool,toggleClassName:l.a.string,onItemSelected:l.a.func,onToggle:l.a.func,itemRenderFn:l.a.func,toggleIcon:l.a.element,itemTitleProp:l.a.string},R.defaultProps={iconOnly:!1,itemTitleProp:"title"};var z=R,F=n(113),L=n.n(F),U=d.a.bind(L.a);function B(e){var t=e.className,n=e.labelClassName,r=e.label,i=e.icon,a=e.iconClassName,s=e.onSelect,l=e.selections,u=e.selected,c=e.ddClassName,f=e.ddMenuClassName,d=e.ddSelectedClassName,p=U("label",{"with-icon":!!i},n);return o.a.createElement("div",{className:U("component",t)},!!i&&o.a.createElement(ve,{name:i,className:U("icon",a)}),!!r&&o.a.createElement("span",{className:p},r),o.a.createElement(z,{className:U("dropdown",c),menuClassName:U("menu",f),selectedClassName:U("item-selected",d),toggleClassName:U("toggle"),itemClassName:U("item"),linkClassName:U("item-link"),showSelected:!0,list:l,selected:u,onItemSelected:s,toggleIcon:o.a.createElement(ve,{name:"arrow_drop_down",size:18,className:U("toggle-icon")})}))}B.propTypes={className:l.a.any,ddClassName:l.a.any,ddMenuClassName:l.a.any,ddSelectedClassName:l.a.any,icon:l.a.string,iconClassName:l.a.string,labelClassName:l.a.string,label:l.a.string,onSelect:l.a.func.isRequired,selected:l.a.object,selections:l.a.array.isRequired},B.displayName="DropdownSelector";var H=B,V=n(17),W=n.n(V),Y=n(114),$=n.n(Y);function q(e){return(q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Q(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function G(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function X(e,t){return!t||"object"!==q(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function K(e){return(K=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function J(e,t){return(J=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Z=function(e){function t(){var e,n;Q(this,t);for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return(n=X(this,(e=K(t)).call.apply(e,[this].concat(o)))).formatDuration=function(e){return $()(e,{unitCount:3})},n}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&J(e,t)}(t,e),n=t,(r=[{key:"render",value:function(){var e=this.props,t=e.className,n=e.timer;return o.a.createElement("span",{className:W()(t)},this.formatDuration(n))}}])&&G(n.prototype,r),i&&G(n,i),t}(r.PureComponent);Z.propTypes={className:l.a.string,timer:l.a.number};var ee=Z,te=n(115),ne=n.n(te),re=d.a.bind(ne.a),oe="http://adamgruber.github.io/mochawesome/",ie="https://github.com/adamgruber",ae=function(e){var t=e.version,n=(new Date).getFullYear();return o.a.createElement("footer",{className:re("component")},o.a.createElement("div",{className:"container"},o.a.createElement("p",null,"©",n," ",o.a.createElement("a",{href:oe,target:"_blank",rel:"noopener noreferrer"},"Mochawesome")," was designed and built by ",o.a.createElement("a",{href:ie,target:"_blank",rel:"noopener noreferrer"},"Adam Gruber")," ","• ",o.a.createElement("span",null,"v",t))))};ae.propTypes={version:l.a.string};var se=ae,le=n(116);function ue(e){return(ue="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ce(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function fe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function de(e,t){return!t||"object"!==ue(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function pe(e){return(pe=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function he(e,t){return(he=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var me=function(e){function t(){return ce(this,t),de(this,pe(t).apply(this,arguments))}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&he(e,t)}(t,e),n=t,(r=[{key:"render",value:function(){var e=this.props,t=e.className,n=e.name,r=e.size,i=e.foreground,a=le[n],s=W()("material-icons",!!r&&"md-".concat(r),!!i&&"md-".concat(i),t);return!!a&&o.a.createElement("i",{className:s,dangerouslySetInnerHTML:{__html:"&#x".concat(a,";")}})}}])&&fe(n.prototype,r),i&&fe(n,i),t}(r.PureComponent);me.propTypes={className:l.a.string,name:l.a.string,size:l.a.oneOf([18,24,36,48]),foreground:l.a.oneOf(["light","dark"])},me.displayName="MaterialIcon";var ve=me,ge=n(4);function ye(e){return(ye="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function be(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function we(e,t,n){return t&&_e(e.prototype,t),n&&_e(e,n),e}function xe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ee(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Se(e,t)}function ke(e){return(ke=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Se(e,t){return(Se=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Oe(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function Te(e,t){return e(t={exports:{}},t.exports),t.exports}var Ne,Ce=Te((function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,i=n?Symbol.for("react.fragment"):60107,a=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,f=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.memo"):60115,m=n?Symbol.for("react.lazy"):60116;function v(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case f:case i:case s:case a:return e;default:switch(e=e&&e.$$typeof){case u:case d:case l:return e;default:return t}}case o:return t}}}function g(e){return v(e)===f}t.typeOf=v,t.AsyncMode=c,t.ConcurrentMode=f,t.ContextConsumer=u,t.ContextProvider=l,t.Element=r,t.ForwardRef=d,t.Fragment=i,t.Profiler=s,t.Portal=o,t.StrictMode=a,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===i||e===f||e===s||e===a||e===p||"object"==typeof e&&null!==e&&(e.$$typeof===m||e.$$typeof===h||e.$$typeof===l||e.$$typeof===u||e.$$typeof===d)},t.isAsyncMode=function(e){return g(e)||v(e)===c},t.isConcurrentMode=g,t.isContextConsumer=function(e){return v(e)===u},t.isContextProvider=function(e){return v(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return v(e)===d},t.isFragment=function(e){return v(e)===i},t.isProfiler=function(e){return v(e)===s},t.isPortal=function(e){return v(e)===o},t.isStrictMode=function(e){return v(e)===a}}));(Ne=Ce)&&Ne.__esModule&&Object.prototype.hasOwnProperty.call(Ne,"default")&&Ne.default;Ce.typeOf,Ce.AsyncMode,Ce.ConcurrentMode,Ce.ContextConsumer,Ce.ContextProvider,Ce.Element,Ce.ForwardRef,Ce.Fragment,Ce.Profiler,Ce.Portal,Ce.StrictMode,Ce.isValidElementType,Ce.isAsyncMode,Ce.isConcurrentMode,Ce.isContextConsumer,Ce.isContextProvider,Ce.isElement,Ce.isForwardRef,Ce.isFragment,Ce.isProfiler,Ce.isPortal,Ce.isStrictMode;var Pe=Te((function(e){e.exports=Ce})),Me={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},je={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},De={};De[Pe.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0};var Ae=Object.defineProperty,Ie=Object.getOwnPropertyNames,Re=Object.getOwnPropertySymbols,ze=Object.getOwnPropertyDescriptor,Fe=Object.getPrototypeOf,Le=Object.prototype;var Ue=function e(t,n,r){if("string"!=typeof n){if(Le){var o=Fe(n);o&&o!==Le&&e(t,o,r)}var i=Ie(n);Re&&(i=i.concat(Re(n)));for(var a=De[t.$$typeof]||Me,s=De[n.$$typeof]||Me,l=0;l<i.length;++l){var u=i[l];if(!(je[u]||r&&r[u]||s&&s[u]||a&&a[u])){var c=ze(n,u);try{Ae(t,u,c)}catch(e){}}}return t}return t},Be=function(){function e(){be(this,e),this.listeners=[]}return we(e,[{key:"on",value:function(e){var t=this;return this.listeners.push(e),function(){var n=t.listeners.indexOf(e);-1!==n&&t.listeners.splice(n,1)}}},{key:"emit",value:function(e){this.listeners.forEach((function(t){return t(e)}))}}]),e}();function He(e){function t(t,n,r,o,i,a){for(var s=arguments.length,l=new Array(s>6?s-6:0),u=6;u<s;u++)l[u-6]=arguments[u];return Object(ge.o)((function(){if(o=o||"<<anonymous>>",a=a||r,null==n[r]){if(t){var s=null===n[r]?"null":"undefined";return new Error("The "+i+" `"+a+"` is marked as required in `"+o+"`, but its value is `"+s+"`.")}return null}return e.apply(void 0,[n,r,o,i,a].concat(l))}))}var n=t.bind(null,!1);return n.isRequired=t.bind(null,!0),n}function Ve(e){var t=ye(e);return Array.isArray(e)?"array":e instanceof RegExp?"object":function(e,t){return"symbol"===e||"Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol}(t,e)?"symbol":t}function We(e,t){return He((function(n,r,o,i,a){return Object(ge.o)((function(){if(e&&Ve(n[r])===t.toLowerCase())return null;var i;switch(t){case"Array":i=ge.i;break;case"Object":i=ge.k;break;case"Map":i=ge.j;break;default:throw new Error("Unexpected mobxType: ".concat(t))}var s=n[r];if(!i(s)){var l=function(e){var t=Ve(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}(s),u=e?" or javascript `"+t.toLowerCase()+"`":"";return new Error("Invalid prop `"+a+"` of type `"+l+"` supplied to `"+o+"`, expected `mobx.Observable"+t+"`"+u+".")}return null}))}))}function Ye(e,t){return He((function(n,r,o,i,a){for(var s=arguments.length,l=new Array(s>5?s-5:0),u=5;u<s;u++)l[u-5]=arguments[u];return Object(ge.o)((function(){if("function"!=typeof t)return new Error("Property `"+a+"` of component `"+o+"` has invalid PropType notation.");var s=We(e,"Array")(n,r,o);if(s instanceof Error)return s;for(var u=n[r],c=0;c<u.length;c++)if((s=t.apply(void 0,[u,c,o,i,a+"["+c+"]"].concat(l)))instanceof Error)return s;return null}))}))}We(!1,"Array"),Ye.bind(null,!1),We(!1,"Map"),We(!1,"Object"),We(!0,"Array"),Ye.bind(null,!0);var $e=We(!0,"Object");var qe=0;function Qe(e){if("function"==typeof Symbol)return Symbol(e);var t="__$mobx-react ".concat(e," (").concat(qe,")");return qe++,t}var Ge=Qe("patchMixins"),Xe=Qe("patchedDefinition");function Ke(e,t){var n=e[Ge]=e[Ge]||{},r=n[t]=n[t]||{};return r.locks=r.locks||0,r.methods=r.methods||[],r}function Je(e,t){for(var n=this,r=arguments.length,o=new Array(r>2?r-2:0),i=2;i<r;i++)o[i-2]=arguments[i];t.locks++;try{var a;return null!=e&&(a=e.apply(this,o)),a}finally{t.locks--,0===t.locks&&t.methods.forEach((function(e){e.apply(n,o)}))}}function Ze(e,t){return function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];Je.call.apply(Je,[this,e,t].concat(r))}}function et(e,t){for(var n=Ke(e,t),r=arguments.length,o=new Array(r>2?r-2:0),i=2;i<r;i++)o[i-2]=arguments[i];for(var a=0;a<o.length;a++){var s=o[a];n.methods.indexOf(s)<0&&n.methods.push(s)}var l=Object.getOwnPropertyDescriptor(e,t);if(!l||!l[Xe]){var u=e[t],c=tt(e,t,l?l.enumerable:void 0,n,u);Object.defineProperty(e,t,c)}}function tt(e,t,n,r,o){var i,a=Ze(o,r);return xe(i={},Xe,!0),xe(i,"get",(function(){return a})),xe(i,"set",(function(o){if(this===e)a=Ze(o,r);else{var i=tt(this,t,n,r,o);Object.defineProperty(this,t,i)}})),xe(i,"configurable",!0),xe(i,"enumerable",n),i}var nt={mobxStores:$e};Object.seal(nt);var rt={contextTypes:{get:function(){return nt},set:function(e){console.warn("Mobx Injector: you are trying to attach `contextTypes` on an component decorated with `inject` (or `observer`) HOC. Please specify the contextTypes on the wrapped component instead. It is accessible through the `wrappedComponent`")},configurable:!0,enumerable:!1},isMobxInjector:{value:!0,writable:!0,configurable:!0,enumerable:!0}};function ot(e,t,n){var o="inject-"+(t.displayName||t.name||t.constructor&&t.constructor.name||"Unknown");n&&(o+="-with-"+n);var i=function(n){function o(){var e,t;be(this,o);for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=Oe(this,(e=ke(o)).call.apply(e,[this].concat(r)))).storeRef=function(e){t.wrappedInstance=e},t}return Ee(o,n),we(o,[{key:"render",value:function(){var n={};for(var o in this.props)this.props.hasOwnProperty(o)&&(n[o]=this.props[o]);var i=e(this.context.mobxStores||{},n,this.context)||{};for(var a in i)n[a]=i[a];return function(e){return!(e.prototype&&e.prototype.render)}(t)||(n.ref=this.storeRef),Object(r.createElement)(t,n)}}]),o}(r.Component);return i.displayName=o,Ue(i,t),i.wrappedComponent=t,Object.defineProperties(i,rt),i}function it(e){return function(t,n){return e.forEach((function(e){if(!(e in n)){if(!(e in t))throw new Error("MobX injector: Store '"+e+"' is not available! Make sure it is provided by some Provider");n[e]=t[e]}})),n}}function at(){var e;if("function"==typeof arguments[0])return e=arguments[0],function(t){var n=ot(e,t);return n.isMobxInjector=!1,(n=Ot(n)).isMobxInjector=!0,n};for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return e=it(t),function(n){return ot(e,n,t.join("-"))}}var st=ge.a||"$mobx",lt=Qe("isUnmounted"),ut=!1,ct=!1,ft=!1,dt="undefined"!=typeof WeakMap?new WeakMap:void 0,pt=new Be,ht=Qe("skipRender"),mt=Qe("isForcingUpdate"),vt="function"==typeof r.forwardRef&&Object(r.forwardRef)((function(e,t){})).$$typeof;function gt(e,t,n){Object.hasOwnProperty.call(e,t)?e[t]=n:Object.defineProperty(e,t,{enumerable:!1,configurable:!0,writable:!0,value:n})}function yt(e){if(i.findDOMNode)try{return Object(i.findDOMNode)(e)}catch(e){return null}return null}function bt(e){var t=yt(e);t&&dt&&dt.set(t,e),pt.emit({event:"render",renderTime:e.__$mobRenderEnd-e.__$mobRenderStart,totalTime:Date.now()-e.__$mobRenderStart,component:e,node:t})}var _t=new Be;function wt(e,t){if(xt(e,t))return!0;if("object"!==ye(e)||null===e||"object"!==ye(t)||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o<n.length;o++)if(!hasOwnProperty.call(t,n[o])||!xt(e[n[o]],t[n[o]]))return!1;return!0}function xt(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function Et(e){var t=this;if(!0===ct)return e.call(this);function n(){var e=this;s=!1;var t=void 0,n=void 0;if(l.track((function(){ut&&(e.__$mobRenderStart=Date.now());try{n=Object(ge.c)(!1,a)}catch(e){t=e}ut&&(e.__$mobRenderEnd=Date.now())})),t)throw _t.emit(t),t;return n}var o=this.displayName||this.name||this.constructor&&(this.constructor.displayName||this.constructor.name)||"<component>",i=this._reactInternalInstance&&this._reactInternalInstance._rootNodeID||this._reactInternalInstance&&this._reactInternalInstance._debugID||this._reactInternalFiber&&this._reactInternalFiber._debugID;gt(this,ht,!1),gt(this,mt,!1);var a=e.bind(this),s=!1,l=new ge.b("".concat(o,"#").concat(i,".render()"),(function(){if(!s&&(s=!0,"function"==typeof t.componentWillReact&&t.componentWillReact(),!0!==t[lt])){var e=!0;try{gt(t,mt,!0),t[ht]||r.Component.prototype.forceUpdate.call(t),e=!1}finally{gt(t,mt,!1),e&&l.dispose()}}}));return l.reactComponent=this,n[st]=l,this.render=n,n.call(this)}var kt={componentWillUnmount:function(){if(!0!==ct&&(this.render[st]&&this.render[st].dispose(),this[lt]=!0,ut)){var e=yt(this);e&&dt&&dt.delete(e),pt.emit({event:"destroy",component:this,node:e})}},componentDidMount:function(){ut&&bt(this)},componentDidUpdate:function(){ut&&bt(this)},shouldComponentUpdate:function(e,t){return ct&&console.warn("[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side."),this.state!==t||!wt(this.props,e)}};function St(e,t){var n=Qe("reactProp_".concat(t,"_valueHolder")),r=Qe("reactProp_".concat(t,"_atomHolder"));function o(){return this[r]||gt(this,r,Object(ge.f)("reactive "+t)),this[r]}Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return o.call(this).reportObserved(),this[n]},set:function(e){this[mt]||wt(this[n],e)?gt(this,n,e):(gt(this,n,e),gt(this,ht,!0),o.call(this).reportChanged(),gt(this,ht,!1))}})}function Ot(e,t){if("string"==typeof e)throw new Error("Store names should be provided as array");if(Array.isArray(e))return ft||(ft=!0,console.warn('Mobx observer: Using observer to inject stores is deprecated since 4.0. Use `@inject("store1", "store2") @observer ComponentClass` or `inject("store1", "store2")(observer(componentClass))` instead of `@observer(["store1", "store2"]) ComponentClass`')),t?at.apply(null,e)(Ot(t)):function(t){return Ot(e,t)};var n=e;if(!0===n.isMobxInjector&&console.warn("Mobx observer: You are trying to use 'observer' on a component that already has 'inject'. Please apply 'observer' before applying 'inject'"),n.__proto__===r.PureComponent&&console.warn("Mobx observer: You are using 'observer' on React.PureComponent. These two achieve two opposite goals and should not be used together"),vt&&n.$$typeof===vt){var i=n.render;if("function"!=typeof i)throw new Error("render property of ForwardRef was not a function");return Object(r.forwardRef)((function(){var e=arguments;return o.a.createElement(Tt,null,(function(){return i.apply(void 0,e)}))}))}if(!("function"!=typeof n||n.prototype&&n.prototype.render||n.isReactClass||r.Component.isPrototypeOf(n))){var a,s,l=Ot((s=a=function(e){function t(){return be(this,t),Oe(this,ke(t).apply(this,arguments))}return Ee(t,e),we(t,[{key:"render",value:function(){return n.call(this,this.props,this.context)}}]),t}(r.Component),a.displayName=n.displayName||n.name,a.contextTypes=n.contextTypes,a.propTypes=n.propTypes,a.defaultProps=n.defaultProps,s));return Ue(l,n),l}if(!n)throw new Error("Please pass a valid component to 'observer'");var u=n.prototype||n;!function(e){["componentDidMount","componentWillUnmount","componentDidUpdate"].forEach((function(t){!function(e,t){et(e,t,kt[t])}(e,t)})),e.shouldComponentUpdate?e.shouldComponentUpdate!==kt.shouldComponentUpdate&&console.warn("Use `shouldComponentUpdate` in an `observer` based component breaks the behavior of `observer` and might lead to unexpected results. Manually implementing `sCU` should not be needed when using mobx-react."):e.shouldComponentUpdate=kt.shouldComponentUpdate}(u),n.isMobXReactObserver=!0,St(u,"props"),St(u,"state");var c=u.render;return u.render=function(){return Et.call(this,c)},n}var Tt=Ot((function(e){var t=e.children,n=e.inject,r=e.render,i=t||r;if(void 0===i)return null;if(!n)return i();console.warn("<Observer inject=.../> is no longer supported. Please use inject on the enclosing component instead");var a=at(n)(i);return o.a.createElement(a,null)}));Tt.displayName="Observer";var Nt=function(e,t,n,r,o){var i="children"===t?"render":"children";return"function"==typeof e[t]&&"function"==typeof e[i]?new Error("Invalid prop,do not use children and render in the same time in`"+n):"function"!=typeof e[t]&&"function"!=typeof e[i]?new Error("Invalid prop `"+o+"` of type `"+ye(e[t])+"` supplied to `"+n+"`, expected `function`."):void 0};function Ct(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=e&&this.setState(e)}function Pt(e){this.setState(function(t){var n=this.constructor.getDerivedStateFromProps(e,t);return null!=n?n:null}.bind(this))}function Mt(e,t){try{var n=this.props,r=this.state;this.props=e,this.state=t,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,r)}finally{this.props=n,this.state=r}}Tt.propTypes={render:Nt,children:Nt},Ct.__suppressDeprecationWarning=!0,Pt.__suppressDeprecationWarning=!0,Mt.__suppressDeprecationWarning=!0;var jt={children:!0,key:!0,ref:!0},Dt=function(e){function t(e,n){var r;return be(this,t),(r=Oe(this,ke(t).call(this,e,n))).state={},At(e,r.state),r}return Ee(t,e),we(t,[{key:"render",value:function(){return r.Children.only(this.props.children)}},{key:"getChildContext",value:function(){var e={};return At(this.context.mobxStores,e),At(this.props,e),{mobxStores:e}}}],[{key:"getDerivedStateFromProps",value:function(e,t){if(!e)return null;if(!t)return e;if(Object.keys(e).filter(It).length!==Object.keys(t).filter(It).length&&console.warn("MobX Provider: The set of provided stores has changed. Please avoid changing stores as the change might not propagate to all children"),!e.suppressChangedStoreWarning)for(var n in e)It(n)&&t[n]!==e[n]&&console.warn("MobX Provider: Provided store '"+n+"' has changed. Please avoid replacing stores as the change might not propagate to all children");return e}}]),t}(r.Component);function At(e,t){if(e)for(var n in e)It(n)&&(t[n]=e[n])}function It(e){return!jt[e]&&"suppressChangedStoreWarning"!==e}Dt.contextTypes={mobxStores:$e},Dt.childContextTypes={mobxStores:$e.isRequired},function(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error("Can only polyfill class components");if("function"!=typeof e.getDerivedStateFromProps&&"function"!=typeof t.getSnapshotBeforeUpdate)return e;var n=null,r=null,o=null;if("function"==typeof t.componentWillMount?n="componentWillMount":"function"==typeof t.UNSAFE_componentWillMount&&(n="UNSAFE_componentWillMount"),"function"==typeof t.componentWillReceiveProps?r="componentWillReceiveProps":"function"==typeof t.UNSAFE_componentWillReceiveProps&&(r="UNSAFE_componentWillReceiveProps"),"function"==typeof t.componentWillUpdate?o="componentWillUpdate":"function"==typeof t.UNSAFE_componentWillUpdate&&(o="UNSAFE_componentWillUpdate"),null!==n||null!==r||null!==o){var i=e.displayName||e.name,a="function"==typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+i+" uses "+a+" but also contains the following legacy lifecycles:"+(null!==n?"\n "+n:"")+(null!==r?"\n "+r:"")+(null!==o?"\n "+o:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks")}if("function"==typeof e.getDerivedStateFromProps&&(t.componentWillMount=Ct,t.componentWillReceiveProps=Pt),"function"==typeof t.getSnapshotBeforeUpdate){if("function"!=typeof t.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");t.componentWillUpdate=Mt;var s=t.componentDidUpdate;t.componentDidUpdate=function(e,t,n){var r=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:n;s.call(this,e,t,r)}}}(Dt);Qe("disposeOnUnmount");if(!r.Component)throw new Error("mobx-react requires React to be available");if(!ge.n)throw new Error("mobx-react requires mobx to be available");"function"==typeof i.unstable_batchedUpdates&&Object(ge.e)({reactionScheduler:i.unstable_batchedUpdates});if("object"===("undefined"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__?"undefined":ye(__MOBX_DEVTOOLS_GLOBAL_HOOK__))){var Rt={spy:ge.n,extras:{getDebugName:ge.h}},zt={renderReporter:pt,componentByNodeRegistry:dt,componentByNodeRegistery:dt,trackComponents:function(){if("undefined"==typeof WeakMap)throw new Error("[mobx-react] tracking components is not supported in this browser.");ut||(ut=!0)}};__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobxReact(zt,Rt)}var Ft,Lt,Ut,Bt=n(117),Ht=n.n(Bt);function Vt(e){return(Vt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Wt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Yt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function $t(e,t){return!t||"object"!==Vt(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function qt(e){return(qt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Qt(e,t){return(Qt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Gt,Xt,Kt,Jt=d.a.bind(Ht.a),Zt=at("reportStore")(Ft=Ot((Ut=Lt=function(e){function t(){return Wt(this,t),$t(this,qt(t).apply(this,arguments))}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Qt(e,t)}(t,e),n=t,(r=[{key:"render",value:function(){return this.props.reportStore.isLoading&&o.a.createElement("div",{className:Jt("component")},o.a.createElement("div",{className:Jt("wrap")},o.a.createElement("div",{className:Jt("spinner")}),o.a.createElement("h4",{className:Jt("text")},"Generating Report")))}}])&&Yt(n.prototype,r),i&&Yt(n,i),t}(r.Component),Lt.propTypes={reportStore:l.a.object},Ft=Ut))||Ft)||Ft,en=n(118),tn=n(119),nn=n.n(tn),rn=n(18),on=n.n(rn);function an(e){return(an="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function sn(){return(sn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function ln(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function un(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function cn(e,t){return!t||"object"!==an(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function fn(e){return(fn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function dn(e,t){return(dn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var pn=d.a.bind(on.a),hn=at("reportStore")(Gt=Ot((Kt=Xt=function(e){function t(){var e,n;ln(this,t);for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return(n=cn(this,(e=fn(t)).call.apply(e,[this].concat(o)))).closeMenu=function(){var e=n.props.reportStore,t=e.closeSideNav;e.sideNavOpen&&t()},n.onKeydown=function(e){"Escape"===e.key&&n.closeMenu()},n.onOpenChange=function(e){e&&n.closeBtn&&n.closeBtn.focus()},n}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&dn(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){var e=this;document.addEventListener("keydown",this.onKeydown),this.overlay&&this.overlay.addEventListener("click",this.closeMenu),this.disposer=Object(ge.m)((function(){return e.props.reportStore.sideNavOpen}),this.onOpenChange,{delay:100})}},{key:"componentWillUnmount",value:function(){document.removeEventListener("keydown",this.onKeydown),this.overlay.removeEventListener("click",this.closeMenu),this.disposer()}},{key:"render",value:function(){var e=this,t=this.props.reportStore,n=t.results,r=t.closeSideNav,i=t.reportTitle,a=t.setShowHooks,s=t.showFailed,l=t.showHooks,u=t.showHooksOptions,c=t.showPassed,f=t.showPending,d=t.showSkipped,p=t.sideNavOpen,h=t.stats,m=t.toggleFilter,v={showPassed:c,showFailed:s,showPending:f,showSkipped:d},g=u.map((function(e){return{title:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1)),value:e}})),y=nn()(g,{value:l});return o.a.createElement("div",{className:pn("wrap",{open:p})},o.a.createElement("div",{className:pn("overlay"),ref:function(t){e.overlay=t}}),o.a.createElement("nav",{className:pn("menu")},o.a.createElement("button",{type:"button",onClick:r,className:pn("close-btn"),ref:function(t){e.closeBtn=t}},o.a.createElement(ve,{name:"close"})),o.a.createElement("div",{className:pn("section")},o.a.createElement("h3",{className:pn("title")},i),o.a.createElement("h6",{className:pn("date")},Object(en.format)(h.end,"dddd, MMMM D, YYYY h:mma"))),o.a.createElement("div",{className:pn("section")},o.a.createElement(Uo,{className:pn("control"),label:"Show Passed",labelClassName:pn("control-label"),icon:"check",iconClassName:pn("toggle-icon-passed"),id:"passed-toggle",active:c,disabled:0===h.passes,toggleFn:function(){return m("showPassed")}}),o.a.createElement(Uo,{className:pn("control"),label:"Show Failed",labelClassName:pn("control-label"),icon:"close",iconClassName:pn("toggle-icon-failed"),id:"failed-toggle",active:s,disabled:0===h.failures,toggleFn:function(){return m("showFailed")}}),o.a.createElement(Uo,{className:pn("control"),label:"Show Pending",labelClassName:pn("control-label"),icon:"pause",iconClassName:pn("toggle-icon-pending"),id:"pending-toggle",active:f,disabled:0===h.pending,toggleFn:function(){return m("showPending")}}),o.a.createElement(Uo,{className:pn("control"),label:"Show Skipped",labelClassName:pn("control-label"),icon:"stop",iconClassName:pn("toggle-icon-skipped"),id:"skipped-toggle",active:d,disabled:0===h.skipped,toggleFn:function(){return m("showSkipped")}}),o.a.createElement(H,{className:pn("control"),label:"Show Hooks",labelClassName:pn("control-label"),selected:y,selections:g,onSelect:function(e){return a(e.value)}})),o.a.createElement("div",{className:pn("section")},!!n&&n.map((function(e){return o.a.createElement("ul",{key:e.uuid,className:pn("list","main",{"no-tests":!e.tests||0===e.tests.length})},!!e.suites&&e.suites.map((function(e){return o.a.createElement(Rn,sn({key:e.uuid,suite:e},v))})))})))))}}])&&un(n.prototype,r),i&&un(n,i),t}(r.Component),Xt.propTypes={reportStore:l.a.shape({results:l.a.array,closeSideNav:l.a.func,reportTitle:l.a.string,setShowHooks:l.a.func,showFailed:l.a.bool,showHooks:l.a.string,showHooksOptions:l.a.array,showPassed:l.a.bool,showPending:l.a.bool,showSkipped:l.a.bool,sideNavOpen:l.a.bool,stats:l.a.object,toggleFilter:l.a.func})},Gt=Kt))||Gt)||Gt;function mn(e){return(mn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function vn(){return(vn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function gn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function yn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function bn(e,t){return!t||"object"!==mn(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _n(e){return(_n=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function wn(e,t){return(wn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var xn=d.a.bind(on.a),En=function(e){function t(){return gn(this,t),bn(this,_n(t).apply(this,arguments))}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&wn(e,t)}(t,e),n=t,(r=[{key:"shouldComponentUpdate",value:function(e){return!v()(this.props,e)}},{key:"render",value:function(){var e=this.props,t=e.suites,n={showPassed:e.showPassed,showFailed:e.showFailed,showPending:e.showPending,showSkipped:e.showSkipped};return!!t&&o.a.createElement("div",null,t.map((function(e){return o.a.createElement("ul",{key:e.uuid,className:xn("list","sub")},o.a.createElement(Rn,vn({suite:e},n)))})))}}])&&yn(n.prototype,r),i&&yn(n,i),t}(r.Component);En.propTypes={suites:l.a.array,showPassed:l.a.bool,showFailed:l.a.bool,showPending:l.a.bool,showSkipped:l.a.bool};var kn=En,Sn=n(5),On=n.n(Sn);function Tn(e){return(Tn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Nn(){return(Nn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function Cn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Pn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Mn(e,t){return!t||"object"!==Tn(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function jn(e){return(jn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Dn(e,t){return(Dn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var An=d.a.bind(on.a),In=function(e){function t(){return Cn(this,t),Mn(this,jn(t).apply(this,arguments))}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Dn(e,t)}(t,e),n=t,(r=[{key:"shouldComponentUpdate",value:function(e){return!v()(this.props,e)}},{key:"render",value:function(){var e,t,n=this.props,r=n.suite,i=n.showPassed,a=n.showFailed,s=n.showPending,l=n.showSkipped,u=r.suites,c=r.uuid,f=r.title,d={showPassed:i,showFailed:a,showPending:s,showSkipped:l},p=!On()(r.tests),h=!On()(r.passes),m=!On()(r.failures),v=!On()(r.pending),g=!On()(r.skipped),y=p&&m,b=p&&v&&!m,_=p&&g&&!m&&!v,w=p&&h&&!m&&!v&&!g,x=function(){var e=0;return!p&&u&&(e+=1),h&&(e+=1),m&&(e+=1),v&&(e+=1),g&&(e+=1),!l&&g&&(e-=1),!s&&v&&(e-=1),!a&&m&&(e-=1),!i&&h&&(e-=1),l||s||a||i||p||(e-=1),e<=0},E=An("link",{disabled:x()});return o.a.createElement("li",{className:An("item",{"has-tests":p})},o.a.createElement("a",{href:"#".concat(c),className:E,onClick:function(e){return function(e,t){e.preventDefault();var n=document.getElementById(t).getBoundingClientRect().top,r=document.getElementById("details"),o=window.getComputedStyle(r).getPropertyValue("padding-top");o=parseInt(o,10);var i=document.body.scrollTop+n-(o+4);window.scrollTo(0,i)}(e,c)},tabIndex:x()?-1:0},(w&&(e="check",t="pass"),_&&(e="stop",t="skipped"),b&&(e="pause",t="pending"),y&&(e="close",t="fail"),o.a.createElement(ve,{name:e,className:An("link-icon",t),size:18})),o.a.createElement("span",null,""===f?c:f)),u&&!!u.length&&o.a.createElement(kn,Nn({suites:u},d)))}}])&&Pn(n.prototype,r),i&&Pn(n,i),t}(r.Component);In.propTypes={suite:l.a.object,showPassed:l.a.bool,showFailed:l.a.bool,showPending:l.a.bool,showSkipped:l.a.bool};var Rn=In,zn=(n(317),function(){return null}),Fn=Ot((function(e){var t=e.store,n=t.openSideNav,r=t.toggleSingleFilter,i=t.singleFilter,a=t.reportTitle,s=t.stats,l=t.devMode,u=t.VERSION;return o.a.createElement(Dt,{reportStore:e.store},o.a.createElement("main",null,o.a.createElement(Wn,{onMenuClick:n,onQuickFilterClick:r,singleFilter:i,reportTitle:a,stats:s}),o.a.createElement(Co,null),o.a.createElement(Zt,null),o.a.createElement(se,{version:u}),o.a.createElement(hn,null),l&&o.a.createElement(zn,{position:{bottom:0,right:20}})))}));Fn.propTypes={store:l.a.object},Fn.displayName="MochawesomeReport";var Ln=Fn,Un=n(120),Bn=n.n(Un),Hn=d.a.bind(Bn.a),Vn=function(e){var t=e.onMenuClick,n=e.onQuickFilterClick,r=e.reportTitle,i=e.singleFilter,a=e.stats,s=a.passPercent,l=a.pendingPercent,u=100-s,c=100===l,f=null!==s&&null!==l,d=function(e,t,n){return o.a.createElement("span",{className:Hn("pct-bar-segment",t),style:{width:"".concat(e,"%")},title:"".concat(e.toFixed(2),"% ").concat(n)})};return o.a.createElement("div",{className:Hn("component","z-depth-1"),role:"navigation"},o.a.createElement("div",{className:Hn("report-info-cnt")},o.a.createElement("button",{type:"button",onClick:t,className:Hn("menu-button","open-menu")},o.a.createElement(ve,{name:"menu"})),o.a.createElement("h1",{className:Hn("report-title"),title:r},r)),o.a.createElement("div",{className:Hn("stats")},o.a.createElement(Gn,{stats:a,onQuickFilterClick:n,singleFilter:i})),f&&o.a.createElement("div",{className:Hn("pct-bar")},c&&d(l,"pend","Pending"),!c&&d(s,"pass","Passing"),!c&&d(u,"fail","Failing")))};Vn.propTypes={onMenuClick:l.a.func,onQuickFilterClick:l.a.func,reportTitle:l.a.string,singleFilter:l.a.string,stats:l.a.object},Vn.displayName="Navbar";var Wn=Vn,Yn=n(121),$n=n.n(Yn),qn=d.a.bind($n.a),Qn=function(e){var t=e.onQuickFilterClick,n=e.singleFilter,r=e.stats,i=r.duration,a=r.suites,s=r.testsRegistered,l=r.passes,u=r.failures,c=r.pending,f=r.skipped,d=n?["single-filter","single-filter--".concat(n.slice(4).toLowerCase())]:"";return o.a.createElement("div",{className:qn("cnt")},o.a.createElement("ul",{className:qn("list")},o.a.createElement("li",{className:qn("item","duration"),title:"Duration"},o.a.createElement(ve,{name:"timer",className:qn("icon")}),o.a.createElement(ee,{timer:i})),o.a.createElement("li",{className:qn("item","suites"),title:"Suites"},o.a.createElement(ve,{name:"library_books",className:qn("icon")}),a),o.a.createElement("li",{className:qn("item","tests"),title:"Tests"},o.a.createElement(ve,{name:"assignment",className:qn("icon")}),s)),o.a.createElement("ul",{className:qn("list",d)},o.a.createElement("li",{className:qn("item","passes"),title:"Passed"},o.a.createElement("button",{type:"button",onClick:function(){return t("showPassed")}},o.a.createElement(ve,{name:"check",className:qn("icon","circle-icon")}),l)),o.a.createElement("li",{className:qn("item","failures"),title:"Failed"},o.a.createElement("button",{type:"button",onClick:function(){return t("showFailed")}},o.a.createElement(ve,{name:"close",className:qn("icon","circle-icon")}),u)),!!c&&o.a.createElement("li",{className:qn("item","pending"),title:"Pending"},o.a.createElement("button",{type:"button",onClick:function(){return t("showPending")}},o.a.createElement(ve,{name:"pause",className:qn("icon","circle-icon")}),c)),!!f&&o.a.createElement("li",{className:qn("item","skipped"),title:"Skipped"},o.a.createElement("button",{type:"button",onClick:function(){return t("showSkipped")}},o.a.createElement(ve,{name:"stop",className:qn("icon","circle-icon")}),f))))};Qn.propTypes={onQuickFilterClick:l.a.func,singleFilter:l.a.string,stats:l.a.object},Qn.displayName="QuickSummary";var Gn=Qn,Xn=n(122),Kn=n.n(Xn),Jn=d.a.bind(Kn.a);function Zn(e){var t=e.active,n=e.className,r=e.labelClassName,i=e.label,a=e.icon,s=e.iconClassName,l=e.onClick,u=Jn("label",{"with-icon":!!a},r);return o.a.createElement("div",{className:Jn("component",n)},!!a&&o.a.createElement(ve,{name:a,className:s}),!!i&&o.a.createElement("span",{className:u},i),o.a.createElement("div",{className:Jn("outer",{off:!t}),onClick:l,role:"button",tabIndex:"0"},o.a.createElement("span",{className:Jn("inner")})))}Zn.propTypes={active:l.a.bool.isRequired,className:l.a.any,labelClassName:l.a.string,label:l.a.string,icon:l.a.string,iconClassName:l.a.string,onClick:l.a.func.isRequired},Zn.defaultProps={active:!1},Zn.displayName="RadioButton";var er=n(9),tr=n.n(er);function nr(e){return(nr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function rr(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function or(e){return(or=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ir(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ar(e,t){return(ar=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var sr=d.a.bind(tr.a),lr=function(e){function t(){var e;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(e=function(e,t){return!t||"object"!==nr(t)&&"function"!=typeof t?ir(e):t}(this,or(t).call(this))).state={expanded:!1},e.toggleExpandedState=e.toggleExpandedState.bind(ir(e)),e}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ar(e,t)}(t,e),n=t,(r=[{key:"toggleExpandedState",value:function(){var e=this.props,t=e.test,n=e.enableCode,r=this.state.expanded;(n&&t.pass||t.context||t.fail||t.isHook)&&this.setState({expanded:!r})}},{key:"render",value:function(){var e,t,n=this.props,r=n.test,i=n.enableCode,a=r.uuid,s=r.title,l=r.speed,u=r.duration,c=r.pass,f=r.fail,d=r.pending,p=r.skipped,h=r.isHook,m=r.err,v=r.code,g=r.context,y=d||p||c&&!i&&!g,b=sr("component",{expanded:this.state.expanded,passed:c,failed:f,pending:d,skipped:p,hook:h,inactive:y,"with-context":!!g}),_=this.state.expanded;return o.a.createElement("li",{id:a,className:b},o.a.createElement("header",null,o.a.createElement("button",{"aria-expanded":_,type:"button",onClick:this.toggleExpandedState,disabled:y,className:sr("header-btn")},(c&&(e="check",t="pass"),f&&(e="close",t="fail"),d&&(e="pause",t="pending"),p&&(e="stop",t="skipped"),h&&(e=f?"error_outline":s.match(/^"before/)?"rotate_left":"rotate_right",t="hook"),o.a.createElement(ve,{name:e,className:sr("icon",t),size:h?24:18})),o.a.createElement("h4",{className:sr("title"),title:s},s),o.a.createElement("div",{className:sr("info")},!!g&&o.a.createElement(ve,{name:"chat_bubble_outline",className:sr("context-icon"),size:18}),!h&&o.a.createElement(ee,{className:sr("duration"),timer:u}),!h&&o.a.createElement(ve,{name:"timer",className:sr("duration-icon",l),size:18})),!!m.message&&o.a.createElement("p",{className:sr("error-message")},m.message))),_&&o.a.createElement("div",{className:sr("body-wrap")},o.a.createElement("div",{className:sr("body")},o.a.createElement(Er,{className:sr("code-snippet"),code:m.estack,highlight:!1,label:"Stack Trace"}),o.a.createElement(Er,{className:sr("code-snippet"),code:m.diff,lang:"diff",label:"Diff"}),i&&o.a.createElement(Er,{className:sr("code-snippet"),code:v,label:"Test Code"}),!!g&&o.a.createElement(Vr,{context:g}))))}}])&&rr(n.prototype,r),i&&rr(n,i),t}(r.PureComponent);lr.propTypes={test:l.a.object,enableCode:l.a.bool},lr.defaultProps={enableCode:!0};var ur=lr,cr=n(6),fr=n.n(cr),dr=n(25),pr=n.n(dr);function hr(e){return(hr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function mr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function vr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function gr(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function yr(e,t){return!t||"object"!==hr(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function br(e){return(br=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _r(e,t){return(_r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var wr=d.a.bind(tr.a),xr=function(e){function t(){return vr(this,t),yr(this,br(t).apply(this,arguments))}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_r(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){this.highlightCode()}},{key:"shouldComponentUpdate",value:function(e){return!v()(this.props,e)}},{key:"shouldHighlight",value:function(){var e=this.props,t=e.code,n=e.highlight;return("diff"!==e.lang||!fr()(t))&&t&&n}},{key:"highlightCode",value:function(){this.shouldHighlight()&&pr.a.highlightBlock(this.node)}},{key:"render",value:function(){var e,t=this,n=this.props,r=n.className,i=n.code,a=n.lang,s=n.label,l=n.showLabel,u="diff"===a,c=u&&fr()(i),f=this.shouldHighlight(),d=wr(r,(mr(e={},a,f),mr(e,"hljs",!f),mr(e,"code-diff",u),mr(e,"inline-diff",c),e));return!!i&&o.a.createElement("pre",{className:d,ref:function(e){t.node=e}},o.a.createElement("code",null,u&&(c?o.a.createElement("span",{className:wr("code-diff-actual")},"actual"):o.a.createElement("span",{className:wr("code-diff-expected")},"+ expected")),u&&(c?o.a.createElement("span",{className:wr("code-diff-expected")},"expected\n\n"):o.a.createElement("span",{className:wr("code-diff-actual")},"- actual\n\n")),c?i.map((function(e,t){var n=e.added,r=e.removed,i=e.value;return n?o.a.createElement("span",{key:t,className:wr("code-diff-expected")},i):r?o.a.createElement("span",{key:t,className:wr("code-diff-actual")},i):i})):i),!!s&&l&&o.a.createElement("span",{className:wr("code-label")},s))}}])&&gr(n.prototype,r),i&&gr(n,i),t}(r.Component);xr.displayName="CodeSnippet",xr.propTypes={className:l.a.string,code:l.a.oneOfType([l.a.string,l.a.array]),lang:l.a.string,highlight:l.a.bool,label:l.a.string,showLabel:l.a.bool},xr.defaultProps={lang:"javascript",highlight:!0,showLabel:!1};var Er=xr,kr=d.a.bind(tr.a),Sr=function(e){var t=e.className,n=e.tests,r=e.beforeHooks,i=e.afterHooks,a=e.enableCode;return o.a.createElement("ul",{className:kr("list",t)},!!r&&r.map((function(e){return o.a.createElement(ur,{key:e.uuid,test:e,enableCode:a})})),!!n&&n.map((function(e){return o.a.createElement(ur,{key:e.uuid,test:e,enableCode:a})})),!!i&&i.map((function(e){return o.a.createElement(ur,{key:e.uuid,test:e,enableCode:a})})))};Sr.propTypes={className:l.a.string,tests:l.a.array,beforeHooks:l.a.array,afterHooks:l.a.array,enableCode:l.a.bool},Sr.displayName="TestList";var Or=Sr,Tr=n(40),Nr=n.n(Tr);function Cr(e){return(Cr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Pr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Mr(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function jr(e,t){return!t||"object"!==Cr(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function Dr(e){return(Dr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Ar(e,t){return(Ar=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Ir=d.a.bind(tr.a),Rr=/(?:mp4|webm)$/i,zr=/(?:png|jpe?g|gif)$/i,Fr=/^(?:(?:https?|ftp):\/\/)/i,Lr=/^(?:(?:https?|ftp):\/\/)?(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)?$/,Ur=/^data:image\/([a-zA-Z0-9-_.])+;base64,([^"]*)$/i,Br=function(e){if(!Nr()(e))return!1;var t=e.indexOf("#");return Rr.test(t>0?e.slice(0,t):e)},Hr=function(e){function t(){var e,n;Pr(this,t);for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];return(n=jr(this,(e=Dr(t)).call.apply(e,[this].concat(i)))).renderVideo=function(e,t){var n=Lr.test(e),r=Fr.test(e),i=n&&!r?"http://".concat(e):e;return o.a.createElement("video",{controls:!0,src:i,className:Ir("video")},o.a.createElement("track",{kind:"captions"}),t,o.a.createElement("a",{href:i,className:Ir("video-link"),rel:"noopener noreferrer",target:"_blank"},i))},n.renderImage=function(e,t){var n=Lr.test(e),r=Fr.test(e),i=n&&!r?"http://".concat(e):e;return o.a.createElement("a",{href:i,className:Ir("image-link"),rel:"noopener noreferrer",target:"_blank"},o.a.createElement("img",{src:i,className:Ir("image"),alt:t}))},n.renderBase64Image=function(e,t){return o.a.createElement("img",{src:e,className:Ir("image"),alt:t})},n.renderLink=function(e,t){var n="".concat(Fr.test(e)?"":"http://").concat(e);return o.a.createElement("a",{href:n,className:Ir("text-link"),rel:"noopener noreferrer",target:"_blank",alt:t},e)},n.renderContextContent=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(Br(e))return n.renderVideo(e,t);if(zr.test(e))return n.renderImage(e,t);if(Ur.test(e))return n.renderBase64Image(e,t);if(Lr.test(e))return n.renderLink(e,t);if(Nr()(e))return o.a.createElement(Er,{className:Ir("code-snippet"),code:e,highlight:!1});var i=JSON.stringify(e,null,2);return o.a.createElement(Er,{className:Ir("code-snippet"),code:i,highlight:r})},n.renderContext=function(e,t){var r={className:Ir("context-item")};if(void 0!==t&&(r.key=t),Nr()(e))return o.a.createElement("div",r,n.renderContextContent(e));var i=e.title,a=e.value;return o.a.createElement("div",r,o.a.createElement("h4",{className:Ir("context-item-title")},i,":"),n.renderContextContent(a,i,!0))},n}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ar(e,t)}(t,e),n=t,(r=[{key:"render",value:function(){var e=this.props,t=e.className,n=e.context,r=JSON.parse(n);return o.a.createElement("div",{className:Ir(t,"context")},o.a.createElement("h4",{className:Ir("context-title")},"Additional Test Context"),Array.isArray(r)?r.map(this.renderContext):this.renderContext(r))}}])&&Mr(n.prototype,r),i&&Mr(n,i),t}(r.Component);Hr.displayName="TestContext",Hr.propTypes={className:l.a.string,context:l.a.oneOfType([l.a.string,l.a.object,l.a.array])};var Vr=Hr,Wr=n(19),Yr=n.n(Wr);function $r(e){return($r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function qr(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Qr(e){return(Qr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Gr(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Xr(e,t){return(Xr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Kr=d.a.bind(Yr.a),Jr=function(e){function t(){var e;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(e=function(e,t){return!t||"object"!==$r(t)&&"function"!=typeof t?Gr(e):t}(this,Qr(t).call(this))).state={expanded:!0},e.toggleExpandedState=e.toggleExpandedState.bind(Gr(e)),e}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Xr(e,t)}(t,e),n=t,(r=[{key:"shouldComponentUpdate",value:function(e,t){return!v()(this.props,e)||!v()(this.state,t)}},{key:"toggleExpandedState",value:function(){var e=this.state.expanded;this.setState({expanded:!e})}},{key:"render",value:function(){var e=this.props,t=e.className,n=e.suite,r=e.enableChart,i=e.enableCode,a=this.state.expanded,s=n.root,l=n.rootEmpty,u=n.suites,c=n.tests,f=n.beforeHooks,d=n.afterHooks,p=n.uuid,h=n.title,m=n.file,v=n.duration,g=!On()(u),y=!On()(c),b=!On()(n.passes),_=!On()(n.failures),w=!On()(n.pending),x=!On()(n.skipped),E=!On()(f),k=!On()(d),S=y?c.length:0,O=b?n.passes.length:0,T=_?n.failures.length:0,N=w?n.pending.length:0,C=x?n.skipped.length:0,P=function(e){return g&&o.a.createElement(ho,{suites:u,enableChart:r,enableCode:i,main:e})},M=Kr("component",t,{"root-suite":s,"has-suites":g,"no-suites":!g,"has-tests":y,"no-tests":!y&&!E&&!k,"has-passed":b,"has-failed":_,"has-pending":w,"has-skipped":x,"chart-enabled":r}),j={duration:v,totalTests:S,totalPasses:O,totalFailures:T,totalPending:N,totalSkipped:C,className:Kr({"no-margin":""===h&&""===m})},D={totalPasses:O,totalFailures:T,totalPending:N,totalSkipped:C};if(l&&!E&&!k)return P(!0);var A=s&&!y&&(E||k);return o.a.createElement("li",{id:p},o.a.createElement("section",{className:M},!A&&o.a.createElement("header",{className:Kr("header")},o.a.createElement("button",{"aria-expanded":a,type:"button",onClick:this.toggleExpandedState,className:Kr("header-btn")},""!==h&&o.a.createElement("h3",{className:Kr("title")},o.a.createElement("span",null,h),o.a.createElement(ve,{name:a?"expand_less":"expand_more",className:Kr("icon"),size:18})),""!==m&&o.a.createElement("h6",{className:Kr("filename")},m),y&&r&&o.a.createElement(co,D),y&&o.a.createElement(xo,j))),o.a.createElement("div",{className:Kr("body",!a&&"hide")},(y||E||k)&&o.a.createElement(Or,{uuid:p,tests:c,beforeHooks:f,afterHooks:d,enableCode:i}),P())))}}])&&qr(n.prototype,r),i&&qr(n,i),t}(r.Component);Jr.propTypes={suite:l.a.object,className:l.a.string,enableChart:l.a.bool,enableCode:l.a.bool};var Zr=Jr,eo=n(123),to=n.n(eo);function no(e){return(no="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ro(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function oo(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function io(e,t){return!t||"object"!==no(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function ao(e){return(ao=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function so(e,t){return(so=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var lo=d.a.bind(Yr.a),uo=function(e){function t(){return ro(this,t),io(this,ao(t).apply(this,arguments))}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&so(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){this.renderChart()}},{key:"shouldComponentUpdate",value:function(e){return!v()(this.props,e)}},{key:"renderChart",value:function(){var e=this.props,t=e.totalPasses,n=e.totalFailures,r=e.totalPending,o=e.totalSkipped;new to.a.Pie(this.node,{series:[t,n,r,o]},{classNames:{sliceDonutSolid:lo("chart-slice")},chartPadding:0,donut:!0,donutSolid:!0,donutWidth:9,ignoreEmptyValues:!0,showLabel:!1,startAngle:180})}},{key:"render",value:function(){var e=this;return o.a.createElement("div",{className:lo("chart-wrap","ct-chart"),ref:function(t){e.node=t}})}}])&&oo(n.prototype,r),i&&oo(n,i),t}(r.Component);uo.displayName="SuiteChart",uo.propTypes={totalPasses:l.a.number,totalFailures:l.a.number,totalPending:l.a.number,totalSkipped:l.a.number};var co=uo,fo=d.a.bind(Yr.a),po=function(e){var t=e.suites,n=e.enableChart,r=e.enableCode,i=e.main;return o.a.createElement("ul",{className:fo("list",{"list-main":i})},!!t&&t.map((function(e){return o.a.createElement(Zr,{key:e.uuid,suite:e,enableChart:n,enableCode:r})})))};po.propTypes={suites:l.a.array,enableChart:l.a.bool,enableCode:l.a.bool,main:l.a.bool},po.displayName="SuiteList";var ho=po,mo=n(124),vo=n.n(mo),go=d.a.bind(vo.a),yo=function(e){var t=e.className,n=e.duration,r=e.totalTests,i=e.totalPasses,a=e.totalFailures,s=e.totalPending,l=e.totalSkipped;return o.a.createElement("ul",{className:go("component",t)},o.a.createElement("li",{className:go("summary-item","duration"),title:"Duration"},o.a.createElement(ve,{name:"timer",className:go("icon"),size:18}),o.a.createElement(ee,{timer:n})),o.a.createElement("li",{className:go("summary-item","tests"),title:"Tests"},o.a.createElement(ve,{name:"assignment",className:go("icon"),size:18}),r),!!i&&o.a.createElement("li",{className:go("summary-item","passed"),title:"Passed"},o.a.createElement(ve,{name:"check",className:go("icon"),size:18}),i),!!a&&o.a.createElement("li",{className:go("summary-item","failed"),title:"Failed"},o.a.createElement(ve,{name:"close",className:go("icon"),size:18}),a),!!s&&o.a.createElement("li",{className:go("summary-item","pending"),title:"Pending"},o.a.createElement(ve,{name:"pause",className:go("icon"),size:18}),s),!!l&&o.a.createElement("li",{className:go("summary-item","skipped"),title:"Skipped"},o.a.createElement(ve,{name:"stop",className:go("icon"),size:18}),l))};yo.propTypes={className:l.a.string,duration:l.a.number,totalTests:l.a.number,totalPasses:l.a.number,totalFailures:l.a.number,totalPending:l.a.number,totalSkipped:l.a.number},yo.displayName="SuiteSummary";var bo,_o,wo,xo=yo;function Eo(e){return(Eo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ko(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function So(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Oo(e,t){return!t||"object"!==Eo(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function To(e){return(To=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function No(e,t){return(No=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Co=at("reportStore")(bo=Ot((wo=_o=function(e){function t(){return ko(this,t),Oo(this,To(t).apply(this,arguments))}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&No(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){var e=this;this.updateSuites(),this.disposer=Object(ge.m)((function(){var t=e.props.reportStore;return{showPassed:t.showPassed,showFailed:t.showFailed,showPending:t.showPending,showSkipped:t.showSkipped,showHooks:t.showHooks}}),(function(){return e.updateSuites(0)}),{delay:300})}},{key:"componentWillUnmount",value:function(){this.disposer()}},{key:"updateSuites",value:function(e){this.props.reportStore.updateFilteredSuites(e)}},{key:"render",value:function(){var e=this.props.reportStore,t=e.enableCode,n=e.enableChart,r=e.filteredSuites;return o.a.createElement("div",{id:"details",className:W()("details","container")},r.map((function(e){return o.a.createElement(Zr,{key:e.uuid,suite:e,enableChart:n,enableCode:t})})))}}])&&So(n.prototype,r),i&&So(n,i),t}(o.a.Component),_o.propTypes={reportStore:l.a.object},bo=wo))||bo)||bo,Po=n(125),Mo=n.n(Po),jo=d.a.bind(Mo.a);function Do(e){var t=e.active,n=e.className,r=e.disabled,i=e.labelClassName,a=e.label,s=e.icon,l=e.iconClassName,u=e.id,c=e.toggleFn,f=jo("label",{"with-icon":!!s},i);return o.a.createElement("div",{className:jo("component",n,{disabled:r})},!!s&&o.a.createElement(ve,{name:s,className:jo("icon",l)}),o.a.createElement("label",{className:f,htmlFor:u},a,o.a.createElement("input",{"aria-label":"Toggle status: ".concat(t?"on":"off"),type:"checkbox",id:u,className:jo("toggle-input"),checked:t,disabled:r,onChange:function(e){return!r&&c(e)}}),o.a.createElement("span",{className:jo("toggle")})))}Do.propTypes={active:l.a.bool.isRequired,className:l.a.any,disabled:l.a.bool.isRequired,labelClassName:l.a.string,label:l.a.string,icon:l.a.string,iconClassName:l.a.string,id:l.a.string.isRequired,toggleFn:l.a.func.isRequired},Do.defaultProps={active:!1},Do.displayName="ToggleSwitch";var Ao,Io,Ro,zo,Fo,Lo,Uo=Do;function Bo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ho(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Vo(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Wo(e,t,n,r,o){var i={};return Object.keys(r).forEach((function(e){i[e]=r[e]})),i.enumerable=!!i.enumerable,i.configurable=!!i.configurable,("value"in i||i.initializer)&&(i.writable=!0),i=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),i),o&&void 0!==i.initializer&&(i.value=i.initializer?i.initializer.call(o):void 0,i.initializer=void 0),void 0===i.initializer&&(Object.defineProperty(e,t,i),i=null),i}var Yo=function(e,t,n,r){return e.reduce((function(e,r,o){return n(e,t(r,o),o)}),r)},$o=(Ao=ge.d.bound,Io=ge.d.bound,Ro=ge.d.bound,zo=ge.d.bound,Fo=ge.d.bound,Wo((Lo=function(){function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Ho(this,e),this._mapHook=function(e){return("always"===t.showHooks||"failed"===t.showHooks&&e.fail||"context"===t.showHooks&&e.context)&&e},this._mapTest=function(e){return(t.showPassed&&e.pass||t.showFailed&&e.fail||t.showPending&&e.pending||t.showSkipped&&e.skipped)&&e},this._mapSuite=function(e){var n=e.suites.length?t._getFilteredTests(e.suites):[],r=Yo(e.tests,t._mapTest,t._reduceItem,[]),o=Yo(e.beforeHooks,t._mapHook,t._reduceItem,[]),i=Yo(e.afterHooks,t._mapHook,t._reduceItem,[]);return o.length||i.length||r.length||n.length?Object.assign({},e,{suites:n,beforeHooks:o,afterHooks:i,tests:r}):null},this._reduceItem=function(e,t){return t&&e.push(t),e},this._getFilteredTests=function(e){return Yo(e,t._mapSuite,t._reduceItem,[])},this._isValidOption=function(e,t,n){var r=t.indexOf(n)>=0;return r||console.error("Warning: '".concat(n,"' is not a valid option for property: '").concat(e,"'. Valid options are: ").concat(t.join(", "))),r},this._isValidShowHookOption=function(e){return t._isValidOption("showHooks",t.showHooksOptions,e)},this._getShowHooks=function(e){var n=e.showHooks,r="failed";return n&&t._isValidShowHookOption(n)?n:r},this._restoreInitialFilterState=function(){t.filters.forEach((function(e){t[e]=t.initialFilterState[e]}))},Object.assign(this,{devMode:!!r.dev,enableChart:!!r.enableCharts,enableCode:!!r.enableCode,filters:["showPassed","showFailed","showPending","showSkipped"],initialLoadTimeout:300,initialFilterState:null,reportTitle:r.reportTitle||n.reportTitle,results:n.results||[],showHooksOptions:["failed","always","never","context"],stats:n.stats||{},VERSION:"5.2.0"}),Object(ge.g)(this,{filteredSuites:[],isLoading:!0,showFailed:void 0===r.showFailed||r.showFailed,showHooks:this._getShowHooks(r),showPassed:void 0===r.showPassed||r.showPassed,showPending:void 0===r.showPending||r.showPending,showSkipped:void 0!==r.showSkipped&&r.showSkipped,singleFilter:null,sideNavOpen:!1},{filteredSuites:ge.l.shallow}),this.initialize()}var t,n,r;return t=e,(n=[{key:"initialize",value:function(){var e=this;this.initialFilterState=this.filters.reduce((function(t,n){return function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){Bo(e,t,n[t])}))}return e}({},t,Bo({},n,e[n]))}),{})}},{key:"openSideNav",value:function(){this.sideNavOpen=!0}},{key:"closeSideNav",value:function(){this.sideNavOpen=!1}},{key:"toggleFilter",value:function(e){this.toggleIsLoading(!0),this.singleFilter=null,this[e]=!this[e]}},{key:"toggleSingleFilter",value:function(e){var t=this;this.singleFilter!==e?(this.filters.filter((function(t){return t!==e})).forEach((function(e){t[e]=!1})),this[e]=!0,this.singleFilter=e):(this._restoreInitialFilterState(),this.singleFilter=null)}},{key:"setShowHooks",value:function(e){this._isValidShowHookOption(e)&&(this.toggleIsLoading(!0),this.showHooks=e)}},{key:"toggleIsLoading",value:function(e){this.isLoading=void 0!==e?e:!this.isLoading}},{key:"updateFilteredSuites",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.initialLoadTimeout;setTimeout((function(){e.toggleIsLoading(!1),e.filteredSuites=e._getFilteredTests(e.results)}),t)}}])&&Vo(t.prototype,n),r&&Vo(t,r),e}()).prototype,"openSideNav",[Ao],Object.getOwnPropertyDescriptor(Lo.prototype,"openSideNav"),Lo.prototype),Wo(Lo.prototype,"closeSideNav",[Io],Object.getOwnPropertyDescriptor(Lo.prototype,"closeSideNav"),Lo.prototype),Wo(Lo.prototype,"toggleFilter",[Ro],Object.getOwnPropertyDescriptor(Lo.prototype,"toggleFilter"),Lo.prototype),Wo(Lo.prototype,"toggleSingleFilter",[zo],Object.getOwnPropertyDescriptor(Lo.prototype,"toggleSingleFilter"),Lo.prototype),Wo(Lo.prototype,"setShowHooks",[Fo],Object.getOwnPropertyDescriptor(Lo.prototype,"setShowHooks"),Lo.prototype),Wo(Lo.prototype,"toggleIsLoading",[ge.d],Object.getOwnPropertyDescriptor(Lo.prototype,"toggleIsLoading"),Lo.prototype),Lo);pr.a.registerLanguage("javascript",n(318)),pr.a.registerLanguage("diff",n(319));var qo=document.querySelector("body"),Qo=new $o(JSON.parse(qo.getAttribute("data-raw")),JSON.parse(qo.getAttribute("data-config")));qo.removeAttribute("data-raw"),qo.removeAttribute("data-config"),window.marge=Qo,a.a.render(o.a.createElement(Ln,{store:Qo}),document.getElementById("report"))}]);
\ No newline at end of file
mochawesome-report/assets/app.js.LICENSE.txtdiffbeforeafterboth--- a/mochawesome-report/assets/app.js.LICENSE.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-object-assign
-(c) Sindre Sorhus
-@license MIT
-*/
-
-/*!
- Copyright (c) 2017 Jed Watson.
- Licensed under the MIT License (MIT), see
- http://jedwatson.github.io/classnames
-*/
-
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation. All rights reserved.
-Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-this file except in compliance with the License. You may obtain a copy of the
-License at http://www.apache.org/licenses/LICENSE-2.0
-
-THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-MERCHANTABLITY OR NON-INFRINGEMENT.
-
-See the Apache Version 2.0 License for specific language governing permissions
-and limitations under the License.
-***************************************************************************** */
-
-/*! mochawesome-report-generator 5.2.0 | https://github.com/adamgruber/mochawesome-report-generator */
-
-/** @license React v0.19.1
- * scheduler.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-/** @license React v16.13.1
- * react-dom.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-/** @license React v16.13.1
- * react.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
mochawesome-report/assets/app.js.mapdiffbeforeafterbothno changes
mochawesome-report/assets/roboto-light-webfont.woffdiffbeforeafterbothbinary blob — no preview
mochawesome-report/assets/roboto-light-webfont.woff2diffbeforeafterbothbinary blob — no preview
mochawesome-report/assets/roboto-medium-webfont.woffdiffbeforeafterbothbinary blob — no preview
mochawesome-report/assets/roboto-medium-webfont.woff2diffbeforeafterbothbinary blob — no preview
mochawesome-report/assets/roboto-regular-webfont.woffdiffbeforeafterbothbinary blob — no preview
mochawesome-report/assets/roboto-regular-webfont.woff2diffbeforeafterbothbinary blob — no preview
mochawesome-report/mochawesome.htmldiffbeforeafterboth--- a/mochawesome-report/mochawesome.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<!doctype html>
-<html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Mochawesome Report</title><link rel="stylesheet" href="assets/app.css"/></head><body data-raw="{"stats":{"suites":0,"tests":0,"passes":0,"pending":0,"failures":0,"start":"2021-09-08T12:24:24.749Z","end":"2021-09-08T12:24:24.775Z","duration":26,"testsRegistered":363,"passPercent":0,"pendingPercent":0,"other":1,"hasOther":true,"skipped":363,"hasSkipped":true},"results":[{"uuid":"60720f68-c599-4517-bbe5-4c355843c456","title":"","fullFile":"","file":"","beforeHooks":[{"title":"\"before all\" hook in \"{root}\"","fullTitle":"\"before all\" hook in \"{root}\"","timedOut":false,"duration":20,"state":"failed","pass":false,"fail":true,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Ferdie = privateKey_1.default('//Ferdie');\n});","err":{"message":"Error: the object {\n \"_yaeti\": true\n \"cancelable\": true\n \"isTrusted\": false\n \"stopImmediatePropagation\": [Function]\n \"target\": {\n \"_binaryType\": \"arraybuffer\"\n \"_bufferedAmount\": 0\n \"_client\": {\n \"_events\": {}\n \"_eventsCount\": 0\n \"_maxListeners\": [undefined]\n \"_req\": [null]\n \"base64nonce\": \"2bcUD3AqQVk1QNSE5Wi2wA==\"\n \"config\": {\n \"assembleFragments\": true\n \"closeTimeout\": 5000\n \"disableNagleAlgorithm\": true\n \"fragmentOutgoingMessages\": true\n \"fragmentationThreshold\": 262144\n \"maxReceivedFrameSize\": 1048576\n \"maxReceivedMessageSize\": 16777216\n \"tlsOptions\": {}\n \"webSocketVersion\": 13\n }\n \"origin\": [undefined]\n \"protocols\": []\n \"secure\": false\n \"url\": {\n \"auth\": [null]\n \"hash\": [null]\n \"host\": \"172.17.0.1:9944\"\n \"hostname\": \"172.17.0.1\"\n \"href\": \"ws://172.17.0.1:9944/\"\n \"path\": \"/\"\n \"pathname\": \"/\"\n \"port\": \"9944\"\n \"protocol\": \"ws:\"\n \"query\": [null]\n \"search\": [null]\n \"slashes\": true\n }\n }\n \"_connection\": [undefined]\n \"_extensions\": \"\"\n \"_listeners\": {}\n \"_protocol\": [undefined]\n \"_readyState\": 3\n \"_url\": \"ws://172.17.0.1:9944\"\n \"addEventListener\": [Function]\n \"dispatchEvent\": [Function]\n \"onclose\": [null]\n \"onerror\": [null]\n \"onmessage\": [null]\n \"onopen\": [null]\n \"removeEventListener\": [Function]\n }\n \"type\": \"error\"\n} was thrown, throw an Error :)","estack":"Error: the object {\n \"_yaeti\": true\n \"cancelable\": true\n \"isTrusted\": false\n \"stopImmediatePropagation\": [Function]\n \"target\": {\n \"_binaryType\": \"arraybuffer\"\n \"_bufferedAmount\": 0\n \"_client\": {\n \"_events\": {}\n \"_eventsCount\": 0\n \"_maxListeners\": [undefined]\n \"_req\": [null]\n \"base64nonce\": \"2bcUD3AqQVk1QNSE5Wi2wA==\"\n \"config\": {\n \"assembleFragments\": true\n \"closeTimeout\": 5000\n \"disableNagleAlgorithm\": true\n \"fragmentOutgoingMessages\": true\n \"fragmentationThreshold\": 262144\n \"maxReceivedFrameSize\": 1048576\n \"maxReceivedMessageSize\": 16777216\n \"tlsOptions\": {}\n \"webSocketVersion\": 13\n }\n \"origin\": [undefined]\n \"protocols\": []\n \"secure\": false\n \"url\": {\n \"auth\": [null]\n \"hash\": [null]\n \"host\": \"172.17.0.1:9944\"\n \"hostname\": \"172.17.0.1\"\n \"href\": \"ws://172.17.0.1:9944/\"\n \"path\": \"/\"\n \"pathname\": \"/\"\n \"port\": \"9944\"\n \"protocol\": \"ws:\"\n \"query\": [null]\n \"search\": [null]\n \"slashes\": true\n }\n }\n \"_connection\": [undefined]\n \"_extensions\": \"\"\n \"_listeners\": {}\n \"_protocol\": [undefined]\n \"_readyState\": 3\n \"_url\": \"ws://172.17.0.1:9944\"\n \"addEventListener\": [Function]\n \"dispatchEvent\": [Function]\n \"onclose\": [null]\n \"onerror\": [null]\n \"onmessage\": [null]\n \"onopen\": [null]\n \"removeEventListener\": [Function]\n }\n \"type\": \"error\"\n} was thrown, throw an Error :)\n at processTicksAndRejections (node:internal/process/task_queues:93:5)"},"uuid":"b2e6905c-e4c6-43b5-bac0-0a3077c70441","parentUUID":"60720f68-c599-4517-bbe5-4c355843c456","isHook":true,"skipped":false},{"title":"\"before all\" hook","fullTitle":"\"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Ferdie = privateKey_1.default('//Ferdie');\n Charlie = privateKey_1.default('//Charlie');\n Eve = privateKey_1.default('//Eve');\n Dave = privateKey_1.default('//Dave');\n});","err":{},"uuid":"b9b32b58-7e22-4714-b108-5c9eda9fe598","parentUUID":"60720f68-c599-4517-bbe5-4c355843c456","isHook":true,"skipped":false},{"title":"\"before all\" hook","fullTitle":"\"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"45d28530-d27d-4d82-9838-6541e2460bd6","parentUUID":"60720f68-c599-4517-bbe5-4c355843c456","isHook":true,"skipped":false},{"title":"\"before all\" hook","fullTitle":"\"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Ferdie = privateKey_1.default('//Ferdie');\n});","err":{},"uuid":"cb1fabc7-5c76-4e92-be50-fcfe5b7a6e64","parentUUID":"60720f68-c599-4517-bbe5-4c355843c456","isHook":true,"skipped":false},{"title":"\"before all\" hook","fullTitle":"\"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"3beb3f40-7ee3-4eae-985d-723c8158894d","parentUUID":"60720f68-c599-4517-bbe5-4c355843c456","isHook":true,"skipped":false},{"title":"\"before all\" hook","fullTitle":"\"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Ferdie = privateKey_1.default('//Ferdie');\n});","err":{},"uuid":"d6d32986-311a-42b1-afac-ae35b5465fad","parentUUID":"60720f68-c599-4517-bbe5-4c355843c456","isHook":true,"skipped":false},{"title":"\"before all\" hook","fullTitle":"\"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Ferdie = privateKey_1.default('//Ferdie');\n});","err":{},"uuid":"4d02f57a-8afc-4038-9dc1-6181713627f7","parentUUID":"60720f68-c599-4517-bbe5-4c355843c456","isHook":true,"skipped":false},{"title":"\"before all\" hook","fullTitle":"\"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"9414213c-23c1-420c-8b83-4e740c4cdd51","parentUUID":"60720f68-c599-4517-bbe5-4c355843c456","isHook":true,"skipped":false},{"title":"\"before all\" hook","fullTitle":"\"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Ferdie = privateKey_1.default('//Ferdie');\n});","err":{},"uuid":"7e618a73-068f-4b94-882b-149c20ddd16d","parentUUID":"60720f68-c599-4517-bbe5-4c355843c456","isHook":true,"skipped":false},{"title":"\"before all\" hook","fullTitle":"\"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Ferdie = privateKey_1.default('//Ferdie');\n});","err":{},"uuid":"32e886fe-0986-4853-865d-a17bf7becede","parentUUID":"60720f68-c599-4517-bbe5-4c355843c456","isHook":true,"skipped":false},{"title":"\"before all\" hook","fullTitle":"\"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n Alice = keyring.addFromUri('//Alice');\n Bob = keyring.addFromUri('//Bob');\n Shema = '0x31';\n largeShema = new Array(4097).fill(0xff);\n});","err":{},"uuid":"3f8d4bc9-df4d-4a56-ab5d-00eb990f88c8","parentUUID":"60720f68-c599-4517-bbe5-4c355843c456","isHook":true,"skipped":false},{"title":"\"before all\" hook","fullTitle":"\"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n Alice = keyring.addFromUri('//Alice');\n Bob = keyring.addFromUri('//Bob');\n Schema = '0x31';\n largeSchema = new Array(4097).fill(0xff);\n});","err":{},"uuid":"bda5978b-aea2-4c9d-8db9-010d66209065","parentUUID":"60720f68-c599-4517-bbe5-4c355843c456","isHook":true,"skipped":false}],"afterHooks":[],"tests":[],"suites":[{"uuid":"883d1f24-daf5-4795-b324-5ac4e4aba2fd","title":"Integration Test addCollectionAdmin(collection_id, new_admin_id):","fullFile":"/nft_parachain/tests/src/addCollectionAdmin.test.ts","file":"/src/addCollectionAdmin.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Add collection admin.","fullTitle":"Integration Test addCollectionAdmin(collection_id, new_admin_id): Add collection admin.","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.equal(alice.address);\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(bob.address));\n await substrate_api_1.submitTransactionAsync(alice, changeAdminTx);\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListAfterAddAdmin).to.be.contains(helpers_1.normalizeAccountId(bob.address));\n});","err":{},"uuid":"ae13d452-a347-4d9d-bd67-fb8f39016e9a","isHook":false,"skipped":true},{"title":"Add admin using added collection admin.","fullTitle":"Integration Test addCollectionAdmin(collection_id, new_admin_id): Add admin using added collection admin.","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n const Charlie = privateKey_1.default('//CHARLIE');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.equal(Alice.address);\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx);\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListAfterAddAdmin).to.be.contains(helpers_1.normalizeAccountId(Bob.address));\n const changeAdminTxCharlie = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Charlie.address));\n await substrate_api_1.submitTransactionAsync(Bob, changeAdminTxCharlie);\n const adminListAfterAddNewAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListAfterAddNewAdmin).to.be.contains(helpers_1.normalizeAccountId(Bob.address));\n expect(adminListAfterAddNewAdmin).to.be.contains(helpers_1.normalizeAccountId(Charlie.address));\n});","err":{},"uuid":"7bd5e167-dcc1-4b2a-b891-ce5813a9fb40","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["ae13d452-a347-4d9d-bd67-fb8f39016e9a","7bd5e167-dcc1-4b2a-b891-ce5813a9fb40"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"5f947ba1-65c6-442f-b9f3-13186b004d6a","title":"Negative Integration Test addCollectionAdmin(collection_id, new_admin_id):","fullFile":"/nft_parachain/tests/src/addCollectionAdmin.test.ts","file":"/src/addCollectionAdmin.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Not owner can't add collection admin.","fullTitle":"Negative Integration Test addCollectionAdmin(collection_id, new_admin_id): Not owner can't add collection admin.","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const nonOwner = privateKey_1.default('//Bob_stash');\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(alice.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(nonOwner, changeAdminTx)).to.be.rejected;\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListAfterAddAdmin).not.to.be.contains(helpers_1.normalizeAccountId(alice.address));\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});","err":{},"uuid":"ccd1505b-6b0b-4472-8d2c-d3a67b729421","isHook":false,"skipped":true},{"title":"Can't add collection admin of not existing collection.","fullTitle":"Negative Integration Test addCollectionAdmin(collection_id, new_admin_id): Can't add collection admin of not existing collection.","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = (1 << 32) - 1;\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const changeOwnerTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});","err":{},"uuid":"0e3a766b-610e-479f-821f-6ec97d977002","isHook":false,"skipped":true},{"title":"Can't add an admin to a destroyed collection.","fullTitle":"Negative Integration Test addCollectionAdmin(collection_id, new_admin_id): Can't add an admin to a destroyed collection.","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n const changeOwnerTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, changeOwnerTx)).to.be.rejected;\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});","err":{},"uuid":"fe525657-ebd6-47b9-8970-3dafaff61f5f","isHook":false,"skipped":true},{"title":"Add an admin to a collection that has reached the maximum number of admins limit","fullTitle":"Negative Integration Test addCollectionAdmin(collection_id, new_admin_id): Add an admin to a collection that has reached the maximum number of admins limit","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const Alice = privateKey_1.default('//Alice');\n const accounts = [\n 'GsvVmjr1CBHwQHw84pPHMDxgNY3iBLz6Qn7qS3CH8qPhrHz',\n 'FoQJpPyadYccjavVdTWxpxU7rUEaYhfLCPwXgkfD6Zat9QP',\n 'JKspFU6ohf1Grg3Phdzj2pSgWvsYWzSfKghhfzMbdhNBWs5',\n 'Fr4NzY1udSFFLzb2R3qxVQkwz9cZraWkyfH4h3mVVk7BK7P',\n 'DfnTB4z7eUvYRqcGtTpFsLC69o6tvBSC1pEv8vWPZFtCkaK',\n 'HnMAUz7r2G8G3hB27SYNyit5aJmh2a5P4eMdDtACtMFDbam',\n 'DE14BzQ1bDXWPKeLoAqdLAm1GpyAWaWF1knF74cEZeomTBM',\n ];\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const chainAdminLimit = api.consts.nft.collectionAdminsLimit.toNumber();\n expect(chainAdminLimit).to.be.equal(5);\n for (let i = 0; i < chainAdminLimit; i++) {\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(accounts[i]));\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx);\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListAfterAddAdmin).to.be.contains(helpers_1.normalizeAccountId(accounts[i]));\n }\n const tx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(accounts[chainAdminLimit]));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;\n});","err":{},"uuid":"de058063-f5ef-43e7-9504-464decfd04e5","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["ccd1505b-6b0b-4472-8d2c-d3a67b729421","0e3a766b-610e-479f-821f-6ec97d977002","fe525657-ebd6-47b9-8970-3dafaff61f5f","de058063-f5ef-43e7-9504-464decfd04e5"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"db675fb6-e2f8-42d5-b6bf-4bc5fd860e90","title":"Integration Test addToContractWhiteList","fullFile":"/nft_parachain/tests/src/addToContractWhiteList.test.ts","file":"/src/addToContractWhiteList.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Add an address to a contract white list","fullTitle":"Integration Test addToContractWhiteList Add an address to a contract white list","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"4d4e712f-9ce7-4906-9c7c-ac319a2e9da2","isHook":false,"skipped":false},{"title":"Adding same address to white list repeatedly should not produce errors","fullTitle":"Integration Test addToContractWhiteList Adding same address to white list repeatedly should not produce errors","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"22a2ad72-4361-493b-bc69-6b5974a42d50","isHook":false,"skipped":false}],"suites":[],"passes":[],"failures":[],"pending":["4d4e712f-9ce7-4906-9c7c-ac319a2e9da2","22a2ad72-4361-493b-bc69-6b5974a42d50"],"skipped":[],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"39f3396c-6bc9-4278-bb66-137f036c1025","title":"Negative Integration Test addToContractWhiteList","fullFile":"/nft_parachain/tests/src/addToContractWhiteList.test.ts","file":"/src/addToContractWhiteList.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Add an address to a white list of a non-contract","fullTitle":"Negative Integration Test addToContractWhiteList Add an address to a white list of a non-contract","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"11afd47c-355c-4dc3-91b7-49d462da2ee9","isHook":false,"skipped":false},{"title":"Add to a contract white list using a non-owner address","fullTitle":"Negative Integration Test addToContractWhiteList Add to a contract white list using a non-owner address","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"dc54f6a6-b79c-49c7-90cb-994667d80759","isHook":false,"skipped":false}],"suites":[],"passes":[],"failures":[],"pending":["11afd47c-355c-4dc3-91b7-49d462da2ee9","dc54f6a6-b79c-49c7-90cb-994667d80759"],"skipped":[],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"8e0432c7-b6de-4e10-a6d7-78f4ec63c23b","title":"Integration Test ext. addToWhiteList()","fullFile":"/nft_parachain/tests/src/addToWhiteList.test.ts","file":"/src/addToWhiteList.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test ext. addToWhiteList() \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"504f61a5-c065-474c-bfd9-50bb5e0e64ce","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Execute the extrinsic with parameters: Collection ID and address to add to the white list","fullTitle":"Integration Test ext. addToWhiteList() Execute the extrinsic with parameters: Collection ID and address to add to the white list","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);","err":{},"uuid":"f4af86bd-2445-483b-84af-9dd6d4e89caf","isHook":false,"skipped":true},{"title":"Whitelisted minting: list restrictions","fullTitle":"Integration Test ext. addToWhiteList() Whitelisted minting: list restrictions","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);\nawait helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\nawait helpers_1.enablePublicMintingExpectSuccess(Alice, collectionId);\nawait helpers_1.createItemExpectSuccess(Bob, collectionId, 'NFT', Bob.address);","err":{},"uuid":"076d5bc5-61a5-49b3-8a8b-85d92ab5ea95","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["f4af86bd-2445-483b-84af-9dd6d4e89caf","076d5bc5-61a5-49b3-8a8b-85d92ab5ea95"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"54048e5b-61d8-4202-957f-c39bf6ecf002","title":"Negative Integration Test ext. addToWhiteList()","fullFile":"/nft_parachain/tests/src/addToWhiteList.test.ts","file":"/src/addToWhiteList.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"White list an address in the collection that does not exist","fullTitle":"Negative Integration Test ext. addToWhiteList() White list an address in the collection that does not exist","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n const Bob = privateKey_1.default('//Bob');\n const tx = api.tx.nft.addToWhiteList(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;\n});","err":{},"uuid":"89dfc83d-b8ec-48ae-a23d-c254f74c457f","isHook":false,"skipped":true},{"title":"White list an address in the collection that was destroyed","fullTitle":"Negative Integration Test ext. addToWhiteList() White list an address in the collection that was destroyed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n // tslint:disable-next-line: no-bitwise\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n const tx = api.tx.nft.addToWhiteList(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;\n});","err":{},"uuid":"5cc79a66-b069-4e44-b20e-e8463e79d03b","isHook":false,"skipped":true},{"title":"White list an address in the collection that does not have white list access enabled","fullTitle":"Negative Integration Test ext. addToWhiteList() White list an address in the collection that does not have white list access enabled","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const Alice = privateKey_1.default('//Alice');\n const Ferdie = privateKey_1.default('//Ferdie');\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\n await helpers_1.enablePublicMintingExpectSuccess(Alice, collectionId);\n const tx = api.tx.nft.createItem(collectionId, helpers_1.normalizeAccountId(Ferdie.address), 'NFT');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Ferdie, tx)).to.be.rejected;\n});","err":{},"uuid":"a2acbcac-3464-4de4-a649-bd39ab868fcf","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["89dfc83d-b8ec-48ae-a23d-c254f74c457f","5cc79a66-b069-4e44-b20e-e8463e79d03b","a2acbcac-3464-4de4-a649-bd39ab868fcf"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"17759d9b-3a02-47ec-aa3b-7538324dfde4","title":"Integration Test ext. addToWhiteList() with collection admin permissions:","fullFile":"/nft_parachain/tests/src/addToWhiteList.test.ts","file":"/src/addToWhiteList.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test ext. addToWhiteList() with collection admin permissions: \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});","err":{},"uuid":"39f215f2-a4da-40c8-a0cf-8f493363df97","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Negative. Add to the white list by regular user","fullTitle":"Integration Test ext. addToWhiteList() with collection admin permissions: Negative. Add to the white list by regular user","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addToWhiteListExpectFail(Bob, collectionId, Charlie.address);","err":{},"uuid":"0fd4da7d-13aa-4c8a-abb3-a62baf1eea08","isHook":false,"skipped":true},{"title":"Execute the extrinsic with parameters: Collection ID and address to add to the white list","fullTitle":"Integration Test ext. addToWhiteList() with collection admin permissions: Execute the extrinsic with parameters: Collection ID and address to add to the white list","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\nawait helpers_1.addToWhiteListExpectSuccess(Bob, collectionId, Charlie.address);","err":{},"uuid":"64da9424-a2a1-4e24-bb62-9ec2a35b4620","isHook":false,"skipped":true},{"title":"Whitelisted minting: list restrictions","fullTitle":"Integration Test ext. addToWhiteList() with collection admin permissions: Whitelisted minting: list restrictions","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\nawait helpers_1.addToWhiteListExpectSuccess(Bob, collectionId, Charlie.address);\n// allowed only for collection owner\nawait helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\nawait helpers_1.enablePublicMintingExpectSuccess(Alice, collectionId);\nawait helpers_1.createItemExpectSuccess(Charlie, collectionId, 'NFT', Charlie.address);","err":{},"uuid":"f5983173-28be-48b5-833e-f0092fca2815","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["0fd4da7d-13aa-4c8a-abb3-a62baf1eea08","64da9424-a2a1-4e24-bb62-9ec2a35b4620","f5983173-28be-48b5-833e-f0092fca2815"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"7ff1c1ae-0522-4644-82a6-b8c8f61aac78","title":"Integration Test approve(spender, collection_id, item_id, amount):","fullFile":"/nft_parachain/tests/src/approve.test.ts","file":"/src/approve.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test approve(spender, collection_id, item_id, amount): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});","err":{},"uuid":"8413cad1-b738-44b1-bc1e-894e8f250979","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Execute the extrinsic and check approvedList","fullTitle":"Integration Test approve(spender, collection_id, item_id, amount): Execute the extrinsic and check approvedList","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n// nft\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\nawait helpers_1.approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);","err":{},"uuid":"58f34661-b685-46a5-b2fb-d62adacb20b9","isHook":false,"skipped":true},{"title":"Remove approval by using 0 amount","fullTitle":"Integration Test approve(spender, collection_id, item_id, amount): Remove approval by using 0 amount","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n// nft\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1);\nawait helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 0);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);\nawait helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 0);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\nawait helpers_1.approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);\nawait helpers_1.approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 0);","err":{},"uuid":"b4a52671-3927-444e-b297-1e87fb6a1e59","isHook":false,"skipped":true},{"title":"can be called by collection owner on non-owned item when OwnerCanTransfer == true","fullTitle":"Integration Test approve(spender, collection_id, item_id, amount): can be called by collection owner on non-owned item when OwnerCanTransfer == true","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nconst itemId = await helpers_1.createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);\nawait helpers_1.approveExpectSuccess(collectionId, itemId, Alice, Charlie);","err":{},"uuid":"07b9ce52-ffaa-44ed-af6e-a22d034ab1aa","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["58f34661-b685-46a5-b2fb-d62adacb20b9","b4a52671-3927-444e-b297-1e87fb6a1e59","07b9ce52-ffaa-44ed-af6e-a22d034ab1aa"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"bbd0d378-525f-4ca7-b117-9811069d2768","title":"Negative Integration Test approve(spender, collection_id, item_id, amount):","fullFile":"/nft_parachain/tests/src/approve.test.ts","file":"/src/approve.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Negative Integration Test approve(spender, collection_id, item_id, amount): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});","err":{},"uuid":"0e01d3cf-8db0-42a5-af2e-afea877962a8","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Approve for a collection that does not exist","fullTitle":"Negative Integration Test approve(spender, collection_id, item_id, amount): Approve for a collection that does not exist","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // nft\n const nftCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.approveExpectFail(nftCollectionCount + 1, 1, Alice, Bob);\n // fungible\n const fungibleCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.approveExpectFail(fungibleCollectionCount + 1, 1, Alice, Bob);\n // reFungible\n const reFungibleCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.approveExpectFail(reFungibleCollectionCount + 1, 1, Alice, Bob);\n});","err":{},"uuid":"57f2f5eb-c881-4963-8d9d-379b5cd553f0","isHook":false,"skipped":true},{"title":"Approve for a collection that was destroyed","fullTitle":"Negative Integration Test approve(spender, collection_id, item_id, amount): Approve for a collection that was destroyed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"// nft\nconst nftCollectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.destroyCollectionExpectSuccess(nftCollectionId);\nawait helpers_1.approveExpectFail(nftCollectionId, 1, Alice, Bob);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.destroyCollectionExpectSuccess(fungibleCollectionId);\nawait helpers_1.approveExpectFail(fungibleCollectionId, 1, Alice, Bob);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.destroyCollectionExpectSuccess(reFungibleCollectionId);\nawait helpers_1.approveExpectFail(reFungibleCollectionId, 1, Alice, Bob);","err":{},"uuid":"38827096-3e94-4bcc-be0c-3b7c3ba7d69d","isHook":false,"skipped":true},{"title":"Approve transfer of a token that does not exist","fullTitle":"Negative Integration Test approve(spender, collection_id, item_id, amount): Approve transfer of a token that does not exist","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"// nft\nconst nftCollectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.approveExpectFail(nftCollectionId, 2, Alice, Bob);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.approveExpectFail(reFungibleCollectionId, 2, Alice, Bob);","err":{},"uuid":"ad56e131-a17c-41e6-b1e2-63802f3ed386","isHook":false,"skipped":true},{"title":"Approve using the address that does not own the approved token","fullTitle":"Negative Integration Test approve(spender, collection_id, item_id, amount): Approve using the address that does not own the approved token","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n// nft\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.approveExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\nawait helpers_1.approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice);","err":{},"uuid":"b4820ad0-7f0e-4ec6-8aeb-e8ce85421337","isHook":false,"skipped":true},{"title":"should fail if approved more NFTs than owned","fullTitle":"Negative Integration Test approve(spender, collection_id, item_id, amount): should fail if approved more NFTs than owned","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const nftCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');\nawait helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice);\nawait helpers_1.approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice);","err":{},"uuid":"8c124180-e9e6-400d-b8c2-c2c7d8fbb8fb","isHook":false,"skipped":true},{"title":"should fail if approved more ReFungibles than owned","fullTitle":"Negative Integration Test approve(spender, collection_id, item_id, amount): should fail if approved more ReFungibles than owned","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const nftCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'ReFungible');\nawait helpers_1.transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 100, 'ReFungible');\nawait helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, 100);\nawait helpers_1.approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, 1);","err":{},"uuid":"68f5b592-5b15-483b-93bf-2eaf69c9852c","isHook":false,"skipped":true},{"title":"should fail if approved more Fungibles than owned","fullTitle":"Negative Integration Test approve(spender, collection_id, item_id, amount): should fail if approved more Fungibles than owned","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const nftCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'Fungible');\nawait helpers_1.transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 10, 'Fungible');\nawait helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, 10);\nawait helpers_1.approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, 1);","err":{},"uuid":"791a84c5-527a-416d-b3df-ff271c2e1b06","isHook":false,"skipped":true},{"title":"fails when called by collection owner on non-owned item when OwnerCanTransfer == false","fullTitle":"Negative Integration Test approve(spender, collection_id, item_id, amount): fails when called by collection owner on non-owned item when OwnerCanTransfer == false","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nconst itemId = await helpers_1.createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);\nawait helpers_1.setCollectionLimitsExpectSuccess(Alice, collectionId, { OwnerCanTransfer: false });\nawait helpers_1.approveExpectFail(collectionId, itemId, Alice, Charlie);","err":{},"uuid":"4f9a097e-535d-4a36-9373-245ee1a86171","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["57f2f5eb-c881-4963-8d9d-379b5cd553f0","38827096-3e94-4bcc-be0c-3b7c3ba7d69d","ad56e131-a17c-41e6-b1e2-63802f3ed386","b4820ad0-7f0e-4ec6-8aeb-e8ce85421337","8c124180-e9e6-400d-b8c2-c2c7d8fbb8fb","68f5b592-5b15-483b-93bf-2eaf69c9852c","791a84c5-527a-416d-b3df-ff271c2e1b06","4f9a097e-535d-4a36-9373-245ee1a86171"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"ffbd7ce9-1b21-4083-814b-9c633c3f15bb","title":"Integration Test approve(spender, collection_id, item_id, amount) with collection admin permissions:","fullFile":"/nft_parachain/tests/src/approve.test.ts","file":"/src/approve.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test approve(spender, collection_id, item_id, amount) with collection admin permissions: \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});","err":{},"uuid":"6a7aa23b-1aae-4eac-88d9-26472e020fd3","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"can be called by collection admin on non-owned item","fullTitle":"Integration Test approve(spender, collection_id, item_id, amount) with collection admin permissions: can be called by collection admin on non-owned item","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nconst itemId = await helpers_1.createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);\nawait helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\nawait helpers_1.approveExpectSuccess(collectionId, itemId, Bob, Charlie);","err":{},"uuid":"a31ccf62-8920-4e14-9b8d-bc74a0ca7566","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["a31ccf62-8920-4e14-9b8d-bc74a0ca7566"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"4d1d3346-8d28-4bd0-98d0-d2a6cac5608b","title":"Block Production smoke test","fullFile":"/nft_parachain/tests/src/block-production.test.ts","file":"/src/block-production.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Node produces new blocks","fullTitle":"Block Production smoke test Node produces new blocks","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const blocks = await getBlocks(api);\n chai_1.expect(blocks[0]).to.be.lessThan(blocks[1]);\n});","err":{},"uuid":"44b68326-4b05-4eeb-beca-5994a2bec2fd","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["44b68326-4b05-4eeb-beca-5994a2bec2fd"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"31630dc0-1bc3-4608-9307-b6efb62d0b57","title":"integration test: ext. burnItem():","fullFile":"/nft_parachain/tests/src/burnItem.test.ts","file":"/src/burnItem.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"integration test: ext. burnItem(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});","err":{},"uuid":"106d90d4-57ff-46c4-8870-1c7fd149c0ab","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Burn item in NFT collection","fullTitle":"integration test: ext. burnItem(): Burn item in NFT collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'NFT';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const events = await substrate_api_1.submitTransactionAsync(alice, tx);\n const result = helpers_1.getGenericResult(events);\n // Get the item\n const item = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();\n // What to expect\n // tslint:disable-next-line:no-unused-expression\n expect(result.success).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n expect(item).to.be.null;\n});","err":{},"uuid":"db281de7-6da6-4d2d-9005-21e20a011fc2","isHook":false,"skipped":true},{"title":"Burn item in Fungible collection","fullTitle":"integration test: ext. burnItem(): Burn item in Fungible collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'Fungible';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode, decimalPoints: 0 } });\nawait helpers_1.createItemExpectSuccess(alice, collectionId, createMode); // Helper creates 10 fungible tokens\nconst tokenId = 0; // ignored\nawait substrate_api_1.default(async (api) => {\n // Destroy 1 of 10\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);\n const events = await substrate_api_1.submitTransactionAsync(alice, tx);\n const result = helpers_1.getGenericResult(events);\n // Get alice balance \n const balance = (await api.query.nft.fungibleItemList(collectionId, alice.address)).toJSON();\n // What to expect\n expect(result.success).to.be.true;\n expect(balance).to.be.not.null;\n expect(balance.Value).to.be.equal(9);\n});","err":{},"uuid":"dcfdcd23-ef39-4a88-9bf1-74de618d7535","isHook":false,"skipped":true},{"title":"Burn item in ReFungible collection","fullTitle":"integration test: ext. burnItem(): Burn item in ReFungible collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'ReFungible';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);\n const events = await substrate_api_1.submitTransactionAsync(alice, tx);\n const result = helpers_1.getGenericResult(events);\n // Get alice balance \n const balance = (await api.query.nft.reFungibleItemList(collectionId, tokenId)).toJSON();\n // What to expect\n expect(result.success).to.be.true;\n expect(balance).to.be.null;\n});","err":{},"uuid":"30dfae18-db02-458d-91da-cd9ca371dabf","isHook":false,"skipped":true},{"title":"Burn owned portion of item in ReFungible collection","fullTitle":"integration test: ext. burnItem(): Burn owned portion of item in ReFungible collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'ReFungible';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait substrate_api_1.default(async (api) => {\n // Transfer 1/100 of the token to Bob\n const transfertx = api.tx.nft.transfer(helpers_1.normalizeAccountId(bob.address), collectionId, tokenId, 1);\n const events1 = await substrate_api_1.submitTransactionAsync(alice, transfertx);\n const result1 = helpers_1.getGenericResult(events1);\n // Get balances\n const balanceBefore = (await api.query.nft.reFungibleItemList(collectionId, tokenId)).toJSON();\n // Bob burns his portion\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const events2 = await substrate_api_1.submitTransactionAsync(bob, tx);\n const result2 = helpers_1.getGenericResult(events2);\n // Get balances \n const balance = (await api.query.nft.reFungibleItemList(collectionId, tokenId)).toJSON();\n // console.log(balance);\n // What to expect before burning\n expect(result1.success).to.be.true;\n expect(balanceBefore).to.be.not.null;\n expect(balanceBefore.Owner.length).to.be.equal(2);\n expect(balanceBefore.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(alice.address));\n expect(balanceBefore.Owner[0].Fraction).to.be.equal(99);\n expect(balanceBefore.Owner[1].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(bob.address));\n expect(balanceBefore.Owner[1].Fraction).to.be.equal(1);\n // What to expect after burning\n expect(result2.success).to.be.true;\n expect(balance).to.be.not.null;\n expect(balance.Owner.length).to.be.equal(1);\n expect(balance.Owner[0].Fraction).to.be.equal(99);\n expect(balance.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(alice.address));\n});","err":{},"uuid":"fb1160e0-cf9c-4e27-96c2-353e01a09422","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["db281de7-6da6-4d2d-9005-21e20a011fc2","dcfdcd23-ef39-4a88-9bf1-74de618d7535","30dfae18-db02-458d-91da-cd9ca371dabf","fb1160e0-cf9c-4e27-96c2-353e01a09422"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"16273f03-1dd5-4058-a84a-cc4d6aa4832c","title":"integration test: ext. burnItem() with admin permissions:","fullFile":"/nft_parachain/tests/src/burnItem.test.ts","file":"/src/burnItem.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"integration test: ext. burnItem() with admin permissions: \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});","err":{},"uuid":"97633032-cfa2-424d-a9fd-74b7e9758ddd","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Burn item in NFT collection","fullTitle":"integration test: ext. burnItem() with admin permissions: Burn item in NFT collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'NFT';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\nawait substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const events = await substrate_api_1.submitTransactionAsync(bob, tx);\n const result = helpers_1.getGenericResult(events);\n // Get the item\n const item = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();\n // What to expect\n // tslint:disable-next-line:no-unused-expression\n expect(result.success).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n expect(item).to.be.null;\n});","err":{},"uuid":"b1fc4b6a-2a91-4fe7-b286-47e8aa974059","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["b1fc4b6a-2a91-4fe7-b286-47e8aa974059"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"452f3792-5d1a-4859-a360-cfffe0b60deb","title":"Negative integration test: ext. burnItem():","fullFile":"/nft_parachain/tests/src/burnItem.test.ts","file":"/src/burnItem.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Negative integration test: ext. burnItem(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});","err":{},"uuid":"069a8925-8f20-4ec3-9704-f3150eda6653","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Burn a token in a destroyed collection","fullTitle":"Negative integration test: ext. burnItem(): Burn a token in a destroyed collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'NFT';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);\nawait substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(alice, tx);\n };\n await expect(badTransaction()).to.be.rejected;\n});","err":{},"uuid":"80c1a171-453f-4a6c-8b50-dd960a40599f","isHook":false,"skipped":true},{"title":"Burn a token that was never created","fullTitle":"Negative integration test: ext. burnItem(): Burn a token that was never created","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'NFT';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = 10;\nawait substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(alice, tx);\n };\n await expect(badTransaction()).to.be.rejected;\n});","err":{},"uuid":"316a7d3b-76ac-43e5-af33-fc3be17131b6","isHook":false,"skipped":true},{"title":"Burn a token using the address that does not own it","fullTitle":"Negative integration test: ext. burnItem(): Burn a token using the address that does not own it","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'NFT';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(bob, tx);\n };\n await expect(badTransaction()).to.be.rejected;\n});","err":{},"uuid":"91f485b0-7d62-4170-b47e-a4e982a2ff55","isHook":false,"skipped":true},{"title":"Transfer a burned a token","fullTitle":"Negative integration test: ext. burnItem(): Transfer a burned a token","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'NFT';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait substrate_api_1.default(async (api) => {\n const burntx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const events1 = await substrate_api_1.submitTransactionAsync(alice, burntx);\n const result1 = helpers_1.getGenericResult(events1);\n expect(result1.success).to.be.true;\n const tx = api.tx.nft.transfer(helpers_1.normalizeAccountId(bob.address), collectionId, tokenId, 0);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(alice, tx);\n };\n await expect(badTransaction()).to.be.rejected;\n});","err":{},"uuid":"2ddeae42-6371-40cf-be36-54a3c3ae2b61","isHook":false,"skipped":true},{"title":"Burn more than owned in Fungible collection","fullTitle":"Negative integration test: ext. burnItem(): Burn more than owned in Fungible collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'Fungible';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode, decimalPoints: 0 } });\n// Helper creates 10 fungible tokens\nawait helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nconst tokenId = 0; // ignored\nawait substrate_api_1.default(async (api) => {\n // Destroy 11 of 10\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 11);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(alice, tx);\n };\n await expect(badTransaction()).to.be.rejected;\n // Get alice balance \n const balance = (await api.query.nft.fungibleItemList(collectionId, alice.address)).toJSON();\n // What to expect\n expect(balance).to.be.not.null;\n expect(balance.Value).to.be.equal(10);\n});","err":{},"uuid":"331fa2e2-1474-43f8-9e0d-fec071119639","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["80c1a171-453f-4a6c-8b50-dd960a40599f","316a7d3b-76ac-43e5-af33-fc3be17131b6","91f485b0-7d62-4170-b47e-a4e982a2ff55","2ddeae42-6371-40cf-be36-54a3c3ae2b61","331fa2e2-1474-43f8-9e0d-fec071119639"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"d9f0d67b-bfca-4457-958a-3ef539b093ca","title":"Integration Test changeCollectionOwner(collection_id, new_owner):","fullFile":"/nft_parachain/tests/src/change-collection-owner.test.ts","file":"/src/change-collection-owner.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Changing owner changes owner address","fullTitle":"Integration Test changeCollectionOwner(collection_id, new_owner): Changing owner changes owner address","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(alice.address);\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await substrate_api_1.submitTransactionAsync(alice, changeOwnerTx);\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(bob.address);\n});","err":{},"uuid":"106c78ce-05ec-4455-bdac-c3ce51f7f62e","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["106c78ce-05ec-4455-bdac-c3ce51f7f62e"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"b0dfc56e-2c7e-4909-a8cd-3def915d0e8a","title":"Integration Test changeCollectionOwner(collection_id, new_owner) special checks for exOwner:","fullFile":"/nft_parachain/tests/src/change-collection-owner.test.ts","file":"/src/change-collection-owner.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Changing the owner of the collection is not allowed for the former owner","fullTitle":"Integration Test changeCollectionOwner(collection_id, new_owner) special checks for exOwner: Changing the owner of the collection is not allowed for the former owner","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(alice.address);\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await substrate_api_1.submitTransactionAsync(alice, changeOwnerTx);\n const badChangeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, alice.address);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, badChangeOwnerTx)).to.be.rejected;\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(bob.address);\n});","err":{},"uuid":"f8e8a3fc-cb38-4a7b-972e-c228ecfc7a55","isHook":false,"skipped":true},{"title":"New collectionOwner has access to sponsorship management operations in the collection","fullTitle":"Integration Test changeCollectionOwner(collection_id, new_owner) special checks for exOwner: New collectionOwner has access to sponsorship management operations in the collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const charlie = privateKey_1.default('//Charlie');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(alice.address);\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await substrate_api_1.submitTransactionAsync(alice, changeOwnerTx);\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(bob.address);\n // After changing the owner of the collection, all privileged methods are available to the new owner\n // The new owner of the collection has access to sponsorship management operations in the collection\n await helpers_1.setCollectionSponsorExpectSuccess(collectionId, charlie.address, '//Bob');\n await helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Charlie');\n await helpers_1.removeCollectionSponsorExpectSuccess(collectionId, '//Bob');\n // The new owner of the collection has access to operations for managing the collection parameters\n const collectionLimits = {\n AccountTokenOwnershipLimit: 1,\n SponsoredMintSize: 1,\n TokenLimit: 1,\n SponsorTimeout: 1,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n };\n const tx1 = api.tx.nft.setCollectionLimits(collectionId, collectionLimits);\n await substrate_api_1.submitTransactionAsync(bob, tx1);\n await helpers_1.setPublicAccessModeExpectSuccess(bob, collectionId, 'WhiteList');\n await helpers_1.enableWhiteListExpectSuccess(bob, collectionId);\n await helpers_1.setMintPermissionExpectSuccess(bob, collectionId, true);\n await helpers_1.destroyCollectionExpectSuccess(collectionId, '//Bob');\n});","err":{},"uuid":"605404fb-8e36-4370-9f2f-658f09fb8e40","isHook":false,"skipped":true},{"title":"New collectionOwner has access to changeCollectionOwner","fullTitle":"Integration Test changeCollectionOwner(collection_id, new_owner) special checks for exOwner: New collectionOwner has access to changeCollectionOwner","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const charlie = privateKey_1.default('//Charlie');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(alice.address);\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await substrate_api_1.submitTransactionAsync(alice, changeOwnerTx);\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(bob.address);\n const changeOwnerTx2 = api.tx.nft.changeCollectionOwner(collectionId, charlie.address);\n await substrate_api_1.submitTransactionAsync(bob, changeOwnerTx2);\n // ownership lost\n const collectionAfterOwnerChange2 = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange2.Owner).to.be.deep.eq(charlie.address);\n});","err":{},"uuid":"cfe9d4c1-0a65-4aea-94a6-90c097e01279","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["f8e8a3fc-cb38-4a7b-972e-c228ecfc7a55","605404fb-8e36-4370-9f2f-658f09fb8e40","cfe9d4c1-0a65-4aea-94a6-90c097e01279"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"95795b78-4a0b-4ce1-aabd-b1bebb9b68b7","title":"Negative Integration Test changeCollectionOwner(collection_id, new_owner):","fullFile":"/nft_parachain/tests/src/change-collection-owner.test.ts","file":"/src/change-collection-owner.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Not owner can't change owner.","fullTitle":"Negative Integration Test changeCollectionOwner(collection_id, new_owner): Not owner can't change owner.","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(bob, changeOwnerTx)).to.be.rejected;\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(alice.address);\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});","err":{},"uuid":"50601940-15a6-43fd-8e69-e9f15b4cd27b","isHook":false,"skipped":true},{"title":"Collection admin can't change owner.","fullTitle":"Negative Integration Test changeCollectionOwner(collection_id, new_owner): Collection admin can't change owner.","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n await helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(bob, changeOwnerTx)).to.be.rejected;\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(alice.address);\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});","err":{},"uuid":"0dfe81ed-ad93-4968-93aa-c0611841e925","isHook":false,"skipped":true},{"title":"Can't change owner of a non-existing collection.","fullTitle":"Negative Integration Test changeCollectionOwner(collection_id, new_owner): Can't change owner of a non-existing collection.","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = (1 << 32) - 1;\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});","err":{},"uuid":"a503acea-f020-48f7-babe-7b35dbe8b5e4","isHook":false,"skipped":true},{"title":"Former collectionOwner not allowed to sponsorship management operations in the collection","fullTitle":"Negative Integration Test changeCollectionOwner(collection_id, new_owner): Former collectionOwner not allowed to sponsorship management operations in the collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const charlie = privateKey_1.default('//Charlie');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(alice.address);\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await substrate_api_1.submitTransactionAsync(alice, changeOwnerTx);\n const badChangeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, alice.address);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, badChangeOwnerTx)).to.be.rejected;\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(bob.address);\n await helpers_1.setCollectionSponsorExpectFailure(collectionId, charlie.address, '//Alice');\n await helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Alice');\n await helpers_1.removeCollectionSponsorExpectFailure(collectionId, '//Alice');\n const collectionLimits = {\n AccountTokenOwnershipLimit: 1,\n SponsoredMintSize: 1,\n TokenLimit: 1,\n SponsorTimeout: 1,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n };\n const tx1 = api.tx.nft.setCollectionLimits(collectionId, collectionLimits);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, tx1)).to.be.rejected;\n await helpers_1.enableWhiteListExpectFail(alice, collectionId);\n await helpers_1.setMintPermissionExpectFailure(alice, collectionId, true);\n await helpers_1.destroyCollectionExpectFailure(collectionId, '//Alice');\n});","err":{},"uuid":"89038078-bfeb-4ae6-89ec-47a162b45901","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["50601940-15a6-43fd-8e69-e9f15b4cd27b","0dfe81ed-ad93-4968-93aa-c0611841e925","a503acea-f020-48f7-babe-7b35dbe8b5e4","89038078-bfeb-4ae6-89ec-47a162b45901"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"55f5e4e4-f4fb-4ad7-930e-665826d4cf36","title":"Burn Item event ","fullFile":"/nft_parachain/tests/src/check-event/burnItemEvent.test.ts","file":"/src/check-event/burnItemEvent.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Burn Item event \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n});","err":{},"uuid":"1cd0ef23-8ba6-42e1-9f3b-c3c8b2507b93","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Check event from burnItem(): ","fullTitle":"Burn Item event Check event from burnItem(): ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionID = await helpers_1.createCollectionExpectSuccess();\n const itemID = await helpers_1.createItemExpectSuccess(Alice, collectionID, 'NFT');\n const burnItem = api.tx.nft.burnItem(collectionID, itemID, 1);\n const events = await substrate_api_1.submitTransactionAsync(Alice, burnItem);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkSection);\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});","err":{},"uuid":"de5f50c1-af90-42df-93c3-2934badb6102","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["de5f50c1-af90-42df-93c3-2934badb6102"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"3878d237-7941-4f7d-9402-70c55b27ed0a","title":"Create collection event ","fullFile":"/nft_parachain/tests/src/check-event/createCollectionEvent.test.ts","file":"/src/check-event/createCollectionEvent.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Create collection event \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n});","err":{},"uuid":"1df63224-8d83-4ad7-865e-380947ae6c9a","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Check event from createCollection(): ","fullTitle":"Create collection event Check event from createCollection(): ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.createCollection('0x31', '0x32', '0x33', 'NFT');\n const events = await substrate_api_1.submitTransactionAsync(Alice, tx);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkSection);\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});","err":{},"uuid":"839bfe64-f4fa-4411-860f-f9efd40ed5db","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["839bfe64-f4fa-4411-860f-f9efd40ed5db"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"400efadc-b579-4d9f-976c-109ef146f79c","title":"Create Item event ","fullFile":"/nft_parachain/tests/src/check-event/createItemEvent.test.ts","file":"/src/check-event/createItemEvent.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Create Item event \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n});","err":{},"uuid":"b67f0a1f-8a42-4364-a20d-e252defd1183","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Check event from createItem(): ","fullTitle":"Create Item event Check event from createItem(): ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionID = await helpers_1.createCollectionExpectSuccess();\n const createItem = api.tx.nft.createItem(collectionID, Alice.address, 'NFT');\n const events = await substrate_api_1.submitTransactionAsync(Alice, createItem);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkSection);\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});","err":{},"uuid":"85d467a8-89df-4b5d-8cc1-0196eb9f93f5","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["85d467a8-89df-4b5d-8cc1-0196eb9f93f5"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"3b11cc06-de4c-4c51-a1fe-3f51dd00189e","title":"Create Multiple Items Event event ","fullFile":"/nft_parachain/tests/src/check-event/createMultipleItemsEvent.test.ts","file":"/src/check-event/createMultipleItemsEvent.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Create Multiple Items Event event \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n});","err":{},"uuid":"ca3bcd24-41a8-4305-b378-e11c014b60c6","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Check event from createMultipleItems(): ","fullTitle":"Create Multiple Items Event event Check event from createMultipleItems(): ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionID = await helpers_1.createCollectionExpectSuccess();\n const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];\n const createMultipleItems = api.tx.nft.createMultipleItems(collectionID, Alice.address, args);\n const events = await substrate_api_1.submitTransactionAsync(Alice, createMultipleItems);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkSection);\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});","err":{},"uuid":"55b6d724-0365-4f9a-b8e4-9b033966390b","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["55b6d724-0365-4f9a-b8e4-9b033966390b"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"5bf9438d-76d2-4721-aeb3-173ec73ce3e4","title":"Destroy collection event ","fullFile":"/nft_parachain/tests/src/check-event/destroyCollectionEvent.test.ts","file":"/src/check-event/destroyCollectionEvent.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Destroy collection event \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n});","err":{},"uuid":"8466e150-ec40-4916-8b9d-40ed46043246","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Check event from destroyCollection(): ","fullTitle":"Destroy collection event Check event from destroyCollection(): ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionID = await helpers_1.createCollectionExpectSuccess();\n const destroyCollection = api.tx.nft.destroyCollection(collectionID);\n const events = await substrate_api_1.submitTransactionAsync(Alice, destroyCollection);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});","err":{},"uuid":"39b42382-7bc8-4552-92a2-cb34b6c1c7be","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["39b42382-7bc8-4552-92a2-cb34b6c1c7be"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"97c4b3e9-85ed-4a1a-947e-6e3984151fdd","title":"Transfer event ","fullFile":"/nft_parachain/tests/src/check-event/transferEvent.test.ts","file":"/src/check-event/transferEvent.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Transfer event \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"de4cf4d9-1530-4052-8115-ab14d42cc92a","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Check event from transfer(): ","fullTitle":"Transfer event Check event from transfer(): ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionID = await helpers_1.createCollectionExpectSuccess();\n const itemID = await helpers_1.createItemExpectSuccess(Alice, collectionID, 'NFT');\n const transfer = api.tx.nft.transfer(Bob.address, collectionID, itemID, 1);\n const events = await substrate_api_1.submitTransactionAsync(Alice, transfer);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkSection);\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});","err":{},"uuid":"e6598d9d-b6b2-4e48-8525-f6abba53d30b","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["e6598d9d-b6b2-4e48-8525-f6abba53d30b"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"9f3352a8-e9c4-43a8-9086-50a563ee5eee","title":"Transfer from event ","fullFile":"/nft_parachain/tests/src/check-event/transferFromEvent.test.ts","file":"/src/check-event/transferFromEvent.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Transfer from event \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"4a46b244-6070-497d-bcd1-33582dd9b4a8","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Check event from transferFrom(): ","fullTitle":"Transfer from event Check event from transferFrom(): ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionID = await helpers_1.createCollectionExpectSuccess();\n const itemID = await helpers_1.createItemExpectSuccess(Alice, collectionID, 'NFT');\n const transferFrom = api.tx.nft.transferFrom(Alice.address, Bob.address, collectionID, itemID, 1);\n const events = await substrate_api_1.submitTransactionAsync(Alice, transferFrom);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkSection);\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});","err":{},"uuid":"fb883220-daa6-4a72-994b-9bc040bfbab5","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["fb883220-daa6-4a72-994b-9bc040bfbab5"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"82e9f645-db19-47cc-9d86-b840fec2a2b3","title":"Deleting a collection while add address to whitelist: ","fullFile":"/nft_parachain/tests/src/collision-tests/adminDestroyCollection.test.ts","file":"/src/collision-tests/adminDestroyCollection.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Adding an address to the collection whitelist in a block by the admin, and deleting the collection by the owner ","fullTitle":"Deleting a collection while add address to whitelist: Adding an address to the collection whitelist in a block by the admin, and deleting the collection by the owner ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n await timeoutPromise(10000);\n //\n const addWhitelistAdm = api.tx.nft.addToWhiteList(collectionId, Ferdie.address);\n const destroyCollection = api.tx.nft.destroyCollection(collectionId);\n await Promise.all([\n addWhitelistAdm.signAndSend(Bob),\n destroyCollection.signAndSend(Alice),\n ]);\n await timeoutPromise(10000);\n let whiteList = false;\n whiteList = (await api.query.nft.whiteList(collectionId, Ferdie.address)).toJSON();\n // tslint:disable-next-line: no-unused-expression\n expect(whiteList).to.be.false;\n await timeoutPromise(20000);\n});","err":{},"uuid":"cd163573-90a0-4ccd-8a1f-eb8335357a70","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["cd163573-90a0-4ccd-8a1f-eb8335357a70"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"fb3e573e-5ef7-48e5-b965-25da2f42c9b5","title":"Admin limit exceeded collection: ","fullFile":"/nft_parachain/tests/src/collision-tests/adminLimitsOff.test.ts","file":"/src/collision-tests/adminLimitsOff.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"In one block, the owner and admin add new admins to the collection more than the limit ","fullTitle":"Admin limit exceeded collection: In one block, the owner and admin add new admins to the collection more than the limit ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const chainAdminLimit = api.consts.nft.collectionAdminsLimit.toNumber();\n expect(chainAdminLimit).to.be.equal(5);\n const changeAdminTx1 = api.tx.nft.addCollectionAdmin(collectionId, Eve.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx1);\n const changeAdminTx2 = api.tx.nft.addCollectionAdmin(collectionId, Dave.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx2);\n const changeAdminTx3 = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx3);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n const addAdmOne = api.tx.nft.addCollectionAdmin(collectionId, Ferdie.address);\n const addAdmTwo = api.tx.nft.addCollectionAdmin(collectionId, Charlie.address);\n await Promise.all([\n addAdmOne.signAndSend(Bob),\n addAdmTwo.signAndSend(Alice),\n ]);\n await timeoutPromise(10000);\n const changeAdminTx4 = api.tx.nft.addCollectionAdmin(collectionId, Alice.address);\n // tslint:disable-next-line: no-unused-expression\n expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, changeAdminTx4)).to.be.rejected;\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListAfterAddAdmin).to.be.contains(Eve.address);\n expect(adminListAfterAddAdmin).to.be.contains(Ferdie.address);\n expect(adminListAfterAddAdmin).not.to.be.contains(Alice.address);\n await timeoutPromise(20000);\n});","err":{},"uuid":"c640aa10-0120-452d-b162-4a2c6f356f7f","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["c640aa10-0120-452d-b162-4a2c6f356f7f"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"8cce881e-bbaf-4146-8d8f-006fcca425db","title":"Deprivation of admin rights: ","fullFile":"/nft_parachain/tests/src/collision-tests/adminRightsOff.test.ts","file":"/src/collision-tests/adminRightsOff.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"In the block, the collection admin adds a token or changes data, and the collection owner deprives the admin of rights ","fullTitle":"Deprivation of admin rights: In the block, the collection admin adds a token or changes data, and the collection owner deprives the admin of rights ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n await timeoutPromise(10000);\n const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];\n const addItemAdm = api.tx.nft.createMultipleItems(collectionId, Bob.address, args);\n const removeAdm = api.tx.nft.removeCollectionAdmin(collectionId, Bob.address);\n await Promise.all([\n addItemAdm.signAndSend(Bob),\n removeAdm.signAndSend(Alice),\n ]);\n await timeoutPromise(10000);\n const itemsListIndex = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndex.toNumber()).to.be.equal(0);\n const adminList = (await api.query.nft.adminList(collectionId));\n expect(adminList).not.to.be.contains(Bob.address);\n await timeoutPromise(20000);\n});","err":{},"uuid":"4e2db444-8992-4e8c-99bd-2e457e34490b","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["4e2db444-8992-4e8c-99bd-2e457e34490b"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"e166ac25-fe9e-4b1d-bb76-6d3e69af3c78","title":"Admin vs Owner changes token: ","fullFile":"/nft_parachain/tests/src/collision-tests/admVsOwnerChanges.test.ts","file":"/src/collision-tests/admVsOwnerChanges.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"The collection admin changes the owner of the token and in the same block the current owner transfers the token to another address ","fullTitle":"Admin vs Owner changes token: The collection admin changes the owner of the token and in the same block the current owner transfers the token to another address ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const changeAdminTxBob = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTxBob);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n const changeAdminTxFerdie = api.tx.nft.addCollectionAdmin(collectionId, Ferdie.address);\n await substrate_api_1.submitTransactionAsync(Bob, changeAdminTxFerdie);\n const itemId = await helpers_1.createItemExpectSuccess(Ferdie, collectionId, 'NFT');\n //\n const changeOwner = api.tx.nft.transferFrom(Ferdie.address, Bob.address, collectionId, itemId, 1);\n const approve = api.tx.nft.approve(Bob.address, collectionId, itemId, 1);\n const sendItem = api.tx.nft.transfer(Alice.address, collectionId, itemId, 1);\n await Promise.all([\n changeOwner.signAndSend(Alice),\n approve.signAndSend(Bob),\n sendItem.signAndSend(Ferdie),\n ]);\n const itemBefore = await api.query.nft.nftItemList(collectionId, itemId);\n expect(itemBefore.Owner).not.to.be.eq(Bob.address);\n await timeoutPromise(20000);\n});","err":{},"uuid":"27b84ed9-5b8c-466e-bd56-0775187d9d84","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["27b84ed9-5b8c-466e-bd56-0775187d9d84"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"6939e386-9b18-4f40-9a94-dd723b626a2d","title":"Admin vs Owner changes the data in the token: ","fullFile":"/nft_parachain/tests/src/collision-tests/admVsOwnerData.test.ts","file":"/src/collision-tests/admVsOwnerData.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"The collection admin changes the data in the token and in the same block the token owner also changes the data in it ","fullTitle":"Admin vs Owner changes the data in the token: The collection admin changes the data in the token and in the same block the token owner also changes the data in it ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const AliceData = 1;\n const BobData = 2;\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n const itemId = await helpers_1.createItemExpectSuccess(Bob, collectionId, 'NFT');\n //\n // tslint:disable-next-line: max-line-length\n const AliceTx = api.tx.nft.setVariableMetaData(collectionId, itemId, AliceData.toString());\n // tslint:disable-next-line: max-line-length\n const BobTx = api.tx.nft.setVariableMetaData(collectionId, itemId, BobData.toString());\n await Promise.all([\n AliceTx.signAndSend(Alice),\n BobTx.signAndSend(Bob),\n ]);\n const item = await api.query.nft.nftItemList(collectionId, itemId);\n expect(item.VariableData).not.to.be.eq(null); // Pseudo-random selection of one of two values\n await timeoutPromise(20000);\n});","err":{},"uuid":"c5a847a2-b5d4-4507-8c0b-8046d987094b","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["c5a847a2-b5d4-4507-8c0b-8046d987094b"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"cde93d62-bcf0-4cdd-a2a8-cb94d55b17e3","title":"Admin vs Owner take token: ","fullFile":"/nft_parachain/tests/src/collision-tests/admVsOwnerTake.test.ts","file":"/src/collision-tests/admVsOwnerTake.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"The collection admin burns the token and in the same block the token owner performs a transaction on it ","fullTitle":"Admin vs Owner take token: The collection admin burns the token and in the same block the token owner performs a transaction on it ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n const itemId = await helpers_1.createItemExpectSuccess(Bob, collectionId, 'NFT');\n //\n const sendItem = api.tx.nft.transfer(Ferdie.address, collectionId, itemId, 1);\n const burnItem = api.tx.nft.burnItem(collectionId, itemId, 1);\n await Promise.all([\n sendItem.signAndSend(Bob),\n burnItem.signAndSend(Alice),\n ]);\n await timeoutPromise(10000);\n let itemBurn = false;\n itemBurn = (await (api.query.nft.nftItemList(collectionId, itemId))).toJSON();\n // tslint:disable-next-line: no-unused-expression\n expect(itemBurn).to.be.null;\n await timeoutPromise(20000);\n});","err":{},"uuid":"a7a52e31-98d9-45ae-9ac4-ed5de7ab8813","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["a7a52e31-98d9-45ae-9ac4-ed5de7ab8813"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"4d7194c7-81f8-4360-aca3-7b76daacc991","title":"Sponsored with new owner ","fullFile":"/nft_parachain/tests/src/collision-tests/setSponsorNewOwner.test.ts","file":"/src/collision-tests/setSponsorNewOwner.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Confirmation of sponsorship of a collection in a block with a change in the owner of the collection: ","fullTitle":"Sponsored with new owner Confirmation of sponsorship of a collection in a block with a change in the owner of the collection: ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.setCollectionSponsorExpectSuccess(collectionId, Bob.address);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n await timeoutPromise(10000);\n const confirmSponsorship = api.tx.nft.confirmSponsorship(collectionId);\n const changeCollectionOwner = api.tx.nft.changeCollectionOwner(collectionId, Ferdie.address);\n await Promise.all([\n confirmSponsorship.signAndSend(Bob),\n changeCollectionOwner.signAndSend(Alice),\n ]);\n await timeoutPromise(10000);\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Sponsorship.Confirmed).to.be.eq(Bob.address);\n expect(collection.Owner).to.be.eq(Ferdie.address);\n await timeoutPromise(20000);\n});","err":{},"uuid":"0aa8b150-ae6a-492d-ae2a-a0cf97b67b83","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["0aa8b150-ae6a-492d-ae2a-a0cf97b67b83"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"c2823806-a267-4156-a25c-67f011de6be0","title":"Payment of commission if one block: ","fullFile":"/nft_parachain/tests/src/collision-tests/sponsorPayments.test.ts","file":"/src/collision-tests/sponsorPayments.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Payment of commission if one block contains transactions for payment from the sponsor's balance and his (sponsor's) exclusion from the collection ","fullTitle":"Payment of commission if one block: Payment of commission if one block contains transactions for payment from the sponsor's balance and his (sponsor's) exclusion from the collection ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const changeAdminTxBob = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTxBob);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n const itemId = await helpers_1.createItemExpectSuccess(Bob, collectionId, 'NFT');\n await helpers_1.setCollectionSponsorExpectSuccess(collectionId, Bob.address);\n await helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\n const [alicesBalanceBefore, bobsBalanceBefore] = await get_balance_1.default(api, [accounts_1.alicesPublicKey, accounts_1.bobsPublicKey]);\n const sendItem = api.tx.nft.transfer(Alice.address, collectionId, itemId, 1);\n const revokeSponsor = api.tx.nft.removeCollectionSponsor(collectionId);\n await Promise.all([\n sendItem.signAndSend(Bob),\n revokeSponsor.signAndSend(Alice),\n ]);\n const [alicesBalanceAfter, bobsBalanceAfter] = await get_balance_1.default(api, [accounts_1.alicesPublicKey, accounts_1.bobsPublicKey]);\n // tslint:disable-next-line:no-unused-expression\n expect(alicesBalanceAfter === alicesBalanceBefore).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n expect(bobsBalanceAfter === bobsBalanceBefore).to.be.true;\n await timeoutPromise(20000);\n});","err":{},"uuid":"f6b9cccb-f110-4593-ab4c-a952cd22e29d","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["f6b9cccb-f110-4593-ab4c-a952cd22e29d"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"e269ff0c-dc84-41c5-aac7-4ad5587db8c7","title":"Token limit exceeded collection: ","fullFile":"/nft_parachain/tests/src/collision-tests/tokenLimitsOff.test.ts","file":"/src/collision-tests/tokenLimitsOff.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"The number of tokens created in the collection from different addresses exceeds the allowed collection limit ","fullTitle":"Token limit exceeded collection: The number of tokens created in the collection from different addresses exceeds the allowed collection limit ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.setMintPermissionExpectSuccess(Alice, collectionId, true);\n await helpers_1.addToWhiteListExpectSuccess(Alice, collectionId, Ferdie.address);\n await helpers_1.addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);\n const setCollectionLim = api.tx.nft.setCollectionLimits(collectionId, {\n AccountTokenOwnershipLimit,\n SponsoredMintSize,\n TokenLimit,\n // tslint:disable-next-line: object-literal-sort-keys\n SponsorTimeout,\n OwnerCanTransfer,\n OwnerCanDestroy,\n });\n const subTx = await substrate_api_1.submitTransactionAsync(Alice, setCollectionLim);\n const subTxTesult = helpers_1.getCreateItemResult(subTx);\n // tslint:disable-next-line:no-unused-expression\n expect(subTxTesult.success).to.be.true;\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n await timeoutPromise(10000);\n const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];\n const mintItemOne = api.tx.nft\n .createMultipleItems(collectionId, Ferdie.address, args);\n const mintItemTwo = api.tx.nft\n .createMultipleItems(collectionId, Bob.address, args);\n await Promise.all([\n mintItemOne.signAndSend(Ferdie),\n mintItemTwo.signAndSend(Bob),\n ]);\n await timeoutPromise(10000);\n const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexAfter.toNumber()).to.be.equal(3);\n // TokenLimit = 4. The first transaction is successful. The second should fail.\n await timeoutPromise(10000);\n});","err":{},"uuid":"91e83b7d-2a17-4a68-b90a-0c5e18f631fd","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["91e83b7d-2a17-4a68-b90a-0c5e18f631fd"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"5de00d4a-8d19-4f86-9cb4-5a2c6282dcc4","title":"Turns off minting mode: ","fullFile":"/nft_parachain/tests/src/collision-tests/turnsOffMinting.test.ts","file":"/src/collision-tests/turnsOffMinting.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"The collection owner turns off minting mode and there are minting transactions in the same block ","fullTitle":"Turns off minting mode: The collection owner turns off minting mode and there are minting transactions in the same block ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n await helpers_1.setMintPermissionExpectSuccess(Alice, collectionId, true);\n await helpers_1.addToWhiteListExpectSuccess(Alice, collectionId, Ferdie.address);\n const mintItem = api.tx.nft.createItem(collectionId, Ferdie.address, 'NFT');\n const offMinting = api.tx.nft.setMintPermission(collectionId, false);\n await Promise.all([\n mintItem.signAndSend(Ferdie),\n offMinting.signAndSend(Alice),\n ]);\n let itemList = false;\n itemList = (await (api.query.nft.nftItemList(collectionId, mintItem))).toJSON();\n // tslint:disable-next-line: no-unused-expression\n expect(itemList).to.be.null;\n await timeoutPromise(20000);\n});","err":{},"uuid":"6040e71a-673f-40ae-8e89-53fe146b9821","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["6040e71a-673f-40ae-8e89-53fe146b9821"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"766dec6b-db31-4e6a-8bb4-22ee7c8aa73e","title":"integration test: ext. confirmSponsorship():","fullFile":"/nft_parachain/tests/src/confirmSponsorship.test.ts","file":"/src/confirmSponsorship.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"integration test: ext. confirmSponsorship(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n charlie = keyring.addFromUri('//Charlie');\n});","err":{},"uuid":"b4286b27-ec55-496e-a1f7-6c9a8189ea51","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Confirm collection sponsorship","fullTitle":"integration test: ext. confirmSponsorship(): Confirm collection sponsorship","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');","err":{},"uuid":"c785a61c-949d-48c4-82ee-4e7d03ab6683","isHook":false,"skipped":true},{"title":"Add sponsor to a collection after the same sponsor was already added and confirmed","fullTitle":"integration test: ext. confirmSponsorship(): Add sponsor to a collection after the same sponsor was already added and confirmed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);","err":{},"uuid":"4c8ba9f7-5223-4e94-984d-dc13ee0fc326","isHook":false,"skipped":true},{"title":"Add new sponsor to a collection after another sponsor was already added and confirmed","fullTitle":"integration test: ext. confirmSponsorship(): Add new sponsor to a collection after another sponsor was already added and confirmed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, charlie.address);","err":{},"uuid":"a9148812-c2fa-490d-b5da-3386918aca3e","isHook":false,"skipped":true},{"title":"NFT: Transfer fees are paid by the sponsor after confirmation","fullTitle":"integration test: ext. confirmSponsorship(): NFT: Transfer fees are paid by the sponsor after confirmation","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait substrate_api_1.default(async (api) => {\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for unused address\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', zeroBalance.address);\n // Transfer this tokens from unused address to Alice\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(zeroBalance.address), collectionId, itemId, 0);\n const events = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result = helpers_1.getGenericResult(events);\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n expect(result.success).to.be.true;\n expect(BsponsorBalance.lt(AsponsorBalance)).to.be.true;\n});","err":{},"uuid":"9d5c80ab-b396-4d32-89ce-e0a05105ebb1","isHook":false,"skipped":true},{"title":"Fungible: Transfer fees are paid by the sponsor after confirmation","fullTitle":"integration test: ext. confirmSponsorship(): Fungible: Transfer fees are paid by the sponsor after confirmation","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait substrate_api_1.default(async (api) => {\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for unused address\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'Fungible', zeroBalance.address);\n // Transfer this tokens from unused address to Alice\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);\n const events1 = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result1 = helpers_1.getGenericResult(events1);\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n expect(result1.success).to.be.true;\n expect(BsponsorBalance.lt(AsponsorBalance)).to.be.true;\n});","err":{},"uuid":"59ba5ffb-0029-4374-962d-79b49bc98ed0","isHook":false,"skipped":true},{"title":"ReFungible: Transfer fees are paid by the sponsor after confirmation","fullTitle":"integration test: ext. confirmSponsorship(): ReFungible: Transfer fees are paid by the sponsor after confirmation","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait substrate_api_1.default(async (api) => {\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for unused address\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'ReFungible', zeroBalance.address);\n // Transfer this tokens from unused address to Alice\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);\n const events1 = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result1 = helpers_1.getGenericResult(events1);\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n expect(result1.success).to.be.true;\n expect(BsponsorBalance.lt(AsponsorBalance)).to.be.true;\n});","err":{},"uuid":"1b0854b2-3545-4b50-9d6d-5147d5ee4674","isHook":false,"skipped":true},{"title":"CreateItem fees are paid by the sponsor after confirmation","fullTitle":"integration test: ext. confirmSponsorship(): CreateItem fees are paid by the sponsor after confirmation","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\n// Enable collection white list \nawait helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n// Enable public minting\nawait helpers_1.enablePublicMintingExpectSuccess(alice, collectionId);\n// Create Item \nawait substrate_api_1.default(async (api) => {\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Add zeroBalance address to white list\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionId, zeroBalance.address);\n // Mint token using unused address as signer\n await helpers_1.createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n expect(BsponsorBalance.lt(AsponsorBalance)).to.be.true;\n});","err":{},"uuid":"4971b24f-c530-424f-8564-373c9ceb0387","isHook":false,"skipped":true},{"title":"NFT: Sponsoring of transfers is rate limited","fullTitle":"integration test: ext. confirmSponsorship(): NFT: Sponsoring of transfers is rate limited","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait substrate_api_1.default(async (api) => {\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for alice\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);\n // Transfer this token from Alice to unused address and back\n // Alice to Zero gets sponsored\n const aliceToZero = api.tx.nft.transfer(helpers_1.normalizeAccountId(zeroBalance.address), collectionId, itemId, 0);\n const events1 = await substrate_api_1.submitTransactionAsync(alice, aliceToZero);\n const result1 = helpers_1.getGenericResult(events1);\n // Second transfer should fail\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(alice.address), collectionId, itemId, 0);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(zeroBalance, zeroToAlice);\n };\n await expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees');\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Try again after Zero gets some balance - now it should succeed\n const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);\n await substrate_api_1.submitTransactionAsync(alice, balancetx);\n const events2 = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result2 = helpers_1.getGenericResult(events2);\n expect(result1.success).to.be.true;\n expect(result2.success).to.be.true;\n expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;\n});","err":{},"uuid":"d9644e67-7f38-4fbe-8b30-72036d7f6038","isHook":false,"skipped":true},{"title":"Fungible: Sponsoring is rate limited","fullTitle":"integration test: ext. confirmSponsorship(): Fungible: Sponsoring is rate limited","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait substrate_api_1.default(async (api) => {\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for unused address\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'Fungible', zeroBalance.address);\n // Transfer this tokens in parts from unused address to Alice\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);\n const events1 = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result1 = helpers_1.getGenericResult(events1);\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n await expect(substrate_api_1.submitTransactionExpectFailAsync(zeroBalance, zeroToAlice)).to.be.rejected;\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Try again after Zero gets some balance - now it should succeed\n const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);\n await substrate_api_1.submitTransactionAsync(alice, balancetx);\n const events2 = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result2 = helpers_1.getGenericResult(events2);\n expect(result1.success).to.be.true;\n expect(result2.success).to.be.true;\n expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;\n});","err":{},"uuid":"258524bd-66ff-4227-8225-59b08893ad3b","isHook":false,"skipped":true},{"title":"ReFungible: Sponsoring is rate limited","fullTitle":"integration test: ext. confirmSponsorship(): ReFungible: Sponsoring is rate limited","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait substrate_api_1.default(async (api) => {\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for alice\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'ReFungible', alice.address);\n // Transfer this token from Alice to unused address and back\n // Alice to Zero gets sponsored\n const aliceToZero = api.tx.nft.transfer(helpers_1.normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);\n const events1 = await substrate_api_1.submitTransactionAsync(alice, aliceToZero);\n const result1 = helpers_1.getGenericResult(events1);\n // Second transfer should fail\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(alice.address), collectionId, itemId, 1);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(zeroBalance, zeroToAlice);\n };\n await expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees');\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Try again after Zero gets some balance - now it should succeed\n const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);\n await substrate_api_1.submitTransactionAsync(alice, balancetx);\n const events2 = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result2 = helpers_1.getGenericResult(events2);\n expect(result1.success).to.be.true;\n expect(result2.success).to.be.true;\n expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;\n});","err":{},"uuid":"48f50d22-3286-43cb-a84b-a74d393ec548","isHook":false,"skipped":true},{"title":"NFT: Sponsoring of createItem is rate limited","fullTitle":"integration test: ext. confirmSponsorship(): NFT: Sponsoring of createItem is rate limited","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\n// Enable collection white list \nawait helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n// Enable public minting\nawait helpers_1.enablePublicMintingExpectSuccess(alice, collectionId);\nawait substrate_api_1.default(async (api) => {\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Add zeroBalance address to white list\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionId, zeroBalance.address);\n // Mint token using unused address as signer - gets sponsored\n await helpers_1.createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);\n // Second mint should fail\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n const consoleError = console.error;\n const consoleLog = console.log;\n console.error = () => { };\n console.log = () => { };\n const badTransaction = async function () {\n await helpers_1.createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);\n };\n await expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees');\n console.error = consoleError;\n console.log = consoleLog;\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Try again after Zero gets some balance - now it should succeed\n const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);\n await substrate_api_1.submitTransactionAsync(alice, balancetx);\n await helpers_1.createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);\n expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;\n});","err":{},"uuid":"32f2965d-0780-4b43-86fc-67a271e1ff30","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["c785a61c-949d-48c4-82ee-4e7d03ab6683","4c8ba9f7-5223-4e94-984d-dc13ee0fc326","a9148812-c2fa-490d-b5da-3386918aca3e","9d5c80ab-b396-4d32-89ce-e0a05105ebb1","59ba5ffb-0029-4374-962d-79b49bc98ed0","1b0854b2-3545-4b50-9d6d-5147d5ee4674","4971b24f-c530-424f-8564-373c9ceb0387","d9644e67-7f38-4fbe-8b30-72036d7f6038","258524bd-66ff-4227-8225-59b08893ad3b","48f50d22-3286-43cb-a84b-a74d393ec548","32f2965d-0780-4b43-86fc-67a271e1ff30"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"88813bee-d3e9-4529-938f-39a104c2bf5f","title":"(!negative test!) integration test: ext. confirmSponsorship():","fullFile":"/nft_parachain/tests/src/confirmSponsorship.test.ts","file":"/src/confirmSponsorship.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"(!negative test!) integration test: ext. confirmSponsorship(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n charlie = keyring.addFromUri('//Charlie');\n});","err":{},"uuid":"39ec5fac-f548-4199-aaf5-4e22a0ad6f54","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"(!negative test!) Confirm sponsorship for a collection that never existed","fullTitle":"(!negative test!) integration test: ext. confirmSponsorship(): (!negative test!) Confirm sponsorship for a collection that never existed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"// Find the collection that never existed\nlet collectionId = 0;\nawait substrate_api_1.default(async (api) => {\n collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n});\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Bob');","err":{},"uuid":"973687a1-333a-40e3-924d-2408e5de9501","isHook":false,"skipped":true},{"title":"(!negative test!) Confirm sponsorship using a non-sponsor address","fullTitle":"(!negative test!) integration test: ext. confirmSponsorship(): (!negative test!) Confirm sponsorship using a non-sponsor address","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait substrate_api_1.default(async (api) => {\n const transfer = api.tx.balances.transfer(charlie.address, 1e15);\n await substrate_api_1.submitTransactionAsync(alice, transfer);\n});\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Charlie');","err":{},"uuid":"e37becf5-1cf7-451b-a7a7-9fabc4a12391","isHook":false,"skipped":true},{"title":"(!negative test!) Confirm sponsorship using owner address","fullTitle":"(!negative test!) integration test: ext. confirmSponsorship(): (!negative test!) Confirm sponsorship using owner address","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Alice');","err":{},"uuid":"36d28ed5-82ad-4257-9734-554e5a9ec508","isHook":false,"skipped":true},{"title":"(!negative test!) Confirm sponsorship by collection admin","fullTitle":"(!negative test!) integration test: ext. confirmSponsorship(): (!negative test!) Confirm sponsorship by collection admin","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, charlie);\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Charlie');","err":{},"uuid":"9aee7e92-89f3-461b-b74b-c22d18a5a8ab","isHook":false,"skipped":true},{"title":"(!negative test!) Confirm sponsorship without sponsor being set with setCollectionSponsor","fullTitle":"(!negative test!) integration test: ext. confirmSponsorship(): (!negative test!) Confirm sponsorship without sponsor being set with setCollectionSponsor","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Bob');","err":{},"uuid":"43dcb5ee-e6a2-496e-9323-c497a9de08c9","isHook":false,"skipped":true},{"title":"(!negative test!) Confirm sponsorship in a collection that was destroyed","fullTitle":"(!negative test!) integration test: ext. confirmSponsorship(): (!negative test!) Confirm sponsorship in a collection that was destroyed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Bob');","err":{},"uuid":"85c85227-5b3b-4053-9933-f98fa8f3626e","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["973687a1-333a-40e3-924d-2408e5de9501","e37becf5-1cf7-451b-a7a7-9fabc4a12391","36d28ed5-82ad-4257-9734-554e5a9ec508","9aee7e92-89f3-461b-b74b-c22d18a5a8ab","43dcb5ee-e6a2-496e-9323-c497a9de08c9","85c85227-5b3b-4053-9933-f98fa8f3626e"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"b01fbe26-19a1-4422-a804-a211fa4e8126","title":"Connection smoke test","fullFile":"/nft_parachain/tests/src/connection.test.ts","file":"/src/connection.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Connection can be established","fullTitle":"Connection smoke test Connection can be established","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const health = await api.rpc.system.health();\n expect(health).to.be.not.empty;\n});","err":{},"uuid":"0a85f403-5d49-4f62-8c6d-4c9fc6b5f8cf","isHook":false,"skipped":true},{"title":"Cannot connect to 255.255.255.255","fullTitle":"Connection smoke test Cannot connect to 255.255.255.255","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const log = console.log;\nconst error = console.error;\nconsole.log = function () { };\nconsole.error = function () { };\nconst neverConnectProvider = new api_1.WsProvider('ws://255.255.255.255:9944');\nawait expect((async () => {\n await substrate_api_1.default(async (api) => {\n await api.rpc.system.health();\n }, { provider: neverConnectProvider });\n})()).to.be.eventually.rejected;\nconsole.log = log;\nconsole.error = error;","err":{},"uuid":"7b68037c-74fb-495e-adb8-14b78794055b","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["0a85f403-5d49-4f62-8c6d-4c9fc6b5f8cf","7b68037c-74fb-495e-adb8-14b78794055b"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"e295e9c4-ce58-49b4-ac64-b58f1ae54d95","title":"Contracts","fullFile":"/nft_parachain/tests/src/contracts.test.ts","file":"/src/contracts.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Can deploy smart contract Flipper, instantiate it and call it's get and flip messages.","fullTitle":"Contracts Can deploy smart contract Flipper, instantiate it and call it's get and flip messages.","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"5ae5e427-bfd6-4097-a812-5a4c7495d3b6","isHook":false,"skipped":false},{"title":"Can initialize contract instance","fullTitle":"Contracts Can initialize contract instance","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"5e9d5065-d0cb-4b2b-8128-edc38b2dad13","isHook":false,"skipped":false}],"suites":[],"passes":[],"failures":[],"pending":["5ae5e427-bfd6-4097-a812-5a4c7495d3b6","5e9d5065-d0cb-4b2b-8128-edc38b2dad13"],"skipped":[],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"9afd16cd-2a47-40a7-97c3-3ef651542e0b","title":"Chain extensions","fullFile":"/nft_parachain/tests/src/contracts.test.ts","file":"/src/contracts.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Transfer CE","fullTitle":"Chain extensions Transfer CE","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"5dfccf7a-0eee-404d-a956-d1093df221bc","isHook":false,"skipped":false},{"title":"Mint CE","fullTitle":"Chain extensions Mint CE","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"1131b325-d3c6-4b9e-9497-d7eb26256295","isHook":false,"skipped":false},{"title":"Bulk mint CE","fullTitle":"Chain extensions Bulk mint CE","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"a9c700c8-c6f7-45aa-9802-d26245bf4d87","isHook":false,"skipped":false},{"title":"Approve CE","fullTitle":"Chain extensions Approve CE","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"63d3b2aa-a8b8-4bdf-8e93-80c68eb72c82","isHook":false,"skipped":false},{"title":"TransferFrom CE","fullTitle":"Chain extensions TransferFrom CE","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"cd69fa28-097d-4b4f-a0a0-0023fda654a2","isHook":false,"skipped":false},{"title":"SetVariableMetaData CE","fullTitle":"Chain extensions SetVariableMetaData CE","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"47084172-5068-4118-85b1-9d7b41fa0376","isHook":false,"skipped":false},{"title":"ToggleWhiteList CE","fullTitle":"Chain extensions ToggleWhiteList CE","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"0fd23521-9e89-4234-97be-7d191b812c7e","isHook":false,"skipped":false}],"suites":[],"passes":[],"failures":[],"pending":["5dfccf7a-0eee-404d-a956-d1093df221bc","1131b325-d3c6-4b9e-9497-d7eb26256295","a9c700c8-c6f7-45aa-9802-d26245bf4d87","63d3b2aa-a8b8-4bdf-8e93-80c68eb72c82","cd69fa28-097d-4b4f-a0a0-0023fda654a2","47084172-5068-4118-85b1-9d7b41fa0376","0fd23521-9e89-4234-97be-7d191b812c7e"],"skipped":[],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"bf4639b9-c375-4f1b-9282-6dfc0923585c","title":"integration test: ext. createCollection():","fullFile":"/nft_parachain/tests/src/createCollection.test.ts","file":"/src/createCollection.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Create new NFT collection","fullTitle":"integration test: ext. createCollection(): Create new NFT collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.createCollectionExpectSuccess({ name: 'A', description: 'B', tokenPrefix: 'C', mode: { type: 'NFT' } });","err":{},"uuid":"0f328998-69e2-4773-a450-5e528a55d733","isHook":false,"skipped":true},{"title":"Create new NFT collection whith collection_name of maximum length (64 bytes)","fullTitle":"integration test: ext. createCollection(): Create new NFT collection whith collection_name of maximum length (64 bytes)","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.createCollectionExpectSuccess({ name: 'A'.repeat(64) });","err":{},"uuid":"3b912026-7a85-4f13-881b-2e33a3d62e9a","isHook":false,"skipped":true},{"title":"Create new NFT collection whith collection_description of maximum length (256 bytes)","fullTitle":"integration test: ext. createCollection(): Create new NFT collection whith collection_description of maximum length (256 bytes)","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.createCollectionExpectSuccess({ description: 'A'.repeat(256) });","err":{},"uuid":"779e3c68-ea23-4575-8e6b-d9c7ae101cc7","isHook":false,"skipped":true},{"title":"Create new NFT collection whith token_prefix of maximum length (16 bytes)","fullTitle":"integration test: ext. createCollection(): Create new NFT collection whith token_prefix of maximum length (16 bytes)","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.createCollectionExpectSuccess({ tokenPrefix: 'A'.repeat(16) });","err":{},"uuid":"f5f2387d-7ff0-4cd5-90fb-5391d9d23313","isHook":false,"skipped":true},{"title":"Create new Fungible collection","fullTitle":"integration test: ext. createCollection(): Create new Fungible collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });","err":{},"uuid":"6329e7c6-186c-47aa-808f-6c1ba6520459","isHook":false,"skipped":true},{"title":"Create new ReFungible collection","fullTitle":"integration test: ext. createCollection(): Create new ReFungible collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });","err":{},"uuid":"03366c56-3814-4715-99cf-33baac1f84c5","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["0f328998-69e2-4773-a450-5e528a55d733","3b912026-7a85-4f13-881b-2e33a3d62e9a","779e3c68-ea23-4575-8e6b-d9c7ae101cc7","f5f2387d-7ff0-4cd5-90fb-5391d9d23313","6329e7c6-186c-47aa-808f-6c1ba6520459","03366c56-3814-4715-99cf-33baac1f84c5"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"a295c2d7-d283-4e68-a345-3daa44dffca9","title":"(!negative test!) integration test: ext. createCollection():","fullFile":"/nft_parachain/tests/src/createCollection.test.ts","file":"/src/createCollection.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"(!negative test!) create new NFT collection whith incorrect data (mode)","fullTitle":"(!negative test!) integration test: ext. createCollection(): (!negative test!) create new NFT collection whith incorrect data (mode)","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const AcollectionCount = parseInt((await api.query.nft.createdCollectionCount()).toString(), 10);\n const badTransaction = async () => {\n await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Invalid' } });\n };\n // tslint:disable-next-line:no-unused-expression\n expect(badTransaction()).to.be.rejected;\n const BcollectionCount = parseInt((await api.query.nft.createdCollectionCount()).toString(), 10);\n expect(BcollectionCount).to.be.equal(AcollectionCount, 'Error: Incorrect collection created.');\n});","err":{},"uuid":"d83a661f-a409-452b-b322-4e3708101361","isHook":false,"skipped":true},{"title":"(!negative test!) create new NFT collection whith incorrect data (collection_name)","fullTitle":"(!negative test!) integration test: ext. createCollection(): (!negative test!) create new NFT collection whith incorrect data (collection_name)","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.createCollectionExpectFailure({ name: 'A'.repeat(65), mode: { type: 'NFT' } });","err":{},"uuid":"7d6758ad-10e3-4466-b647-4d9220c70b03","isHook":false,"skipped":true},{"title":"(!negative test!) create new NFT collection whith incorrect data (collection_description)","fullTitle":"(!negative test!) integration test: ext. createCollection(): (!negative test!) create new NFT collection whith incorrect data (collection_description)","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.createCollectionExpectFailure({ description: 'A'.repeat(257), mode: { type: 'NFT' } });","err":{},"uuid":"3ba21132-1816-420a-abcc-da80f46e87a3","isHook":false,"skipped":true},{"title":"(!negative test!) create new NFT collection whith incorrect data (token_prefix)","fullTitle":"(!negative test!) integration test: ext. createCollection(): (!negative test!) create new NFT collection whith incorrect data (token_prefix)","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.createCollectionExpectFailure({ tokenPrefix: 'A'.repeat(17), mode: { type: 'NFT' } });","err":{},"uuid":"78b8acf1-36a3-4104-9b4c-f80cbabf95af","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["d83a661f-a409-452b-b322-4e3708101361","7d6758ad-10e3-4466-b647-4d9220c70b03","3ba21132-1816-420a-abcc-da80f46e87a3","78b8acf1-36a3-4104-9b4c-f80cbabf95af"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"86873356-b6ed-4bf9-9ffb-6060b7757ace","title":"integration test: ext. createItem():","fullFile":"/nft_parachain/tests/src/createItem.test.ts","file":"/src/createItem.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"integration test: ext. createItem(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});","err":{},"uuid":"a77cc8c0-c5c3-463b-a710-af175ab1ae33","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Create new item in NFT collection","fullTitle":"integration test: ext. createItem(): Create new item in NFT collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'NFT';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nawait helpers_1.createItemExpectSuccess(alice, newCollectionID, createMode);","err":{},"uuid":"d49d97df-b93b-4980-8377-088992f5a97c","isHook":false,"skipped":true},{"title":"Create new item in Fungible collection","fullTitle":"integration test: ext. createItem(): Create new item in Fungible collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'Fungible';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode, decimalPoints: 0 } });\nawait helpers_1.createItemExpectSuccess(alice, newCollectionID, createMode);","err":{},"uuid":"17151dee-f03e-4576-be19-0bff3dbb99b1","isHook":false,"skipped":true},{"title":"Create new item in ReFungible collection","fullTitle":"integration test: ext. createItem(): Create new item in ReFungible collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'ReFungible';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nawait helpers_1.createItemExpectSuccess(alice, newCollectionID, createMode);","err":{},"uuid":"a843d3cf-c669-4f8d-ac0f-69ad79f4399f","isHook":false,"skipped":true},{"title":"Create new item in NFT collection with collection admin permissions","fullTitle":"integration test: ext. createItem(): Create new item in NFT collection with collection admin permissions","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'NFT';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nawait helpers_1.addCollectionAdminExpectSuccess(alice, newCollectionID, bob);\nawait helpers_1.createItemExpectSuccess(bob, newCollectionID, createMode);","err":{},"uuid":"0d53673a-eea6-48cb-a347-58826b2f4e0c","isHook":false,"skipped":true},{"title":"Create new item in Fungible collection with collection admin permissions","fullTitle":"integration test: ext. createItem(): Create new item in Fungible collection with collection admin permissions","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'Fungible';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode, decimalPoints: 0 } });\nawait helpers_1.addCollectionAdminExpectSuccess(alice, newCollectionID, bob);\nawait helpers_1.createItemExpectSuccess(bob, newCollectionID, createMode);","err":{},"uuid":"f2079a87-c322-48f3-8c55-b039dfa6a631","isHook":false,"skipped":true},{"title":"Create new item in ReFungible collection with collection admin permissions","fullTitle":"integration test: ext. createItem(): Create new item in ReFungible collection with collection admin permissions","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'ReFungible';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nawait helpers_1.addCollectionAdminExpectSuccess(alice, newCollectionID, bob);\nawait helpers_1.createItemExpectSuccess(bob, newCollectionID, createMode);","err":{},"uuid":"440acee4-6142-4675-a0c9-8bf8eed167fe","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["d49d97df-b93b-4980-8377-088992f5a97c","17151dee-f03e-4576-be19-0bff3dbb99b1","a843d3cf-c669-4f8d-ac0f-69ad79f4399f","0d53673a-eea6-48cb-a347-58826b2f4e0c","f2079a87-c322-48f3-8c55-b039dfa6a631","440acee4-6142-4675-a0c9-8bf8eed167fe"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"d8760f1e-4b04-4384-ae6a-1f3f2e98bf80","title":"Negative integration test: ext. createItem():","fullFile":"/nft_parachain/tests/src/createItem.test.ts","file":"/src/createItem.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Negative integration test: ext. createItem(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});","err":{},"uuid":"f7f7d52d-b852-444c-b448-41eedd575398","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Regular user cannot create new item in NFT collection","fullTitle":"Negative integration test: ext. createItem(): Regular user cannot create new item in NFT collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'NFT';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nawait expect(helpers_1.createItemExpectSuccess(bob, newCollectionID, createMode)).to.be.rejected;","err":{},"uuid":"343c1699-ab93-43b5-b20c-9991e6e94c78","isHook":false,"skipped":true},{"title":"Regular user cannot create new item in Fungible collection","fullTitle":"Negative integration test: ext. createItem(): Regular user cannot create new item in Fungible collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'Fungible';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode, decimalPoints: 0 } });\nawait expect(helpers_1.createItemExpectSuccess(bob, newCollectionID, createMode)).to.be.rejected;","err":{},"uuid":"4a67baef-0ec5-44d9-827f-2db5d6752940","isHook":false,"skipped":true},{"title":"Regular user cannot create new item in ReFungible collection","fullTitle":"Negative integration test: ext. createItem(): Regular user cannot create new item in ReFungible collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const createMode = 'ReFungible';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nawait expect(helpers_1.createItemExpectSuccess(bob, newCollectionID, createMode)).to.be.rejected;","err":{},"uuid":"723df5d5-8595-4e32-9ab1-f3d6831235c0","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["343c1699-ab93-43b5-b20c-9991e6e94c78","4a67baef-0ec5-44d9-827f-2db5d6752940","723df5d5-8595-4e32-9ab1-f3d6831235c0"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"64eb7f91-3e10-4ccf-9650-651719037593","title":"Integration Test createMultipleItems(collection_id, owner, items_data):","fullFile":"/nft_parachain/tests/src/createMultipleItems.test.ts","file":"/src/createMultipleItems.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Create 0x31, 0x32, 0x33 items in active NFT collection and verify tokens data in chain","fullTitle":"Integration Test createMultipleItems(collection_id, owner, items_data): Create 0x31, 0x32, 0x33 items in active NFT collection and verify tokens data in chain","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n const Alice = privateKey_1.default('//Alice');\n const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await substrate_api_1.submitTransactionAsync(Alice, createMultipleItemsTx);\n const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexAfter.toNumber()).to.be.equal(3);\n const token1Data = (await api.query.nft.nftItemList(collectionId, 1)).toJSON();\n const token2Data = (await api.query.nft.nftItemList(collectionId, 2)).toJSON();\n const token3Data = (await api.query.nft.nftItemList(collectionId, 3)).toJSON();\n expect(token1Data.Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Alice.address));\n expect(token2Data.Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Alice.address));\n expect(token3Data.Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Alice.address));\n expect(token1Data.ConstData.toString()).to.be.equal('0x31');\n expect(token2Data.ConstData.toString()).to.be.equal('0x32');\n expect(token3Data.ConstData.toString()).to.be.equal('0x33');\n expect(token1Data.VariableData.toString()).to.be.equal('0x31');\n expect(token2Data.VariableData.toString()).to.be.equal('0x32');\n expect(token3Data.VariableData.toString()).to.be.equal('0x33');\n});","err":{},"uuid":"dde52380-97a1-4527-81e5-6210ed37b0e0","isHook":false,"skipped":true},{"title":"Create 0x01, 0x02, 0x03 items in active Fungible collection and verify tokens data in chain","fullTitle":"Integration Test createMultipleItems(collection_id, owner, items_data): Create 0x01, 0x02, 0x03 items in active Fungible collection and verify tokens data in chain","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n const Alice = privateKey_1.default('//Alice');\n const args = [\n { fungible: { value: 1 } },\n { fungible: { value: 2 } },\n { fungible: { value: 3 } },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await substrate_api_1.submitTransactionAsync(Alice, createMultipleItemsTx);\n const token1Data = (await api.query.nft.fungibleItemList(collectionId, Alice.address)).toJSON();\n expect(token1Data.Value).to.be.equal(6); // 1 + 2 + 3\n});","err":{},"uuid":"2e4b5045-d586-4ea0-886c-48a123adbec8","isHook":false,"skipped":true},{"title":"Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain","fullTitle":"Integration Test createMultipleItems(collection_id, owner, items_data): Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n const Alice = privateKey_1.default('//Alice');\n const args = [\n { refungible: { const_data: [0x31], variable_data: [0x31], pieces: 1 } },\n { refungible: { const_data: [0x32], variable_data: [0x32], pieces: 1 } },\n { refungible: { const_data: [0x33], variable_data: [0x33], pieces: 1 } },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await substrate_api_1.submitTransactionAsync(Alice, createMultipleItemsTx);\n const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexAfter.toNumber()).to.be.equal(3);\n const token1Data = (await api.query.nft.reFungibleItemList(collectionId, 1)).toJSON();\n const token2Data = (await api.query.nft.reFungibleItemList(collectionId, 2)).toJSON();\n const token3Data = (await api.query.nft.reFungibleItemList(collectionId, 3)).toJSON();\n expect(token1Data.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Alice.address));\n expect(token1Data.Owner[0].Fraction).to.be.equal(1);\n expect(token2Data.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Alice.address));\n expect(token2Data.Owner[0].Fraction).to.be.equal(1);\n expect(token3Data.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Alice.address));\n expect(token3Data.Owner[0].Fraction).to.be.equal(1);\n expect(token1Data.ConstData.toString()).to.be.equal('0x31');\n expect(token2Data.ConstData.toString()).to.be.equal('0x32');\n expect(token3Data.ConstData.toString()).to.be.equal('0x33');\n expect(token1Data.VariableData.toString()).to.be.equal('0x31');\n expect(token2Data.VariableData.toString()).to.be.equal('0x32');\n expect(token3Data.VariableData.toString()).to.be.equal('0x33');\n});","err":{},"uuid":"10ac40e1-7fcc-4104-b52a-f9bb3c5eec14","isHook":false,"skipped":true},{"title":"Can mint amount of items equals to collection limits","fullTitle":"Integration Test createMultipleItems(collection_id, owner, items_data): Can mint amount of items equals to collection limits","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const alice = privateKey_1.default('//Alice');\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, {\n TokenLimit: 2,\n });\n const args = [\n { nft: ['A', 'A'] },\n { nft: ['B', 'B'] },\n ];\n const createMultipleItemsTx = api.tx.nft.createMultipleItems(collectionId, helpers_1.normalizeAccountId(alice.address), args);\n const events = await substrate_api_1.submitTransactionAsync(alice, createMultipleItemsTx);\n const result = helpers_1.getGenericResult(events);\n expect(result.success).to.be.true;\n});","err":{},"uuid":"d2aa77dc-43c0-4eb1-87ed-99e59b7c8699","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["dde52380-97a1-4527-81e5-6210ed37b0e0","2e4b5045-d586-4ea0-886c-48a123adbec8","10ac40e1-7fcc-4104-b52a-f9bb3c5eec14","d2aa77dc-43c0-4eb1-87ed-99e59b7c8699"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"1d0a4943-7714-4aee-97fb-92e9815a934e","title":"Integration Test createMultipleItems(collection_id, owner, items_data) with collection admin permissions:","fullFile":"/nft_parachain/tests/src/createMultipleItems.test.ts","file":"/src/createMultipleItems.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test createMultipleItems(collection_id, owner, items_data) with collection admin permissions: \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"4b8317d6-26d2-4a76-b36f-021b60e22414","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Create 0x31, 0x32, 0x33 items in active NFT collection and verify tokens data in chain","fullTitle":"Integration Test createMultipleItems(collection_id, owner, items_data) with collection admin permissions: Create 0x31, 0x32, 0x33 items in active NFT collection and verify tokens data in chain","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Bob.address), args);\n await substrate_api_1.submitTransactionAsync(Bob, createMultipleItemsTx);\n const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexAfter.toNumber()).to.be.equal(3);\n const token1Data = (await api.query.nft.nftItemList(collectionId, 1)).toJSON();\n const token2Data = (await api.query.nft.nftItemList(collectionId, 2)).toJSON();\n const token3Data = (await api.query.nft.nftItemList(collectionId, 3)).toJSON();\n expect(token1Data.Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Bob.address));\n expect(token2Data.Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Bob.address));\n expect(token3Data.Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Bob.address));\n expect(token1Data.ConstData.toString()).to.be.equal('0x31');\n expect(token2Data.ConstData.toString()).to.be.equal('0x32');\n expect(token3Data.ConstData.toString()).to.be.equal('0x33');\n expect(token1Data.VariableData.toString()).to.be.equal('0x31');\n expect(token2Data.VariableData.toString()).to.be.equal('0x32');\n expect(token3Data.VariableData.toString()).to.be.equal('0x33');\n});","err":{},"uuid":"bb637f9d-b9ea-451c-a30a-492542fd6843","isHook":false,"skipped":true},{"title":"Create 0x01, 0x02, 0x03 items in active Fungible collection and verify tokens data in chain","fullTitle":"Integration Test createMultipleItems(collection_id, owner, items_data) with collection admin permissions: Create 0x01, 0x02, 0x03 items in active Fungible collection and verify tokens data in chain","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const args = [\n { fungible: { value: 1 } },\n { fungible: { value: 2 } },\n { fungible: { value: 3 } },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Bob.address), args);\n await substrate_api_1.submitTransactionAsync(Bob, createMultipleItemsTx);\n const token1Data = (await api.query.nft.fungibleItemList(collectionId, Bob.address)).toJSON();\n expect(token1Data.Value).to.be.equal(6); // 1 + 2 + 3\n});","err":{},"uuid":"c46c8746-1cc5-453e-90d1-d923be03f694","isHook":false,"skipped":true},{"title":"Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain","fullTitle":"Integration Test createMultipleItems(collection_id, owner, items_data) with collection admin permissions: Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const args = [\n { refungible: { const_data: [0x31], variable_data: [0x31], pieces: 1 } },\n { refungible: { const_data: [0x32], variable_data: [0x32], pieces: 1 } },\n { refungible: { const_data: [0x33], variable_data: [0x33], pieces: 1 } },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Bob.address), args);\n await substrate_api_1.submitTransactionAsync(Bob, createMultipleItemsTx);\n const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexAfter.toNumber()).to.be.equal(3);\n const token1Data = (await api.query.nft.reFungibleItemList(collectionId, 1)).toJSON();\n const token2Data = (await api.query.nft.reFungibleItemList(collectionId, 2)).toJSON();\n const token3Data = (await api.query.nft.reFungibleItemList(collectionId, 3)).toJSON();\n expect(token1Data.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Bob.address));\n expect(token1Data.Owner[0].Fraction).to.be.equal(1);\n expect(token2Data.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Bob.address));\n expect(token2Data.Owner[0].Fraction).to.be.equal(1);\n expect(token3Data.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Bob.address));\n expect(token3Data.Owner[0].Fraction).to.be.equal(1);\n expect(token1Data.ConstData.toString()).to.be.equal('0x31');\n expect(token2Data.ConstData.toString()).to.be.equal('0x32');\n expect(token3Data.ConstData.toString()).to.be.equal('0x33');\n expect(token1Data.VariableData.toString()).to.be.equal('0x31');\n expect(token2Data.VariableData.toString()).to.be.equal('0x32');\n expect(token3Data.VariableData.toString()).to.be.equal('0x33');\n});","err":{},"uuid":"505dee22-4a1b-4911-b40e-e4b124c5b5fa","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["bb637f9d-b9ea-451c-a30a-492542fd6843","c46c8746-1cc5-453e-90d1-d923be03f694","505dee22-4a1b-4911-b40e-e4b124c5b5fa"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"8288ec61-5a92-4dc4-95cd-f66b844286ac","title":"Negative Integration Test createMultipleItems(collection_id, owner, items_data):","fullFile":"/nft_parachain/tests/src/createMultipleItems.test.ts","file":"/src/createMultipleItems.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Negative Integration Test createMultipleItems(collection_id, owner, items_data): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"533cb0fd-f60f-44cc-9049-454848ccdcf8","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Regular user cannot create items in active NFT collection","fullTitle":"Negative Integration Test createMultipleItems(collection_id, owner, items_data): Regular user cannot create items in active NFT collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionAsync(Bob, createMultipleItemsTx)).to.be.rejected;\n});","err":{},"uuid":"0b0aa09f-6e5c-462f-86e4-86fb59d07e3a","isHook":false,"skipped":true},{"title":"Regular user cannot create items in active Fungible collection","fullTitle":"Negative Integration Test createMultipleItems(collection_id, owner, items_data): Regular user cannot create items in active Fungible collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n const args = [\n { fungible: { value: 1 } },\n { fungible: { value: 2 } },\n { fungible: { value: 3 } },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionAsync(Bob, createMultipleItemsTx)).to.be.rejected;\n});","err":{},"uuid":"3c3fda06-6710-4b6b-b3c3-646378b4ae92","isHook":false,"skipped":true},{"title":"Regular user cannot create items in active ReFungible collection","fullTitle":"Negative Integration Test createMultipleItems(collection_id, owner, items_data): Regular user cannot create items in active ReFungible collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n const args = [\n { refungible: { const_data: [0x31], variable_data: [0x31], pieces: 1 } },\n { refungible: { const_data: [0x32], variable_data: [0x32], pieces: 1 } },\n { refungible: { const_data: [0x33], variable_data: [0x33], pieces: 1 } },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionAsync(Bob, createMultipleItemsTx)).to.be.rejected;\n});","err":{},"uuid":"baf53ce7-d08d-483e-88d0-a4b2075b3d1f","isHook":false,"skipped":true},{"title":"Create token with not existing type","fullTitle":"Negative Integration Test createMultipleItems(collection_id, owner, items_data): Create token with not existing type","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n try {\n const args = [{ invalid: null }, { invalid: null }, { invalid: null }];\n const createMultipleItemsTx = await api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;\n }\n catch (e) {\n // tslint:disable-next-line:no-unused-expression\n expect(e).to.be.exist;\n }\n});","err":{},"uuid":"168fcf78-ea46-4da2-9260-cf769a9ec1b7","isHook":false,"skipped":true},{"title":"Create token in not existing collection","fullTitle":"Negative Integration Test createMultipleItems(collection_id, owner, items_data): Create token in not existing collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), ['NFT', 'NFT', 'NFT']);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;\n});","err":{},"uuid":"93ac2bab-a5ad-4328-96a9-3f1fdbf33dd8","isHook":false,"skipped":true},{"title":"Create NFT and Re-fungible tokens that has reached the maximum data limit","fullTitle":"Negative Integration Test createMultipleItems(collection_id, owner, items_data): Create NFT and Re-fungible tokens that has reached the maximum data limit","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // NFT\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const args = [\n { nft: ['A'.repeat(2049), 'A'.repeat(2049)] },\n { nft: ['B'.repeat(2049), 'B'.repeat(2049)] },\n { nft: ['C'.repeat(2049), 'C'.repeat(2049)] },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;\n // ReFungible\n const collectionIdReFungible = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const argsReFungible = [\n { ReFungible: ['1'.repeat(2049), '1'.repeat(2049), 10] },\n { ReFungible: ['2'.repeat(2049), '2'.repeat(2049), 10] },\n { ReFungible: ['3'.repeat(2049), '3'.repeat(2049), 10] },\n ];\n const createMultipleItemsTxFungible = api.tx.nft\n .createMultipleItems(collectionIdReFungible, helpers_1.normalizeAccountId(Alice.address), argsReFungible);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTxFungible)).to.be.rejected;\n});","err":{},"uuid":"88ca0edf-1f0d-4c88-9920-983dec0902f7","isHook":false,"skipped":true},{"title":"Create tokens with different types","fullTitle":"Negative Integration Test createMultipleItems(collection_id, owner, items_data): Create tokens with different types","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), ['NFT', 'Fungible', 'ReFungible']);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;\n // garbage collection :-D\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n});","err":{},"uuid":"175de1dd-2b17-4cb8-b061-e5a55b5a50e9","isHook":false,"skipped":true},{"title":"Create tokens with different data limits <> maximum data limit","fullTitle":"Negative Integration Test createMultipleItems(collection_id, owner, items_data): Create tokens with different data limits <> maximum data limit","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const args = [\n { nft: ['A', 'A'] },\n { nft: ['B', 'B'.repeat(2049)] },\n { nft: ['C'.repeat(2049), 'C'] },\n ];\n const createMultipleItemsTx = await api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;\n});","err":{},"uuid":"2b4d53f9-f5e7-4a23-949a-3ac95b3fbbcd","isHook":false,"skipped":true},{"title":"Fails when minting tokens exceeds collectionLimits amount","fullTitle":"Negative Integration Test createMultipleItems(collection_id, owner, items_data): Fails when minting tokens exceeds collectionLimits amount","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.setCollectionLimitsExpectSuccess(Alice, collectionId, {\n TokenLimit: 1,\n });\n const args = [\n { nft: ['A', 'A'] },\n { nft: ['B', 'B'] },\n ];\n const createMultipleItemsTx = api.tx.nft.createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;\n});","err":{},"uuid":"c08e3a79-415f-432e-ba59-bce028a4fd65","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["0b0aa09f-6e5c-462f-86e4-86fb59d07e3a","3c3fda06-6710-4b6b-b3c3-646378b4ae92","baf53ce7-d08d-483e-88d0-a4b2075b3d1f","168fcf78-ea46-4da2-9260-cf769a9ec1b7","93ac2bab-a5ad-4328-96a9-3f1fdbf33dd8","88ca0edf-1f0d-4c88-9920-983dec0902f7","175de1dd-2b17-4cb8-b061-e5a55b5a50e9","2b4d53f9-f5e7-4a23-949a-3ac95b3fbbcd","c08e3a79-415f-432e-ba59-bce028a4fd65"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"36c38616-c13a-4557-9cb9-1c3706f3ac7f","title":"integration test: Fees must be credited to Treasury:","fullFile":"/nft_parachain/tests/src/creditFeesToTreasury.test.ts","file":"/src/creditFeesToTreasury.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"integration test: Fees must be credited to Treasury: \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"d82f2f76-897d-4b82-b2fa-668962c68547","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Total issuance does not change","fullTitle":"integration test: Fees must be credited to Treasury: Total issuance does not change","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await skipInflationBlock(api);\n await wait_new_blocks_1.default(api, 1);\n const totalBefore = new bignumber_js_1.BigNumber((await api.query.balances.totalIssuance()).toString());\n const alicePrivateKey = privateKey_1.default('//Alice');\n const amount = new bignumber_js_1.BigNumber(1);\n const transfer = api.tx.balances.transfer(accounts_1.bobsPublicKey, amount.toFixed());\n const result = helpers_1.getGenericResult(await substrate_api_1.submitTransactionAsync(alicePrivateKey, transfer));\n const totalAfter = new bignumber_js_1.BigNumber((await api.query.balances.totalIssuance()).toString());\n expect(result.success).to.be.true;\n expect(totalAfter.toFixed()).to.be.equal(totalBefore.toFixed());\n});","err":{},"uuid":"30283cd1-c50d-47fe-a990-3e1bbb81dc54","isHook":false,"skipped":true},{"title":"Sender balance decreased by fee+sent amount, Treasury balance increased by fee","fullTitle":"integration test: Fees must be credited to Treasury: Sender balance decreased by fee+sent amount, Treasury balance increased by fee","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await skipInflationBlock(api);\n await wait_new_blocks_1.default(api, 1);\n const alicePrivateKey = privateKey_1.default('//Alice');\n const treasuryBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(Treasury)).data.free.toString());\n const aliceBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n const amount = new bignumber_js_1.BigNumber(1);\n const transfer = api.tx.balances.transfer(accounts_1.bobsPublicKey, amount.toFixed());\n const result = helpers_1.getGenericResult(await substrate_api_1.submitTransactionAsync(alicePrivateKey, transfer));\n const treasuryBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(Treasury)).data.free.toString());\n const aliceBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n const fee = aliceBalanceBefore.minus(aliceBalanceAfter).minus(amount);\n const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);\n expect(result.success).to.be.true;\n expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());\n});","err":{},"uuid":"129ec89e-7233-46b1-9406-e8f837ec7df7","isHook":false,"skipped":true},{"title":"Treasury balance increased by failed tx fee","fullTitle":"integration test: Fees must be credited to Treasury: Treasury balance increased by failed tx fee","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await skipInflationBlock(api);\n await wait_new_blocks_1.default(api, 1);\n const bobPrivateKey = privateKey_1.default('//Bob');\n const treasuryBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(Treasury)).data.free.toString());\n const bobBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.bobsPublicKey)).data.free.toString());\n const badTx = api.tx.balances.setBalance(accounts_1.alicesPublicKey, 0, 0);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(bobPrivateKey, badTx)).to.be.rejected;\n const treasuryBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(Treasury)).data.free.toString());\n const bobBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.bobsPublicKey)).data.free.toString());\n const fee = bobBalanceBefore.minus(bobBalanceAfter);\n const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);\n expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());\n});","err":{},"uuid":"93062bf3-a522-428b-922b-80684d2cc0a0","isHook":false,"skipped":true},{"title":"NFT Transactions also send fees to Treasury","fullTitle":"integration test: Fees must be credited to Treasury: NFT Transactions also send fees to Treasury","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await skipInflationBlock(api);\n await wait_new_blocks_1.default(api, 1);\n const treasuryBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(Treasury)).data.free.toString());\n const aliceBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n await helpers_1.createCollectionExpectSuccess();\n const treasuryBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(Treasury)).data.free.toString());\n const aliceBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n const fee = aliceBalanceBefore.minus(aliceBalanceAfter);\n const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);\n expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());\n});","err":{},"uuid":"9f2156c7-beb1-40eb-84fb-754b080e4575","isHook":false,"skipped":true},{"title":"Fees are sane","fullTitle":"integration test: Fees must be credited to Treasury: Fees are sane","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await skipInflationBlock(api);\n await wait_new_blocks_1.default(api, 1);\n const aliceBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n await helpers_1.createCollectionExpectSuccess();\n const aliceBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n const fee = aliceBalanceBefore.minus(aliceBalanceAfter);\n expect(fee.dividedBy(1e15).toNumber()).to.be.lessThan(saneMaximumFee + createCollectionDeposit);\n expect(fee.dividedBy(1e15).toNumber()).to.be.greaterThan(saneMinimumFee + createCollectionDeposit);\n});","err":{},"uuid":"b771b916-77d8-4052-a811-a1080c925937","isHook":false,"skipped":true},{"title":"NFT Transfer fee is close to 0.1 Unique","fullTitle":"integration test: Fees must be credited to Treasury: NFT Transfer fee is close to 0.1 Unique","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await skipInflationBlock(api);\n await wait_new_blocks_1.default(api, 1);\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT');\n const aliceBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n await helpers_1.transferExpectSuccess(collectionId, tokenId, alice, bob, 1, 'NFT');\n const aliceBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n const fee = aliceBalanceBefore.minus(aliceBalanceAfter);\n // console.log(fee.toString());\n const expectedTransferFee = 0.1;\n const tolerance = 0.001;\n expect(fee.dividedBy(1e15).minus(expectedTransferFee).abs().toNumber()).to.be.lessThan(tolerance);\n});","err":{},"uuid":"959a2708-5f73-4e34-b23b-451db6b792cb","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["30283cd1-c50d-47fe-a990-3e1bbb81dc54","129ec89e-7233-46b1-9406-e8f837ec7df7","93062bf3-a522-428b-922b-80684d2cc0a0","9f2156c7-beb1-40eb-84fb-754b080e4575","b771b916-77d8-4052-a811-a1080c925937","959a2708-5f73-4e34-b23b-451db6b792cb"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"690f02a6-5932-480d-bdad-909c7451a15d","title":"integration test: ext. destroyCollection():","fullFile":"/nft_parachain/tests/src/destroyCollection.test.ts","file":"/src/destroyCollection.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"NFT collection can be destroyed","fullTitle":"integration test: ext. destroyCollection(): NFT collection can be destroyed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);","err":{},"uuid":"4180464f-22c6-4e68-a585-4c7dfe2f7fde","isHook":false,"skipped":true},{"title":"Fungible collection can be destroyed","fullTitle":"integration test: ext. destroyCollection(): Fungible collection can be destroyed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);","err":{},"uuid":"2e938b8d-c64e-49e5-a704-3b3ad62f2fd8","isHook":false,"skipped":true},{"title":"ReFungible collection can be destroyed","fullTitle":"integration test: ext. destroyCollection(): ReFungible collection can be destroyed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);","err":{},"uuid":"9297b7a6-20c5-49eb-bd2b-c09794ef5792","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["4180464f-22c6-4e68-a585-4c7dfe2f7fde","2e938b8d-c64e-49e5-a704-3b3ad62f2fd8","9297b7a6-20c5-49eb-bd2b-c09794ef5792"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"d09522f9-f6a3-479f-9398-a62427e9a352","title":"(!negative test!) integration test: ext. destroyCollection():","fullFile":"/nft_parachain/tests/src/destroyCollection.test.ts","file":"/src/destroyCollection.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"(!negative test!) integration test: ext. destroyCollection(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"029c7b06-9a11-473f-9597-d857bb51b47a","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"(!negative test!) Destroy a collection that never existed","fullTitle":"(!negative test!) integration test: ext. destroyCollection(): (!negative test!) Destroy a collection that never existed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // Find the collection that never existed\n const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n await helpers_1.destroyCollectionExpectFailure(collectionId);\n});","err":{},"uuid":"53dcbc2e-6a9b-46e6-8548-8a9713b3208c","isHook":false,"skipped":true},{"title":"(!negative test!) Destroy a collection that has already been destroyed","fullTitle":"(!negative test!) integration test: ext. destroyCollection(): (!negative test!) Destroy a collection that has already been destroyed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);\nawait helpers_1.destroyCollectionExpectFailure(collectionId);","err":{},"uuid":"c9193aa7-25a6-429d-878f-3150a9f87104","isHook":false,"skipped":true},{"title":"(!negative test!) Destroy a collection using non-owner account","fullTitle":"(!negative test!) integration test: ext. destroyCollection(): (!negative test!) Destroy a collection using non-owner account","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.destroyCollectionExpectFailure(collectionId, '//Bob');\nawait helpers_1.destroyCollectionExpectSuccess(collectionId, '//Alice');","err":{},"uuid":"470c05d3-d36a-4638-a972-45af56d80408","isHook":false,"skipped":true},{"title":"(!negative test!) Destroy a collection using collection admin account","fullTitle":"(!negative test!) integration test: ext. destroyCollection(): (!negative test!) Destroy a collection using collection admin account","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\nawait helpers_1.destroyCollectionExpectFailure(collectionId, '//Bob');","err":{},"uuid":"d1ef4c9e-3e82-4c0d-a7a1-c4f210d1ab74","isHook":false,"skipped":true},{"title":"fails when OwnerCanDestroy == false","fullTitle":"(!negative test!) integration test: ext. destroyCollection(): fails when OwnerCanDestroy == false","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, { OwnerCanDestroy: false });\nawait helpers_1.destroyCollectionExpectFailure(collectionId, '//Alice');","err":{},"uuid":"903a5aa7-495c-40da-8140-c165911e13dd","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["53dcbc2e-6a9b-46e6-8548-8a9713b3208c","c9193aa7-25a6-429d-878f-3150a9f87104","470c05d3-d36a-4638-a972-45af56d80408","d1ef4c9e-3e82-4c0d-a7a1-c4f210d1ab74","903a5aa7-495c-40da-8140-c165911e13dd"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"b82eb7b3-f4de-4127-b330-42ebda6df15a","title":"Integration Test enableContractSponsoring","fullFile":"/nft_parachain/tests/src/enableContractSponsoring.test.ts","file":"/src/enableContractSponsoring.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"ensure tx fee is paid from endowment","fullTitle":"Integration Test enableContractSponsoring ensure tx fee is paid from endowment","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"0ae636f0-531e-47d5-a219-33329a247bef","isHook":false,"skipped":false},{"title":"ensure it can be enabled twice","fullTitle":"Integration Test enableContractSponsoring ensure it can be enabled twice","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"810ed4cb-bb60-4225-aecd-8b6f089a5469","isHook":false,"skipped":false},{"title":"ensure it can be disabled twice","fullTitle":"Integration Test enableContractSponsoring ensure it can be disabled twice","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"133f6180-6c1c-4a81-a037-2bbc883f6c0e","isHook":false,"skipped":false},{"title":"ensure it can be re-enabled","fullTitle":"Integration Test enableContractSponsoring ensure it can be re-enabled","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"7436de7a-9afc-4b17-b1d5-83d81324757e","isHook":false,"skipped":false}],"suites":[],"passes":[],"failures":[],"pending":["0ae636f0-531e-47d5-a219-33329a247bef","810ed4cb-bb60-4225-aecd-8b6f089a5469","133f6180-6c1c-4a81-a037-2bbc883f6c0e","7436de7a-9afc-4b17-b1d5-83d81324757e"],"skipped":[],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"0ea1b6f0-3109-4184-92a0-58b87521268a","title":"Negative Integration Test enableContractSponsoring","fullFile":"/nft_parachain/tests/src/enableContractSponsoring.test.ts","file":"/src/enableContractSponsoring.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"fails when called for non-contract address","fullTitle":"Negative Integration Test enableContractSponsoring fails when called for non-contract address","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"bb3cf798-d40c-4f39-8cdc-90775e1e3b89","isHook":false,"skipped":false},{"title":"fails when called by non-owning user","fullTitle":"Negative Integration Test enableContractSponsoring fails when called by non-owning user","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"09fe0e7e-13a1-4d61-a3ed-01016a39b5b6","isHook":false,"skipped":false}],"suites":[],"passes":[],"failures":[],"pending":["bb3cf798-d40c-4f39-8cdc-90775e1e3b89","09fe0e7e-13a1-4d61-a3ed-01016a39b5b6"],"skipped":[],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"f9b63262-28cc-416a-b570-70da5d8f65f4","title":"Enable/Disable Transfers","fullFile":"/nft_parachain/tests/src/enableDisableTransfer.test.ts","file":"/src/enableDisableTransfer.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"User can transfer token with enabled transfer flag","fullTitle":"Enable/Disable Transfers User can transfer token with enabled transfer flag","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n // explicitely set transfer flag\n await helpers_1.setTransferFlagExpectSuccess(Alice, nftCollectionId, true);\n await helpers_1.transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1);\n});","err":{},"uuid":"40955e62-05af-4179-be1d-5f281075f39c","isHook":false,"skipped":true},{"title":"User can'n transfer token with disabled transfer flag","fullTitle":"Enable/Disable Transfers User can'n transfer token with disabled transfer flag","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n // explicitely set transfer flag\n await helpers_1.setTransferFlagExpectSuccess(Alice, nftCollectionId, false);\n await helpers_1.transferExpectFailure(nftCollectionId, newNftTokenId, Alice, Bob, 1);\n});","err":{},"uuid":"9393b0ed-dc59-4b6b-9934-f48351b5cc36","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["40955e62-05af-4179-be1d-5f281075f39c","9393b0ed-dc59-4b6b-9934-f48351b5cc36"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"64ceb3ce-485a-4092-96b9-0918cbcbb806","title":"Negative Enable/Disable Transfers","fullFile":"/nft_parachain/tests/src/enableDisableTransfer.test.ts","file":"/src/enableDisableTransfer.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Non-owner cannot change transfer flag","fullTitle":"Negative Enable/Disable Transfers Non-owner cannot change transfer flag","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const Bob = privateKey_1.default('//Bob');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n // Change transfer flag\n await helpers_1.setTransferFlagExpectFailure(Bob, nftCollectionId, false);\n});","err":{},"uuid":"5e8bf0a6-4130-427d-8aa0-a7e5de676d9c","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["5e8bf0a6-4130-427d-8aa0-a7e5de676d9c"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"166a2b99-feef-4313-a348-0c84514b7e19","title":"EVM allowlist","fullFile":"/nft_parachain/tests/src/eth/allowlist.test.ts","file":"/src/eth/allowlist.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Contract allowlist can be toggled","fullTitle":"EVM allowlist Contract allowlist can be toggled","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"8a2553da-4d76-4d01-a46b-0c7aeda8f17e","isHook":false,"skipped":true},{"title":"Non-whitelisted user can't call contract with allowlist enabled","fullTitle":"EVM allowlist Non-whitelisted user can't call contract with allowlist enabled","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"6bfb1246-7056-4272-95a5-16c071445167","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["8a2553da-4d76-4d01-a46b-0c7aeda8f17e","6bfb1246-7056-4272-95a5-16c071445167"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"1ef94075-5c71-4a69-8fee-0243a30ecf92","title":"Contract calls","fullFile":"/nft_parachain/tests/src/eth/base.test.ts","file":"/src/eth/base.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Call of simple contract fee is less than 0.2 UNQ","fullTitle":"Contract calls Call of simple contract fee is less than 0.2 UNQ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"2e8f1e63-d243-4508-8c90-83fe6bebf0c8","isHook":false,"skipped":true},{"title":"Balance transfer fee is less than 0.2 UNQ","fullTitle":"Contract calls Balance transfer fee is less than 0.2 UNQ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"a49dfe5b-78a8-4972-83c8-8f4838216a25","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["2e8f1e63-d243-4508-8c90-83fe6bebf0c8","a49dfe5b-78a8-4972-83c8-8f4838216a25"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"63ceb95a-b882-4cf6-a99a-aa5b4993076b","title":"Token transfer between substrate address and EVM address. Fungible","fullFile":"/nft_parachain/tests/src/eth/crossTransfer.test.ts","file":"/src/eth/crossTransfer.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"The private key X create a substrate address. Alice sends a token to the corresponding EVM address, and X can send it to Bob in the substrate","fullTitle":"Token transfer between substrate address and EVM address. Fungible The private key X create a substrate address. Alice sends a token to the corresponding EVM address, and X can send it to Bob in the substrate","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"016bdad3-72c1-4b25-a25f-fa786dd3c92d","isHook":false,"skipped":true},{"title":"The private key X create a EVM address. Alice sends a token to the substrate address corresponding to this EVM address, and X can send it to Bob in the EVM","fullTitle":"Token transfer between substrate address and EVM address. Fungible The private key X create a EVM address. Alice sends a token to the substrate address corresponding to this EVM address, and X can send it to Bob in the EVM","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"dc9e2f55-1603-434e-8bdc-d3669c24e2e4","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["016bdad3-72c1-4b25-a25f-fa786dd3c92d","dc9e2f55-1603-434e-8bdc-d3669c24e2e4"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"3bcae81c-07ce-48a2-aa69-0d8c8e27c623","title":"Token transfer between substrate address and EVM address. NFT","fullFile":"/nft_parachain/tests/src/eth/crossTransfer.test.ts","file":"/src/eth/crossTransfer.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"The private key X create a substrate address. Alice sends a token to the corresponding EVM address, and X can send it to Bob in the substrate","fullTitle":"Token transfer between substrate address and EVM address. NFT The private key X create a substrate address. Alice sends a token to the corresponding EVM address, and X can send it to Bob in the substrate","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"687f48a8-d2de-4888-98c2-b23c2e116691","isHook":false,"skipped":true},{"title":"The private key X create a EVM address. Alice sends a token to the substrate address corresponding to this EVM address, and X can send it to Bob in the EVM","fullTitle":"Token transfer between substrate address and EVM address. NFT The private key X create a EVM address. Alice sends a token to the substrate address corresponding to this EVM address, and X can send it to Bob in the EVM","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"e8feec8e-382f-487c-b76a-5acc10da9bce","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["687f48a8-d2de-4888-98c2-b23c2e116691","e8feec8e-382f-487c-b76a-5acc10da9bce"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"e28ed94d-9043-43ab-b3d3-bdada9894d84","title":"Fungible: Information getting","fullFile":"/nft_parachain/tests/src/eth/fungible.test.ts","file":"/src/eth/fungible.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"totalSupply","fullTitle":"Fungible: Information getting totalSupply","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"a426de65-2a4a-4b02-9c67-45d296bf7dc1","isHook":false,"skipped":true},{"title":"balanceOf","fullTitle":"Fungible: Information getting balanceOf","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"c1081390-abe4-4727-b086-68af2d8bd821","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["a426de65-2a4a-4b02-9c67-45d296bf7dc1","c1081390-abe4-4727-b086-68af2d8bd821"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"38e5c06d-bbc9-4bae-bc0b-45b5475ebd53","title":"Fungible: Plain calls","fullFile":"/nft_parachain/tests/src/eth/fungible.test.ts","file":"/src/eth/fungible.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Can perform approve()","fullTitle":"Fungible: Plain calls Can perform approve()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"61154419-0a48-44b1-ae0f-4b3dd6e3a085","isHook":false,"skipped":true},{"title":"Can perform transferFrom()","fullTitle":"Fungible: Plain calls Can perform transferFrom()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"25aa7368-095b-4f36-849e-2940ca117fba","isHook":false,"skipped":true},{"title":"Can perform transfer()","fullTitle":"Fungible: Plain calls Can perform transfer()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"26bd4d69-70a0-41e3-9019-b1a9c61dd4db","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["61154419-0a48-44b1-ae0f-4b3dd6e3a085","25aa7368-095b-4f36-849e-2940ca117fba","26bd4d69-70a0-41e3-9019-b1a9c61dd4db"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"f64e15cb-ff19-483f-8370-1717a0e52137","title":"Fungible: Fees","fullFile":"/nft_parachain/tests/src/eth/fungible.test.ts","file":"/src/eth/fungible.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"approve() call fee is less than 0.2UNQ","fullTitle":"Fungible: Fees approve() call fee is less than 0.2UNQ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"18ee49b0-8612-4674-9e66-8e0855b1bed7","isHook":false,"skipped":true},{"title":"transferFrom() call fee is less than 0.2UNQ","fullTitle":"Fungible: Fees transferFrom() call fee is less than 0.2UNQ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"8604d5a4-bb0d-4ce7-b997-3bb941d2dadc","isHook":false,"skipped":true},{"title":"transfer() call fee is less than 0.2UNQ","fullTitle":"Fungible: Fees transfer() call fee is less than 0.2UNQ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"3b472b88-09a8-499e-8ae3-0082a0fd2b7e","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["18ee49b0-8612-4674-9e66-8e0855b1bed7","8604d5a4-bb0d-4ce7-b997-3bb941d2dadc","3b472b88-09a8-499e-8ae3-0082a0fd2b7e"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"0bd2f0db-3ea7-4d52-b1bd-b39e365c4611","title":"Fungible: Substrate calls","fullFile":"/nft_parachain/tests/src/eth/fungible.test.ts","file":"/src/eth/fungible.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Events emitted for approve()","fullTitle":"Fungible: Substrate calls Events emitted for approve()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"aa6f7c90-68ff-4b90-85cf-a35adfd5df6c","isHook":false,"skipped":true},{"title":"Events emitted for transferFrom()","fullTitle":"Fungible: Substrate calls Events emitted for transferFrom()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"cf7b96d6-e4e1-4233-9d7b-4a072c9c200d","isHook":false,"skipped":true},{"title":"Events emitted for transfer()","fullTitle":"Fungible: Substrate calls Events emitted for transfer()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"2bba3c20-33bd-4365-bce6-a415c26f86b3","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["aa6f7c90-68ff-4b90-85cf-a35adfd5df6c","cf7b96d6-e4e1-4233-9d7b-4a072c9c200d","2bba3c20-33bd-4365-bce6-a415c26f86b3"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"ba3b6c83-0f9f-4fb8-8ad4-d53ef53312f7","title":"Helpers sanity check","fullFile":"/nft_parachain/tests/src/eth/helpersSmoke.test.ts","file":"/src/eth/helpersSmoke.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Contract owner is recorded","fullTitle":"Helpers sanity check Contract owner is recorded","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"051817e6-7916-4f3b-8f07-53399cadceb9","isHook":false,"skipped":true},{"title":"Flipper is working","fullTitle":"Helpers sanity check Flipper is working","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"ed6828c4-1e4d-4019-a9ab-09908d92a125","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["051817e6-7916-4f3b-8f07-53399cadceb9","ed6828c4-1e4d-4019-a9ab-09908d92a125"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"f55a84b3-636b-41ab-a5b4-bc3c2a5b18d0","title":"Matcher contract usage","fullFile":"/nft_parachain/tests/src/eth/marketplace/marketplace.test.ts","file":"/src/eth/marketplace/marketplace.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"With UNQ","fullTitle":"Matcher contract usage With UNQ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"2f01ebb5-2705-439a-9540-390408e547c0","isHook":false,"skipped":true},{"title":"With custom ERC20","fullTitle":"Matcher contract usage With custom ERC20","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"ccf9e063-ac4a-4c78-a9ed-13deb1d5e2ae","isHook":false,"skipped":true},{"title":"With escrow","fullTitle":"Matcher contract usage With escrow","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"2ad4094c-5a03-4f59-8140-a973b6f16e87","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["2f01ebb5-2705-439a-9540-390408e547c0","ccf9e063-ac4a-4c78-a9ed-13deb1d5e2ae","2ad4094c-5a03-4f59-8140-a973b6f16e87"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"9c8dfde9-8dc0-4258-95ec-998c0cbd658b","title":"Common metadata","fullFile":"/nft_parachain/tests/src/eth/metadata.test.ts","file":"/src/eth/metadata.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Returns collection name","fullTitle":"Common metadata Returns collection name","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"6388af9f-2efe-42ba-bfd7-cd29fabd8af9","isHook":false,"skipped":true},{"title":"Returns symbol name","fullTitle":"Common metadata Returns symbol name","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"698a3dfb-824b-4e20-99fa-9ff4a01cc206","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["6388af9f-2efe-42ba-bfd7-cd29fabd8af9","698a3dfb-824b-4e20-99fa-9ff4a01cc206"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"621af845-f162-42a3-b591-dfba99fe7e04","title":"Fungible metadata","fullFile":"/nft_parachain/tests/src/eth/metadata.test.ts","file":"/src/eth/metadata.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Returns fungible decimals","fullTitle":"Fungible metadata Returns fungible decimals","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"f09618db-1592-4fb9-acf1-b71ecf10b3d1","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["f09618db-1592-4fb9-acf1-b71ecf10b3d1"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"5e6c13ef-795c-416a-9c78-ead6a32d3b7d","title":"EVM Migrations","fullFile":"/nft_parachain/tests/src/eth/migration.test.ts","file":"/src/eth/migration.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Deploy contract saved state","fullTitle":"EVM Migrations Deploy contract saved state","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"a5a57dce-aec7-43f8-a4fb-8b7f28c8b098","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["a5a57dce-aec7-43f8-a4fb-8b7f28c8b098"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"29c89e20-ce3a-4cc7-b5ce-cf92a2f775c7","title":"NFT: Information getting","fullFile":"/nft_parachain/tests/src/eth/nonFungible.test.ts","file":"/src/eth/nonFungible.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"totalSupply","fullTitle":"NFT: Information getting totalSupply","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"1a7693a8-a035-43a6-ada3-9789e96b8afc","isHook":false,"skipped":true},{"title":"balanceOf","fullTitle":"NFT: Information getting balanceOf","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"5ed76965-d2ea-4fcb-aca5-b2d941118ca4","isHook":false,"skipped":true},{"title":"ownerOf","fullTitle":"NFT: Information getting ownerOf","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"67ee6485-e697-42c9-a3eb-304af1ac2530","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["1a7693a8-a035-43a6-ada3-9789e96b8afc","5ed76965-d2ea-4fcb-aca5-b2d941118ca4","67ee6485-e697-42c9-a3eb-304af1ac2530"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"dd3c3df9-87e7-4de4-9a10-86603947cd0a","title":"NFT: Plain calls","fullFile":"/nft_parachain/tests/src/eth/nonFungible.test.ts","file":"/src/eth/nonFungible.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Can perform mint()","fullTitle":"NFT: Plain calls Can perform mint()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"17886293-1b92-4e5e-8e87-b877c04eb0d7","isHook":false,"skipped":true},{"title":"Can perform burn()","fullTitle":"NFT: Plain calls Can perform burn()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"777af62f-e701-4586-8b91-3136588eedc3","isHook":false,"skipped":true},{"title":"Can perform approve()","fullTitle":"NFT: Plain calls Can perform approve()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"87cca972-d2fe-46d3-b8d9-78f13f0eeb56","isHook":false,"skipped":true},{"title":"Can perform transferFrom()","fullTitle":"NFT: Plain calls Can perform transferFrom()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"bd6c2bd1-cf7d-417c-8d97-29bb263bd52f","isHook":false,"skipped":true},{"title":"Can perform transfer()","fullTitle":"NFT: Plain calls Can perform transfer()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"9a9d9fce-0eae-4350-bb31-7bd5cddfa379","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["17886293-1b92-4e5e-8e87-b877c04eb0d7","777af62f-e701-4586-8b91-3136588eedc3","87cca972-d2fe-46d3-b8d9-78f13f0eeb56","bd6c2bd1-cf7d-417c-8d97-29bb263bd52f","9a9d9fce-0eae-4350-bb31-7bd5cddfa379"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"2c5ec398-8026-4f53-a652-031d46ae1b99","title":"NFT: Fees","fullFile":"/nft_parachain/tests/src/eth/nonFungible.test.ts","file":"/src/eth/nonFungible.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"approve() call fee is less than 0.2UNQ","fullTitle":"NFT: Fees approve() call fee is less than 0.2UNQ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"2a278075-6373-464b-9c11-b9ad67ec0c4a","isHook":false,"skipped":true},{"title":"transferFrom() call fee is less than 0.2UNQ","fullTitle":"NFT: Fees transferFrom() call fee is less than 0.2UNQ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"f5bdbf22-f3c5-4ed3-8b3b-0b8f888a4658","isHook":false,"skipped":true},{"title":"transfer() call fee is less than 0.2UNQ","fullTitle":"NFT: Fees transfer() call fee is less than 0.2UNQ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"69da8472-8f02-4763-9ff6-9c2e60bbd4d9","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["2a278075-6373-464b-9c11-b9ad67ec0c4a","f5bdbf22-f3c5-4ed3-8b3b-0b8f888a4658","69da8472-8f02-4763-9ff6-9c2e60bbd4d9"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"be5044de-17be-4f4f-9c43-8a5c1139142e","title":"NFT: Substrate calls","fullFile":"/nft_parachain/tests/src/eth/nonFungible.test.ts","file":"/src/eth/nonFungible.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Events emitted for mint()","fullTitle":"NFT: Substrate calls Events emitted for mint()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"2bb08a8e-2873-4619-83bb-f39af6239a09","isHook":false,"skipped":true},{"title":"Events emitted for burn()","fullTitle":"NFT: Substrate calls Events emitted for burn()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"d49f6eb8-d101-48fc-a414-491137650956","isHook":false,"skipped":true},{"title":"Events emitted for approve()","fullTitle":"NFT: Substrate calls Events emitted for approve()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"57983457-a928-4a13-bb30-4802081a6197","isHook":false,"skipped":true},{"title":"Events emitted for transferFrom()","fullTitle":"NFT: Substrate calls Events emitted for transferFrom()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"ddab55e4-95e4-4e59-9b16-ac782e667252","isHook":false,"skipped":true},{"title":"Events emitted for transfer()","fullTitle":"NFT: Substrate calls Events emitted for transfer()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"14b7b792-d571-4ac5-92a0-c3803e8ffcf7","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["2bb08a8e-2873-4619-83bb-f39af6239a09","d49f6eb8-d101-48fc-a414-491137650956","57983457-a928-4a13-bb30-4802081a6197","ddab55e4-95e4-4e59-9b16-ac782e667252","14b7b792-d571-4ac5-92a0-c3803e8ffcf7"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"39e4e2ce-c9de-4260-a74f-8585fafecf1a","title":"EVM payable contracts","fullFile":"/nft_parachain/tests/src/eth/payable.test.ts","file":"/src/eth/payable.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Evm contract can receive wei from eth account","fullTitle":"EVM payable contracts Evm contract can receive wei from eth account","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"822d164c-5ac7-440a-8e76-c165898af1af","isHook":false,"skipped":true},{"title":"Evm contract can receive wei from substrate account","fullTitle":"EVM payable contracts Evm contract can receive wei from substrate account","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"e6b31921-975a-42c4-9675-bcab97445089","isHook":false,"skipped":true},{"title":"Wei sent directly to backing storage of evm contract balance is unaccounted","fullTitle":"EVM payable contracts Wei sent directly to backing storage of evm contract balance is unaccounted","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"6b49958a-fd26-40d3-a188-202fe5e5904a","isHook":false,"skipped":true},{"title":"Balance can be retrieved from evm contract","fullTitle":"EVM payable contracts Balance can be retrieved from evm contract","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"1fe5e42d-f3cb-46fd-ad4e-0c1e4525fa4f","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["822d164c-5ac7-440a-8e76-c165898af1af","e6b31921-975a-42c4-9675-bcab97445089","6b49958a-fd26-40d3-a188-202fe5e5904a","1fe5e42d-f3cb-46fd-ad4e-0c1e4525fa4f"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"d7123b77-e85e-4f5c-835e-25fb7ea0995c","title":"Fungible (Via EVM proxy): Information getting","fullFile":"/nft_parachain/tests/src/eth/proxy/fungibleProxy.test.ts","file":"/src/eth/proxy/fungibleProxy.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"totalSupply","fullTitle":"Fungible (Via EVM proxy): Information getting totalSupply","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"44d2365a-a35d-44cc-8cc0-8494474b9d2f","isHook":false,"skipped":true},{"title":"balanceOf","fullTitle":"Fungible (Via EVM proxy): Information getting balanceOf","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"9c9cc56c-a6ab-4f3d-8928-b6a7dac1bef2","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["44d2365a-a35d-44cc-8cc0-8494474b9d2f","9c9cc56c-a6ab-4f3d-8928-b6a7dac1bef2"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"3d993567-a5f6-41b4-a454-426b2b0ba806","title":"Fungible (Via EVM proxy): Plain calls","fullFile":"/nft_parachain/tests/src/eth/proxy/fungibleProxy.test.ts","file":"/src/eth/proxy/fungibleProxy.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Can perform approve()","fullTitle":"Fungible (Via EVM proxy): Plain calls Can perform approve()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"85c01938-eb19-409f-9343-c89d4b128af5","isHook":false,"skipped":true},{"title":"Can perform transferFrom()","fullTitle":"Fungible (Via EVM proxy): Plain calls Can perform transferFrom()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"978c10ed-0dcb-412f-b6a0-0e85366de9b1","isHook":false,"skipped":true},{"title":"Can perform transfer()","fullTitle":"Fungible (Via EVM proxy): Plain calls Can perform transfer()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"3d203895-5663-4b95-b831-4d497ece8a12","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["85c01938-eb19-409f-9343-c89d4b128af5","978c10ed-0dcb-412f-b6a0-0e85366de9b1","3d203895-5663-4b95-b831-4d497ece8a12"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"a1237654-d12a-476d-a746-7e1caf639542","title":"NFT (Via EVM proxy): Information getting","fullFile":"/nft_parachain/tests/src/eth/proxy/nonFungibleProxy.test.ts","file":"/src/eth/proxy/nonFungibleProxy.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"totalSupply","fullTitle":"NFT (Via EVM proxy): Information getting totalSupply","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"3e71410e-4799-4d58-95bc-6ea860550b52","isHook":false,"skipped":true},{"title":"balanceOf","fullTitle":"NFT (Via EVM proxy): Information getting balanceOf","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"28d140d6-9e3f-4b98-92fa-f8fa23158060","isHook":false,"skipped":true},{"title":"ownerOf","fullTitle":"NFT (Via EVM proxy): Information getting ownerOf","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"159d2f85-802f-4728-b7f3-ed156ce034f3","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["3e71410e-4799-4d58-95bc-6ea860550b52","28d140d6-9e3f-4b98-92fa-f8fa23158060","159d2f85-802f-4728-b7f3-ed156ce034f3"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"6024151e-59e4-4403-bbbb-578984a48786","title":"NFT (Via EVM proxy): Plain calls","fullFile":"/nft_parachain/tests/src/eth/proxy/nonFungibleProxy.test.ts","file":"/src/eth/proxy/nonFungibleProxy.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Can perform mint()","fullTitle":"NFT (Via EVM proxy): Plain calls Can perform mint()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"b19fe432-9e66-4d0b-95d3-71c8da071695","isHook":false,"skipped":true},{"title":"Can perform burn()","fullTitle":"NFT (Via EVM proxy): Plain calls Can perform burn()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"d9075a45-8e4b-4b0a-859f-7062a3bbfb08","isHook":false,"skipped":true},{"title":"Can perform approve()","fullTitle":"NFT (Via EVM proxy): Plain calls Can perform approve()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"1e441b49-2c31-4352-8737-99d9fd0a53ce","isHook":false,"skipped":true},{"title":"Can perform transferFrom()","fullTitle":"NFT (Via EVM proxy): Plain calls Can perform transferFrom()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"caa9e0f6-b5f8-4765-9a78-5a57314a93d4","isHook":false,"skipped":true},{"title":"Can perform transfer()","fullTitle":"NFT (Via EVM proxy): Plain calls Can perform transfer()","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"9c70266f-3630-4867-bd98-99f85f3ad367","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["b19fe432-9e66-4d0b-95d3-71c8da071695","d9075a45-8e4b-4b0a-859f-7062a3bbfb08","1e441b49-2c31-4352-8737-99d9fd0a53ce","caa9e0f6-b5f8-4765-9a78-5a57314a93d4","9c70266f-3630-4867-bd98-99f85f3ad367"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"a6b7f868-6106-44c7-94bd-a23435c69ce8","title":"EVM sponsoring","fullFile":"/nft_parachain/tests/src/eth/sponsoring.test.ts","file":"/src/eth/sponsoring.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Fee is deducted from contract if sponsoring is enabled","fullTitle":"EVM sponsoring Fee is deducted from contract if sponsoring is enabled","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"e7d2b28d-add7-48b9-bb49-0f6e3de0e911","isHook":false,"skipped":true},{"title":"...but this doesn't applies to payable value","fullTitle":"EVM sponsoring ...but this doesn't applies to payable value","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});","err":{},"uuid":"3b4ee7bd-ce13-4061-bb00-b42c12a56a51","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["e7d2b28d-add7-48b9-bb49-0f6e3de0e911","3b4ee7bd-ce13-4061-bb00-b42c12a56a51"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"3a782123-a540-4917-97ca-acaa03e2ec44","title":"integration test: Inflation","fullFile":"/nft_parachain/tests/src/inflation.test.ts","file":"/src/inflation.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"First year inflation is 10%","fullTitle":"integration test: Inflation First year inflation is 10%","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const blockInterval = parseInt((await api.consts.inflation.inflationBlockInterval).toString());\n const totalIssuanceStart = new bignumber_js_1.BigNumber((await api.query.inflation.startingYearTotalIssuance()).toString());\n const blockInflation = new bignumber_js_1.BigNumber((await api.query.inflation.blockInflation()).toString());\n const YEAR = 5259600; // Blocks in one year\n const totalExpectedInflation = totalIssuanceStart.multipliedBy(0.1);\n const totalActualInflation = blockInflation.multipliedBy(YEAR / blockInterval);\n const tolerance = 0.00001; // Relative difference per year between theoretical and actual inflation\n expect(totalExpectedInflation.dividedBy(totalActualInflation).minus(1).abs().toNumber()).to.be.lessThan(tolerance);\n});","err":{},"uuid":"4bb3a25e-9223-42c1-b99a-b78e248ac864","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["4bb3a25e-9223-42c1-b99a-b78e248ac864"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"3cb447bc-3795-43d4-ba76-9e96f7c10164","title":"Integration Test fungible overflows","fullFile":"/nft_parachain/tests/src/overflow.test.ts","file":"/src/overflow.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test fungible overflows \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n charlie = privateKey_1.default('//Charlie');\n});","err":{},"uuid":"87cb3cb2-344b-41dc-ab4e-43a13a6f956a","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"fails when overflows on transfer","fullTitle":"Integration Test fungible overflows fails when overflows on transfer","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: helpers_1.U128_MAX });\nawait helpers_1.transferExpectSuccess(fungibleCollectionId, 0, alice, bob, helpers_1.U128_MAX, 'Fungible');\nawait helpers_1.createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: 1n });\nawait helpers_1.transferExpectFailure(fungibleCollectionId, 0, alice, bob, 1);\nexpect(await helpers_1.getFungibleBalance(fungibleCollectionId, alice.address)).to.equal(1n);\nexpect(await helpers_1.getFungibleBalance(fungibleCollectionId, bob.address)).to.equal(helpers_1.U128_MAX);","err":{},"uuid":"494b4340-c214-43e1-9a60-bf5ed837b911","isHook":false,"skipped":true},{"title":"fails on allowance overflow","fullTitle":"Integration Test fungible overflows fails on allowance overflow","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: helpers_1.U128_MAX });\nawait helpers_1.approveExpectSuccess(fungibleCollectionId, 0, alice, bob, helpers_1.U128_MAX);\nawait helpers_1.approveExpectFail(fungibleCollectionId, 0, alice, bob, helpers_1.U128_MAX);","err":{},"uuid":"576bd335-6c12-4c4b-8330-3df79feaebab","isHook":false,"skipped":true},{"title":"fails when overflows on transferFrom","fullTitle":"Integration Test fungible overflows fails when overflows on transferFrom","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: helpers_1.U128_MAX });\nawait helpers_1.approveExpectSuccess(fungibleCollectionId, 0, alice, bob, helpers_1.U128_MAX);\nawait helpers_1.transferFromExpectSuccess(fungibleCollectionId, 0, bob, alice, charlie, helpers_1.U128_MAX, 'Fungible');\nexpect(await helpers_1.getFungibleBalance(fungibleCollectionId, charlie.address)).to.equal(helpers_1.U128_MAX);\nexpect((await helpers_1.getAllowance(fungibleCollectionId, 0, alice.address, bob.address)).toString()).to.equal('0');\nawait helpers_1.createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: helpers_1.U128_MAX });\nawait helpers_1.approveExpectSuccess(fungibleCollectionId, 0, alice, bob, 1n);\nawait helpers_1.transferFromExpectFail(fungibleCollectionId, 0, bob, alice, charlie, 1);\nexpect(await helpers_1.getFungibleBalance(fungibleCollectionId, charlie.address)).to.equal(helpers_1.U128_MAX);\nexpect((await helpers_1.getAllowance(fungibleCollectionId, 0, alice.address, bob.address)).toString()).to.equal('1');","err":{},"uuid":"a384b326-375e-4c27-96d7-ebb95b0f2952","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["494b4340-c214-43e1-9a60-bf5ed837b911","576bd335-6c12-4c4b-8330-3df79feaebab","a384b326-375e-4c27-96d7-ebb95b0f2952"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"eb63d35a-61f0-4f4b-97a3-3d752c0ed6ff","title":"Pallet presence","fullFile":"/nft_parachain/tests/src/pallet-presence.test.ts","file":"/src/pallet-presence.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Required pallets are present","fullTitle":"Pallet presence Required pallets are present","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n for (let i = 0; i < requiredPallets.length; i++) {\n chai_1.expect(getModuleNames(api)).to.include(requiredPallets[i]);\n }\n});","err":{},"uuid":"ef7906da-de02-4c50-a4b9-2afeba4cff54","isHook":false,"skipped":true},{"title":"Governance and consensus pallets are present","fullTitle":"Pallet presence Governance and consensus pallets are present","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n for (let i = 0; i < consensusPallets.length; i++) {\n chai_1.expect(getModuleNames(api)).to.include(consensusPallets[i]);\n }\n});","err":{},"uuid":"cdc09d05-ff48-4fa1-9afa-5a868164a7d3","isHook":false,"skipped":true},{"title":"No extra pallets are included","fullTitle":"Pallet presence No extra pallets are included","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n chai_1.expect(getModuleNames(api).sort()).to.be.deep.equal([...requiredPallets, ...consensusPallets].sort());\n});","err":{},"uuid":"3e3cc583-e342-44b9-a5c3-7a9101d48118","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["ef7906da-de02-4c50-a4b9-2afeba4cff54","cdc09d05-ff48-4fa1-9afa-5a868164a7d3","3e3cc583-e342-44b9-a5c3-7a9101d48118"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"dc732f9f-225a-4ac1-b53c-d6d723388d72","title":"Integration Test removeCollectionAdmin(collection_id, account_id):","fullFile":"/nft_parachain/tests/src/removeCollectionAdmin.test.ts","file":"/src/removeCollectionAdmin.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Remove collection admin.","fullTitle":"Integration Test removeCollectionAdmin(collection_id, account_id): Remove collection admin.","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(Alice.address);\n // first - add collection admin Bob\n const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await substrate_api_1.submitTransactionAsync(Alice, addAdminTx);\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId)).toJSON();\n expect(adminListAfterAddAdmin).to.be.deep.contains(helpers_1.normalizeAccountId(Bob.address));\n // then remove bob from admins of collection\n const removeAdminTx = api.tx.nft.removeCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await substrate_api_1.submitTransactionAsync(Alice, removeAdminTx);\n const adminListAfterRemoveAdmin = (await api.query.nft.adminList(collectionId)).toJSON;\n expect(adminListAfterRemoveAdmin).not.to.be.deep.contains(helpers_1.normalizeAccountId(Bob.address));\n});","err":{},"uuid":"1e89bb51-7d8b-4059-8bec-06511701d088","isHook":false,"skipped":true},{"title":"Remove collection admin by admin.","fullTitle":"Integration Test removeCollectionAdmin(collection_id, account_id): Remove collection admin by admin.","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n const Charlie = privateKey_1.default('//Charlie');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(Alice.address);\n // first - add collection admin Bob\n const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await substrate_api_1.submitTransactionAsync(Alice, addAdminTx);\n const addAdminTx2 = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Charlie.address));\n await substrate_api_1.submitTransactionAsync(Alice, addAdminTx2);\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId)).toJSON();\n expect(adminListAfterAddAdmin).to.be.deep.contains(helpers_1.normalizeAccountId(Bob.address));\n // then remove bob from admins of collection\n const removeAdminTx = api.tx.nft.removeCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await substrate_api_1.submitTransactionAsync(Charlie, removeAdminTx);\n const adminListAfterRemoveAdmin = (await api.query.nft.adminList(collectionId)).toJSON;\n expect(adminListAfterRemoveAdmin).not.to.be.deep.contains(helpers_1.normalizeAccountId(Bob.address));\n});","err":{},"uuid":"aa6bb14d-7b07-4c11-8f63-f19f34678e0d","isHook":false,"skipped":true},{"title":"Remove admin from collection that has no admins","fullTitle":"Integration Test removeCollectionAdmin(collection_id, account_id): Remove admin from collection that has no admins","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const Alice = privateKey_1.default('//Alice');\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const adminListBeforeAddAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListBeforeAddAdmin).to.have.lengthOf(0);\n const tx = api.tx.nft.removeCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Alice.address));\n await substrate_api_1.submitTransactionAsync(Alice, tx);\n});","err":{},"uuid":"19946d54-de8a-4a6b-95bd-05d67da4992a","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["1e89bb51-7d8b-4059-8bec-06511701d088","aa6bb14d-7b07-4c11-8f63-f19f34678e0d","19946d54-de8a-4a6b-95bd-05d67da4992a"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"55dcf9fb-d81f-497c-8e8f-362fe16e8d9b","title":"Negative Integration Test removeCollectionAdmin(collection_id, account_id):","fullFile":"/nft_parachain/tests/src/removeCollectionAdmin.test.ts","file":"/src/removeCollectionAdmin.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Can't remove collection admin from not existing collection","fullTitle":"Negative Integration Test removeCollectionAdmin(collection_id, account_id): Can't remove collection admin from not existing collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = (1 << 32) - 1;\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, helpers_1.normalizeAccountId(bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});","err":{},"uuid":"cb3c0197-2eda-459f-98f2-fb24f0c8682a","isHook":false,"skipped":true},{"title":"Can't remove collection admin from deleted collection","fullTitle":"Negative Integration Test removeCollectionAdmin(collection_id, account_id): Can't remove collection admin from deleted collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, changeOwnerTx)).to.be.rejected;\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});","err":{},"uuid":"10428424-2150-4a02-a617-0b21f301e690","isHook":false,"skipped":true},{"title":"Regular user Can't remove collection admin","fullTitle":"Negative Integration Test removeCollectionAdmin(collection_id, account_id): Regular user Can't remove collection admin","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n const Charlie = privateKey_1.default('//Charlie');\n const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await substrate_api_1.submitTransactionAsync(Alice, addAdminTx);\n const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Charlie, changeOwnerTx)).to.be.rejected;\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});","err":{},"uuid":"f4f77126-8ff7-41fa-8b6a-0136f721d9b6","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["cb3c0197-2eda-459f-98f2-fb24f0c8682a","10428424-2150-4a02-a617-0b21f301e690","f4f77126-8ff7-41fa-8b6a-0136f721d9b6"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"4964745b-c07c-469a-bd86-3aabe116e79c","title":"integration test: ext. removeCollectionSponsor():","fullFile":"/nft_parachain/tests/src/removeCollectionSponsor.test.ts","file":"/src/removeCollectionSponsor.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"integration test: ext. removeCollectionSponsor(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});","err":{},"uuid":"073aa191-794a-43ea-afe9-eece5ca6ea5b","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Removing NFT collection sponsor stops sponsorship","fullTitle":"integration test: ext. removeCollectionSponsor(): Removing NFT collection sponsor stops sponsorship","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);\nawait substrate_api_1.default(async (api) => {\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for unused address\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', zeroBalance.address);\n // Transfer this tokens from unused address to Alice - should fail\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(alice.address), collectionId, itemId, 0);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(zeroBalance, zeroToAlice);\n };\n await expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees');\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;\n});","err":{},"uuid":"7340d2b9-1efe-4571-adb6-2fc324d04587","isHook":false,"skipped":true},{"title":"Remove a sponsor after it was already removed","fullTitle":"integration test: ext. removeCollectionSponsor(): Remove a sponsor after it was already removed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);","err":{},"uuid":"989ef0aa-29ba-40e5-a468-77743d0450c7","isHook":false,"skipped":true},{"title":"Remove sponsor in a collection that never had the sponsor set","fullTitle":"integration test: ext. removeCollectionSponsor(): Remove sponsor in a collection that never had the sponsor set","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);","err":{},"uuid":"48c44c61-dfae-46bf-9862-a56e3377f5d3","isHook":false,"skipped":true},{"title":"Remove sponsor for a collection that had the sponsor set, but not confirmed","fullTitle":"integration test: ext. removeCollectionSponsor(): Remove sponsor for a collection that had the sponsor set, but not confirmed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);","err":{},"uuid":"79a34054-2bf6-453f-ab67-996b5a978801","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["7340d2b9-1efe-4571-adb6-2fc324d04587","989ef0aa-29ba-40e5-a468-77743d0450c7","48c44c61-dfae-46bf-9862-a56e3377f5d3","79a34054-2bf6-453f-ab67-996b5a978801"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"46267fd7-8042-4ac8-8efa-9e6b2a450d98","title":"(!negative test!) integration test: ext. removeCollectionSponsor():","fullFile":"/nft_parachain/tests/src/removeCollectionSponsor.test.ts","file":"/src/removeCollectionSponsor.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"(!negative test!) integration test: ext. removeCollectionSponsor(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});","err":{},"uuid":"ed73243a-c3b3-47dc-accf-cfb8e03021ae","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"(!negative test!) Remove sponsor for a collection that never existed","fullTitle":"(!negative test!) integration test: ext. removeCollectionSponsor(): (!negative test!) Remove sponsor for a collection that never existed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"// Find the collection that never existed\nlet collectionId = 0;\nawait substrate_api_1.default(async (api) => {\n collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n});\nawait helpers_1.removeCollectionSponsorExpectFailure(collectionId);","err":{},"uuid":"e35932f4-4d42-4d65-8d46-7246df195d99","isHook":false,"skipped":true},{"title":"(!negative test!) Remove sponsor for a collection with collection admin permissions","fullTitle":"(!negative test!) integration test: ext. removeCollectionSponsor(): (!negative test!) Remove sponsor for a collection with collection admin permissions","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\nawait helpers_1.removeCollectionSponsorExpectFailure(collectionId, '//Bob');","err":{},"uuid":"85ae77c3-2b77-4f93-a49c-5b607907004e","isHook":false,"skipped":true},{"title":"(!negative test!) Remove sponsor for a collection by regular user","fullTitle":"(!negative test!) integration test: ext. removeCollectionSponsor(): (!negative test!) Remove sponsor for a collection by regular user","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.removeCollectionSponsorExpectFailure(collectionId, '//Bob');","err":{},"uuid":"7aaae6ca-2617-469d-9192-6689adf16516","isHook":false,"skipped":true},{"title":"(!negative test!) Remove sponsor in a destroyed collection","fullTitle":"(!negative test!) integration test: ext. removeCollectionSponsor(): (!negative test!) Remove sponsor in a destroyed collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);\nawait helpers_1.removeCollectionSponsorExpectFailure(collectionId);","err":{},"uuid":"9d7a6e72-16ef-4ce7-a2a3-adf9ab8682a6","isHook":false,"skipped":true},{"title":"Set - remove - confirm: fails","fullTitle":"(!negative test!) integration test: ext. removeCollectionSponsor(): Set - remove - confirm: fails","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Bob');","err":{},"uuid":"271077e2-6ea6-4690-a3a5-2194bb57a35c","isHook":false,"skipped":true},{"title":"Set - confirm - remove - confirm: Sponsor cannot come back","fullTitle":"(!negative test!) integration test: ext. removeCollectionSponsor(): Set - confirm - remove - confirm: Sponsor cannot come back","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Bob');","err":{},"uuid":"cce11642-dcd7-40f6-bfdb-b1da80351677","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["e35932f4-4d42-4d65-8d46-7246df195d99","85ae77c3-2b77-4f93-a49c-5b607907004e","7aaae6ca-2617-469d-9192-6689adf16516","9d7a6e72-16ef-4ce7-a2a3-adf9ab8682a6","271077e2-6ea6-4690-a3a5-2194bb57a35c","cce11642-dcd7-40f6-bfdb-b1da80351677"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"090e386e-3947-4ceb-b0e9-56c8c3508d7b","title":"Integration Test removeFromContractWhiteList","fullFile":"/nft_parachain/tests/src/removeFromContractWhiteList.test.ts","file":"/src/removeFromContractWhiteList.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"user is no longer whitelisted after removal","fullTitle":"Integration Test removeFromContractWhiteList user is no longer whitelisted after removal","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"30612bcc-b508-4b33-a278-2fe06ac300e1","isHook":false,"skipped":false},{"title":"user can't execute contract after removal","fullTitle":"Integration Test removeFromContractWhiteList user can't execute contract after removal","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"bbd33294-82f8-450b-b4cc-e40250a1abbc","isHook":false,"skipped":false},{"title":"can be called twice","fullTitle":"Integration Test removeFromContractWhiteList can be called twice","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"9b422317-c895-4d4d-84e2-d5fcb6691899","isHook":false,"skipped":false}],"suites":[],"passes":[],"failures":[],"pending":["30612bcc-b508-4b33-a278-2fe06ac300e1","bbd33294-82f8-450b-b4cc-e40250a1abbc","9b422317-c895-4d4d-84e2-d5fcb6691899"],"skipped":[],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"d47d209d-7b8e-4624-9853-69ac8edb7cae","title":"Negative Integration Test removeFromContractWhiteList","fullFile":"/nft_parachain/tests/src/removeFromContractWhiteList.test.ts","file":"/src/removeFromContractWhiteList.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"fails when called with non-contract address","fullTitle":"Negative Integration Test removeFromContractWhiteList fails when called with non-contract address","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"4f24edbc-cc11-419a-beda-b4f5523bbacc","isHook":false,"skipped":false},{"title":"fails when executed by non owner","fullTitle":"Negative Integration Test removeFromContractWhiteList fails when executed by non owner","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"bcbccafd-9285-4e64-9284-5f6db30eb825","isHook":false,"skipped":false}],"suites":[],"passes":[],"failures":[],"pending":["4f24edbc-cc11-419a-beda-b4f5523bbacc","bcbccafd-9285-4e64-9284-5f6db30eb825"],"skipped":[],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"5645c742-0df3-48e9-a87e-17c9b86fc529","title":"Integration Test removeFromWhiteList","fullFile":"/nft_parachain/tests/src/removeFromWhiteList.test.ts","file":"/src/removeFromWhiteList.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test removeFromWhiteList \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"58a47998-94fb-4f5a-b1de-b091d4eb3c89","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"ensure bob is not in whitelist after removal","fullTitle":"Integration Test removeFromWhiteList ensure bob is not in whitelist after removal","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionId, bob.address);\n await helpers_1.removeFromWhiteListExpectSuccess(alice, collectionId, helpers_1.normalizeAccountId(bob.address));\n expect(await helpers_1.isWhitelisted(collectionId, bob.address)).to.be.false;\n});","err":{},"uuid":"ce40679f-cb58-4efd-9fab-0c937dbb8a16","isHook":false,"skipped":true},{"title":"allows removal from collection with unset whitelist status","fullTitle":"Integration Test removeFromWhiteList allows removal from collection with unset whitelist status","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionWithoutWhitelistId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionWithoutWhitelistId);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionWithoutWhitelistId, bob.address);\n await helpers_1.disableWhiteListExpectSuccess(alice, collectionWithoutWhitelistId);\n await helpers_1.removeFromWhiteListExpectSuccess(alice, collectionWithoutWhitelistId, helpers_1.normalizeAccountId(bob.address));\n});","err":{},"uuid":"dde05dbd-559a-45e3-9260-5830c90659ae","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["ce40679f-cb58-4efd-9fab-0c937dbb8a16","dde05dbd-559a-45e3-9260-5830c90659ae"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"19ce9466-ea0d-482a-ab0e-6cbdab561771","title":"Negative Integration Test removeFromWhiteList","fullFile":"/nft_parachain/tests/src/removeFromWhiteList.test.ts","file":"/src/removeFromWhiteList.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Negative Integration Test removeFromWhiteList \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"1a924510-3952-46dd-aa5c-548cfa332fac","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"fails on removal from not existing collection","fullTitle":"Negative Integration Test removeFromWhiteList fails on removal from not existing collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.findNotExistingCollection(api);\n await helpers_1.removeFromWhiteListExpectFailure(alice, collectionId, helpers_1.normalizeAccountId(bob.address));\n});","err":{},"uuid":"3469734c-9e2c-4d43-beb3-f4b29eb1bd46","isHook":false,"skipped":true},{"title":"fails on removal from removed collection","fullTitle":"Negative Integration Test removeFromWhiteList fails on removal from removed collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionId, bob.address);\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n await helpers_1.removeFromWhiteListExpectFailure(alice, collectionId, helpers_1.normalizeAccountId(bob.address));\n});","err":{},"uuid":"bcbedd90-5b70-413f-84db-44643f560207","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["3469734c-9e2c-4d43-beb3-f4b29eb1bd46","bcbedd90-5b70-413f-84db-44643f560207"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"e52a884e-26af-4ea4-b808-af59702ee39c","title":"Integration Test removeFromWhiteList with collection admin permissions","fullFile":"/nft_parachain/tests/src/removeFromWhiteList.test.ts","file":"/src/removeFromWhiteList.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test removeFromWhiteList with collection admin permissions \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n charlie = privateKey_1.default('//Charlie');\n});","err":{},"uuid":"a181856c-c084-4e13-aa7f-c1f70231fe00","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"ensure address is not in whitelist after removal","fullTitle":"Integration Test removeFromWhiteList with collection admin permissions ensure address is not in whitelist after removal","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n await helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionId, charlie.address);\n await helpers_1.removeFromWhiteListExpectSuccess(bob, collectionId, helpers_1.normalizeAccountId(charlie.address));\n expect(await helpers_1.isWhitelisted(collectionId, charlie.address)).to.be.false;\n});","err":{},"uuid":"95ab897e-27d4-4d3f-a10b-3c2be388a913","isHook":false,"skipped":true},{"title":"Collection admin allowed to remove from whitelist with unset whitelist status","fullTitle":"Integration Test removeFromWhiteList with collection admin permissions Collection admin allowed to remove from whitelist with unset whitelist status","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionWithoutWhitelistId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionWithoutWhitelistId);\n await helpers_1.addCollectionAdminExpectSuccess(alice, collectionWithoutWhitelistId, bob);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionWithoutWhitelistId, charlie.address);\n await helpers_1.disableWhiteListExpectSuccess(alice, collectionWithoutWhitelistId);\n await helpers_1.removeFromWhiteListExpectSuccess(bob, collectionWithoutWhitelistId, helpers_1.normalizeAccountId(charlie.address));\n});","err":{},"uuid":"65854ca8-cab8-4bec-bff4-8f2b22f904d0","isHook":false,"skipped":true},{"title":"Regular user can`t remove from whitelist","fullTitle":"Integration Test removeFromWhiteList with collection admin permissions Regular user can`t remove from whitelist","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionWithoutWhitelistId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionWithoutWhitelistId);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionWithoutWhitelistId, charlie.address);\n await helpers_1.removeFromWhiteListExpectFailure(bob, collectionWithoutWhitelistId, helpers_1.normalizeAccountId(charlie.address));\n});","err":{},"uuid":"ea3232c6-dc6f-48f1-b0bf-16ff18789fcd","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["95ab897e-27d4-4d3f-a10b-3c2be388a913","65854ca8-cab8-4bec-bff4-8f2b22f904d0","ea3232c6-dc6f-48f1-b0bf-16ff18789fcd"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"d445ff02-9beb-4d72-a551-3cfcbe03f764","title":"Integration Test scheduler base transaction","fullFile":"/nft_parachain/tests/src/scheduler.test.ts","file":"/src/scheduler.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"User can transfer owned token with delay (scheduler)","fullTitle":"Integration Test scheduler base transaction User can transfer owned token with delay (scheduler)","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.setCollectionSponsorExpectSuccess(nftCollectionId, Alice.address);\n await helpers_1.confirmSponsorshipExpectSuccess(nftCollectionId);\n await helpers_1.scheduleTransferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 6000, 4);\n});","err":{},"uuid":"a7260324-2729-42a7-9a19-8587cc347edd","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["a7260324-2729-42a7-9a19-8587cc347edd"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"31bca936-fc7a-4283-a857-2a6b853ab612","title":"Negative Integration Test setChainLimits","fullFile":"/nft_parachain/tests/src/setChainLimits.test.ts","file":"/src/setChainLimits.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Negative Integration Test setChainLimits \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n dave = privateKey_1.default('//Dave');\n limits = {\n CollectionNumbersLimit: 1,\n AccountTokenOwnershipLimit: 1,\n CollectionsAdminsLimit: 1,\n CustomDataLimit: 1,\n NftSponsorTransferTimeout: 1,\n FungibleSponsorTransferTimeout: 1,\n RefungibleSponsorTransferTimeout: 1,\n OffchainSchemaLimit: 1,\n VariableOnChainSchemaLimit: 1,\n ConstOnChainSchemaLimit: 1,\n };\n});","err":{},"uuid":"d688f74a-285d-42bc-be8d-681e088bb48b","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Collection owner cannot set chain limits","fullTitle":"Negative Integration Test setChainLimits Collection owner cannot set chain limits","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nawait helpers_1.setChainLimitsExpectFailure(alice, limits);","err":{},"uuid":"4c3a77eb-6b88-43db-87be-aad42e534e5d","isHook":false,"skipped":true},{"title":"Collection admin cannot set chain limits","fullTitle":"Negative Integration Test setChainLimits Collection admin cannot set chain limits","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\nawait helpers_1.setChainLimitsExpectFailure(bob, limits);","err":{},"uuid":"e10a746b-5eb2-46b4-83c1-73610192c10d","isHook":false,"skipped":true},{"title":"Regular user cannot set chain limits","fullTitle":"Negative Integration Test setChainLimits Regular user cannot set chain limits","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.setChainLimitsExpectFailure(dave, limits);","err":{},"uuid":"80a8e621-e260-4231-bd27-e4f4b15c1634","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["4c3a77eb-6b88-43db-87be-aad42e534e5d","e10a746b-5eb2-46b4-83c1-73610192c10d","80a8e621-e260-4231-bd27-e4f4b15c1634"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"864e8fd6-67ae-4a10-88ad-33850223b651","title":"setCollectionLimits positive","fullFile":"/nft_parachain/tests/src/setCollectionLimits.test.ts","file":"/src/setCollectionLimits.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"setCollectionLimits positive \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n collectionIdForTesting = await helpers_1.createCollectionExpectSuccess({ name: 'A', description: 'B', tokenPrefix: 'C', mode: { type: 'NFT' } });\n});","err":{},"uuid":"2cc67a48-a83e-49b2-9c6c-cce236dfc6ff","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"execute setCollectionLimits with predefined params ","fullTitle":"setCollectionLimits positive execute setCollectionLimits with predefined params ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setCollectionLimits(collectionIdForTesting, {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n });\n const events = await substrate_api_1.submitTransactionAsync(alice, tx);\n const result = helpers_1.getCreateItemResult(events);\n // get collection limits defined previously\n const collectionInfo = await helpers_1.getDetailedCollectionInfo(api, collectionIdForTesting);\n // tslint:disable-next-line:no-unused-expression\n expect(result.success).to.be.true;\n expect(collectionInfo.Limits.AccountTokenOwnershipLimit).to.be.equal(accountTokenOwnershipLimit);\n expect(collectionInfo.Limits.SponsoredDataSize).to.be.equal(sponsoredDataSize);\n expect(collectionInfo.Limits.TokenLimit).to.be.equal(tokenLimit);\n expect(collectionInfo.Limits.SponsorTimeout).to.be.equal(sponsorTimeout);\n expect(collectionInfo.Limits.OwnerCanTransfer).to.be.true;\n expect(collectionInfo.Limits.OwnerCanDestroy).to.be.true;\n});","err":{},"uuid":"d32d1982-da29-46d9-8d16-10523cd331b6","isHook":false,"skipped":true},{"title":"Set the same token limit twice","fullTitle":"setCollectionLimits positive Set the same token limit twice","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionLimits = {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n };\n // The first time\n const tx1 = api.tx.nft.setCollectionLimits(collectionIdForTesting, collectionLimits);\n const events1 = await substrate_api_1.submitTransactionAsync(alice, tx1);\n const result1 = helpers_1.getCreateItemResult(events1);\n const collectionInfo1 = await helpers_1.getDetailedCollectionInfo(api, collectionIdForTesting);\n // The second time\n const tx2 = api.tx.nft.setCollectionLimits(collectionIdForTesting, collectionLimits);\n const events2 = await substrate_api_1.submitTransactionAsync(alice, tx2);\n const result2 = helpers_1.getCreateItemResult(events2);\n const collectionInfo2 = await helpers_1.getDetailedCollectionInfo(api, collectionIdForTesting);\n // tslint:disable-next-line:no-unused-expression\n expect(result1.success).to.be.true;\n expect(collectionInfo1.Limits.TokenLimit).to.be.equal(tokenLimit);\n expect(result2.success).to.be.true;\n expect(collectionInfo2.Limits.TokenLimit).to.be.equal(tokenLimit);\n});","err":{},"uuid":"6b883ae8-e9cc-436f-b66f-d589dee3774b","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["d32d1982-da29-46d9-8d16-10523cd331b6","6b883ae8-e9cc-436f-b66f-d589dee3774b"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"80730974-8aaf-4b53-837e-843c327f5f32","title":"setCollectionLimits negative","fullFile":"/nft_parachain/tests/src/setCollectionLimits.test.ts","file":"/src/setCollectionLimits.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"setCollectionLimits negative \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n collectionIdForTesting = await helpers_1.createCollectionExpectSuccess({ name: 'A', description: 'B', tokenPrefix: 'C', mode: { type: 'NFT' } });\n});","err":{},"uuid":"a19bd118-2c02-44a5-8352-4ba72d5b51ea","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"execute setCollectionLimits for not exists collection","fullTitle":"setCollectionLimits negative execute setCollectionLimits for not exists collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionCount = await helpers_1.getCreatedCollectionCount(api);\n const nonExistedCollectionId = collectionCount + 1;\n tx = api.tx.nft.setCollectionLimits(nonExistedCollectionId, {\n accountTokenOwnershipLimit,\n sponsoredDataSize,\n sponsoredMintSize,\n tokenLimit,\n });\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;\n});","err":{},"uuid":"53dc0d8c-321e-4901-9157-3fd66bcc15ab","isHook":false,"skipped":true},{"title":"execute setCollectionLimits from user who is not owner of this collection","fullTitle":"setCollectionLimits negative execute setCollectionLimits from user who is not owner of this collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setCollectionLimits(collectionIdForTesting, {\n accountTokenOwnershipLimit,\n sponsoredDataSize,\n sponsoredMintSize,\n tokenLimit,\n });\n await expect(substrate_api_1.submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;\n});","err":{},"uuid":"ddad0ec1-5004-45c0-b755-a8c833b3c744","isHook":false,"skipped":true},{"title":"execute setCollectionLimits from admin collection","fullTitle":"setCollectionLimits negative execute setCollectionLimits from admin collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob);\nawait substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setCollectionLimits(collectionIdForTesting, {\n accountTokenOwnershipLimit,\n sponsoredDataSize,\n sponsoredMintSize,\n tokenLimit,\n });\n await expect(substrate_api_1.submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;\n});","err":{},"uuid":"a62c80c1-5434-4801-9a9b-7a901d3a6e12","isHook":false,"skipped":true},{"title":"execute setCollectionLimits with incorrect limits","fullTitle":"setCollectionLimits negative execute setCollectionLimits with incorrect limits","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setCollectionLimits(collectionIdForTesting, {\n accountTokenOwnershipLimit: 'awdawd',\n sponsorTransferTimeout: 'awd',\n sponsoredDataSize: '12312312312312312',\n tokenLimit: '-100',\n });\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;\n});","err":{},"uuid":"d2e949e0-7f48-4d3c-a12d-8da0910c3ce3","isHook":false,"skipped":true},{"title":"fails when trying to enable OwnerCanTransfer after it was disabled","fullTitle":"setCollectionLimits negative fails when trying to enable OwnerCanTransfer after it was disabled","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: false,\n OwnerCanDestroy: true,\n});\nawait helpers_1.setCollectionLimitsExpectFailure(alice, collectionId, {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n});","err":{},"uuid":"9520e496-d043-44a3-bb82-d17eb2499334","isHook":false,"skipped":true},{"title":"fails when trying to enable OwnerCanDestroy after it was disabled","fullTitle":"setCollectionLimits negative fails when trying to enable OwnerCanDestroy after it was disabled","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: true,\n OwnerCanDestroy: false,\n});\nawait helpers_1.setCollectionLimitsExpectFailure(alice, collectionId, {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n});","err":{},"uuid":"cbfc2098-3360-4c35-b9a3-1f2459547199","isHook":false,"skipped":true},{"title":"Setting the higher token limit fails","fullTitle":"setCollectionLimits negative Setting the higher token limit fails","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collectionLimits = {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n };\n // The first time\n await helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, collectionLimits);\n // The second time - higher token limit\n collectionLimits.TokenLimit += 1;\n await helpers_1.setCollectionLimitsExpectFailure(alice, collectionId, collectionLimits);\n});","err":{},"uuid":"ac5ff0da-daa7-4509-b527-09cc176b1d40","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["53dc0d8c-321e-4901-9157-3fd66bcc15ab","ddad0ec1-5004-45c0-b755-a8c833b3c744","a62c80c1-5434-4801-9a9b-7a901d3a6e12","d2e949e0-7f48-4d3c-a12d-8da0910c3ce3","9520e496-d043-44a3-bb82-d17eb2499334","cbfc2098-3360-4c35-b9a3-1f2459547199","ac5ff0da-daa7-4509-b527-09cc176b1d40"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"0ec248e7-8ae8-4211-8c0e-048f7bc90578","title":"integration test: ext. setCollectionSponsor():","fullFile":"/nft_parachain/tests/src/setCollectionSponsor.test.ts","file":"/src/setCollectionSponsor.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"integration test: ext. setCollectionSponsor(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});","err":{},"uuid":"2efa7181-c0db-42f7-9833-9c853fb5a191","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Set NFT collection sponsor","fullTitle":"integration test: ext. setCollectionSponsor(): Set NFT collection sponsor","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);","err":{},"uuid":"6fd9bfef-84c0-41ef-8b43-bd993cfd739f","isHook":false,"skipped":true},{"title":"Set Fungible collection sponsor","fullTitle":"integration test: ext. setCollectionSponsor(): Set Fungible collection sponsor","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);","err":{},"uuid":"61a720d0-0fe1-4b46-967c-c01d70b6242c","isHook":false,"skipped":true},{"title":"Set ReFungible collection sponsor","fullTitle":"integration test: ext. setCollectionSponsor(): Set ReFungible collection sponsor","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);","err":{},"uuid":"cb5646f4-5aba-4d98-9817-de2c9bd42fce","isHook":false,"skipped":true},{"title":"Set the same sponsor repeatedly","fullTitle":"integration test: ext. setCollectionSponsor(): Set the same sponsor repeatedly","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);","err":{},"uuid":"86441019-203b-4476-af25-ccba5b9e2741","isHook":false,"skipped":true},{"title":"Replace collection sponsor","fullTitle":"integration test: ext. setCollectionSponsor(): Replace collection sponsor","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nconst keyring = new api_1.Keyring({ type: 'sr25519' });\nconst charlie = keyring.addFromUri('//Charlie');\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, charlie.address);","err":{},"uuid":"24d56994-b714-4916-a755-bbae2775d2c4","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["6fd9bfef-84c0-41ef-8b43-bd993cfd739f","61a720d0-0fe1-4b46-967c-c01d70b6242c","cb5646f4-5aba-4d98-9817-de2c9bd42fce","86441019-203b-4476-af25-ccba5b9e2741","24d56994-b714-4916-a755-bbae2775d2c4"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"cec3e13f-3894-41ae-b288-c60bfcf771dd","title":"(!negative test!) integration test: ext. setCollectionSponsor():","fullFile":"/nft_parachain/tests/src/setCollectionSponsor.test.ts","file":"/src/setCollectionSponsor.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"(!negative test!) integration test: ext. setCollectionSponsor(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n charlie = keyring.addFromUri('//Charlie');\n});","err":{},"uuid":"6e23f95c-a8f1-4af9-905e-d6cd335b614f","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"(!negative test!) Add sponsor with a non-owner","fullTitle":"(!negative test!) integration test: ext. setCollectionSponsor(): (!negative test!) Add sponsor with a non-owner","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectFailure(collectionId, bob.address, '//Bob');","err":{},"uuid":"683d509e-09c6-4df6-928b-aa8f1ca81b8c","isHook":false,"skipped":true},{"title":"(!negative test!) Add sponsor to a collection that never existed","fullTitle":"(!negative test!) integration test: ext. setCollectionSponsor(): (!negative test!) Add sponsor to a collection that never existed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"// Find the collection that never existed\nlet collectionId = 0;\nawait substrate_api_1.default(async (api) => {\n collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n});\nawait helpers_1.setCollectionSponsorExpectFailure(collectionId, bob.address);","err":{},"uuid":"8f54053d-0d3a-4948-ad54-716e75cd82e0","isHook":false,"skipped":true},{"title":"(!negative test!) Add sponsor to a collection that was destroyed","fullTitle":"(!negative test!) integration test: ext. setCollectionSponsor(): (!negative test!) Add sponsor to a collection that was destroyed","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);\nawait helpers_1.setCollectionSponsorExpectFailure(collectionId, bob.address);","err":{},"uuid":"40568762-50de-4901-8db1-050f95fb2b52","isHook":false,"skipped":true},{"title":"(!negative test!) Collection admin add sponsor","fullTitle":"(!negative test!) integration test: ext. setCollectionSponsor(): (!negative test!) Collection admin add sponsor","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\nawait helpers_1.setCollectionSponsorExpectFailure(collectionId, charlie.address, '//Bob');","err":{},"uuid":"a33535e3-d85d-45f3-a599-7b4b2f2bc4ce","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["683d509e-09c6-4df6-928b-aa8f1ca81b8c","8f54053d-0d3a-4948-ad54-716e75cd82e0","40568762-50de-4901-8db1-050f95fb2b52","a33535e3-d85d-45f3-a599-7b4b2f2bc4ce"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"158f543c-d1ad-433b-a908-e239b62b96d3","title":"Integration Test ext. setConstOnChainSchema()","fullFile":"/nft_parachain/tests/src/setConstOnChainSchema.test.ts","file":"/src/setConstOnChainSchema.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Run extrinsic with parameters of the collection id, set the scheme","fullTitle":"Integration Test ext. setConstOnChainSchema() Run extrinsic with parameters of the collection id, set the scheme","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.eq(Alice.address);\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);\n await substrate_api_1.submitTransactionAsync(Alice, setShema);\n});","err":{},"uuid":"d112aefc-3e9d-46fb-b4a9-b0e0b8dc4d28","isHook":false,"skipped":true},{"title":"Collection admin can set the scheme","fullTitle":"Integration Test ext. setConstOnChainSchema() Collection admin can set the scheme","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.eq(Alice.address);\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);\n await substrate_api_1.submitTransactionAsync(Bob, setShema);\n});","err":{},"uuid":"9af30569-5854-4062-be4e-a714e755a189","isHook":false,"skipped":true},{"title":"Checking collection data using the ConstOnChainSchema parameter","fullTitle":"Integration Test ext. setConstOnChainSchema() Checking collection data using the ConstOnChainSchema parameter","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);\n await substrate_api_1.submitTransactionAsync(Alice, setShema);\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.ConstOnChainSchema.toString()).to.be.eq(Shema);\n});","err":{},"uuid":"22077b7e-d757-4822-894a-749f8188e9bd","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["d112aefc-3e9d-46fb-b4a9-b0e0b8dc4d28","9af30569-5854-4062-be4e-a714e755a189","22077b7e-d757-4822-894a-749f8188e9bd"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"28e4fb50-d2ac-49de-81fa-1a240770f61a","title":"Negative Integration Test ext. setConstOnChainSchema()","fullFile":"/nft_parachain/tests/src/setConstOnChainSchema.test.ts","file":"/src/setConstOnChainSchema.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Set a non-existent collection","fullTitle":"Negative Integration Test ext. setConstOnChainSchema() Set a non-existent collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: radix\n const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, setShema)).to.be.rejected;\n});","err":{},"uuid":"7ce3cde5-be29-4d65-9320-46cc0d8a4f31","isHook":false,"skipped":true},{"title":"Set a previously deleted collection","fullTitle":"Negative Integration Test ext. setConstOnChainSchema() Set a previously deleted collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, setShema)).to.be.rejected;\n});","err":{},"uuid":"9ee1b42d-b518-4090-a17a-dd57e2186940","isHook":false,"skipped":true},{"title":"Set invalid data in schema (size too large:> 1024b)","fullTitle":"Negative Integration Test ext. setConstOnChainSchema() Set invalid data in schema (size too large:> 1024b)","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, largeShema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, setShema)).to.be.rejected;\n});","err":{},"uuid":"3fb38da2-5f4f-4929-aed8-07146645f2ed","isHook":false,"skipped":true},{"title":"Execute method not on behalf of the collection owner","fullTitle":"Negative Integration Test ext. setConstOnChainSchema() Execute method not on behalf of the collection owner","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.eq(Alice.address);\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Bob, setShema)).to.be.rejected;\n});","err":{},"uuid":"75fdd293-994b-4984-b654-f245487e44d2","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["7ce3cde5-be29-4d65-9320-46cc0d8a4f31","9ee1b42d-b518-4090-a17a-dd57e2186940","3fb38da2-5f4f-4929-aed8-07146645f2ed","75fdd293-994b-4984-b654-f245487e44d2"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"e78dc91b-d806-46dd-984e-ec046f502cd2","title":"Integration Test setContractSponsoringRateLimit","fullFile":"/nft_parachain/tests/src/setContractSponsoringRateLimit.test.ts","file":"/src/setContractSponsoringRateLimit.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"ensure sponsored contract can't be called twice without pause for free","fullTitle":"Integration Test setContractSponsoringRateLimit ensure sponsored contract can't be called twice without pause for free","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"135d3e1d-e004-44c4-9e22-3d6a253435c0","isHook":false,"skipped":false},{"title":"ensure sponsored contract can be called twice with pause for free","fullTitle":"Integration Test setContractSponsoringRateLimit ensure sponsored contract can be called twice with pause for free","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"4b560f0c-46d1-49a7-b5a9-5496c91234fc","isHook":false,"skipped":false}],"suites":[],"passes":[],"failures":[],"pending":["135d3e1d-e004-44c4-9e22-3d6a253435c0","4b560f0c-46d1-49a7-b5a9-5496c91234fc"],"skipped":[],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"bc7ada2a-db31-43ce-a802-033605a598f1","title":"Negative Integration Test setContractSponsoringRateLimit","fullFile":"/nft_parachain/tests/src/setContractSponsoringRateLimit.test.ts","file":"/src/setContractSponsoringRateLimit.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"fails when called for non-contract address","fullTitle":"Negative Integration Test setContractSponsoringRateLimit fails when called for non-contract address","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"e39de7ef-40bc-4d8c-aae1-0b7745bad05e","isHook":false,"skipped":false},{"title":"fails when called by non-owning user","fullTitle":"Negative Integration Test setContractSponsoringRateLimit fails when called by non-owning user","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"30b5ab68-1f40-4d2a-b589-6d866974e75c","isHook":false,"skipped":false}],"suites":[],"passes":[],"failures":[],"pending":["e39de7ef-40bc-4d8c-aae1-0b7745bad05e","30b5ab68-1f40-4d2a-b589-6d866974e75c"],"skipped":[],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"eb5cbed0-02a5-444a-93de-c94fef224554","title":"Integration Test setMintPermission","fullFile":"/nft_parachain/tests/src/setMintPermission.test.ts","file":"/src/setMintPermission.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test setMintPermission \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"191f98d5-26a1-4910-8218-af236af77982","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"ensure white-listed non-privileged address can mint tokens","fullTitle":"Integration Test setMintPermission ensure white-listed non-privileged address can mint tokens","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, true);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionId, bob.address);\n await helpers_1.createItemExpectSuccess(bob, collectionId, 'NFT');\n});","err":{},"uuid":"884235b9-da39-4217-9f9a-73fac056921c","isHook":false,"skipped":true},{"title":"can be enabled twice","fullTitle":"Integration Test setMintPermission can be enabled twice","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, true);\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, true);\n});","err":{},"uuid":"98173ea4-9d53-4b14-a61c-78b6c9158132","isHook":false,"skipped":true},{"title":"can be disabled twice","fullTitle":"Integration Test setMintPermission can be disabled twice","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, true);\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, false);\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, false);\n});","err":{},"uuid":"2aa44b95-b911-4a5e-9f3d-fda7b0c3fbda","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["884235b9-da39-4217-9f9a-73fac056921c","98173ea4-9d53-4b14-a61c-78b6c9158132","2aa44b95-b911-4a5e-9f3d-fda7b0c3fbda"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"cbc6e3f1-5d78-4769-9afd-72998c570eb6","title":"Negative Integration Test setMintPermission","fullFile":"/nft_parachain/tests/src/setMintPermission.test.ts","file":"/src/setMintPermission.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Negative Integration Test setMintPermission \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"34da7a1c-2588-45e4-a3dd-8238f60e2e11","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"fails on not existing collection","fullTitle":"Negative Integration Test setMintPermission fails on not existing collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const nonExistingCollection = await helpers_1.findNotExistingCollection(api);\n await helpers_1.setMintPermissionExpectFailure(alice, nonExistingCollection, true);\n});","err":{},"uuid":"2646ad83-06be-4fee-92b4-0316359e4d47","isHook":false,"skipped":true},{"title":"fails on removed collection","fullTitle":"Negative Integration Test setMintPermission fails on removed collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const removedCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.destroyCollectionExpectSuccess(removedCollectionId);\n await helpers_1.setMintPermissionExpectFailure(alice, removedCollectionId, true);\n});","err":{},"uuid":"06542d72-bd12-4943-a060-726f91838cf6","isHook":false,"skipped":true},{"title":"fails when not collection owner tries to set mint status","fullTitle":"Negative Integration Test setMintPermission fails when not collection owner tries to set mint status","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nawait helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\nawait helpers_1.setMintPermissionExpectFailure(bob, collectionId, true);","err":{},"uuid":"b5f2f65c-cebf-4155-8a5b-f64db02dfd8b","isHook":false,"skipped":true},{"title":"Collection admin fails on set","fullTitle":"Negative Integration Test setMintPermission Collection admin fails on set","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\n await helpers_1.setMintPermissionExpectFailure(bob, collectionId, true);\n});","err":{},"uuid":"d5919771-6a70-4e9b-978f-dae88e7bb206","isHook":false,"skipped":true},{"title":"ensure non-white-listed non-privileged address can't mint tokens","fullTitle":"Negative Integration Test setMintPermission ensure non-white-listed non-privileged address can't mint tokens","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, true);\n await helpers_1.createItemExpectFailure(bob, collectionId, 'NFT');\n});","err":{},"uuid":"17be383a-4cda-4426-9104-ca99e965bccc","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["2646ad83-06be-4fee-92b4-0316359e4d47","06542d72-bd12-4943-a060-726f91838cf6","b5f2f65c-cebf-4155-8a5b-f64db02dfd8b","d5919771-6a70-4e9b-978f-dae88e7bb206","17be383a-4cda-4426-9104-ca99e965bccc"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"8ee811c1-d214-486c-9cf1-2457e3e040d0","title":"Integration Test setOffchainSchema","fullFile":"/nft_parachain/tests/src/setOffchainSchema.test.ts","file":"/src/setOffchainSchema.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test setOffchainSchema \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"784ee8b7-3378-496c-9630-39ea92fb5387","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"execute setOffchainSchema, verify data was set","fullTitle":"Integration Test setOffchainSchema execute setOffchainSchema, verify data was set","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nawait helpers_1.setOffchainSchemaExpectSuccess(alice, collectionId, DATA);\nconst collection = await helpers_1.queryCollectionExpectSuccess(collectionId);\nexpect(collection.OffchainSchema).to.be.equal('0x' + Buffer.from(DATA).toString('hex'));","err":{},"uuid":"74df46ab-1974-4c14-b1c8-b44107edf519","isHook":false,"skipped":true},{"title":"execute setOffchainSchema (collection admin), verify data was set","fullTitle":"Integration Test setOffchainSchema execute setOffchainSchema (collection admin), verify data was set","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\nawait helpers_1.setOffchainSchemaExpectSuccess(bob, collectionId, DATA);\nconst collection = await helpers_1.queryCollectionExpectSuccess(collectionId);\nexpect(collection.OffchainSchema).to.be.equal('0x' + Buffer.from(DATA).toString('hex'));","err":{},"uuid":"a96f3c18-592c-4597-9516-3f5186e54953","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["74df46ab-1974-4c14-b1c8-b44107edf519","a96f3c18-592c-4597-9516-3f5186e54953"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"128add77-4dab-49aa-93c8-f00f156e2fe8","title":"Negative Integration Test setOffchainSchema","fullFile":"/nft_parachain/tests/src/setOffchainSchema.test.ts","file":"/src/setOffchainSchema.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Negative Integration Test setOffchainSchema \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n validCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n});","err":{},"uuid":"42ceb947-54d1-43bd-818f-e2e6579f5bf4","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"fails on not existing collection id","fullTitle":"Negative Integration Test setOffchainSchema fails on not existing collection id","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const nonExistingCollectionId = await substrate_api_1.default(helpers_1.findNotExistingCollection);\nawait helpers_1.setOffchainSchemaExpectFailure(alice, nonExistingCollectionId, DATA);","err":{},"uuid":"57ef09b4-431d-44db-b422-f551119d8a58","isHook":false,"skipped":true},{"title":"fails on destroyed collection id","fullTitle":"Negative Integration Test setOffchainSchema fails on destroyed collection id","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const destroyedCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nawait helpers_1.destroyCollectionExpectSuccess(destroyedCollectionId);\nawait helpers_1.setOffchainSchemaExpectFailure(alice, destroyedCollectionId, DATA);","err":{},"uuid":"03fec951-9f04-44e6-bd91-b3db5006f811","isHook":false,"skipped":true},{"title":"fails on too long data","fullTitle":"Negative Integration Test setOffchainSchema fails on too long data","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const tooLongData = new Array(4097).fill(0xff);\nawait helpers_1.setOffchainSchemaExpectFailure(alice, validCollectionId, tooLongData);","err":{},"uuid":"0c79ca69-2103-4006-807b-ca84b88a4d3f","isHook":false,"skipped":true},{"title":"fails on execution by non-owner","fullTitle":"Negative Integration Test setOffchainSchema fails on execution by non-owner","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.setOffchainSchemaExpectFailure(bob, validCollectionId, DATA);","err":{},"uuid":"e24a2704-3e4b-4e16-9bbf-8469e1075273","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["57ef09b4-431d-44db-b422-f551119d8a58","03fec951-9f04-44e6-bd91-b3db5006f811","0c79ca69-2103-4006-807b-ca84b88a4d3f","e24a2704-3e4b-4e16-9bbf-8469e1075273"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"21cd6275-d772-43e4-8107-49172c63e008","title":"Integration Test setPublicAccessMode(): ","fullFile":"/nft_parachain/tests/src/setPublicAccessMode.test.ts","file":"/src/setPublicAccessMode.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test setPublicAccessMode(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"2c502666-f62e-4258-b153-af208488ecd1","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Run extrinsic with collection id parameters, set the whitelist mode for the collection","fullTitle":"Integration Test setPublicAccessMode(): Run extrinsic with collection id parameters, set the whitelist mode for the collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\n await helpers_1.enablePublicMintingExpectSuccess(Alice, collectionId);\n await helpers_1.addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);\n await helpers_1.createItemExpectSuccess(Bob, collectionId, 'NFT', Bob.address);\n});","err":{},"uuid":"55b032ac-9618-4054-95ea-d81ba90b0c90","isHook":false,"skipped":true},{"title":"Whitelisted collection limits","fullTitle":"Integration Test setPublicAccessMode(): Whitelisted collection limits","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\n await helpers_1.enablePublicMintingExpectSuccess(Alice, collectionId);\n const tx = api.tx.nft.createItem(collectionId, helpers_1.normalizeAccountId(Bob.address), 'NFT');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Bob, tx)).to.be.rejected;\n});","err":{},"uuid":"1a73aee5-8fbf-4c9e-8597-1fd85d8535b9","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["55b032ac-9618-4054-95ea-d81ba90b0c90","1a73aee5-8fbf-4c9e-8597-1fd85d8535b9"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"2b95666d-f34b-4ed3-acf5-fdd7ea14f453","title":"Negative Integration Test ext. setPublicAccessMode(): ","fullFile":"/nft_parachain/tests/src/setPublicAccessMode.test.ts","file":"/src/setPublicAccessMode.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Set a non-existent collection","fullTitle":"Negative Integration Test ext. setPublicAccessMode(): Set a non-existent collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: radix\n const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n const tx = api.tx.nft.setPublicAccessMode(collectionId, 'WhiteList');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;\n});","err":{},"uuid":"bf038639-2b3a-4e55-8fd8-87fc2dd2079f","isHook":false,"skipped":true},{"title":"Set the collection that has been deleted","fullTitle":"Negative Integration Test ext. setPublicAccessMode(): Set the collection that has been deleted","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n const tx = api.tx.nft.setPublicAccessMode(collectionId, 'WhiteList');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;\n});","err":{},"uuid":"0869df88-a579-4e57-82e3-ed0cec2df308","isHook":false,"skipped":true},{"title":"Re-set the list mode already set in quantity","fullTitle":"Negative Integration Test ext. setPublicAccessMode(): Re-set the list mode already set in quantity","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\n await helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\n});","err":{},"uuid":"c15c0080-3c65-4afd-89e5-b6ac7c08880a","isHook":false,"skipped":true},{"title":"Execute method not on behalf of the collection owner","fullTitle":"Negative Integration Test ext. setPublicAccessMode(): Execute method not on behalf of the collection owner","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const tx = api.tx.nft.setPublicAccessMode(collectionId, 'WhiteList');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Bob, tx)).to.be.rejected;\n});","err":{},"uuid":"65f44b07-e980-4937-a64e-966cc44cdfd0","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["bf038639-2b3a-4e55-8fd8-87fc2dd2079f","0869df88-a579-4e57-82e3-ed0cec2df308","c15c0080-3c65-4afd-89e5-b6ac7c08880a","65f44b07-e980-4937-a64e-966cc44cdfd0"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"fe633113-3571-4966-8ef2-f21169ed6919","title":"Negative Integration Test ext. collection admin setPublicAccessMode(): ","fullFile":"/nft_parachain/tests/src/setPublicAccessMode.test.ts","file":"/src/setPublicAccessMode.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Negative Integration Test ext. collection admin setPublicAccessMode(): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});","err":{},"uuid":"67f09b42-dea1-4c38-ae29-14ec5b16ac2f","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"setPublicAccessMode by collection admin","fullTitle":"Negative Integration Test ext. collection admin setPublicAccessMode(): setPublicAccessMode by collection admin","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const tx = api.tx.nft.setPublicAccessMode(collectionId, 'WhiteList');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Bob, tx)).to.be.rejected;\n});","err":{},"uuid":"f7f2e202-851a-4608-8011-59ed6f8cfd89","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["f7f2e202-851a-4608-8011-59ed6f8cfd89"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"95210d41-0381-4266-a470-6b1c1a8dd7d9","title":"hooks","fullFile":"/nft_parachain/tests/src/setSchemaVersion.test.ts","file":"/src/setSchemaVersion.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"hooks \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n});","err":{},"uuid":"65514693-ecaf-402a-a914-8207dc6e0e64","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"choose or create collection for testing","fullTitle":"hooks choose or create collection for testing","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n collectionIdForTesting = await helpers_1.createCollectionExpectSuccess({ name: 'A', description: 'B', tokenPrefix: 'C', mode: { type: 'NFT' } });\n});","err":{},"uuid":"5dd8b15a-e1e3-432c-a2d1-c3f239c17777","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["5dd8b15a-e1e3-432c-a2d1-c3f239c17777"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"b29cdf70-5c2b-4f4f-b53e-72c1180da4f5","title":"setSchemaVersion positive","fullFile":"/nft_parachain/tests/src/setSchemaVersion.test.ts","file":"/src/setSchemaVersion.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"setSchemaVersion positive \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n});","err":{},"uuid":"9013432b-5ba4-4bc8-a7a2-cde5e009de3e","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"execute setSchemaVersion with image url and unique ","fullTitle":"setSchemaVersion positive execute setSchemaVersion with image url and unique ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');\n const events = await substrate_api_1.submitTransactionAsync(alice, tx);\n const result = helpers_1.getCreateItemResult(events);\n const collectionInfo = await helpers_1.getDetailedCollectionInfo(api, collectionIdForTesting);\n // tslint:disable-next-line:no-unused-expression\n expect(result.success).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n expect(collectionInfo).to.be.exist;\n // tslint:disable-next-line:no-unused-expression\n expect(collectionInfo ? collectionInfo.SchemaVersion.toString() : '').to.be.equal('Unique');\n});","err":{},"uuid":"b1f37795-e81d-406d-87f8-c5dadaa5624e","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["b1f37795-e81d-406d-87f8-c5dadaa5624e"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"6b9969df-88db-40ee-8830-8ae2d4577acb","title":"Collection admin setSchemaVersion positive","fullFile":"/nft_parachain/tests/src/setSchemaVersion.test.ts","file":"/src/setSchemaVersion.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Collection admin setSchemaVersion positive \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n await helpers_1.addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob);\n});","err":{},"uuid":"499d6f5d-3966-4b81-b3a1-e140c0f46819","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"execute setSchemaVersion with image url and unique ","fullTitle":"Collection admin setSchemaVersion positive execute setSchemaVersion with image url and unique ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');\n const events = await substrate_api_1.submitTransactionAsync(bob, tx);\n const result = helpers_1.getCreateItemResult(events);\n const collectionInfo = await helpers_1.getDetailedCollectionInfo(api, collectionIdForTesting);\n // tslint:disable-next-line:no-unused-expression\n expect(result.success).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n expect(collectionInfo).to.be.exist;\n // tslint:disable-next-line:no-unused-expression\n expect(collectionInfo ? collectionInfo.SchemaVersion.toString() : '').to.be.equal('Unique');\n});","err":{},"uuid":"01b1449a-50b5-4294-b820-94be9a867866","isHook":false,"skipped":true},{"title":"validate schema version with just entered data","fullTitle":"Collection admin setSchemaVersion positive validate schema version with just entered data","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'ImageURL');\n const events = await substrate_api_1.submitTransactionAsync(bob, tx);\n const result = helpers_1.getCreateItemResult(events);\n const collectionInfo = await helpers_1.getDetailedCollectionInfo(api, collectionIdForTesting);\n // tslint:disable-next-line:no-unused-expression\n expect(result.success).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n expect(collectionInfo).to.be.exist;\n // tslint:disable-next-line:no-unused-expression\n expect(collectionInfo ? collectionInfo.SchemaVersion.toString() : '').to.be.equal('ImageURL');\n});","err":{},"uuid":"f3f49e1a-d105-4784-a94b-f19feafab72e","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["01b1449a-50b5-4294-b820-94be9a867866","f3f49e1a-d105-4784-a94b-f19feafab72e"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"cca36752-479c-4b26-9c41-9ab7c1f97063","title":"setSchemaVersion negative","fullFile":"/nft_parachain/tests/src/setSchemaVersion.test.ts","file":"/src/setSchemaVersion.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"setSchemaVersion negative \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n charlie = keyring.addFromUri('//Charlie');\n});","err":{},"uuid":"b4dad0a8-e978-4a1f-9a29-5c2bc9f8b228","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"execute setSchemaVersion for not exists collection","fullTitle":"setSchemaVersion negative execute setSchemaVersion for not exists collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionCount = await helpers_1.getCreatedCollectionCount(api);\n const nonExistedCollectionId = collectionCount + 1;\n tx = api.tx.nft.setSchemaVersion(nonExistedCollectionId, 'ImageURL');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;\n});","err":{},"uuid":"711dd282-06df-4b27-ad74-4817c4199cbe","isHook":false,"skipped":true},{"title":"execute setSchemaVersion with not correct schema version","fullTitle":"setSchemaVersion negative execute setSchemaVersion with not correct schema version","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const consoleError = console.error;\n console.error = () => { };\n try {\n tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Test');\n await substrate_api_1.submitTransactionAsync(alice, tx);\n }\n catch (e) {\n // tslint:disable-next-line:no-unused-expression\n expect(e).to.be.exist;\n }\n finally {\n console.error = consoleError;\n }\n});","err":{},"uuid":"03934978-2e4a-416e-a7bd-322c1bf6998d","isHook":false,"skipped":true},{"title":"execute setSchemaVersion for deleted collection","fullTitle":"setSchemaVersion negative execute setSchemaVersion for deleted collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n await helpers_1.destroyCollectionExpectSuccess(collectionIdForTesting);\n tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'ImageURL');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;\n});","err":{},"uuid":"0f71035a-7ee8-49d5-9108-8c3a8cb20746","isHook":false,"skipped":true},{"title":"Regular user can`t execute setSchemaVersion with image url and unique ","fullTitle":"setSchemaVersion negative Regular user can`t execute setSchemaVersion with image url and unique ","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');\n await expect(substrate_api_1.submitTransactionAsync(charlie, tx)).to.be.rejected;\n});","err":{},"uuid":"3340ff9a-6b05-4d6f-8008-742400241c25","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["711dd282-06df-4b27-ad74-4817c4199cbe","03934978-2e4a-416e-a7bd-322c1bf6998d","0f71035a-7ee8-49d5-9108-8c3a8cb20746","3340ff9a-6b05-4d6f-8008-742400241c25"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"0e1d8b18-361d-486f-b15e-c942702380ce","title":"Integration Test setVariableMetaData","fullFile":"/nft_parachain/tests/src/setVariableMetaData.test.ts","file":"/src/setVariableMetaData.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test setVariableMetaData \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT');\n});","err":{},"uuid":"fda3fb20-122c-4c58-a568-38d5df352f10","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"execute setVariableMetaData","fullTitle":"Integration Test setVariableMetaData execute setVariableMetaData","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.setVariableMetaDataExpectSuccess(alice, collectionId, tokenId, data);","err":{},"uuid":"e6809f64-bb74-4063-af89-26ec8b8ccfa1","isHook":false,"skipped":true},{"title":"verify data was set","fullTitle":"Integration Test setVariableMetaData verify data was set","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const item = (await api.query.nft.nftItemList(collectionId, tokenId)).unwrap();\n expect(Array.from(item.VariableData)).to.deep.equal(Array.from(data));\n});","err":{},"uuid":"41676afc-1825-4f06-91ba-7d86efc503d2","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["e6809f64-bb74-4063-af89-26ec8b8ccfa1","41676afc-1825-4f06-91ba-7d86efc503d2"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"5d5baf3a-85e8-457a-837c-aad3479ae0fa","title":"Integration Test collection admin setVariableMetaData","fullFile":"/nft_parachain/tests/src/setVariableMetaData.test.ts","file":"/src/setVariableMetaData.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test collection admin setVariableMetaData \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT');\n await helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\n});","err":{},"uuid":"80e76546-37db-4019-a7d4-7c55efa8c3c7","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"execute setVariableMetaData","fullTitle":"Integration Test collection admin setVariableMetaData execute setVariableMetaData","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.setVariableMetaDataExpectSuccess(bob, collectionId, tokenId, data);","err":{},"uuid":"a729be6d-0a5f-453a-b96c-0abe0920eb11","isHook":false,"skipped":true},{"title":"verify data was set","fullTitle":"Integration Test collection admin setVariableMetaData verify data was set","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const item = (await api.query.nft.nftItemList(collectionId, tokenId)).unwrap();\n expect(Array.from(item.VariableData)).to.deep.equal(Array.from(data));\n});","err":{},"uuid":"5d706d87-49db-4147-9b21-896aafd8a741","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["a729be6d-0a5f-453a-b96c-0abe0920eb11","5d706d87-49db-4147-9b21-896aafd8a741"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"8c8b8314-a60a-46d6-9f74-eedbe192ba40","title":"Negative Integration Test setVariableMetaData","fullFile":"/nft_parachain/tests/src/setVariableMetaData.test.ts","file":"/src/setVariableMetaData.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Negative Integration Test setVariableMetaData \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n validCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n validTokenId = await helpers_1.createItemExpectSuccess(alice, validCollectionId, 'NFT');\n});","err":{},"uuid":"5f12f2fd-31df-495d-aea7-4b99d560b28c","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"fails on not existing collection id","fullTitle":"Negative Integration Test setVariableMetaData fails on not existing collection id","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const nonExistingCollectionId = await helpers_1.findNotExistingCollection(api);\n await helpers_1.setVariableMetaDataExpectFailure(alice, nonExistingCollectionId, 1, data);\n});","err":{},"uuid":"1520d86b-d0f4-4a03-93a4-c4d141613a26","isHook":false,"skipped":true},{"title":"fails on removed collection id","fullTitle":"Negative Integration Test setVariableMetaData fails on removed collection id","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const removedCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nconst removedCollectionTokenId = await helpers_1.createItemExpectSuccess(alice, removedCollectionId, 'NFT');\nawait helpers_1.destroyCollectionExpectSuccess(removedCollectionId);\nawait helpers_1.setVariableMetaDataExpectFailure(alice, removedCollectionId, removedCollectionTokenId, data);","err":{},"uuid":"44afa873-e07e-407c-bf4b-b79bb327ba52","isHook":false,"skipped":true},{"title":"fails on removed token","fullTitle":"Negative Integration Test setVariableMetaData fails on removed token","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const removedTokenCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nconst removedTokenId = await helpers_1.createItemExpectSuccess(alice, removedTokenCollectionId, 'NFT');\nawait helpers_1.burnItemExpectSuccess(alice, removedTokenCollectionId, removedTokenId);\nawait helpers_1.setVariableMetaDataExpectFailure(alice, removedTokenCollectionId, removedTokenId, data);","err":{},"uuid":"98e556c2-b933-484b-9d00-54f72c66bfb4","isHook":false,"skipped":true},{"title":"fails on not existing token","fullTitle":"Negative Integration Test setVariableMetaData fails on not existing token","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const nonExistingTokenId = validTokenId + 1;\nawait helpers_1.setVariableMetaDataExpectFailure(alice, validCollectionId, nonExistingTokenId, data);","err":{},"uuid":"00979659-a78e-45e7-a73d-18cb03a61c77","isHook":false,"skipped":true},{"title":"fails on too long data","fullTitle":"Negative Integration Test setVariableMetaData fails on too long data","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const tooLongData = new Array(4097).fill(0xff);\nawait helpers_1.setVariableMetaDataExpectFailure(alice, validCollectionId, validTokenId, tooLongData);","err":{},"uuid":"30efa555-6e64-4176-b43c-59aca9e238cf","isHook":false,"skipped":true},{"title":"fails on fungible token","fullTitle":"Negative Integration Test setVariableMetaData fails on fungible token","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst fungibleTokenId = await helpers_1.createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.setVariableMetaDataExpectFailure(alice, fungibleCollectionId, fungibleTokenId, data);","err":{},"uuid":"9487f809-f766-46d8-810c-db65c513e39d","isHook":false,"skipped":true},{"title":"fails on bad sender","fullTitle":"Negative Integration Test setVariableMetaData fails on bad sender","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await helpers_1.setVariableMetaDataExpectFailure(bob, validCollectionId, validTokenId, data);","err":{},"uuid":"303cec06-511c-4cb9-82d5-f8d2a651a289","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["1520d86b-d0f4-4a03-93a4-c4d141613a26","44afa873-e07e-407c-bf4b-b79bb327ba52","98e556c2-b933-484b-9d00-54f72c66bfb4","00979659-a78e-45e7-a73d-18cb03a61c77","30efa555-6e64-4176-b43c-59aca9e238cf","9487f809-f766-46d8-810c-db65c513e39d","303cec06-511c-4cb9-82d5-f8d2a651a289"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"1a362ae9-3751-4449-8623-b41905efddb4","title":"Integration Test setVariableMetadataSponsoringRateLimit","fullFile":"/nft_parachain/tests/src/setVariableMetadataSponsoringRateLimit.test.ts","file":"/src/setVariableMetadataSponsoringRateLimit.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test setVariableMetadataSponsoringRateLimit \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n alice = privateKey_1.default('//Alice');\n userWithNoBalance = await helpers_1.findUnusedAddress(api);\n});","err":{},"uuid":"b007713b-7a18-47e7-b3a0-93019aa5eac5","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"sponsored setVariableMetaData can be called twice with pause for free","fullTitle":"Integration Test setVariableMetadataSponsoringRateLimit sponsored setVariableMetaData can be called twice with pause for free","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, alice.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId);\nawait helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, {\n SponsoredDataRateLimit: 0,\n});\nconst itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);\nawait helpers_1.setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);\nawait helpers_1.setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);","err":{},"uuid":"a9c7a852-b054-41d0-9b46-81c6230b994e","isHook":false,"skipped":true},{"title":"sponsored setVariableMetaData can't be called twice without pause for free","fullTitle":"Integration Test setVariableMetadataSponsoringRateLimit sponsored setVariableMetaData can't be called twice without pause for free","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, alice.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId);\nawait helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, {\n SponsoredDataRateLimit: 10,\n});\nconst itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);\nawait helpers_1.setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);\nawait helpers_1.setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1, 2, 3]);","err":{},"uuid":"f044ca9e-d444-4740-b72d-1be45413342f","isHook":false,"skipped":true},{"title":"sponsored setVariableMetaData can't be called for free with variable metadata above collection limits","fullTitle":"Integration Test setVariableMetadataSponsoringRateLimit sponsored setVariableMetaData can't be called for free with variable metadata above collection limits","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, alice.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId);\nawait helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, {\n SponsoredDataRateLimit: 0,\n SponsoredDataSize: 1,\n});\nconst itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);\nawait helpers_1.setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1]);\nawait helpers_1.setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1, 2]);","err":{},"uuid":"8441ac2e-8b88-415d-8be9-2064b1c0e265","isHook":false,"skipped":true},{"title":"Default value of rate limit does not sponsor setting variable metadata","fullTitle":"Integration Test setVariableMetadataSponsoringRateLimit Default value of rate limit does not sponsor setting variable metadata","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, alice.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId);\nconst itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);\nawait helpers_1.setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1]);","err":{},"uuid":"5af868e4-77c9-4ddf-8715-0f4d88aa7632","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["a9c7a852-b054-41d0-9b46-81c6230b994e","f044ca9e-d444-4740-b72d-1be45413342f","8441ac2e-8b88-415d-8be9-2064b1c0e265","5af868e4-77c9-4ddf-8715-0f4d88aa7632"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"18086b2e-2832-425b-9558-bc1e65fafd91","title":"Integration Test ext. setVariableOnChainSchema()","fullFile":"/nft_parachain/tests/src/setVariableOnChainSchema.test.ts","file":"/src/setVariableOnChainSchema.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Run extrinsic with parameters of the collection id, set the scheme","fullTitle":"Integration Test ext. setVariableOnChainSchema() Run extrinsic with parameters of the collection id, set the scheme","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.eq(Alice.address);\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await substrate_api_1.submitTransactionAsync(Alice, setSchema);\n});","err":{},"uuid":"3e84ac33-edf8-463b-a798-9bd566c1923a","isHook":false,"skipped":true},{"title":"Checking collection data using the setVariableOnChainSchema parameter","fullTitle":"Integration Test ext. setVariableOnChainSchema() Checking collection data using the setVariableOnChainSchema parameter","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await substrate_api_1.submitTransactionAsync(Alice, setSchema);\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.VariableOnChainSchema.toString()).to.be.eq(Schema);\n});","err":{},"uuid":"dcff870a-5f53-4ad5-8be3-00122f9d3f97","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["3e84ac33-edf8-463b-a798-9bd566c1923a","dcff870a-5f53-4ad5-8be3-00122f9d3f97"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"5758eb2f-a731-428e-b6df-220ca5552865","title":"Integration Test ext. collection admin setVariableOnChainSchema()","fullFile":"/nft_parachain/tests/src/setVariableOnChainSchema.test.ts","file":"/src/setVariableOnChainSchema.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Run extrinsic with parameters of the collection id, set the scheme","fullTitle":"Integration Test ext. collection admin setVariableOnChainSchema() Run extrinsic with parameters of the collection id, set the scheme","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.eq(Alice.address);\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await substrate_api_1.submitTransactionAsync(Bob, setSchema);\n});","err":{},"uuid":"c72d5119-bb01-455c-8ec7-9cbc3f68acf9","isHook":false,"skipped":true},{"title":"Checking collection data using the setVariableOnChainSchema parameter","fullTitle":"Integration Test ext. collection admin setVariableOnChainSchema() Checking collection data using the setVariableOnChainSchema parameter","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await substrate_api_1.submitTransactionAsync(Bob, setSchema);\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.VariableOnChainSchema.toString()).to.be.eq(Schema);\n});","err":{},"uuid":"ab94900d-3da5-4bf8-96b9-f765ea577a32","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["c72d5119-bb01-455c-8ec7-9cbc3f68acf9","ab94900d-3da5-4bf8-96b9-f765ea577a32"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"159c6c9c-e143-4ec8-b00c-9a6065bb7444","title":"Negative Integration Test ext. setVariableOnChainSchema()","fullFile":"/nft_parachain/tests/src/setVariableOnChainSchema.test.ts","file":"/src/setVariableOnChainSchema.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Set a non-existent collection","fullTitle":"Negative Integration Test ext. setVariableOnChainSchema() Set a non-existent collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: radix\n const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected;\n});","err":{},"uuid":"bc86c05c-a512-4230-9b61-d1f6c76a4501","isHook":false,"skipped":true},{"title":"Set a previously deleted collection","fullTitle":"Negative Integration Test ext. setVariableOnChainSchema() Set a previously deleted collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected;\n});","err":{},"uuid":"f082d5ab-8d6f-43cd-a23d-f89109a56116","isHook":false,"skipped":true},{"title":"Set invalid data in schema (size too large:> 1024b)","fullTitle":"Negative Integration Test ext. setVariableOnChainSchema() Set invalid data in schema (size too large:> 1024b)","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, largeSchema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected;\n});","err":{},"uuid":"8cc68f97-6041-4842-b0fd-04dad9d20a74","isHook":false,"skipped":true},{"title":"Execute method not on behalf of the collection owner","fullTitle":"Negative Integration Test ext. setVariableOnChainSchema() Execute method not on behalf of the collection owner","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.eq(Alice.address);\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Bob, setSchema)).to.be.rejected;\n});","err":{},"uuid":"721fe6f1-7388-4602-b44f-b306e4a80dc9","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["bc86c05c-a512-4230-9b61-d1f6c76a4501","f082d5ab-8d6f-43cd-a23d-f89109a56116","8cc68f97-6041-4842-b0fd-04dad9d20a74","721fe6f1-7388-4602-b44f-b306e4a80dc9"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"5a1340ed-9a0e-4ec0-af62-ee259c4f8d77","title":"Integration Test toggleContractWhiteList","fullFile":"/nft_parachain/tests/src/toggleContractWhiteList.test.ts","file":"/src/toggleContractWhiteList.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Enable white list contract mode","fullTitle":"Integration Test toggleContractWhiteList Enable white list contract mode","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"3b1ce9c7-2447-420c-b474-ac3ca85fc507","isHook":false,"skipped":false},{"title":"Only whitelisted account can call contract","fullTitle":"Integration Test toggleContractWhiteList Only whitelisted account can call contract","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"4b092e32-c2e5-4bc7-81d9-8efadf917431","isHook":false,"skipped":false},{"title":"Enabling white list repeatedly should not produce errors","fullTitle":"Integration Test toggleContractWhiteList Enabling white list repeatedly should not produce errors","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"30f63030-adec-4500-b814-5da7eacddec7","isHook":false,"skipped":false}],"suites":[],"passes":[],"failures":[],"pending":["3b1ce9c7-2447-420c-b474-ac3ca85fc507","4b092e32-c2e5-4bc7-81d9-8efadf917431","30f63030-adec-4500-b814-5da7eacddec7"],"skipped":[],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"3f130c5f-721a-473d-b977-74ca9fdab991","title":"Negative Integration Test toggleContractWhiteList","fullFile":"/nft_parachain/tests/src/toggleContractWhiteList.test.ts","file":"/src/toggleContractWhiteList.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Enable white list for a non-contract","fullTitle":"Negative Integration Test toggleContractWhiteList Enable white list for a non-contract","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"dda7fd05-b1e8-4974-a8df-a32680f561ac","isHook":false,"skipped":false},{"title":"Enable white list using a non-owner address","fullTitle":"Negative Integration Test toggleContractWhiteList Enable white list using a non-owner address","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":true,"code":"","err":{},"uuid":"cf1a94b5-348b-4963-9504-b79dbdc57f5b","isHook":false,"skipped":false}],"suites":[],"passes":[],"failures":[],"pending":["dda7fd05-b1e8-4974-a8df-a32680f561ac","cf1a94b5-348b-4963-9504-b79dbdc57f5b"],"skipped":[],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"9c8d5c0f-ed60-46ea-8dc8-d02454d960a4","title":"Integration Test Transfer(recipient, collection_id, item_id, value)","fullFile":"/nft_parachain/tests/src/transfer.test.ts","file":"/src/transfer.test.ts","beforeHooks":[],"afterHooks":[],"tests":[{"title":"Balance transfers and check balance","fullTitle":"Integration Test Transfer(recipient, collection_id, item_id, value) Balance transfers and check balance","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n const [alicesBalanceBefore, bobsBalanceBefore] = await get_balance_1.default(api, [accounts_1.alicesPublicKey, accounts_1.bobsPublicKey]);\n const alicePrivateKey = privateKey_1.default('//Alice');\n const transfer = api.tx.balances.transfer(accounts_1.bobsPublicKey, 1n);\n const events = await substrate_api_1.submitTransactionAsync(alicePrivateKey, transfer);\n const result = helpers_1.getCreateItemResult(events);\n // tslint:disable-next-line:no-unused-expression\n chai_1.expect(result.success).to.be.true;\n const [alicesBalanceAfter, bobsBalanceAfter] = await get_balance_1.default(api, [accounts_1.alicesPublicKey, accounts_1.bobsPublicKey]);\n // tslint:disable-next-line:no-unused-expression\n chai_1.expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n chai_1.expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;\n});","err":{},"uuid":"ff5f089a-e6f0-4da1-9411-b0d0808e8007","isHook":false,"skipped":true},{"title":"Inability to pay fees error message is correct","fullTitle":"Integration Test Transfer(recipient, collection_id, item_id, value) Inability to pay fees error message is correct","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // Find unused address\n const pk = await helpers_1.findUnusedAddress(api);\n const badTransfer = api.tx.balances.transfer(accounts_1.bobsPublicKey, 1n);\n // const events = await submitTransactionAsync(pk, badTransfer);\n const badTransaction = async () => {\n const events = await substrate_api_1.submitTransactionAsync(pk, badTransfer);\n const result = helpers_1.getCreateCollectionResult(events);\n // tslint:disable-next-line:no-unused-expression\n chai_1.expect(result.success).to.be.false;\n };\n chai_1.expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees , e.g. account balance too low');\n});","err":{},"uuid":"c05ffbdf-f157-4424-8a79-abaf1629a4b9","isHook":false,"skipped":true},{"title":"User can transfer owned token","fullTitle":"Integration Test Transfer(recipient, collection_id, item_id, value) User can transfer owned token","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n await helpers_1.transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');\n // reFungible\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n await helpers_1.transferExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 100, 'ReFungible');\n});","err":{},"uuid":"fe4480f5-d2ee-460a-a77f-d93a648df0a7","isHook":false,"skipped":true},{"title":"Collection admin can transfer owned token","fullTitle":"Integration Test Transfer(recipient, collection_id, item_id, value) Collection admin can transfer owned token","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Bob, nftCollectionId, 'NFT', Bob.address);\n await helpers_1.transferExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, 1, 'NFT');\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n await helpers_1.addCollectionAdminExpectSuccess(Alice, fungibleCollectionId, Bob);\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible', Bob.address);\n await helpers_1.transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Bob, Alice, 1, 'Fungible');\n // reFungible\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n await helpers_1.addCollectionAdminExpectSuccess(Alice, reFungibleCollectionId, Bob);\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Bob, reFungibleCollectionId, 'ReFungible', Bob.address);\n await helpers_1.transferExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, 100, 'ReFungible');\n});","err":{},"uuid":"fd485e0b-791b-41be-b8f6-67d6d90a2832","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["ff5f089a-e6f0-4da1-9411-b0d0808e8007","c05ffbdf-f157-4424-8a79-abaf1629a4b9","fe4480f5-d2ee-460a-a77f-d93a648df0a7","fd485e0b-791b-41be-b8f6-67d6d90a2832"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"6a098daf-9cfd-4d12-a0d0-dce0047c4b5a","title":"Negative Integration Test Transfer(recipient, collection_id, item_id, value)","fullFile":"/nft_parachain/tests/src/transfer.test.ts","file":"/src/transfer.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Negative Integration Test Transfer(recipient, collection_id, item_id, value) \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});","err":{},"uuid":"f1154bc2-86d1-41f5-a635-80a9ea654c9c","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Transfer with not existed collection_id","fullTitle":"Negative Integration Test Transfer(recipient, collection_id, item_id, value) Transfer with not existed collection_id","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // nft\n const nftCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.transferExpectFailure(nftCollectionCount + 1, 1, Alice, Bob, 1);\n // fungible\n const fungibleCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.transferExpectFailure(fungibleCollectionCount + 1, 1, Alice, Bob, 1);\n // reFungible\n const reFungibleCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.transferExpectFailure(reFungibleCollectionCount + 1, 1, Alice, Bob, 1);\n});","err":{},"uuid":"c33a248a-96db-4899-a133-4b0b38537e2f","isHook":false,"skipped":true},{"title":"Transfer with deleted collection_id","fullTitle":"Negative Integration Test Transfer(recipient, collection_id, item_id, value) Transfer with deleted collection_id","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"// nft\nconst nftCollectionId = await helpers_1.createCollectionExpectSuccess();\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.destroyCollectionExpectSuccess(nftCollectionId);\nawait helpers_1.transferExpectFailure(nftCollectionId, newNftTokenId, Alice, Bob, 1);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.destroyCollectionExpectSuccess(fungibleCollectionId);\nawait helpers_1.transferExpectFailure(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\nawait helpers_1.destroyCollectionExpectSuccess(reFungibleCollectionId);\nawait helpers_1.transferExpectFailure(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);","err":{},"uuid":"287947b2-8b40-4497-a405-e5912ca3021c","isHook":false,"skipped":true},{"title":"Transfer with not existed item_id","fullTitle":"Negative Integration Test Transfer(recipient, collection_id, item_id, value) Transfer with not existed item_id","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"// nft\nconst nftCollectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.transferExpectFailure(nftCollectionId, 2, Alice, Bob, 1);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.transferExpectFailure(fungibleCollectionId, 2, Alice, Bob, 1);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.transferExpectFailure(reFungibleCollectionId, 2, Alice, Bob, 1);","err":{},"uuid":"29c0307e-a6ae-4634-9f53-df09beed96ea","isHook":false,"skipped":true},{"title":"Transfer with deleted item_id","fullTitle":"Negative Integration Test Transfer(recipient, collection_id, item_id, value) Transfer with deleted item_id","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"// nft\nconst nftCollectionId = await helpers_1.createCollectionExpectSuccess();\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);\nawait helpers_1.transferExpectFailure(nftCollectionId, newNftTokenId, Alice, Bob, 1);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.burnItemExpectSuccess(Alice, fungibleCollectionId, newFungibleTokenId, 10);\nawait helpers_1.transferExpectFailure(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\nawait helpers_1.burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);\nawait helpers_1.transferExpectFailure(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);","err":{},"uuid":"1cf9d8b1-7447-465a-9660-fd7c2ed5bf99","isHook":false,"skipped":true},{"title":"Transfer with recipient that is not owner","fullTitle":"Negative Integration Test Transfer(recipient, collection_id, item_id, value) Transfer with recipient that is not owner","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"// nft\nconst nftCollectionId = await helpers_1.createCollectionExpectSuccess();\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.transferExpectFailure(nftCollectionId, newNftTokenId, Charlie, Bob, 1);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.transferExpectFailure(fungibleCollectionId, newFungibleTokenId, Charlie, Bob, 1);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\nawait helpers_1.transferExpectFailure(reFungibleCollectionId, newReFungibleTokenId, Charlie, Bob, 1);","err":{},"uuid":"0e1fedb7-69b8-4481-b42b-8cc79765c4c2","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["c33a248a-96db-4899-a133-4b0b38537e2f","287947b2-8b40-4497-a405-e5912ca3021c","29c0307e-a6ae-4634-9f53-df09beed96ea","1cf9d8b1-7447-465a-9660-fd7c2ed5bf99","0e1fedb7-69b8-4481-b42b-8cc79765c4c2"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"0410e3f4-f36a-43d0-8d60-8b2e0be7c8d1","title":"Integration Test transferFrom(from, recipient, collection_id, item_id, value):","fullFile":"/nft_parachain/tests/src/transferFrom.test.ts","file":"/src/transferFrom.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Integration Test transferFrom(from, recipient, collection_id, item_id, value): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});","err":{},"uuid":"a7536c7c-5474-4888-afc7-521bef185f82","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"Execute the extrinsic and check nftItemList - owner of token","fullTitle":"Integration Test transferFrom(from, recipient, collection_id, item_id, value): Execute the extrinsic and check nftItemList - owner of token","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);\n await helpers_1.transferFromExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1, 'NFT');\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n await helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);\n await helpers_1.transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1, 'Fungible');\n // reFungible\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n await helpers_1.approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 100);\n await helpers_1.transferFromExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 100, 'ReFungible');\n});","err":{},"uuid":"404522b7-6b2c-4cab-a92f-51701c8d5e56","isHook":false,"skipped":true},{"title":"Should reduce allowance if value is big","fullTitle":"Integration Test transferFrom(from, recipient, collection_id, item_id, value): Should reduce allowance if value is big","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const charlie = privateKey_1.default('//Charlie');\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: 500000n });\n await helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob, 500000n);\n await helpers_1.transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 500000n, 'Fungible');\n expect((await helpers_1.getAllowance(fungibleCollectionId, newFungibleTokenId, alice.address, bob.address)).toString()).to.equal('0');\n});","err":{},"uuid":"67cc81b1-6b4d-4368-a5a8-4f53f3ed0401","isHook":false,"skipped":true},{"title":"can be called by collection owner on non-owned item when OwnerCanTransfer == true","fullTitle":"Integration Test transferFrom(from, recipient, collection_id, item_id, value): can be called by collection owner on non-owned item when OwnerCanTransfer == true","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nconst itemId = await helpers_1.createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);\nawait helpers_1.transferFromExpectSuccess(collectionId, itemId, Alice, Bob, Charlie);","err":{},"uuid":"f796b3fb-c283-49e4-af9d-a0d155adb5b9","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["404522b7-6b2c-4cab-a92f-51701c8d5e56","67cc81b1-6b4d-4368-a5a8-4f53f3ed0401","f796b3fb-c283-49e4-af9d-a0d155adb5b9"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999},{"uuid":"da6c9c5d-e934-43c6-b4f5-d81ee5822d3d","title":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value):","fullFile":"/nft_parachain/tests/src/transferFrom.test.ts","file":"/src/transferFrom.test.ts","beforeHooks":[{"title":"\"before all\" hook","fullTitle":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): \"before all\" hook","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});","err":{},"uuid":"16c7cbf7-e6c2-4528-9716-20bce579c2c0","isHook":true,"skipped":false}],"afterHooks":[],"tests":[{"title":"transferFrom for a collection that does not exist","fullTitle":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom for a collection that does not exist","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async (api) => {\n // nft\n const nftCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.approveExpectFail(nftCollectionCount + 1, 1, Alice, Bob);\n await helpers_1.transferFromExpectFail(nftCollectionCount + 1, 1, Bob, Alice, Charlie, 1);\n // fungible\n const fungibleCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.approveExpectFail(fungibleCollectionCount + 1, 1, Alice, Bob);\n await helpers_1.transferFromExpectFail(fungibleCollectionCount + 1, 1, Bob, Alice, Charlie, 1);\n // reFungible\n const reFungibleCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.approveExpectFail(reFungibleCollectionCount + 1, 1, Alice, Bob);\n await helpers_1.transferFromExpectFail(reFungibleCollectionCount + 1, 1, Bob, Alice, Charlie, 1);\n});","err":{},"uuid":"a5d44056-808b-4e47-ade8-bd1895df0d4a","isHook":false,"skipped":true},{"title":"transferFrom for not approved address","fullTitle":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom for not approved address","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1);\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n await helpers_1.transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);\n // reFungible\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n await helpers_1.transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);\n});","err":{},"uuid":"4b7c8080-6427-4e7e-afa5-0bf79d02c87b","isHook":false,"skipped":true},{"title":"transferFrom incorrect token count","fullTitle":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom incorrect token count","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);\n await helpers_1.transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 2);\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n await helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);\n await helpers_1.transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 2);\n // reFungible\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n await helpers_1.approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);\n await helpers_1.transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 2);\n});","err":{},"uuid":"ec426f3f-098a-4625-81db-114d31d1a074","isHook":false,"skipped":true},{"title":"execute transferFrom from account that is not owner of collection","fullTitle":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): execute transferFrom from account that is not owner of collection","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const Dave = privateKey_1.default('//Dave');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n try {\n await helpers_1.approveExpectFail(nftCollectionId, newNftTokenId, Dave, Bob);\n await helpers_1.transferFromExpectFail(nftCollectionId, newNftTokenId, Dave, Alice, Charlie, 1);\n }\n catch (e) {\n // tslint:disable-next-line:no-unused-expression\n expect(e).to.be.exist;\n }\n // await transferFromExpectFail(nftCollectionId, newNftTokenId, Dave, Alice, Charlie, 1);\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n try {\n await helpers_1.approveExpectFail(fungibleCollectionId, newFungibleTokenId, Dave, Bob);\n await helpers_1.transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Dave, Alice, Charlie, 1);\n }\n catch (e) {\n // tslint:disable-next-line:no-unused-expression\n expect(e).to.be.exist;\n }\n // reFungible\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n try {\n await helpers_1.approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Dave, Bob);\n await helpers_1.transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Dave, Alice, Charlie, 1);\n }\n catch (e) {\n // tslint:disable-next-line:no-unused-expression\n expect(e).to.be.exist;\n }\n});","err":{},"uuid":"3f42770c-0612-4bda-9549-e6fd8f5ddc02","isHook":false,"skipped":true},{"title":"transferFrom burnt token before approve NFT","fullTitle":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom burnt token before approve NFT","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);\n await helpers_1.approveExpectFail(nftCollectionId, newNftTokenId, Alice, Bob);\n await helpers_1.transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1);\n});","err":{},"uuid":"f2ba3a52-2534-41d8-9030-8cb7882140ef","isHook":false,"skipped":true},{"title":"transferFrom burnt token before approve Fungible","fullTitle":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom burnt token before approve Fungible","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n await helpers_1.burnItemExpectSuccess(Alice, fungibleCollectionId, 1, 10);\n await helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);\n await helpers_1.transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);\n});","err":{},"uuid":"d50d2028-3c93-4588-a866-c4f15bddb4ca","isHook":false,"skipped":true},{"title":"transferFrom burnt token before approve ReFungible","fullTitle":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom burnt token before approve ReFungible","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n await helpers_1.burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);\n await helpers_1.approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);\n await helpers_1.transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);\n});","err":{},"uuid":"1b9fb2ec-9327-436e-b5aa-2331c5e7af30","isHook":false,"skipped":true},{"title":"transferFrom burnt token after approve NFT","fullTitle":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom burnt token after approve NFT","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);\n await helpers_1.burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);\n await helpers_1.transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1);\n});","err":{},"uuid":"7321a1d8-58d6-40f8-a8f6-64a521b2b004","isHook":false,"skipped":true},{"title":"transferFrom burnt token after approve Fungible","fullTitle":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom burnt token after approve Fungible","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n await helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);\n await helpers_1.burnItemExpectSuccess(Alice, fungibleCollectionId, 1, 10);\n await helpers_1.transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);\n});","err":{},"uuid":"9e0127f4-4609-415d-8aed-07f00745e523","isHook":false,"skipped":true},{"title":"transferFrom burnt token after approve ReFungible","fullTitle":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom burnt token after approve ReFungible","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"await substrate_api_1.default(async () => {\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n await helpers_1.approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);\n await helpers_1.burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);\n await helpers_1.transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);\n});","err":{},"uuid":"245c015f-866e-4a94-947f-24831361053c","isHook":false,"skipped":true},{"title":"fails when called by collection owner on non-owned item when OwnerCanTransfer == false","fullTitle":"Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): fails when called by collection owner on non-owned item when OwnerCanTransfer == false","timedOut":false,"duration":0,"pass":false,"fail":false,"pending":false,"code":"const collectionId = await helpers_1.createCollectionExpectSuccess();\nconst itemId = await helpers_1.createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);\nawait helpers_1.setCollectionLimitsExpectSuccess(Alice, collectionId, { OwnerCanTransfer: false });\nawait helpers_1.transferFromExpectFail(collectionId, itemId, Alice, Bob, Charlie);","err":{},"uuid":"1ce5816b-f248-446a-80e8-a5cf15efd54f","isHook":false,"skipped":true}],"suites":[],"passes":[],"failures":[],"pending":[],"skipped":["a5d44056-808b-4e47-ade8-bd1895df0d4a","4b7c8080-6427-4e7e-afa5-0bf79d02c87b","ec426f3f-098a-4625-81db-114d31d1a074","3f42770c-0612-4bda-9549-e6fd8f5ddc02","f2ba3a52-2534-41d8-9030-8cb7882140ef","d50d2028-3c93-4588-a866-c4f15bddb4ca","1b9fb2ec-9327-436e-b5aa-2331c5e7af30","7321a1d8-58d6-40f8-a8f6-64a521b2b004","9e0127f4-4609-415d-8aed-07f00745e523","245c015f-866e-4a94-947f-24831361053c","1ce5816b-f248-446a-80e8-a5cf15efd54f"],"duration":0,"root":false,"rootEmpty":false,"_timeout":9999999}],"passes":[],"failures":[],"pending":[],"skipped":[],"duration":0,"root":true,"rootEmpty":true,"_timeout":9999999}],"meta":{"mocha":{"version":"8.4.0"},"mochawesome":{"options":{"quiet":false,"reportFilename":"mochawesome","saveHtml":true,"saveJson":true,"consoleReporter":"spec","useInlineDiffs":false,"code":true},"version":"6.2.2"},"marge":{"version":"5.2.0"}}}" data-config="{"reportFilename":"mochawesome","reportDir":"mochawesome-report","reportTitle":"tests","reportPageTitle":"Mochawesome Report","inline":false,"inlineAssets":false,"cdn":false,"charts":false,"enableCharts":false,"code":true,"enableCode":true,"autoOpen":false,"overwrite":true,"timestamp":false,"ts":false,"showPassed":true,"showFailed":true,"showPending":true,"showSkipped":false,"showHooks":"failed","saveJson":true,"saveHtml":true,"dev":false,"assetsDir":"mochawesome-report/assets","jsonFile":"/nft_parachain/tests/mochawesome-report/mochawesome.json","htmlFile":"/nft_parachain/tests/mochawesome-report/mochawesome.html"}"><div id="report"></div><script src="assets/app.js"></script></body></html>
\ No newline at end of file
mochawesome-report/mochawesome.jsondiffbeforeafterboth--- a/mochawesome-report/mochawesome.json
+++ /dev/null
@@ -1,10588 +0,0 @@
-{
- "stats": {
- "suites": 0,
- "tests": 0,
- "passes": 0,
- "pending": 0,
- "failures": 0,
- "start": "2021-09-08T12:24:24.749Z",
- "end": "2021-09-08T12:24:24.775Z",
- "duration": 26,
- "testsRegistered": 363,
- "passPercent": 0,
- "pendingPercent": 0,
- "other": 1,
- "hasOther": true,
- "skipped": 363,
- "hasSkipped": true
- },
- "results": [
- {
- "uuid": "60720f68-c599-4517-bbe5-4c355843c456",
- "title": "",
- "fullFile": "",
- "file": "",
- "beforeHooks": [
- {
- "title": "\"before all\" hook in \"{root}\"",
- "fullTitle": "\"before all\" hook in \"{root}\"",
- "timedOut": false,
- "duration": 20,
- "state": "failed",
- "speed": null,
- "pass": false,
- "fail": true,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Ferdie = privateKey_1.default('//Ferdie');\n});",
- "err": {
- "message": "Error: the object {\n \"_yaeti\": true\n \"cancelable\": true\n \"isTrusted\": false\n \"stopImmediatePropagation\": [Function]\n \"target\": {\n \"_binaryType\": \"arraybuffer\"\n \"_bufferedAmount\": 0\n \"_client\": {\n \"_events\": {}\n \"_eventsCount\": 0\n \"_maxListeners\": [undefined]\n \"_req\": [null]\n \"base64nonce\": \"2bcUD3AqQVk1QNSE5Wi2wA==\"\n \"config\": {\n \"assembleFragments\": true\n \"closeTimeout\": 5000\n \"disableNagleAlgorithm\": true\n \"fragmentOutgoingMessages\": true\n \"fragmentationThreshold\": 262144\n \"maxReceivedFrameSize\": 1048576\n \"maxReceivedMessageSize\": 16777216\n \"tlsOptions\": {}\n \"webSocketVersion\": 13\n }\n \"origin\": [undefined]\n \"protocols\": []\n \"secure\": false\n \"url\": {\n \"auth\": [null]\n \"hash\": [null]\n \"host\": \"172.17.0.1:9944\"\n \"hostname\": \"172.17.0.1\"\n \"href\": \"ws://172.17.0.1:9944/\"\n \"path\": \"/\"\n \"pathname\": \"/\"\n \"port\": \"9944\"\n \"protocol\": \"ws:\"\n \"query\": [null]\n \"search\": [null]\n \"slashes\": true\n }\n }\n \"_connection\": [undefined]\n \"_extensions\": \"\"\n \"_listeners\": {}\n \"_protocol\": [undefined]\n \"_readyState\": 3\n \"_url\": \"ws://172.17.0.1:9944\"\n \"addEventListener\": [Function]\n \"dispatchEvent\": [Function]\n \"onclose\": [null]\n \"onerror\": [null]\n \"onmessage\": [null]\n \"onopen\": [null]\n \"removeEventListener\": [Function]\n }\n \"type\": \"error\"\n} was thrown, throw an Error :)",
- "estack": "Error: the object {\n \"_yaeti\": true\n \"cancelable\": true\n \"isTrusted\": false\n \"stopImmediatePropagation\": [Function]\n \"target\": {\n \"_binaryType\": \"arraybuffer\"\n \"_bufferedAmount\": 0\n \"_client\": {\n \"_events\": {}\n \"_eventsCount\": 0\n \"_maxListeners\": [undefined]\n \"_req\": [null]\n \"base64nonce\": \"2bcUD3AqQVk1QNSE5Wi2wA==\"\n \"config\": {\n \"assembleFragments\": true\n \"closeTimeout\": 5000\n \"disableNagleAlgorithm\": true\n \"fragmentOutgoingMessages\": true\n \"fragmentationThreshold\": 262144\n \"maxReceivedFrameSize\": 1048576\n \"maxReceivedMessageSize\": 16777216\n \"tlsOptions\": {}\n \"webSocketVersion\": 13\n }\n \"origin\": [undefined]\n \"protocols\": []\n \"secure\": false\n \"url\": {\n \"auth\": [null]\n \"hash\": [null]\n \"host\": \"172.17.0.1:9944\"\n \"hostname\": \"172.17.0.1\"\n \"href\": \"ws://172.17.0.1:9944/\"\n \"path\": \"/\"\n \"pathname\": \"/\"\n \"port\": \"9944\"\n \"protocol\": \"ws:\"\n \"query\": [null]\n \"search\": [null]\n \"slashes\": true\n }\n }\n \"_connection\": [undefined]\n \"_extensions\": \"\"\n \"_listeners\": {}\n \"_protocol\": [undefined]\n \"_readyState\": 3\n \"_url\": \"ws://172.17.0.1:9944\"\n \"addEventListener\": [Function]\n \"dispatchEvent\": [Function]\n \"onclose\": [null]\n \"onerror\": [null]\n \"onmessage\": [null]\n \"onopen\": [null]\n \"removeEventListener\": [Function]\n }\n \"type\": \"error\"\n} was thrown, throw an Error :)\n at processTicksAndRejections (node:internal/process/task_queues:93:5)",
- "diff": null
- },
- "uuid": "b2e6905c-e4c6-43b5-bac0-0a3077c70441",
- "parentUUID": "60720f68-c599-4517-bbe5-4c355843c456",
- "isHook": true,
- "skipped": false
- },
- {
- "title": "\"before all\" hook",
- "fullTitle": "\"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Ferdie = privateKey_1.default('//Ferdie');\n Charlie = privateKey_1.default('//Charlie');\n Eve = privateKey_1.default('//Eve');\n Dave = privateKey_1.default('//Dave');\n});",
- "err": {},
- "uuid": "b9b32b58-7e22-4714-b108-5c9eda9fe598",
- "parentUUID": "60720f68-c599-4517-bbe5-4c355843c456",
- "isHook": true,
- "skipped": false
- },
- {
- "title": "\"before all\" hook",
- "fullTitle": "\"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "45d28530-d27d-4d82-9838-6541e2460bd6",
- "parentUUID": "60720f68-c599-4517-bbe5-4c355843c456",
- "isHook": true,
- "skipped": false
- },
- {
- "title": "\"before all\" hook",
- "fullTitle": "\"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Ferdie = privateKey_1.default('//Ferdie');\n});",
- "err": {},
- "uuid": "cb1fabc7-5c76-4e92-be50-fcfe5b7a6e64",
- "parentUUID": "60720f68-c599-4517-bbe5-4c355843c456",
- "isHook": true,
- "skipped": false
- },
- {
- "title": "\"before all\" hook",
- "fullTitle": "\"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "3beb3f40-7ee3-4eae-985d-723c8158894d",
- "parentUUID": "60720f68-c599-4517-bbe5-4c355843c456",
- "isHook": true,
- "skipped": false
- },
- {
- "title": "\"before all\" hook",
- "fullTitle": "\"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Ferdie = privateKey_1.default('//Ferdie');\n});",
- "err": {},
- "uuid": "d6d32986-311a-42b1-afac-ae35b5465fad",
- "parentUUID": "60720f68-c599-4517-bbe5-4c355843c456",
- "isHook": true,
- "skipped": false
- },
- {
- "title": "\"before all\" hook",
- "fullTitle": "\"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Ferdie = privateKey_1.default('//Ferdie');\n});",
- "err": {},
- "uuid": "4d02f57a-8afc-4038-9dc1-6181713627f7",
- "parentUUID": "60720f68-c599-4517-bbe5-4c355843c456",
- "isHook": true,
- "skipped": false
- },
- {
- "title": "\"before all\" hook",
- "fullTitle": "\"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "9414213c-23c1-420c-8b83-4e740c4cdd51",
- "parentUUID": "60720f68-c599-4517-bbe5-4c355843c456",
- "isHook": true,
- "skipped": false
- },
- {
- "title": "\"before all\" hook",
- "fullTitle": "\"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Ferdie = privateKey_1.default('//Ferdie');\n});",
- "err": {},
- "uuid": "7e618a73-068f-4b94-882b-149c20ddd16d",
- "parentUUID": "60720f68-c599-4517-bbe5-4c355843c456",
- "isHook": true,
- "skipped": false
- },
- {
- "title": "\"before all\" hook",
- "fullTitle": "\"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Ferdie = privateKey_1.default('//Ferdie');\n});",
- "err": {},
- "uuid": "32e886fe-0986-4853-865d-a17bf7becede",
- "parentUUID": "60720f68-c599-4517-bbe5-4c355843c456",
- "isHook": true,
- "skipped": false
- },
- {
- "title": "\"before all\" hook",
- "fullTitle": "\"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n Alice = keyring.addFromUri('//Alice');\n Bob = keyring.addFromUri('//Bob');\n Shema = '0x31';\n largeShema = new Array(4097).fill(0xff);\n});",
- "err": {},
- "uuid": "3f8d4bc9-df4d-4a56-ab5d-00eb990f88c8",
- "parentUUID": "60720f68-c599-4517-bbe5-4c355843c456",
- "isHook": true,
- "skipped": false
- },
- {
- "title": "\"before all\" hook",
- "fullTitle": "\"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n Alice = keyring.addFromUri('//Alice');\n Bob = keyring.addFromUri('//Bob');\n Schema = '0x31';\n largeSchema = new Array(4097).fill(0xff);\n});",
- "err": {},
- "uuid": "bda5978b-aea2-4c9d-8db9-010d66209065",
- "parentUUID": "60720f68-c599-4517-bbe5-4c355843c456",
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [],
- "suites": [
- {
- "uuid": "883d1f24-daf5-4795-b324-5ac4e4aba2fd",
- "title": "Integration Test addCollectionAdmin(collection_id, new_admin_id):",
- "fullFile": "/nft_parachain/tests/src/addCollectionAdmin.test.ts",
- "file": "/src/addCollectionAdmin.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Add collection admin.",
- "fullTitle": "Integration Test addCollectionAdmin(collection_id, new_admin_id): Add collection admin.",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.equal(alice.address);\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(bob.address));\n await substrate_api_1.submitTransactionAsync(alice, changeAdminTx);\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListAfterAddAdmin).to.be.contains(helpers_1.normalizeAccountId(bob.address));\n});",
- "err": {},
- "uuid": "ae13d452-a347-4d9d-bd67-fb8f39016e9a",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Add admin using added collection admin.",
- "fullTitle": "Integration Test addCollectionAdmin(collection_id, new_admin_id): Add admin using added collection admin.",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n const Charlie = privateKey_1.default('//CHARLIE');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.equal(Alice.address);\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx);\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListAfterAddAdmin).to.be.contains(helpers_1.normalizeAccountId(Bob.address));\n const changeAdminTxCharlie = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Charlie.address));\n await substrate_api_1.submitTransactionAsync(Bob, changeAdminTxCharlie);\n const adminListAfterAddNewAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListAfterAddNewAdmin).to.be.contains(helpers_1.normalizeAccountId(Bob.address));\n expect(adminListAfterAddNewAdmin).to.be.contains(helpers_1.normalizeAccountId(Charlie.address));\n});",
- "err": {},
- "uuid": "7bd5e167-dcc1-4b2a-b891-ce5813a9fb40",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "ae13d452-a347-4d9d-bd67-fb8f39016e9a",
- "7bd5e167-dcc1-4b2a-b891-ce5813a9fb40"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "5f947ba1-65c6-442f-b9f3-13186b004d6a",
- "title": "Negative Integration Test addCollectionAdmin(collection_id, new_admin_id):",
- "fullFile": "/nft_parachain/tests/src/addCollectionAdmin.test.ts",
- "file": "/src/addCollectionAdmin.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Not owner can't add collection admin.",
- "fullTitle": "Negative Integration Test addCollectionAdmin(collection_id, new_admin_id): Not owner can't add collection admin.",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const nonOwner = privateKey_1.default('//Bob_stash');\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(alice.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(nonOwner, changeAdminTx)).to.be.rejected;\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListAfterAddAdmin).not.to.be.contains(helpers_1.normalizeAccountId(alice.address));\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});",
- "err": {},
- "uuid": "ccd1505b-6b0b-4472-8d2c-d3a67b729421",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can't add collection admin of not existing collection.",
- "fullTitle": "Negative Integration Test addCollectionAdmin(collection_id, new_admin_id): Can't add collection admin of not existing collection.",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = (1 << 32) - 1;\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const changeOwnerTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});",
- "err": {},
- "uuid": "0e3a766b-610e-479f-821f-6ec97d977002",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can't add an admin to a destroyed collection.",
- "fullTitle": "Negative Integration Test addCollectionAdmin(collection_id, new_admin_id): Can't add an admin to a destroyed collection.",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n const changeOwnerTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, changeOwnerTx)).to.be.rejected;\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});",
- "err": {},
- "uuid": "fe525657-ebd6-47b9-8970-3dafaff61f5f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Add an admin to a collection that has reached the maximum number of admins limit",
- "fullTitle": "Negative Integration Test addCollectionAdmin(collection_id, new_admin_id): Add an admin to a collection that has reached the maximum number of admins limit",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const Alice = privateKey_1.default('//Alice');\n const accounts = [\n 'GsvVmjr1CBHwQHw84pPHMDxgNY3iBLz6Qn7qS3CH8qPhrHz',\n 'FoQJpPyadYccjavVdTWxpxU7rUEaYhfLCPwXgkfD6Zat9QP',\n 'JKspFU6ohf1Grg3Phdzj2pSgWvsYWzSfKghhfzMbdhNBWs5',\n 'Fr4NzY1udSFFLzb2R3qxVQkwz9cZraWkyfH4h3mVVk7BK7P',\n 'DfnTB4z7eUvYRqcGtTpFsLC69o6tvBSC1pEv8vWPZFtCkaK',\n 'HnMAUz7r2G8G3hB27SYNyit5aJmh2a5P4eMdDtACtMFDbam',\n 'DE14BzQ1bDXWPKeLoAqdLAm1GpyAWaWF1knF74cEZeomTBM',\n ];\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const chainAdminLimit = api.consts.nft.collectionAdminsLimit.toNumber();\n expect(chainAdminLimit).to.be.equal(5);\n for (let i = 0; i < chainAdminLimit; i++) {\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(accounts[i]));\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx);\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListAfterAddAdmin).to.be.contains(helpers_1.normalizeAccountId(accounts[i]));\n }\n const tx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(accounts[chainAdminLimit]));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "de058063-f5ef-43e7-9504-464decfd04e5",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "ccd1505b-6b0b-4472-8d2c-d3a67b729421",
- "0e3a766b-610e-479f-821f-6ec97d977002",
- "fe525657-ebd6-47b9-8970-3dafaff61f5f",
- "de058063-f5ef-43e7-9504-464decfd04e5"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "db675fb6-e2f8-42d5-b6bf-4bc5fd860e90",
- "title": "Integration Test addToContractWhiteList",
- "fullFile": "/nft_parachain/tests/src/addToContractWhiteList.test.ts",
- "file": "/src/addToContractWhiteList.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Add an address to a contract white list",
- "fullTitle": "Integration Test addToContractWhiteList Add an address to a contract white list",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "4d4e712f-9ce7-4906-9c7c-ac319a2e9da2",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "Adding same address to white list repeatedly should not produce errors",
- "fullTitle": "Integration Test addToContractWhiteList Adding same address to white list repeatedly should not produce errors",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "22a2ad72-4361-493b-bc69-6b5974a42d50",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [
- "4d4e712f-9ce7-4906-9c7c-ac319a2e9da2",
- "22a2ad72-4361-493b-bc69-6b5974a42d50"
- ],
- "skipped": [],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "39f3396c-6bc9-4278-bb66-137f036c1025",
- "title": "Negative Integration Test addToContractWhiteList",
- "fullFile": "/nft_parachain/tests/src/addToContractWhiteList.test.ts",
- "file": "/src/addToContractWhiteList.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Add an address to a white list of a non-contract",
- "fullTitle": "Negative Integration Test addToContractWhiteList Add an address to a white list of a non-contract",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "11afd47c-355c-4dc3-91b7-49d462da2ee9",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "Add to a contract white list using a non-owner address",
- "fullTitle": "Negative Integration Test addToContractWhiteList Add to a contract white list using a non-owner address",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "dc54f6a6-b79c-49c7-90cb-994667d80759",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [
- "11afd47c-355c-4dc3-91b7-49d462da2ee9",
- "dc54f6a6-b79c-49c7-90cb-994667d80759"
- ],
- "skipped": [],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "8e0432c7-b6de-4e10-a6d7-78f4ec63c23b",
- "title": "Integration Test ext. addToWhiteList()",
- "fullFile": "/nft_parachain/tests/src/addToWhiteList.test.ts",
- "file": "/src/addToWhiteList.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test ext. addToWhiteList() \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "504f61a5-c065-474c-bfd9-50bb5e0e64ce",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Execute the extrinsic with parameters: Collection ID and address to add to the white list",
- "fullTitle": "Integration Test ext. addToWhiteList() Execute the extrinsic with parameters: Collection ID and address to add to the white list",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);",
- "err": {},
- "uuid": "f4af86bd-2445-483b-84af-9dd6d4e89caf",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Whitelisted minting: list restrictions",
- "fullTitle": "Integration Test ext. addToWhiteList() Whitelisted minting: list restrictions",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);\nawait helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\nawait helpers_1.enablePublicMintingExpectSuccess(Alice, collectionId);\nawait helpers_1.createItemExpectSuccess(Bob, collectionId, 'NFT', Bob.address);",
- "err": {},
- "uuid": "076d5bc5-61a5-49b3-8a8b-85d92ab5ea95",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "f4af86bd-2445-483b-84af-9dd6d4e89caf",
- "076d5bc5-61a5-49b3-8a8b-85d92ab5ea95"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "54048e5b-61d8-4202-957f-c39bf6ecf002",
- "title": "Negative Integration Test ext. addToWhiteList()",
- "fullFile": "/nft_parachain/tests/src/addToWhiteList.test.ts",
- "file": "/src/addToWhiteList.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "White list an address in the collection that does not exist",
- "fullTitle": "Negative Integration Test ext. addToWhiteList() White list an address in the collection that does not exist",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n const Bob = privateKey_1.default('//Bob');\n const tx = api.tx.nft.addToWhiteList(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "89dfc83d-b8ec-48ae-a23d-c254f74c457f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "White list an address in the collection that was destroyed",
- "fullTitle": "Negative Integration Test ext. addToWhiteList() White list an address in the collection that was destroyed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n // tslint:disable-next-line: no-bitwise\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n const tx = api.tx.nft.addToWhiteList(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "5cc79a66-b069-4e44-b20e-e8463e79d03b",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "White list an address in the collection that does not have white list access enabled",
- "fullTitle": "Negative Integration Test ext. addToWhiteList() White list an address in the collection that does not have white list access enabled",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const Alice = privateKey_1.default('//Alice');\n const Ferdie = privateKey_1.default('//Ferdie');\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\n await helpers_1.enablePublicMintingExpectSuccess(Alice, collectionId);\n const tx = api.tx.nft.createItem(collectionId, helpers_1.normalizeAccountId(Ferdie.address), 'NFT');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Ferdie, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "a2acbcac-3464-4de4-a649-bd39ab868fcf",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "89dfc83d-b8ec-48ae-a23d-c254f74c457f",
- "5cc79a66-b069-4e44-b20e-e8463e79d03b",
- "a2acbcac-3464-4de4-a649-bd39ab868fcf"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "17759d9b-3a02-47ec-aa3b-7538324dfde4",
- "title": "Integration Test ext. addToWhiteList() with collection admin permissions:",
- "fullFile": "/nft_parachain/tests/src/addToWhiteList.test.ts",
- "file": "/src/addToWhiteList.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test ext. addToWhiteList() with collection admin permissions: \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});",
- "err": {},
- "uuid": "39f215f2-a4da-40c8-a0cf-8f493363df97",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Negative. Add to the white list by regular user",
- "fullTitle": "Integration Test ext. addToWhiteList() with collection admin permissions: Negative. Add to the white list by regular user",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addToWhiteListExpectFail(Bob, collectionId, Charlie.address);",
- "err": {},
- "uuid": "0fd4da7d-13aa-4c8a-abb3-a62baf1eea08",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Execute the extrinsic with parameters: Collection ID and address to add to the white list",
- "fullTitle": "Integration Test ext. addToWhiteList() with collection admin permissions: Execute the extrinsic with parameters: Collection ID and address to add to the white list",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\nawait helpers_1.addToWhiteListExpectSuccess(Bob, collectionId, Charlie.address);",
- "err": {},
- "uuid": "64da9424-a2a1-4e24-bb62-9ec2a35b4620",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Whitelisted minting: list restrictions",
- "fullTitle": "Integration Test ext. addToWhiteList() with collection admin permissions: Whitelisted minting: list restrictions",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\nawait helpers_1.addToWhiteListExpectSuccess(Bob, collectionId, Charlie.address);\n// allowed only for collection owner\nawait helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\nawait helpers_1.enablePublicMintingExpectSuccess(Alice, collectionId);\nawait helpers_1.createItemExpectSuccess(Charlie, collectionId, 'NFT', Charlie.address);",
- "err": {},
- "uuid": "f5983173-28be-48b5-833e-f0092fca2815",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "0fd4da7d-13aa-4c8a-abb3-a62baf1eea08",
- "64da9424-a2a1-4e24-bb62-9ec2a35b4620",
- "f5983173-28be-48b5-833e-f0092fca2815"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "7ff1c1ae-0522-4644-82a6-b8c8f61aac78",
- "title": "Integration Test approve(spender, collection_id, item_id, amount):",
- "fullFile": "/nft_parachain/tests/src/approve.test.ts",
- "file": "/src/approve.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test approve(spender, collection_id, item_id, amount): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});",
- "err": {},
- "uuid": "8413cad1-b738-44b1-bc1e-894e8f250979",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Execute the extrinsic and check approvedList",
- "fullTitle": "Integration Test approve(spender, collection_id, item_id, amount): Execute the extrinsic and check approvedList",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n// nft\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\nawait helpers_1.approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);",
- "err": {},
- "uuid": "58f34661-b685-46a5-b2fb-d62adacb20b9",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Remove approval by using 0 amount",
- "fullTitle": "Integration Test approve(spender, collection_id, item_id, amount): Remove approval by using 0 amount",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n// nft\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1);\nawait helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 0);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);\nawait helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 0);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\nawait helpers_1.approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);\nawait helpers_1.approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 0);",
- "err": {},
- "uuid": "b4a52671-3927-444e-b297-1e87fb6a1e59",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "can be called by collection owner on non-owned item when OwnerCanTransfer == true",
- "fullTitle": "Integration Test approve(spender, collection_id, item_id, amount): can be called by collection owner on non-owned item when OwnerCanTransfer == true",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nconst itemId = await helpers_1.createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);\nawait helpers_1.approveExpectSuccess(collectionId, itemId, Alice, Charlie);",
- "err": {},
- "uuid": "07b9ce52-ffaa-44ed-af6e-a22d034ab1aa",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "58f34661-b685-46a5-b2fb-d62adacb20b9",
- "b4a52671-3927-444e-b297-1e87fb6a1e59",
- "07b9ce52-ffaa-44ed-af6e-a22d034ab1aa"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "bbd0d378-525f-4ca7-b117-9811069d2768",
- "title": "Negative Integration Test approve(spender, collection_id, item_id, amount):",
- "fullFile": "/nft_parachain/tests/src/approve.test.ts",
- "file": "/src/approve.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Negative Integration Test approve(spender, collection_id, item_id, amount): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});",
- "err": {},
- "uuid": "0e01d3cf-8db0-42a5-af2e-afea877962a8",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Approve for a collection that does not exist",
- "fullTitle": "Negative Integration Test approve(spender, collection_id, item_id, amount): Approve for a collection that does not exist",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // nft\n const nftCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.approveExpectFail(nftCollectionCount + 1, 1, Alice, Bob);\n // fungible\n const fungibleCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.approveExpectFail(fungibleCollectionCount + 1, 1, Alice, Bob);\n // reFungible\n const reFungibleCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.approveExpectFail(reFungibleCollectionCount + 1, 1, Alice, Bob);\n});",
- "err": {},
- "uuid": "57f2f5eb-c881-4963-8d9d-379b5cd553f0",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Approve for a collection that was destroyed",
- "fullTitle": "Negative Integration Test approve(spender, collection_id, item_id, amount): Approve for a collection that was destroyed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "// nft\nconst nftCollectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.destroyCollectionExpectSuccess(nftCollectionId);\nawait helpers_1.approveExpectFail(nftCollectionId, 1, Alice, Bob);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.destroyCollectionExpectSuccess(fungibleCollectionId);\nawait helpers_1.approveExpectFail(fungibleCollectionId, 1, Alice, Bob);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.destroyCollectionExpectSuccess(reFungibleCollectionId);\nawait helpers_1.approveExpectFail(reFungibleCollectionId, 1, Alice, Bob);",
- "err": {},
- "uuid": "38827096-3e94-4bcc-be0c-3b7c3ba7d69d",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Approve transfer of a token that does not exist",
- "fullTitle": "Negative Integration Test approve(spender, collection_id, item_id, amount): Approve transfer of a token that does not exist",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "// nft\nconst nftCollectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.approveExpectFail(nftCollectionId, 2, Alice, Bob);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.approveExpectFail(reFungibleCollectionId, 2, Alice, Bob);",
- "err": {},
- "uuid": "ad56e131-a17c-41e6-b1e2-63802f3ed386",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Approve using the address that does not own the approved token",
- "fullTitle": "Negative Integration Test approve(spender, collection_id, item_id, amount): Approve using the address that does not own the approved token",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n// nft\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.approveExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\nawait helpers_1.approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice);",
- "err": {},
- "uuid": "b4820ad0-7f0e-4ec6-8aeb-e8ce85421337",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "should fail if approved more NFTs than owned",
- "fullTitle": "Negative Integration Test approve(spender, collection_id, item_id, amount): should fail if approved more NFTs than owned",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const nftCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');\nawait helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice);\nawait helpers_1.approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice);",
- "err": {},
- "uuid": "8c124180-e9e6-400d-b8c2-c2c7d8fbb8fb",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "should fail if approved more ReFungibles than owned",
- "fullTitle": "Negative Integration Test approve(spender, collection_id, item_id, amount): should fail if approved more ReFungibles than owned",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const nftCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'ReFungible');\nawait helpers_1.transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 100, 'ReFungible');\nawait helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, 100);\nawait helpers_1.approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, 1);",
- "err": {},
- "uuid": "68f5b592-5b15-483b-93bf-2eaf69c9852c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "should fail if approved more Fungibles than owned",
- "fullTitle": "Negative Integration Test approve(spender, collection_id, item_id, amount): should fail if approved more Fungibles than owned",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const nftCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'Fungible');\nawait helpers_1.transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 10, 'Fungible');\nawait helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, 10);\nawait helpers_1.approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, 1);",
- "err": {},
- "uuid": "791a84c5-527a-416d-b3df-ff271c2e1b06",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails when called by collection owner on non-owned item when OwnerCanTransfer == false",
- "fullTitle": "Negative Integration Test approve(spender, collection_id, item_id, amount): fails when called by collection owner on non-owned item when OwnerCanTransfer == false",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nconst itemId = await helpers_1.createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);\nawait helpers_1.setCollectionLimitsExpectSuccess(Alice, collectionId, { OwnerCanTransfer: false });\nawait helpers_1.approveExpectFail(collectionId, itemId, Alice, Charlie);",
- "err": {},
- "uuid": "4f9a097e-535d-4a36-9373-245ee1a86171",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "57f2f5eb-c881-4963-8d9d-379b5cd553f0",
- "38827096-3e94-4bcc-be0c-3b7c3ba7d69d",
- "ad56e131-a17c-41e6-b1e2-63802f3ed386",
- "b4820ad0-7f0e-4ec6-8aeb-e8ce85421337",
- "8c124180-e9e6-400d-b8c2-c2c7d8fbb8fb",
- "68f5b592-5b15-483b-93bf-2eaf69c9852c",
- "791a84c5-527a-416d-b3df-ff271c2e1b06",
- "4f9a097e-535d-4a36-9373-245ee1a86171"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "ffbd7ce9-1b21-4083-814b-9c633c3f15bb",
- "title": "Integration Test approve(spender, collection_id, item_id, amount) with collection admin permissions:",
- "fullFile": "/nft_parachain/tests/src/approve.test.ts",
- "file": "/src/approve.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test approve(spender, collection_id, item_id, amount) with collection admin permissions: \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});",
- "err": {},
- "uuid": "6a7aa23b-1aae-4eac-88d9-26472e020fd3",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "can be called by collection admin on non-owned item",
- "fullTitle": "Integration Test approve(spender, collection_id, item_id, amount) with collection admin permissions: can be called by collection admin on non-owned item",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nconst itemId = await helpers_1.createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);\nawait helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\nawait helpers_1.approveExpectSuccess(collectionId, itemId, Bob, Charlie);",
- "err": {},
- "uuid": "a31ccf62-8920-4e14-9b8d-bc74a0ca7566",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "a31ccf62-8920-4e14-9b8d-bc74a0ca7566"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "4d1d3346-8d28-4bd0-98d0-d2a6cac5608b",
- "title": "Block Production smoke test",
- "fullFile": "/nft_parachain/tests/src/block-production.test.ts",
- "file": "/src/block-production.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Node produces new blocks",
- "fullTitle": "Block Production smoke test Node produces new blocks",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const blocks = await getBlocks(api);\n chai_1.expect(blocks[0]).to.be.lessThan(blocks[1]);\n});",
- "err": {},
- "uuid": "44b68326-4b05-4eeb-beca-5994a2bec2fd",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "44b68326-4b05-4eeb-beca-5994a2bec2fd"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "31630dc0-1bc3-4608-9307-b6efb62d0b57",
- "title": "integration test: ext. burnItem():",
- "fullFile": "/nft_parachain/tests/src/burnItem.test.ts",
- "file": "/src/burnItem.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "integration test: ext. burnItem(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});",
- "err": {},
- "uuid": "106d90d4-57ff-46c4-8870-1c7fd149c0ab",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Burn item in NFT collection",
- "fullTitle": "integration test: ext. burnItem(): Burn item in NFT collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'NFT';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const events = await substrate_api_1.submitTransactionAsync(alice, tx);\n const result = helpers_1.getGenericResult(events);\n // Get the item\n const item = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();\n // What to expect\n // tslint:disable-next-line:no-unused-expression\n expect(result.success).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n expect(item).to.be.null;\n});",
- "err": {},
- "uuid": "db281de7-6da6-4d2d-9005-21e20a011fc2",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Burn item in Fungible collection",
- "fullTitle": "integration test: ext. burnItem(): Burn item in Fungible collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'Fungible';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode, decimalPoints: 0 } });\nawait helpers_1.createItemExpectSuccess(alice, collectionId, createMode); // Helper creates 10 fungible tokens\nconst tokenId = 0; // ignored\nawait substrate_api_1.default(async (api) => {\n // Destroy 1 of 10\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);\n const events = await substrate_api_1.submitTransactionAsync(alice, tx);\n const result = helpers_1.getGenericResult(events);\n // Get alice balance \n const balance = (await api.query.nft.fungibleItemList(collectionId, alice.address)).toJSON();\n // What to expect\n expect(result.success).to.be.true;\n expect(balance).to.be.not.null;\n expect(balance.Value).to.be.equal(9);\n});",
- "err": {},
- "uuid": "dcfdcd23-ef39-4a88-9bf1-74de618d7535",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Burn item in ReFungible collection",
- "fullTitle": "integration test: ext. burnItem(): Burn item in ReFungible collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'ReFungible';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);\n const events = await substrate_api_1.submitTransactionAsync(alice, tx);\n const result = helpers_1.getGenericResult(events);\n // Get alice balance \n const balance = (await api.query.nft.reFungibleItemList(collectionId, tokenId)).toJSON();\n // What to expect\n expect(result.success).to.be.true;\n expect(balance).to.be.null;\n});",
- "err": {},
- "uuid": "30dfae18-db02-458d-91da-cd9ca371dabf",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Burn owned portion of item in ReFungible collection",
- "fullTitle": "integration test: ext. burnItem(): Burn owned portion of item in ReFungible collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'ReFungible';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait substrate_api_1.default(async (api) => {\n // Transfer 1/100 of the token to Bob\n const transfertx = api.tx.nft.transfer(helpers_1.normalizeAccountId(bob.address), collectionId, tokenId, 1);\n const events1 = await substrate_api_1.submitTransactionAsync(alice, transfertx);\n const result1 = helpers_1.getGenericResult(events1);\n // Get balances\n const balanceBefore = (await api.query.nft.reFungibleItemList(collectionId, tokenId)).toJSON();\n // Bob burns his portion\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const events2 = await substrate_api_1.submitTransactionAsync(bob, tx);\n const result2 = helpers_1.getGenericResult(events2);\n // Get balances \n const balance = (await api.query.nft.reFungibleItemList(collectionId, tokenId)).toJSON();\n // console.log(balance);\n // What to expect before burning\n expect(result1.success).to.be.true;\n expect(balanceBefore).to.be.not.null;\n expect(balanceBefore.Owner.length).to.be.equal(2);\n expect(balanceBefore.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(alice.address));\n expect(balanceBefore.Owner[0].Fraction).to.be.equal(99);\n expect(balanceBefore.Owner[1].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(bob.address));\n expect(balanceBefore.Owner[1].Fraction).to.be.equal(1);\n // What to expect after burning\n expect(result2.success).to.be.true;\n expect(balance).to.be.not.null;\n expect(balance.Owner.length).to.be.equal(1);\n expect(balance.Owner[0].Fraction).to.be.equal(99);\n expect(balance.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(alice.address));\n});",
- "err": {},
- "uuid": "fb1160e0-cf9c-4e27-96c2-353e01a09422",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "db281de7-6da6-4d2d-9005-21e20a011fc2",
- "dcfdcd23-ef39-4a88-9bf1-74de618d7535",
- "30dfae18-db02-458d-91da-cd9ca371dabf",
- "fb1160e0-cf9c-4e27-96c2-353e01a09422"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "16273f03-1dd5-4058-a84a-cc4d6aa4832c",
- "title": "integration test: ext. burnItem() with admin permissions:",
- "fullFile": "/nft_parachain/tests/src/burnItem.test.ts",
- "file": "/src/burnItem.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "integration test: ext. burnItem() with admin permissions: \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});",
- "err": {},
- "uuid": "97633032-cfa2-424d-a9fd-74b7e9758ddd",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Burn item in NFT collection",
- "fullTitle": "integration test: ext. burnItem() with admin permissions: Burn item in NFT collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'NFT';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\nawait substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const events = await substrate_api_1.submitTransactionAsync(bob, tx);\n const result = helpers_1.getGenericResult(events);\n // Get the item\n const item = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();\n // What to expect\n // tslint:disable-next-line:no-unused-expression\n expect(result.success).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n expect(item).to.be.null;\n});",
- "err": {},
- "uuid": "b1fc4b6a-2a91-4fe7-b286-47e8aa974059",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "b1fc4b6a-2a91-4fe7-b286-47e8aa974059"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "452f3792-5d1a-4859-a360-cfffe0b60deb",
- "title": "Negative integration test: ext. burnItem():",
- "fullFile": "/nft_parachain/tests/src/burnItem.test.ts",
- "file": "/src/burnItem.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Negative integration test: ext. burnItem(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});",
- "err": {},
- "uuid": "069a8925-8f20-4ec3-9704-f3150eda6653",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Burn a token in a destroyed collection",
- "fullTitle": "Negative integration test: ext. burnItem(): Burn a token in a destroyed collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'NFT';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);\nawait substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(alice, tx);\n };\n await expect(badTransaction()).to.be.rejected;\n});",
- "err": {},
- "uuid": "80c1a171-453f-4a6c-8b50-dd960a40599f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Burn a token that was never created",
- "fullTitle": "Negative integration test: ext. burnItem(): Burn a token that was never created",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'NFT';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = 10;\nawait substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(alice, tx);\n };\n await expect(badTransaction()).to.be.rejected;\n});",
- "err": {},
- "uuid": "316a7d3b-76ac-43e5-af33-fc3be17131b6",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Burn a token using the address that does not own it",
- "fullTitle": "Negative integration test: ext. burnItem(): Burn a token using the address that does not own it",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'NFT';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(bob, tx);\n };\n await expect(badTransaction()).to.be.rejected;\n});",
- "err": {},
- "uuid": "91f485b0-7d62-4170-b47e-a4e982a2ff55",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Transfer a burned a token",
- "fullTitle": "Negative integration test: ext. burnItem(): Transfer a burned a token",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'NFT';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nconst tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nawait substrate_api_1.default(async (api) => {\n const burntx = api.tx.nft.burnItem(collectionId, tokenId, 0);\n const events1 = await substrate_api_1.submitTransactionAsync(alice, burntx);\n const result1 = helpers_1.getGenericResult(events1);\n expect(result1.success).to.be.true;\n const tx = api.tx.nft.transfer(helpers_1.normalizeAccountId(bob.address), collectionId, tokenId, 0);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(alice, tx);\n };\n await expect(badTransaction()).to.be.rejected;\n});",
- "err": {},
- "uuid": "2ddeae42-6371-40cf-be36-54a3c3ae2b61",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Burn more than owned in Fungible collection",
- "fullTitle": "Negative integration test: ext. burnItem(): Burn more than owned in Fungible collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'Fungible';\nconst collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode, decimalPoints: 0 } });\n// Helper creates 10 fungible tokens\nawait helpers_1.createItemExpectSuccess(alice, collectionId, createMode);\nconst tokenId = 0; // ignored\nawait substrate_api_1.default(async (api) => {\n // Destroy 11 of 10\n const tx = api.tx.nft.burnItem(collectionId, tokenId, 11);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(alice, tx);\n };\n await expect(badTransaction()).to.be.rejected;\n // Get alice balance \n const balance = (await api.query.nft.fungibleItemList(collectionId, alice.address)).toJSON();\n // What to expect\n expect(balance).to.be.not.null;\n expect(balance.Value).to.be.equal(10);\n});",
- "err": {},
- "uuid": "331fa2e2-1474-43f8-9e0d-fec071119639",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "80c1a171-453f-4a6c-8b50-dd960a40599f",
- "316a7d3b-76ac-43e5-af33-fc3be17131b6",
- "91f485b0-7d62-4170-b47e-a4e982a2ff55",
- "2ddeae42-6371-40cf-be36-54a3c3ae2b61",
- "331fa2e2-1474-43f8-9e0d-fec071119639"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "d9f0d67b-bfca-4457-958a-3ef539b093ca",
- "title": "Integration Test changeCollectionOwner(collection_id, new_owner):",
- "fullFile": "/nft_parachain/tests/src/change-collection-owner.test.ts",
- "file": "/src/change-collection-owner.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Changing owner changes owner address",
- "fullTitle": "Integration Test changeCollectionOwner(collection_id, new_owner): Changing owner changes owner address",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(alice.address);\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await substrate_api_1.submitTransactionAsync(alice, changeOwnerTx);\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(bob.address);\n});",
- "err": {},
- "uuid": "106c78ce-05ec-4455-bdac-c3ce51f7f62e",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "106c78ce-05ec-4455-bdac-c3ce51f7f62e"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "b0dfc56e-2c7e-4909-a8cd-3def915d0e8a",
- "title": "Integration Test changeCollectionOwner(collection_id, new_owner) special checks for exOwner:",
- "fullFile": "/nft_parachain/tests/src/change-collection-owner.test.ts",
- "file": "/src/change-collection-owner.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Changing the owner of the collection is not allowed for the former owner",
- "fullTitle": "Integration Test changeCollectionOwner(collection_id, new_owner) special checks for exOwner: Changing the owner of the collection is not allowed for the former owner",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(alice.address);\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await substrate_api_1.submitTransactionAsync(alice, changeOwnerTx);\n const badChangeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, alice.address);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, badChangeOwnerTx)).to.be.rejected;\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(bob.address);\n});",
- "err": {},
- "uuid": "f8e8a3fc-cb38-4a7b-972e-c228ecfc7a55",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "New collectionOwner has access to sponsorship management operations in the collection",
- "fullTitle": "Integration Test changeCollectionOwner(collection_id, new_owner) special checks for exOwner: New collectionOwner has access to sponsorship management operations in the collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const charlie = privateKey_1.default('//Charlie');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(alice.address);\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await substrate_api_1.submitTransactionAsync(alice, changeOwnerTx);\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(bob.address);\n // After changing the owner of the collection, all privileged methods are available to the new owner\n // The new owner of the collection has access to sponsorship management operations in the collection\n await helpers_1.setCollectionSponsorExpectSuccess(collectionId, charlie.address, '//Bob');\n await helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Charlie');\n await helpers_1.removeCollectionSponsorExpectSuccess(collectionId, '//Bob');\n // The new owner of the collection has access to operations for managing the collection parameters\n const collectionLimits = {\n AccountTokenOwnershipLimit: 1,\n SponsoredMintSize: 1,\n TokenLimit: 1,\n SponsorTimeout: 1,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n };\n const tx1 = api.tx.nft.setCollectionLimits(collectionId, collectionLimits);\n await substrate_api_1.submitTransactionAsync(bob, tx1);\n await helpers_1.setPublicAccessModeExpectSuccess(bob, collectionId, 'WhiteList');\n await helpers_1.enableWhiteListExpectSuccess(bob, collectionId);\n await helpers_1.setMintPermissionExpectSuccess(bob, collectionId, true);\n await helpers_1.destroyCollectionExpectSuccess(collectionId, '//Bob');\n});",
- "err": {},
- "uuid": "605404fb-8e36-4370-9f2f-658f09fb8e40",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "New collectionOwner has access to changeCollectionOwner",
- "fullTitle": "Integration Test changeCollectionOwner(collection_id, new_owner) special checks for exOwner: New collectionOwner has access to changeCollectionOwner",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const charlie = privateKey_1.default('//Charlie');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(alice.address);\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await substrate_api_1.submitTransactionAsync(alice, changeOwnerTx);\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(bob.address);\n const changeOwnerTx2 = api.tx.nft.changeCollectionOwner(collectionId, charlie.address);\n await substrate_api_1.submitTransactionAsync(bob, changeOwnerTx2);\n // ownership lost\n const collectionAfterOwnerChange2 = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange2.Owner).to.be.deep.eq(charlie.address);\n});",
- "err": {},
- "uuid": "cfe9d4c1-0a65-4aea-94a6-90c097e01279",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "f8e8a3fc-cb38-4a7b-972e-c228ecfc7a55",
- "605404fb-8e36-4370-9f2f-658f09fb8e40",
- "cfe9d4c1-0a65-4aea-94a6-90c097e01279"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "95795b78-4a0b-4ce1-aabd-b1bebb9b68b7",
- "title": "Negative Integration Test changeCollectionOwner(collection_id, new_owner):",
- "fullFile": "/nft_parachain/tests/src/change-collection-owner.test.ts",
- "file": "/src/change-collection-owner.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Not owner can't change owner.",
- "fullTitle": "Negative Integration Test changeCollectionOwner(collection_id, new_owner): Not owner can't change owner.",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(bob, changeOwnerTx)).to.be.rejected;\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(alice.address);\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});",
- "err": {},
- "uuid": "50601940-15a6-43fd-8e69-e9f15b4cd27b",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Collection admin can't change owner.",
- "fullTitle": "Negative Integration Test changeCollectionOwner(collection_id, new_owner): Collection admin can't change owner.",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n await helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(bob, changeOwnerTx)).to.be.rejected;\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(alice.address);\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});",
- "err": {},
- "uuid": "0dfe81ed-ad93-4968-93aa-c0611841e925",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can't change owner of a non-existing collection.",
- "fullTitle": "Negative Integration Test changeCollectionOwner(collection_id, new_owner): Can't change owner of a non-existing collection.",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = (1 << 32) - 1;\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});",
- "err": {},
- "uuid": "a503acea-f020-48f7-babe-7b35dbe8b5e4",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Former collectionOwner not allowed to sponsorship management operations in the collection",
- "fullTitle": "Negative Integration Test changeCollectionOwner(collection_id, new_owner): Former collectionOwner not allowed to sponsorship management operations in the collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const charlie = privateKey_1.default('//Charlie');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(alice.address);\n const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);\n await substrate_api_1.submitTransactionAsync(alice, changeOwnerTx);\n const badChangeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, alice.address);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, badChangeOwnerTx)).to.be.rejected;\n const collectionAfterOwnerChange = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collectionAfterOwnerChange.Owner).to.be.deep.eq(bob.address);\n await helpers_1.setCollectionSponsorExpectFailure(collectionId, charlie.address, '//Alice');\n await helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Alice');\n await helpers_1.removeCollectionSponsorExpectFailure(collectionId, '//Alice');\n const collectionLimits = {\n AccountTokenOwnershipLimit: 1,\n SponsoredMintSize: 1,\n TokenLimit: 1,\n SponsorTimeout: 1,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n };\n const tx1 = api.tx.nft.setCollectionLimits(collectionId, collectionLimits);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, tx1)).to.be.rejected;\n await helpers_1.enableWhiteListExpectFail(alice, collectionId);\n await helpers_1.setMintPermissionExpectFailure(alice, collectionId, true);\n await helpers_1.destroyCollectionExpectFailure(collectionId, '//Alice');\n});",
- "err": {},
- "uuid": "89038078-bfeb-4ae6-89ec-47a162b45901",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "50601940-15a6-43fd-8e69-e9f15b4cd27b",
- "0dfe81ed-ad93-4968-93aa-c0611841e925",
- "a503acea-f020-48f7-babe-7b35dbe8b5e4",
- "89038078-bfeb-4ae6-89ec-47a162b45901"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "55f5e4e4-f4fb-4ad7-930e-665826d4cf36",
- "title": "Burn Item event ",
- "fullFile": "/nft_parachain/tests/src/check-event/burnItemEvent.test.ts",
- "file": "/src/check-event/burnItemEvent.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Burn Item event \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n});",
- "err": {},
- "uuid": "1cd0ef23-8ba6-42e1-9f3b-c3c8b2507b93",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Check event from burnItem(): ",
- "fullTitle": "Burn Item event Check event from burnItem(): ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionID = await helpers_1.createCollectionExpectSuccess();\n const itemID = await helpers_1.createItemExpectSuccess(Alice, collectionID, 'NFT');\n const burnItem = api.tx.nft.burnItem(collectionID, itemID, 1);\n const events = await substrate_api_1.submitTransactionAsync(Alice, burnItem);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkSection);\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});",
- "err": {},
- "uuid": "de5f50c1-af90-42df-93c3-2934badb6102",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "de5f50c1-af90-42df-93c3-2934badb6102"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "3878d237-7941-4f7d-9402-70c55b27ed0a",
- "title": "Create collection event ",
- "fullFile": "/nft_parachain/tests/src/check-event/createCollectionEvent.test.ts",
- "file": "/src/check-event/createCollectionEvent.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Create collection event \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n});",
- "err": {},
- "uuid": "1df63224-8d83-4ad7-865e-380947ae6c9a",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Check event from createCollection(): ",
- "fullTitle": "Create collection event Check event from createCollection(): ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const tx = api.tx.nft.createCollection('0x31', '0x32', '0x33', 'NFT');\n const events = await substrate_api_1.submitTransactionAsync(Alice, tx);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkSection);\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});",
- "err": {},
- "uuid": "839bfe64-f4fa-4411-860f-f9efd40ed5db",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "839bfe64-f4fa-4411-860f-f9efd40ed5db"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "400efadc-b579-4d9f-976c-109ef146f79c",
- "title": "Create Item event ",
- "fullFile": "/nft_parachain/tests/src/check-event/createItemEvent.test.ts",
- "file": "/src/check-event/createItemEvent.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Create Item event \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n});",
- "err": {},
- "uuid": "b67f0a1f-8a42-4364-a20d-e252defd1183",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Check event from createItem(): ",
- "fullTitle": "Create Item event Check event from createItem(): ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionID = await helpers_1.createCollectionExpectSuccess();\n const createItem = api.tx.nft.createItem(collectionID, Alice.address, 'NFT');\n const events = await substrate_api_1.submitTransactionAsync(Alice, createItem);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkSection);\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});",
- "err": {},
- "uuid": "85d467a8-89df-4b5d-8cc1-0196eb9f93f5",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "85d467a8-89df-4b5d-8cc1-0196eb9f93f5"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "3b11cc06-de4c-4c51-a1fe-3f51dd00189e",
- "title": "Create Multiple Items Event event ",
- "fullFile": "/nft_parachain/tests/src/check-event/createMultipleItemsEvent.test.ts",
- "file": "/src/check-event/createMultipleItemsEvent.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Create Multiple Items Event event \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n});",
- "err": {},
- "uuid": "ca3bcd24-41a8-4305-b378-e11c014b60c6",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Check event from createMultipleItems(): ",
- "fullTitle": "Create Multiple Items Event event Check event from createMultipleItems(): ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionID = await helpers_1.createCollectionExpectSuccess();\n const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];\n const createMultipleItems = api.tx.nft.createMultipleItems(collectionID, Alice.address, args);\n const events = await substrate_api_1.submitTransactionAsync(Alice, createMultipleItems);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkSection);\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});",
- "err": {},
- "uuid": "55b6d724-0365-4f9a-b8e4-9b033966390b",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "55b6d724-0365-4f9a-b8e4-9b033966390b"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "5bf9438d-76d2-4721-aeb3-173ec73ce3e4",
- "title": "Destroy collection event ",
- "fullFile": "/nft_parachain/tests/src/check-event/destroyCollectionEvent.test.ts",
- "file": "/src/check-event/destroyCollectionEvent.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Destroy collection event \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n});",
- "err": {},
- "uuid": "8466e150-ec40-4916-8b9d-40ed46043246",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Check event from destroyCollection(): ",
- "fullTitle": "Destroy collection event Check event from destroyCollection(): ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionID = await helpers_1.createCollectionExpectSuccess();\n const destroyCollection = api.tx.nft.destroyCollection(collectionID);\n const events = await substrate_api_1.submitTransactionAsync(Alice, destroyCollection);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});",
- "err": {},
- "uuid": "39b42382-7bc8-4552-92a2-cb34b6c1c7be",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "39b42382-7bc8-4552-92a2-cb34b6c1c7be"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "97c4b3e9-85ed-4a1a-947e-6e3984151fdd",
- "title": "Transfer event ",
- "fullFile": "/nft_parachain/tests/src/check-event/transferEvent.test.ts",
- "file": "/src/check-event/transferEvent.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Transfer event \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "de4cf4d9-1530-4052-8115-ab14d42cc92a",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Check event from transfer(): ",
- "fullTitle": "Transfer event Check event from transfer(): ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionID = await helpers_1.createCollectionExpectSuccess();\n const itemID = await helpers_1.createItemExpectSuccess(Alice, collectionID, 'NFT');\n const transfer = api.tx.nft.transfer(Bob.address, collectionID, itemID, 1);\n const events = await substrate_api_1.submitTransactionAsync(Alice, transfer);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkSection);\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});",
- "err": {},
- "uuid": "e6598d9d-b6b2-4e48-8525-f6abba53d30b",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "e6598d9d-b6b2-4e48-8525-f6abba53d30b"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "9f3352a8-e9c4-43a8-9086-50a563ee5eee",
- "title": "Transfer from event ",
- "fullFile": "/nft_parachain/tests/src/check-event/transferFromEvent.test.ts",
- "file": "/src/check-event/transferFromEvent.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Transfer from event \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "4a46b244-6070-497d-bcd1-33582dd9b4a8",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Check event from transferFrom(): ",
- "fullTitle": "Transfer from event Check event from transferFrom(): ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionID = await helpers_1.createCollectionExpectSuccess();\n const itemID = await helpers_1.createItemExpectSuccess(Alice, collectionID, 'NFT');\n const transferFrom = api.tx.nft.transferFrom(Alice.address, Bob.address, collectionID, itemID, 1);\n const events = await substrate_api_1.submitTransactionAsync(Alice, transferFrom);\n const msg = JSON.stringify(helpers_1.nftEventMessage(events));\n expect(msg).to.be.contain(checkSection);\n expect(msg).to.be.contain(checkTreasury);\n expect(msg).to.be.contain(checkSystem);\n});",
- "err": {},
- "uuid": "fb883220-daa6-4a72-994b-9bc040bfbab5",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "fb883220-daa6-4a72-994b-9bc040bfbab5"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "82e9f645-db19-47cc-9d86-b840fec2a2b3",
- "title": "Deleting a collection while add address to whitelist: ",
- "fullFile": "/nft_parachain/tests/src/collision-tests/adminDestroyCollection.test.ts",
- "file": "/src/collision-tests/adminDestroyCollection.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Adding an address to the collection whitelist in a block by the admin, and deleting the collection by the owner ",
- "fullTitle": "Deleting a collection while add address to whitelist: Adding an address to the collection whitelist in a block by the admin, and deleting the collection by the owner ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n await timeoutPromise(10000);\n //\n const addWhitelistAdm = api.tx.nft.addToWhiteList(collectionId, Ferdie.address);\n const destroyCollection = api.tx.nft.destroyCollection(collectionId);\n await Promise.all([\n addWhitelistAdm.signAndSend(Bob),\n destroyCollection.signAndSend(Alice),\n ]);\n await timeoutPromise(10000);\n let whiteList = false;\n whiteList = (await api.query.nft.whiteList(collectionId, Ferdie.address)).toJSON();\n // tslint:disable-next-line: no-unused-expression\n expect(whiteList).to.be.false;\n await timeoutPromise(20000);\n});",
- "err": {},
- "uuid": "cd163573-90a0-4ccd-8a1f-eb8335357a70",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "cd163573-90a0-4ccd-8a1f-eb8335357a70"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "fb3e573e-5ef7-48e5-b965-25da2f42c9b5",
- "title": "Admin limit exceeded collection: ",
- "fullFile": "/nft_parachain/tests/src/collision-tests/adminLimitsOff.test.ts",
- "file": "/src/collision-tests/adminLimitsOff.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "In one block, the owner and admin add new admins to the collection more than the limit ",
- "fullTitle": "Admin limit exceeded collection: In one block, the owner and admin add new admins to the collection more than the limit ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const chainAdminLimit = api.consts.nft.collectionAdminsLimit.toNumber();\n expect(chainAdminLimit).to.be.equal(5);\n const changeAdminTx1 = api.tx.nft.addCollectionAdmin(collectionId, Eve.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx1);\n const changeAdminTx2 = api.tx.nft.addCollectionAdmin(collectionId, Dave.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx2);\n const changeAdminTx3 = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx3);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n const addAdmOne = api.tx.nft.addCollectionAdmin(collectionId, Ferdie.address);\n const addAdmTwo = api.tx.nft.addCollectionAdmin(collectionId, Charlie.address);\n await Promise.all([\n addAdmOne.signAndSend(Bob),\n addAdmTwo.signAndSend(Alice),\n ]);\n await timeoutPromise(10000);\n const changeAdminTx4 = api.tx.nft.addCollectionAdmin(collectionId, Alice.address);\n // tslint:disable-next-line: no-unused-expression\n expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, changeAdminTx4)).to.be.rejected;\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListAfterAddAdmin).to.be.contains(Eve.address);\n expect(adminListAfterAddAdmin).to.be.contains(Ferdie.address);\n expect(adminListAfterAddAdmin).not.to.be.contains(Alice.address);\n await timeoutPromise(20000);\n});",
- "err": {},
- "uuid": "c640aa10-0120-452d-b162-4a2c6f356f7f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "c640aa10-0120-452d-b162-4a2c6f356f7f"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "8cce881e-bbaf-4146-8d8f-006fcca425db",
- "title": "Deprivation of admin rights: ",
- "fullFile": "/nft_parachain/tests/src/collision-tests/adminRightsOff.test.ts",
- "file": "/src/collision-tests/adminRightsOff.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "In the block, the collection admin adds a token or changes data, and the collection owner deprives the admin of rights ",
- "fullTitle": "Deprivation of admin rights: In the block, the collection admin adds a token or changes data, and the collection owner deprives the admin of rights ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n await timeoutPromise(10000);\n const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];\n const addItemAdm = api.tx.nft.createMultipleItems(collectionId, Bob.address, args);\n const removeAdm = api.tx.nft.removeCollectionAdmin(collectionId, Bob.address);\n await Promise.all([\n addItemAdm.signAndSend(Bob),\n removeAdm.signAndSend(Alice),\n ]);\n await timeoutPromise(10000);\n const itemsListIndex = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndex.toNumber()).to.be.equal(0);\n const adminList = (await api.query.nft.adminList(collectionId));\n expect(adminList).not.to.be.contains(Bob.address);\n await timeoutPromise(20000);\n});",
- "err": {},
- "uuid": "4e2db444-8992-4e8c-99bd-2e457e34490b",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "4e2db444-8992-4e8c-99bd-2e457e34490b"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "e166ac25-fe9e-4b1d-bb76-6d3e69af3c78",
- "title": "Admin vs Owner changes token: ",
- "fullFile": "/nft_parachain/tests/src/collision-tests/admVsOwnerChanges.test.ts",
- "file": "/src/collision-tests/admVsOwnerChanges.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "The collection admin changes the owner of the token and in the same block the current owner transfers the token to another address ",
- "fullTitle": "Admin vs Owner changes token: The collection admin changes the owner of the token and in the same block the current owner transfers the token to another address ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const changeAdminTxBob = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTxBob);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n const changeAdminTxFerdie = api.tx.nft.addCollectionAdmin(collectionId, Ferdie.address);\n await substrate_api_1.submitTransactionAsync(Bob, changeAdminTxFerdie);\n const itemId = await helpers_1.createItemExpectSuccess(Ferdie, collectionId, 'NFT');\n //\n const changeOwner = api.tx.nft.transferFrom(Ferdie.address, Bob.address, collectionId, itemId, 1);\n const approve = api.tx.nft.approve(Bob.address, collectionId, itemId, 1);\n const sendItem = api.tx.nft.transfer(Alice.address, collectionId, itemId, 1);\n await Promise.all([\n changeOwner.signAndSend(Alice),\n approve.signAndSend(Bob),\n sendItem.signAndSend(Ferdie),\n ]);\n const itemBefore = await api.query.nft.nftItemList(collectionId, itemId);\n expect(itemBefore.Owner).not.to.be.eq(Bob.address);\n await timeoutPromise(20000);\n});",
- "err": {},
- "uuid": "27b84ed9-5b8c-466e-bd56-0775187d9d84",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "27b84ed9-5b8c-466e-bd56-0775187d9d84"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "6939e386-9b18-4f40-9a94-dd723b626a2d",
- "title": "Admin vs Owner changes the data in the token: ",
- "fullFile": "/nft_parachain/tests/src/collision-tests/admVsOwnerData.test.ts",
- "file": "/src/collision-tests/admVsOwnerData.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "The collection admin changes the data in the token and in the same block the token owner also changes the data in it ",
- "fullTitle": "Admin vs Owner changes the data in the token: The collection admin changes the data in the token and in the same block the token owner also changes the data in it ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const AliceData = 1;\n const BobData = 2;\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n const itemId = await helpers_1.createItemExpectSuccess(Bob, collectionId, 'NFT');\n //\n // tslint:disable-next-line: max-line-length\n const AliceTx = api.tx.nft.setVariableMetaData(collectionId, itemId, AliceData.toString());\n // tslint:disable-next-line: max-line-length\n const BobTx = api.tx.nft.setVariableMetaData(collectionId, itemId, BobData.toString());\n await Promise.all([\n AliceTx.signAndSend(Alice),\n BobTx.signAndSend(Bob),\n ]);\n const item = await api.query.nft.nftItemList(collectionId, itemId);\n expect(item.VariableData).not.to.be.eq(null); // Pseudo-random selection of one of two values\n await timeoutPromise(20000);\n});",
- "err": {},
- "uuid": "c5a847a2-b5d4-4507-8c0b-8046d987094b",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "c5a847a2-b5d4-4507-8c0b-8046d987094b"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "cde93d62-bcf0-4cdd-a2a8-cb94d55b17e3",
- "title": "Admin vs Owner take token: ",
- "fullFile": "/nft_parachain/tests/src/collision-tests/admVsOwnerTake.test.ts",
- "file": "/src/collision-tests/admVsOwnerTake.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "The collection admin burns the token and in the same block the token owner performs a transaction on it ",
- "fullTitle": "Admin vs Owner take token: The collection admin burns the token and in the same block the token owner performs a transaction on it ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTx);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n const itemId = await helpers_1.createItemExpectSuccess(Bob, collectionId, 'NFT');\n //\n const sendItem = api.tx.nft.transfer(Ferdie.address, collectionId, itemId, 1);\n const burnItem = api.tx.nft.burnItem(collectionId, itemId, 1);\n await Promise.all([\n sendItem.signAndSend(Bob),\n burnItem.signAndSend(Alice),\n ]);\n await timeoutPromise(10000);\n let itemBurn = false;\n itemBurn = (await (api.query.nft.nftItemList(collectionId, itemId))).toJSON();\n // tslint:disable-next-line: no-unused-expression\n expect(itemBurn).to.be.null;\n await timeoutPromise(20000);\n});",
- "err": {},
- "uuid": "a7a52e31-98d9-45ae-9ac4-ed5de7ab8813",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "a7a52e31-98d9-45ae-9ac4-ed5de7ab8813"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "4d7194c7-81f8-4360-aca3-7b76daacc991",
- "title": "Sponsored with new owner ",
- "fullFile": "/nft_parachain/tests/src/collision-tests/setSponsorNewOwner.test.ts",
- "file": "/src/collision-tests/setSponsorNewOwner.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Confirmation of sponsorship of a collection in a block with a change in the owner of the collection: ",
- "fullTitle": "Sponsored with new owner Confirmation of sponsorship of a collection in a block with a change in the owner of the collection: ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.setCollectionSponsorExpectSuccess(collectionId, Bob.address);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n await timeoutPromise(10000);\n const confirmSponsorship = api.tx.nft.confirmSponsorship(collectionId);\n const changeCollectionOwner = api.tx.nft.changeCollectionOwner(collectionId, Ferdie.address);\n await Promise.all([\n confirmSponsorship.signAndSend(Bob),\n changeCollectionOwner.signAndSend(Alice),\n ]);\n await timeoutPromise(10000);\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Sponsorship.Confirmed).to.be.eq(Bob.address);\n expect(collection.Owner).to.be.eq(Ferdie.address);\n await timeoutPromise(20000);\n});",
- "err": {},
- "uuid": "0aa8b150-ae6a-492d-ae2a-a0cf97b67b83",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "0aa8b150-ae6a-492d-ae2a-a0cf97b67b83"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "c2823806-a267-4156-a25c-67f011de6be0",
- "title": "Payment of commission if one block: ",
- "fullFile": "/nft_parachain/tests/src/collision-tests/sponsorPayments.test.ts",
- "file": "/src/collision-tests/sponsorPayments.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Payment of commission if one block contains transactions for payment from the sponsor's balance and his (sponsor's) exclusion from the collection ",
- "fullTitle": "Payment of commission if one block: Payment of commission if one block contains transactions for payment from the sponsor's balance and his (sponsor's) exclusion from the collection ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const changeAdminTxBob = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);\n await substrate_api_1.submitTransactionAsync(Alice, changeAdminTxBob);\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n const itemId = await helpers_1.createItemExpectSuccess(Bob, collectionId, 'NFT');\n await helpers_1.setCollectionSponsorExpectSuccess(collectionId, Bob.address);\n await helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\n const [alicesBalanceBefore, bobsBalanceBefore] = await get_balance_1.default(api, [accounts_1.alicesPublicKey, accounts_1.bobsPublicKey]);\n const sendItem = api.tx.nft.transfer(Alice.address, collectionId, itemId, 1);\n const revokeSponsor = api.tx.nft.removeCollectionSponsor(collectionId);\n await Promise.all([\n sendItem.signAndSend(Bob),\n revokeSponsor.signAndSend(Alice),\n ]);\n const [alicesBalanceAfter, bobsBalanceAfter] = await get_balance_1.default(api, [accounts_1.alicesPublicKey, accounts_1.bobsPublicKey]);\n // tslint:disable-next-line:no-unused-expression\n expect(alicesBalanceAfter === alicesBalanceBefore).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n expect(bobsBalanceAfter === bobsBalanceBefore).to.be.true;\n await timeoutPromise(20000);\n});",
- "err": {},
- "uuid": "f6b9cccb-f110-4593-ab4c-a952cd22e29d",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "f6b9cccb-f110-4593-ab4c-a952cd22e29d"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "e269ff0c-dc84-41c5-aac7-4ad5587db8c7",
- "title": "Token limit exceeded collection: ",
- "fullFile": "/nft_parachain/tests/src/collision-tests/tokenLimitsOff.test.ts",
- "file": "/src/collision-tests/tokenLimitsOff.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "The number of tokens created in the collection from different addresses exceeds the allowed collection limit ",
- "fullTitle": "Token limit exceeded collection: The number of tokens created in the collection from different addresses exceeds the allowed collection limit ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.setMintPermissionExpectSuccess(Alice, collectionId, true);\n await helpers_1.addToWhiteListExpectSuccess(Alice, collectionId, Ferdie.address);\n await helpers_1.addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);\n const setCollectionLim = api.tx.nft.setCollectionLimits(collectionId, {\n AccountTokenOwnershipLimit,\n SponsoredMintSize,\n TokenLimit,\n // tslint:disable-next-line: object-literal-sort-keys\n SponsorTimeout,\n OwnerCanTransfer,\n OwnerCanDestroy,\n });\n const subTx = await substrate_api_1.submitTransactionAsync(Alice, setCollectionLim);\n const subTxTesult = helpers_1.getCreateItemResult(subTx);\n // tslint:disable-next-line:no-unused-expression\n expect(subTxTesult.success).to.be.true;\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n await timeoutPromise(10000);\n const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];\n const mintItemOne = api.tx.nft\n .createMultipleItems(collectionId, Ferdie.address, args);\n const mintItemTwo = api.tx.nft\n .createMultipleItems(collectionId, Bob.address, args);\n await Promise.all([\n mintItemOne.signAndSend(Ferdie),\n mintItemTwo.signAndSend(Bob),\n ]);\n await timeoutPromise(10000);\n const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexAfter.toNumber()).to.be.equal(3);\n // TokenLimit = 4. The first transaction is successful. The second should fail.\n await timeoutPromise(10000);\n});",
- "err": {},
- "uuid": "91e83b7d-2a17-4a68-b90a-0c5e18f631fd",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "91e83b7d-2a17-4a68-b90a-0c5e18f631fd"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "5de00d4a-8d19-4f86-9cb4-5a2c6282dcc4",
- "title": "Turns off minting mode: ",
- "fullFile": "/nft_parachain/tests/src/collision-tests/turnsOffMinting.test.ts",
- "file": "/src/collision-tests/turnsOffMinting.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "The collection owner turns off minting mode and there are minting transactions in the same block ",
- "fullTitle": "Turns off minting mode: The collection owner turns off minting mode and there are minting transactions in the same block ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const timeoutPromise = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));\n await helpers_1.setMintPermissionExpectSuccess(Alice, collectionId, true);\n await helpers_1.addToWhiteListExpectSuccess(Alice, collectionId, Ferdie.address);\n const mintItem = api.tx.nft.createItem(collectionId, Ferdie.address, 'NFT');\n const offMinting = api.tx.nft.setMintPermission(collectionId, false);\n await Promise.all([\n mintItem.signAndSend(Ferdie),\n offMinting.signAndSend(Alice),\n ]);\n let itemList = false;\n itemList = (await (api.query.nft.nftItemList(collectionId, mintItem))).toJSON();\n // tslint:disable-next-line: no-unused-expression\n expect(itemList).to.be.null;\n await timeoutPromise(20000);\n});",
- "err": {},
- "uuid": "6040e71a-673f-40ae-8e89-53fe146b9821",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "6040e71a-673f-40ae-8e89-53fe146b9821"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "766dec6b-db31-4e6a-8bb4-22ee7c8aa73e",
- "title": "integration test: ext. confirmSponsorship():",
- "fullFile": "/nft_parachain/tests/src/confirmSponsorship.test.ts",
- "file": "/src/confirmSponsorship.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "integration test: ext. confirmSponsorship(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n charlie = keyring.addFromUri('//Charlie');\n});",
- "err": {},
- "uuid": "b4286b27-ec55-496e-a1f7-6c9a8189ea51",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Confirm collection sponsorship",
- "fullTitle": "integration test: ext. confirmSponsorship(): Confirm collection sponsorship",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');",
- "err": {},
- "uuid": "c785a61c-949d-48c4-82ee-4e7d03ab6683",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Add sponsor to a collection after the same sponsor was already added and confirmed",
- "fullTitle": "integration test: ext. confirmSponsorship(): Add sponsor to a collection after the same sponsor was already added and confirmed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);",
- "err": {},
- "uuid": "4c8ba9f7-5223-4e94-984d-dc13ee0fc326",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Add new sponsor to a collection after another sponsor was already added and confirmed",
- "fullTitle": "integration test: ext. confirmSponsorship(): Add new sponsor to a collection after another sponsor was already added and confirmed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, charlie.address);",
- "err": {},
- "uuid": "a9148812-c2fa-490d-b5da-3386918aca3e",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "NFT: Transfer fees are paid by the sponsor after confirmation",
- "fullTitle": "integration test: ext. confirmSponsorship(): NFT: Transfer fees are paid by the sponsor after confirmation",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait substrate_api_1.default(async (api) => {\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for unused address\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', zeroBalance.address);\n // Transfer this tokens from unused address to Alice\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(zeroBalance.address), collectionId, itemId, 0);\n const events = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result = helpers_1.getGenericResult(events);\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n expect(result.success).to.be.true;\n expect(BsponsorBalance.lt(AsponsorBalance)).to.be.true;\n});",
- "err": {},
- "uuid": "9d5c80ab-b396-4d32-89ce-e0a05105ebb1",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Fungible: Transfer fees are paid by the sponsor after confirmation",
- "fullTitle": "integration test: ext. confirmSponsorship(): Fungible: Transfer fees are paid by the sponsor after confirmation",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait substrate_api_1.default(async (api) => {\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for unused address\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'Fungible', zeroBalance.address);\n // Transfer this tokens from unused address to Alice\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);\n const events1 = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result1 = helpers_1.getGenericResult(events1);\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n expect(result1.success).to.be.true;\n expect(BsponsorBalance.lt(AsponsorBalance)).to.be.true;\n});",
- "err": {},
- "uuid": "59ba5ffb-0029-4374-962d-79b49bc98ed0",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "ReFungible: Transfer fees are paid by the sponsor after confirmation",
- "fullTitle": "integration test: ext. confirmSponsorship(): ReFungible: Transfer fees are paid by the sponsor after confirmation",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait substrate_api_1.default(async (api) => {\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for unused address\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'ReFungible', zeroBalance.address);\n // Transfer this tokens from unused address to Alice\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);\n const events1 = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result1 = helpers_1.getGenericResult(events1);\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n expect(result1.success).to.be.true;\n expect(BsponsorBalance.lt(AsponsorBalance)).to.be.true;\n});",
- "err": {},
- "uuid": "1b0854b2-3545-4b50-9d6d-5147d5ee4674",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "CreateItem fees are paid by the sponsor after confirmation",
- "fullTitle": "integration test: ext. confirmSponsorship(): CreateItem fees are paid by the sponsor after confirmation",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\n// Enable collection white list \nawait helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n// Enable public minting\nawait helpers_1.enablePublicMintingExpectSuccess(alice, collectionId);\n// Create Item \nawait substrate_api_1.default(async (api) => {\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Add zeroBalance address to white list\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionId, zeroBalance.address);\n // Mint token using unused address as signer\n await helpers_1.createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n expect(BsponsorBalance.lt(AsponsorBalance)).to.be.true;\n});",
- "err": {},
- "uuid": "4971b24f-c530-424f-8564-373c9ceb0387",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "NFT: Sponsoring of transfers is rate limited",
- "fullTitle": "integration test: ext. confirmSponsorship(): NFT: Sponsoring of transfers is rate limited",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait substrate_api_1.default(async (api) => {\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for alice\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);\n // Transfer this token from Alice to unused address and back\n // Alice to Zero gets sponsored\n const aliceToZero = api.tx.nft.transfer(helpers_1.normalizeAccountId(zeroBalance.address), collectionId, itemId, 0);\n const events1 = await substrate_api_1.submitTransactionAsync(alice, aliceToZero);\n const result1 = helpers_1.getGenericResult(events1);\n // Second transfer should fail\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(alice.address), collectionId, itemId, 0);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(zeroBalance, zeroToAlice);\n };\n await expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees');\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Try again after Zero gets some balance - now it should succeed\n const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);\n await substrate_api_1.submitTransactionAsync(alice, balancetx);\n const events2 = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result2 = helpers_1.getGenericResult(events2);\n expect(result1.success).to.be.true;\n expect(result2.success).to.be.true;\n expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;\n});",
- "err": {},
- "uuid": "d9644e67-7f38-4fbe-8b30-72036d7f6038",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Fungible: Sponsoring is rate limited",
- "fullTitle": "integration test: ext. confirmSponsorship(): Fungible: Sponsoring is rate limited",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait substrate_api_1.default(async (api) => {\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for unused address\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'Fungible', zeroBalance.address);\n // Transfer this tokens in parts from unused address to Alice\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);\n const events1 = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result1 = helpers_1.getGenericResult(events1);\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n await expect(substrate_api_1.submitTransactionExpectFailAsync(zeroBalance, zeroToAlice)).to.be.rejected;\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Try again after Zero gets some balance - now it should succeed\n const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);\n await substrate_api_1.submitTransactionAsync(alice, balancetx);\n const events2 = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result2 = helpers_1.getGenericResult(events2);\n expect(result1.success).to.be.true;\n expect(result2.success).to.be.true;\n expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;\n});",
- "err": {},
- "uuid": "258524bd-66ff-4227-8225-59b08893ad3b",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "ReFungible: Sponsoring is rate limited",
- "fullTitle": "integration test: ext. confirmSponsorship(): ReFungible: Sponsoring is rate limited",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait substrate_api_1.default(async (api) => {\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for alice\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'ReFungible', alice.address);\n // Transfer this token from Alice to unused address and back\n // Alice to Zero gets sponsored\n const aliceToZero = api.tx.nft.transfer(helpers_1.normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);\n const events1 = await substrate_api_1.submitTransactionAsync(alice, aliceToZero);\n const result1 = helpers_1.getGenericResult(events1);\n // Second transfer should fail\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(alice.address), collectionId, itemId, 1);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(zeroBalance, zeroToAlice);\n };\n await expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees');\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Try again after Zero gets some balance - now it should succeed\n const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);\n await substrate_api_1.submitTransactionAsync(alice, balancetx);\n const events2 = await substrate_api_1.submitTransactionAsync(zeroBalance, zeroToAlice);\n const result2 = helpers_1.getGenericResult(events2);\n expect(result1.success).to.be.true;\n expect(result2.success).to.be.true;\n expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;\n});",
- "err": {},
- "uuid": "48f50d22-3286-43cb-a84b-a74d393ec548",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "NFT: Sponsoring of createItem is rate limited",
- "fullTitle": "integration test: ext. confirmSponsorship(): NFT: Sponsoring of createItem is rate limited",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\n// Enable collection white list \nawait helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n// Enable public minting\nawait helpers_1.enablePublicMintingExpectSuccess(alice, collectionId);\nawait substrate_api_1.default(async (api) => {\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Add zeroBalance address to white list\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionId, zeroBalance.address);\n // Mint token using unused address as signer - gets sponsored\n await helpers_1.createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);\n // Second mint should fail\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n const consoleError = console.error;\n const consoleLog = console.log;\n console.error = () => { };\n console.log = () => { };\n const badTransaction = async function () {\n await helpers_1.createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);\n };\n await expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees');\n console.error = consoleError;\n console.log = consoleLog;\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n // Try again after Zero gets some balance - now it should succeed\n const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);\n await substrate_api_1.submitTransactionAsync(alice, balancetx);\n await helpers_1.createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);\n expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;\n});",
- "err": {},
- "uuid": "32f2965d-0780-4b43-86fc-67a271e1ff30",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "c785a61c-949d-48c4-82ee-4e7d03ab6683",
- "4c8ba9f7-5223-4e94-984d-dc13ee0fc326",
- "a9148812-c2fa-490d-b5da-3386918aca3e",
- "9d5c80ab-b396-4d32-89ce-e0a05105ebb1",
- "59ba5ffb-0029-4374-962d-79b49bc98ed0",
- "1b0854b2-3545-4b50-9d6d-5147d5ee4674",
- "4971b24f-c530-424f-8564-373c9ceb0387",
- "d9644e67-7f38-4fbe-8b30-72036d7f6038",
- "258524bd-66ff-4227-8225-59b08893ad3b",
- "48f50d22-3286-43cb-a84b-a74d393ec548",
- "32f2965d-0780-4b43-86fc-67a271e1ff30"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "88813bee-d3e9-4529-938f-39a104c2bf5f",
- "title": "(!negative test!) integration test: ext. confirmSponsorship():",
- "fullFile": "/nft_parachain/tests/src/confirmSponsorship.test.ts",
- "file": "/src/confirmSponsorship.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "(!negative test!) integration test: ext. confirmSponsorship(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n charlie = keyring.addFromUri('//Charlie');\n});",
- "err": {},
- "uuid": "39ec5fac-f548-4199-aaf5-4e22a0ad6f54",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "(!negative test!) Confirm sponsorship for a collection that never existed",
- "fullTitle": "(!negative test!) integration test: ext. confirmSponsorship(): (!negative test!) Confirm sponsorship for a collection that never existed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "// Find the collection that never existed\nlet collectionId = 0;\nawait substrate_api_1.default(async (api) => {\n collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n});\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Bob');",
- "err": {},
- "uuid": "973687a1-333a-40e3-924d-2408e5de9501",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Confirm sponsorship using a non-sponsor address",
- "fullTitle": "(!negative test!) integration test: ext. confirmSponsorship(): (!negative test!) Confirm sponsorship using a non-sponsor address",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait substrate_api_1.default(async (api) => {\n const transfer = api.tx.balances.transfer(charlie.address, 1e15);\n await substrate_api_1.submitTransactionAsync(alice, transfer);\n});\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Charlie');",
- "err": {},
- "uuid": "e37becf5-1cf7-451b-a7a7-9fabc4a12391",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Confirm sponsorship using owner address",
- "fullTitle": "(!negative test!) integration test: ext. confirmSponsorship(): (!negative test!) Confirm sponsorship using owner address",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Alice');",
- "err": {},
- "uuid": "36d28ed5-82ad-4257-9734-554e5a9ec508",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Confirm sponsorship by collection admin",
- "fullTitle": "(!negative test!) integration test: ext. confirmSponsorship(): (!negative test!) Confirm sponsorship by collection admin",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, charlie);\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Charlie');",
- "err": {},
- "uuid": "9aee7e92-89f3-461b-b74b-c22d18a5a8ab",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Confirm sponsorship without sponsor being set with setCollectionSponsor",
- "fullTitle": "(!negative test!) integration test: ext. confirmSponsorship(): (!negative test!) Confirm sponsorship without sponsor being set with setCollectionSponsor",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Bob');",
- "err": {},
- "uuid": "43dcb5ee-e6a2-496e-9323-c497a9de08c9",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Confirm sponsorship in a collection that was destroyed",
- "fullTitle": "(!negative test!) integration test: ext. confirmSponsorship(): (!negative test!) Confirm sponsorship in a collection that was destroyed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Bob');",
- "err": {},
- "uuid": "85c85227-5b3b-4053-9933-f98fa8f3626e",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "973687a1-333a-40e3-924d-2408e5de9501",
- "e37becf5-1cf7-451b-a7a7-9fabc4a12391",
- "36d28ed5-82ad-4257-9734-554e5a9ec508",
- "9aee7e92-89f3-461b-b74b-c22d18a5a8ab",
- "43dcb5ee-e6a2-496e-9323-c497a9de08c9",
- "85c85227-5b3b-4053-9933-f98fa8f3626e"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "b01fbe26-19a1-4422-a804-a211fa4e8126",
- "title": "Connection smoke test",
- "fullFile": "/nft_parachain/tests/src/connection.test.ts",
- "file": "/src/connection.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Connection can be established",
- "fullTitle": "Connection smoke test Connection can be established",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const health = await api.rpc.system.health();\n expect(health).to.be.not.empty;\n});",
- "err": {},
- "uuid": "0a85f403-5d49-4f62-8c6d-4c9fc6b5f8cf",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Cannot connect to 255.255.255.255",
- "fullTitle": "Connection smoke test Cannot connect to 255.255.255.255",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const log = console.log;\nconst error = console.error;\nconsole.log = function () { };\nconsole.error = function () { };\nconst neverConnectProvider = new api_1.WsProvider('ws://255.255.255.255:9944');\nawait expect((async () => {\n await substrate_api_1.default(async (api) => {\n await api.rpc.system.health();\n }, { provider: neverConnectProvider });\n})()).to.be.eventually.rejected;\nconsole.log = log;\nconsole.error = error;",
- "err": {},
- "uuid": "7b68037c-74fb-495e-adb8-14b78794055b",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "0a85f403-5d49-4f62-8c6d-4c9fc6b5f8cf",
- "7b68037c-74fb-495e-adb8-14b78794055b"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "e295e9c4-ce58-49b4-ac64-b58f1ae54d95",
- "title": "Contracts",
- "fullFile": "/nft_parachain/tests/src/contracts.test.ts",
- "file": "/src/contracts.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Can deploy smart contract Flipper, instantiate it and call it's get and flip messages.",
- "fullTitle": "Contracts Can deploy smart contract Flipper, instantiate it and call it's get and flip messages.",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "5ae5e427-bfd6-4097-a812-5a4c7495d3b6",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "Can initialize contract instance",
- "fullTitle": "Contracts Can initialize contract instance",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "5e9d5065-d0cb-4b2b-8128-edc38b2dad13",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [
- "5ae5e427-bfd6-4097-a812-5a4c7495d3b6",
- "5e9d5065-d0cb-4b2b-8128-edc38b2dad13"
- ],
- "skipped": [],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "9afd16cd-2a47-40a7-97c3-3ef651542e0b",
- "title": "Chain extensions",
- "fullFile": "/nft_parachain/tests/src/contracts.test.ts",
- "file": "/src/contracts.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Transfer CE",
- "fullTitle": "Chain extensions Transfer CE",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "5dfccf7a-0eee-404d-a956-d1093df221bc",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "Mint CE",
- "fullTitle": "Chain extensions Mint CE",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "1131b325-d3c6-4b9e-9497-d7eb26256295",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "Bulk mint CE",
- "fullTitle": "Chain extensions Bulk mint CE",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "a9c700c8-c6f7-45aa-9802-d26245bf4d87",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "Approve CE",
- "fullTitle": "Chain extensions Approve CE",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "63d3b2aa-a8b8-4bdf-8e93-80c68eb72c82",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "TransferFrom CE",
- "fullTitle": "Chain extensions TransferFrom CE",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "cd69fa28-097d-4b4f-a0a0-0023fda654a2",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "SetVariableMetaData CE",
- "fullTitle": "Chain extensions SetVariableMetaData CE",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "47084172-5068-4118-85b1-9d7b41fa0376",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "ToggleWhiteList CE",
- "fullTitle": "Chain extensions ToggleWhiteList CE",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "0fd23521-9e89-4234-97be-7d191b812c7e",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [
- "5dfccf7a-0eee-404d-a956-d1093df221bc",
- "1131b325-d3c6-4b9e-9497-d7eb26256295",
- "a9c700c8-c6f7-45aa-9802-d26245bf4d87",
- "63d3b2aa-a8b8-4bdf-8e93-80c68eb72c82",
- "cd69fa28-097d-4b4f-a0a0-0023fda654a2",
- "47084172-5068-4118-85b1-9d7b41fa0376",
- "0fd23521-9e89-4234-97be-7d191b812c7e"
- ],
- "skipped": [],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "bf4639b9-c375-4f1b-9282-6dfc0923585c",
- "title": "integration test: ext. createCollection():",
- "fullFile": "/nft_parachain/tests/src/createCollection.test.ts",
- "file": "/src/createCollection.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Create new NFT collection",
- "fullTitle": "integration test: ext. createCollection(): Create new NFT collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.createCollectionExpectSuccess({ name: 'A', description: 'B', tokenPrefix: 'C', mode: { type: 'NFT' } });",
- "err": {},
- "uuid": "0f328998-69e2-4773-a450-5e528a55d733",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create new NFT collection whith collection_name of maximum length (64 bytes)",
- "fullTitle": "integration test: ext. createCollection(): Create new NFT collection whith collection_name of maximum length (64 bytes)",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.createCollectionExpectSuccess({ name: 'A'.repeat(64) });",
- "err": {},
- "uuid": "3b912026-7a85-4f13-881b-2e33a3d62e9a",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create new NFT collection whith collection_description of maximum length (256 bytes)",
- "fullTitle": "integration test: ext. createCollection(): Create new NFT collection whith collection_description of maximum length (256 bytes)",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.createCollectionExpectSuccess({ description: 'A'.repeat(256) });",
- "err": {},
- "uuid": "779e3c68-ea23-4575-8e6b-d9c7ae101cc7",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create new NFT collection whith token_prefix of maximum length (16 bytes)",
- "fullTitle": "integration test: ext. createCollection(): Create new NFT collection whith token_prefix of maximum length (16 bytes)",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.createCollectionExpectSuccess({ tokenPrefix: 'A'.repeat(16) });",
- "err": {},
- "uuid": "f5f2387d-7ff0-4cd5-90fb-5391d9d23313",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create new Fungible collection",
- "fullTitle": "integration test: ext. createCollection(): Create new Fungible collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });",
- "err": {},
- "uuid": "6329e7c6-186c-47aa-808f-6c1ba6520459",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create new ReFungible collection",
- "fullTitle": "integration test: ext. createCollection(): Create new ReFungible collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });",
- "err": {},
- "uuid": "03366c56-3814-4715-99cf-33baac1f84c5",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "0f328998-69e2-4773-a450-5e528a55d733",
- "3b912026-7a85-4f13-881b-2e33a3d62e9a",
- "779e3c68-ea23-4575-8e6b-d9c7ae101cc7",
- "f5f2387d-7ff0-4cd5-90fb-5391d9d23313",
- "6329e7c6-186c-47aa-808f-6c1ba6520459",
- "03366c56-3814-4715-99cf-33baac1f84c5"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "a295c2d7-d283-4e68-a345-3daa44dffca9",
- "title": "(!negative test!) integration test: ext. createCollection():",
- "fullFile": "/nft_parachain/tests/src/createCollection.test.ts",
- "file": "/src/createCollection.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "(!negative test!) create new NFT collection whith incorrect data (mode)",
- "fullTitle": "(!negative test!) integration test: ext. createCollection(): (!negative test!) create new NFT collection whith incorrect data (mode)",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const AcollectionCount = parseInt((await api.query.nft.createdCollectionCount()).toString(), 10);\n const badTransaction = async () => {\n await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Invalid' } });\n };\n // tslint:disable-next-line:no-unused-expression\n expect(badTransaction()).to.be.rejected;\n const BcollectionCount = parseInt((await api.query.nft.createdCollectionCount()).toString(), 10);\n expect(BcollectionCount).to.be.equal(AcollectionCount, 'Error: Incorrect collection created.');\n});",
- "err": {},
- "uuid": "d83a661f-a409-452b-b322-4e3708101361",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) create new NFT collection whith incorrect data (collection_name)",
- "fullTitle": "(!negative test!) integration test: ext. createCollection(): (!negative test!) create new NFT collection whith incorrect data (collection_name)",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.createCollectionExpectFailure({ name: 'A'.repeat(65), mode: { type: 'NFT' } });",
- "err": {},
- "uuid": "7d6758ad-10e3-4466-b647-4d9220c70b03",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) create new NFT collection whith incorrect data (collection_description)",
- "fullTitle": "(!negative test!) integration test: ext. createCollection(): (!negative test!) create new NFT collection whith incorrect data (collection_description)",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.createCollectionExpectFailure({ description: 'A'.repeat(257), mode: { type: 'NFT' } });",
- "err": {},
- "uuid": "3ba21132-1816-420a-abcc-da80f46e87a3",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) create new NFT collection whith incorrect data (token_prefix)",
- "fullTitle": "(!negative test!) integration test: ext. createCollection(): (!negative test!) create new NFT collection whith incorrect data (token_prefix)",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.createCollectionExpectFailure({ tokenPrefix: 'A'.repeat(17), mode: { type: 'NFT' } });",
- "err": {},
- "uuid": "78b8acf1-36a3-4104-9b4c-f80cbabf95af",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "d83a661f-a409-452b-b322-4e3708101361",
- "7d6758ad-10e3-4466-b647-4d9220c70b03",
- "3ba21132-1816-420a-abcc-da80f46e87a3",
- "78b8acf1-36a3-4104-9b4c-f80cbabf95af"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "86873356-b6ed-4bf9-9ffb-6060b7757ace",
- "title": "integration test: ext. createItem():",
- "fullFile": "/nft_parachain/tests/src/createItem.test.ts",
- "file": "/src/createItem.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "integration test: ext. createItem(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});",
- "err": {},
- "uuid": "a77cc8c0-c5c3-463b-a710-af175ab1ae33",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Create new item in NFT collection",
- "fullTitle": "integration test: ext. createItem(): Create new item in NFT collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'NFT';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nawait helpers_1.createItemExpectSuccess(alice, newCollectionID, createMode);",
- "err": {},
- "uuid": "d49d97df-b93b-4980-8377-088992f5a97c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create new item in Fungible collection",
- "fullTitle": "integration test: ext. createItem(): Create new item in Fungible collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'Fungible';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode, decimalPoints: 0 } });\nawait helpers_1.createItemExpectSuccess(alice, newCollectionID, createMode);",
- "err": {},
- "uuid": "17151dee-f03e-4576-be19-0bff3dbb99b1",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create new item in ReFungible collection",
- "fullTitle": "integration test: ext. createItem(): Create new item in ReFungible collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'ReFungible';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nawait helpers_1.createItemExpectSuccess(alice, newCollectionID, createMode);",
- "err": {},
- "uuid": "a843d3cf-c669-4f8d-ac0f-69ad79f4399f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create new item in NFT collection with collection admin permissions",
- "fullTitle": "integration test: ext. createItem(): Create new item in NFT collection with collection admin permissions",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'NFT';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nawait helpers_1.addCollectionAdminExpectSuccess(alice, newCollectionID, bob);\nawait helpers_1.createItemExpectSuccess(bob, newCollectionID, createMode);",
- "err": {},
- "uuid": "0d53673a-eea6-48cb-a347-58826b2f4e0c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create new item in Fungible collection with collection admin permissions",
- "fullTitle": "integration test: ext. createItem(): Create new item in Fungible collection with collection admin permissions",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'Fungible';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode, decimalPoints: 0 } });\nawait helpers_1.addCollectionAdminExpectSuccess(alice, newCollectionID, bob);\nawait helpers_1.createItemExpectSuccess(bob, newCollectionID, createMode);",
- "err": {},
- "uuid": "f2079a87-c322-48f3-8c55-b039dfa6a631",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create new item in ReFungible collection with collection admin permissions",
- "fullTitle": "integration test: ext. createItem(): Create new item in ReFungible collection with collection admin permissions",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'ReFungible';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nawait helpers_1.addCollectionAdminExpectSuccess(alice, newCollectionID, bob);\nawait helpers_1.createItemExpectSuccess(bob, newCollectionID, createMode);",
- "err": {},
- "uuid": "440acee4-6142-4675-a0c9-8bf8eed167fe",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "d49d97df-b93b-4980-8377-088992f5a97c",
- "17151dee-f03e-4576-be19-0bff3dbb99b1",
- "a843d3cf-c669-4f8d-ac0f-69ad79f4399f",
- "0d53673a-eea6-48cb-a347-58826b2f4e0c",
- "f2079a87-c322-48f3-8c55-b039dfa6a631",
- "440acee4-6142-4675-a0c9-8bf8eed167fe"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "d8760f1e-4b04-4384-ae6a-1f3f2e98bf80",
- "title": "Negative integration test: ext. createItem():",
- "fullFile": "/nft_parachain/tests/src/createItem.test.ts",
- "file": "/src/createItem.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Negative integration test: ext. createItem(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});",
- "err": {},
- "uuid": "f7f7d52d-b852-444c-b448-41eedd575398",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Regular user cannot create new item in NFT collection",
- "fullTitle": "Negative integration test: ext. createItem(): Regular user cannot create new item in NFT collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'NFT';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nawait expect(helpers_1.createItemExpectSuccess(bob, newCollectionID, createMode)).to.be.rejected;",
- "err": {},
- "uuid": "343c1699-ab93-43b5-b20c-9991e6e94c78",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Regular user cannot create new item in Fungible collection",
- "fullTitle": "Negative integration test: ext. createItem(): Regular user cannot create new item in Fungible collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'Fungible';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode, decimalPoints: 0 } });\nawait expect(helpers_1.createItemExpectSuccess(bob, newCollectionID, createMode)).to.be.rejected;",
- "err": {},
- "uuid": "4a67baef-0ec5-44d9-827f-2db5d6752940",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Regular user cannot create new item in ReFungible collection",
- "fullTitle": "Negative integration test: ext. createItem(): Regular user cannot create new item in ReFungible collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const createMode = 'ReFungible';\nconst newCollectionID = await helpers_1.createCollectionExpectSuccess({ mode: { type: createMode } });\nawait expect(helpers_1.createItemExpectSuccess(bob, newCollectionID, createMode)).to.be.rejected;",
- "err": {},
- "uuid": "723df5d5-8595-4e32-9ab1-f3d6831235c0",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "343c1699-ab93-43b5-b20c-9991e6e94c78",
- "4a67baef-0ec5-44d9-827f-2db5d6752940",
- "723df5d5-8595-4e32-9ab1-f3d6831235c0"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "64eb7f91-3e10-4ccf-9650-651719037593",
- "title": "Integration Test createMultipleItems(collection_id, owner, items_data):",
- "fullFile": "/nft_parachain/tests/src/createMultipleItems.test.ts",
- "file": "/src/createMultipleItems.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Create 0x31, 0x32, 0x33 items in active NFT collection and verify tokens data in chain",
- "fullTitle": "Integration Test createMultipleItems(collection_id, owner, items_data): Create 0x31, 0x32, 0x33 items in active NFT collection and verify tokens data in chain",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n const Alice = privateKey_1.default('//Alice');\n const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await substrate_api_1.submitTransactionAsync(Alice, createMultipleItemsTx);\n const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexAfter.toNumber()).to.be.equal(3);\n const token1Data = (await api.query.nft.nftItemList(collectionId, 1)).toJSON();\n const token2Data = (await api.query.nft.nftItemList(collectionId, 2)).toJSON();\n const token3Data = (await api.query.nft.nftItemList(collectionId, 3)).toJSON();\n expect(token1Data.Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Alice.address));\n expect(token2Data.Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Alice.address));\n expect(token3Data.Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Alice.address));\n expect(token1Data.ConstData.toString()).to.be.equal('0x31');\n expect(token2Data.ConstData.toString()).to.be.equal('0x32');\n expect(token3Data.ConstData.toString()).to.be.equal('0x33');\n expect(token1Data.VariableData.toString()).to.be.equal('0x31');\n expect(token2Data.VariableData.toString()).to.be.equal('0x32');\n expect(token3Data.VariableData.toString()).to.be.equal('0x33');\n});",
- "err": {},
- "uuid": "dde52380-97a1-4527-81e5-6210ed37b0e0",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create 0x01, 0x02, 0x03 items in active Fungible collection and verify tokens data in chain",
- "fullTitle": "Integration Test createMultipleItems(collection_id, owner, items_data): Create 0x01, 0x02, 0x03 items in active Fungible collection and verify tokens data in chain",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n const Alice = privateKey_1.default('//Alice');\n const args = [\n { fungible: { value: 1 } },\n { fungible: { value: 2 } },\n { fungible: { value: 3 } },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await substrate_api_1.submitTransactionAsync(Alice, createMultipleItemsTx);\n const token1Data = (await api.query.nft.fungibleItemList(collectionId, Alice.address)).toJSON();\n expect(token1Data.Value).to.be.equal(6); // 1 + 2 + 3\n});",
- "err": {},
- "uuid": "2e4b5045-d586-4ea0-886c-48a123adbec8",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain",
- "fullTitle": "Integration Test createMultipleItems(collection_id, owner, items_data): Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n const Alice = privateKey_1.default('//Alice');\n const args = [\n { refungible: { const_data: [0x31], variable_data: [0x31], pieces: 1 } },\n { refungible: { const_data: [0x32], variable_data: [0x32], pieces: 1 } },\n { refungible: { const_data: [0x33], variable_data: [0x33], pieces: 1 } },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await substrate_api_1.submitTransactionAsync(Alice, createMultipleItemsTx);\n const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexAfter.toNumber()).to.be.equal(3);\n const token1Data = (await api.query.nft.reFungibleItemList(collectionId, 1)).toJSON();\n const token2Data = (await api.query.nft.reFungibleItemList(collectionId, 2)).toJSON();\n const token3Data = (await api.query.nft.reFungibleItemList(collectionId, 3)).toJSON();\n expect(token1Data.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Alice.address));\n expect(token1Data.Owner[0].Fraction).to.be.equal(1);\n expect(token2Data.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Alice.address));\n expect(token2Data.Owner[0].Fraction).to.be.equal(1);\n expect(token3Data.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Alice.address));\n expect(token3Data.Owner[0].Fraction).to.be.equal(1);\n expect(token1Data.ConstData.toString()).to.be.equal('0x31');\n expect(token2Data.ConstData.toString()).to.be.equal('0x32');\n expect(token3Data.ConstData.toString()).to.be.equal('0x33');\n expect(token1Data.VariableData.toString()).to.be.equal('0x31');\n expect(token2Data.VariableData.toString()).to.be.equal('0x32');\n expect(token3Data.VariableData.toString()).to.be.equal('0x33');\n});",
- "err": {},
- "uuid": "10ac40e1-7fcc-4104-b52a-f9bb3c5eec14",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can mint amount of items equals to collection limits",
- "fullTitle": "Integration Test createMultipleItems(collection_id, owner, items_data): Can mint amount of items equals to collection limits",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const alice = privateKey_1.default('//Alice');\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, {\n TokenLimit: 2,\n });\n const args = [\n { nft: ['A', 'A'] },\n { nft: ['B', 'B'] },\n ];\n const createMultipleItemsTx = api.tx.nft.createMultipleItems(collectionId, helpers_1.normalizeAccountId(alice.address), args);\n const events = await substrate_api_1.submitTransactionAsync(alice, createMultipleItemsTx);\n const result = helpers_1.getGenericResult(events);\n expect(result.success).to.be.true;\n});",
- "err": {},
- "uuid": "d2aa77dc-43c0-4eb1-87ed-99e59b7c8699",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "dde52380-97a1-4527-81e5-6210ed37b0e0",
- "2e4b5045-d586-4ea0-886c-48a123adbec8",
- "10ac40e1-7fcc-4104-b52a-f9bb3c5eec14",
- "d2aa77dc-43c0-4eb1-87ed-99e59b7c8699"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "1d0a4943-7714-4aee-97fb-92e9815a934e",
- "title": "Integration Test createMultipleItems(collection_id, owner, items_data) with collection admin permissions:",
- "fullFile": "/nft_parachain/tests/src/createMultipleItems.test.ts",
- "file": "/src/createMultipleItems.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test createMultipleItems(collection_id, owner, items_data) with collection admin permissions: \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "4b8317d6-26d2-4a76-b36f-021b60e22414",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Create 0x31, 0x32, 0x33 items in active NFT collection and verify tokens data in chain",
- "fullTitle": "Integration Test createMultipleItems(collection_id, owner, items_data) with collection admin permissions: Create 0x31, 0x32, 0x33 items in active NFT collection and verify tokens data in chain",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Bob.address), args);\n await substrate_api_1.submitTransactionAsync(Bob, createMultipleItemsTx);\n const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexAfter.toNumber()).to.be.equal(3);\n const token1Data = (await api.query.nft.nftItemList(collectionId, 1)).toJSON();\n const token2Data = (await api.query.nft.nftItemList(collectionId, 2)).toJSON();\n const token3Data = (await api.query.nft.nftItemList(collectionId, 3)).toJSON();\n expect(token1Data.Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Bob.address));\n expect(token2Data.Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Bob.address));\n expect(token3Data.Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Bob.address));\n expect(token1Data.ConstData.toString()).to.be.equal('0x31');\n expect(token2Data.ConstData.toString()).to.be.equal('0x32');\n expect(token3Data.ConstData.toString()).to.be.equal('0x33');\n expect(token1Data.VariableData.toString()).to.be.equal('0x31');\n expect(token2Data.VariableData.toString()).to.be.equal('0x32');\n expect(token3Data.VariableData.toString()).to.be.equal('0x33');\n});",
- "err": {},
- "uuid": "bb637f9d-b9ea-451c-a30a-492542fd6843",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create 0x01, 0x02, 0x03 items in active Fungible collection and verify tokens data in chain",
- "fullTitle": "Integration Test createMultipleItems(collection_id, owner, items_data) with collection admin permissions: Create 0x01, 0x02, 0x03 items in active Fungible collection and verify tokens data in chain",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const args = [\n { fungible: { value: 1 } },\n { fungible: { value: 2 } },\n { fungible: { value: 3 } },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Bob.address), args);\n await substrate_api_1.submitTransactionAsync(Bob, createMultipleItemsTx);\n const token1Data = (await api.query.nft.fungibleItemList(collectionId, Bob.address)).toJSON();\n expect(token1Data.Value).to.be.equal(6); // 1 + 2 + 3\n});",
- "err": {},
- "uuid": "c46c8746-1cc5-453e-90d1-d923be03f694",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain",
- "fullTitle": "Integration Test createMultipleItems(collection_id, owner, items_data) with collection admin permissions: Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const args = [\n { refungible: { const_data: [0x31], variable_data: [0x31], pieces: 1 } },\n { refungible: { const_data: [0x32], variable_data: [0x32], pieces: 1 } },\n { refungible: { const_data: [0x33], variable_data: [0x33], pieces: 1 } },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Bob.address), args);\n await substrate_api_1.submitTransactionAsync(Bob, createMultipleItemsTx);\n const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexAfter.toNumber()).to.be.equal(3);\n const token1Data = (await api.query.nft.reFungibleItemList(collectionId, 1)).toJSON();\n const token2Data = (await api.query.nft.reFungibleItemList(collectionId, 2)).toJSON();\n const token3Data = (await api.query.nft.reFungibleItemList(collectionId, 3)).toJSON();\n expect(token1Data.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Bob.address));\n expect(token1Data.Owner[0].Fraction).to.be.equal(1);\n expect(token2Data.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Bob.address));\n expect(token2Data.Owner[0].Fraction).to.be.equal(1);\n expect(token3Data.Owner[0].Owner).to.be.deep.equal(helpers_1.normalizeAccountId(Bob.address));\n expect(token3Data.Owner[0].Fraction).to.be.equal(1);\n expect(token1Data.ConstData.toString()).to.be.equal('0x31');\n expect(token2Data.ConstData.toString()).to.be.equal('0x32');\n expect(token3Data.ConstData.toString()).to.be.equal('0x33');\n expect(token1Data.VariableData.toString()).to.be.equal('0x31');\n expect(token2Data.VariableData.toString()).to.be.equal('0x32');\n expect(token3Data.VariableData.toString()).to.be.equal('0x33');\n});",
- "err": {},
- "uuid": "505dee22-4a1b-4911-b40e-e4b124c5b5fa",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "bb637f9d-b9ea-451c-a30a-492542fd6843",
- "c46c8746-1cc5-453e-90d1-d923be03f694",
- "505dee22-4a1b-4911-b40e-e4b124c5b5fa"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "8288ec61-5a92-4dc4-95cd-f66b844286ac",
- "title": "Negative Integration Test createMultipleItems(collection_id, owner, items_data):",
- "fullFile": "/nft_parachain/tests/src/createMultipleItems.test.ts",
- "file": "/src/createMultipleItems.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Negative Integration Test createMultipleItems(collection_id, owner, items_data): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "533cb0fd-f60f-44cc-9049-454848ccdcf8",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Regular user cannot create items in active NFT collection",
- "fullTitle": "Negative Integration Test createMultipleItems(collection_id, owner, items_data): Regular user cannot create items in active NFT collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionAsync(Bob, createMultipleItemsTx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "0b0aa09f-6e5c-462f-86e4-86fb59d07e3a",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Regular user cannot create items in active Fungible collection",
- "fullTitle": "Negative Integration Test createMultipleItems(collection_id, owner, items_data): Regular user cannot create items in active Fungible collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n const args = [\n { fungible: { value: 1 } },\n { fungible: { value: 2 } },\n { fungible: { value: 3 } },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionAsync(Bob, createMultipleItemsTx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "3c3fda06-6710-4b6b-b3c3-646378b4ae92",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Regular user cannot create items in active ReFungible collection",
- "fullTitle": "Negative Integration Test createMultipleItems(collection_id, owner, items_data): Regular user cannot create items in active ReFungible collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId);\n expect(itemsListIndexBefore.toNumber()).to.be.equal(0);\n const args = [\n { refungible: { const_data: [0x31], variable_data: [0x31], pieces: 1 } },\n { refungible: { const_data: [0x32], variable_data: [0x32], pieces: 1 } },\n { refungible: { const_data: [0x33], variable_data: [0x33], pieces: 1 } },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionAsync(Bob, createMultipleItemsTx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "baf53ce7-d08d-483e-88d0-a4b2075b3d1f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create token with not existing type",
- "fullTitle": "Negative Integration Test createMultipleItems(collection_id, owner, items_data): Create token with not existing type",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n try {\n const args = [{ invalid: null }, { invalid: null }, { invalid: null }];\n const createMultipleItemsTx = await api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;\n }\n catch (e) {\n // tslint:disable-next-line:no-unused-expression\n expect(e).to.be.exist;\n }\n});",
- "err": {},
- "uuid": "168fcf78-ea46-4da2-9260-cf769a9ec1b7",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create token in not existing collection",
- "fullTitle": "Negative Integration Test createMultipleItems(collection_id, owner, items_data): Create token in not existing collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), ['NFT', 'NFT', 'NFT']);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "93ac2bab-a5ad-4328-96a9-3f1fdbf33dd8",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create NFT and Re-fungible tokens that has reached the maximum data limit",
- "fullTitle": "Negative Integration Test createMultipleItems(collection_id, owner, items_data): Create NFT and Re-fungible tokens that has reached the maximum data limit",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // NFT\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const args = [\n { nft: ['A'.repeat(2049), 'A'.repeat(2049)] },\n { nft: ['B'.repeat(2049), 'B'.repeat(2049)] },\n { nft: ['C'.repeat(2049), 'C'.repeat(2049)] },\n ];\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;\n // ReFungible\n const collectionIdReFungible = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const argsReFungible = [\n { ReFungible: ['1'.repeat(2049), '1'.repeat(2049), 10] },\n { ReFungible: ['2'.repeat(2049), '2'.repeat(2049), 10] },\n { ReFungible: ['3'.repeat(2049), '3'.repeat(2049), 10] },\n ];\n const createMultipleItemsTxFungible = api.tx.nft\n .createMultipleItems(collectionIdReFungible, helpers_1.normalizeAccountId(Alice.address), argsReFungible);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTxFungible)).to.be.rejected;\n});",
- "err": {},
- "uuid": "88ca0edf-1f0d-4c88-9920-983dec0902f7",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create tokens with different types",
- "fullTitle": "Negative Integration Test createMultipleItems(collection_id, owner, items_data): Create tokens with different types",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const createMultipleItemsTx = api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), ['NFT', 'Fungible', 'ReFungible']);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;\n // garbage collection :-D\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n});",
- "err": {},
- "uuid": "175de1dd-2b17-4cb8-b061-e5a55b5a50e9",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Create tokens with different data limits <> maximum data limit",
- "fullTitle": "Negative Integration Test createMultipleItems(collection_id, owner, items_data): Create tokens with different data limits <> maximum data limit",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const args = [\n { nft: ['A', 'A'] },\n { nft: ['B', 'B'.repeat(2049)] },\n { nft: ['C'.repeat(2049), 'C'] },\n ];\n const createMultipleItemsTx = await api.tx.nft\n .createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "2b4d53f9-f5e7-4a23-949a-3ac95b3fbbcd",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Fails when minting tokens exceeds collectionLimits amount",
- "fullTitle": "Negative Integration Test createMultipleItems(collection_id, owner, items_data): Fails when minting tokens exceeds collectionLimits amount",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.setCollectionLimitsExpectSuccess(Alice, collectionId, {\n TokenLimit: 1,\n });\n const args = [\n { nft: ['A', 'A'] },\n { nft: ['B', 'B'] },\n ];\n const createMultipleItemsTx = api.tx.nft.createMultipleItems(collectionId, helpers_1.normalizeAccountId(Alice.address), args);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "c08e3a79-415f-432e-ba59-bce028a4fd65",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "0b0aa09f-6e5c-462f-86e4-86fb59d07e3a",
- "3c3fda06-6710-4b6b-b3c3-646378b4ae92",
- "baf53ce7-d08d-483e-88d0-a4b2075b3d1f",
- "168fcf78-ea46-4da2-9260-cf769a9ec1b7",
- "93ac2bab-a5ad-4328-96a9-3f1fdbf33dd8",
- "88ca0edf-1f0d-4c88-9920-983dec0902f7",
- "175de1dd-2b17-4cb8-b061-e5a55b5a50e9",
- "2b4d53f9-f5e7-4a23-949a-3ac95b3fbbcd",
- "c08e3a79-415f-432e-ba59-bce028a4fd65"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "36c38616-c13a-4557-9cb9-1c3706f3ac7f",
- "title": "integration test: Fees must be credited to Treasury:",
- "fullFile": "/nft_parachain/tests/src/creditFeesToTreasury.test.ts",
- "file": "/src/creditFeesToTreasury.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "integration test: Fees must be credited to Treasury: \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "d82f2f76-897d-4b82-b2fa-668962c68547",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Total issuance does not change",
- "fullTitle": "integration test: Fees must be credited to Treasury: Total issuance does not change",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await skipInflationBlock(api);\n await wait_new_blocks_1.default(api, 1);\n const totalBefore = new bignumber_js_1.BigNumber((await api.query.balances.totalIssuance()).toString());\n const alicePrivateKey = privateKey_1.default('//Alice');\n const amount = new bignumber_js_1.BigNumber(1);\n const transfer = api.tx.balances.transfer(accounts_1.bobsPublicKey, amount.toFixed());\n const result = helpers_1.getGenericResult(await substrate_api_1.submitTransactionAsync(alicePrivateKey, transfer));\n const totalAfter = new bignumber_js_1.BigNumber((await api.query.balances.totalIssuance()).toString());\n expect(result.success).to.be.true;\n expect(totalAfter.toFixed()).to.be.equal(totalBefore.toFixed());\n});",
- "err": {},
- "uuid": "30283cd1-c50d-47fe-a990-3e1bbb81dc54",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Sender balance decreased by fee+sent amount, Treasury balance increased by fee",
- "fullTitle": "integration test: Fees must be credited to Treasury: Sender balance decreased by fee+sent amount, Treasury balance increased by fee",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await skipInflationBlock(api);\n await wait_new_blocks_1.default(api, 1);\n const alicePrivateKey = privateKey_1.default('//Alice');\n const treasuryBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(Treasury)).data.free.toString());\n const aliceBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n const amount = new bignumber_js_1.BigNumber(1);\n const transfer = api.tx.balances.transfer(accounts_1.bobsPublicKey, amount.toFixed());\n const result = helpers_1.getGenericResult(await substrate_api_1.submitTransactionAsync(alicePrivateKey, transfer));\n const treasuryBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(Treasury)).data.free.toString());\n const aliceBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n const fee = aliceBalanceBefore.minus(aliceBalanceAfter).minus(amount);\n const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);\n expect(result.success).to.be.true;\n expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());\n});",
- "err": {},
- "uuid": "129ec89e-7233-46b1-9406-e8f837ec7df7",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Treasury balance increased by failed tx fee",
- "fullTitle": "integration test: Fees must be credited to Treasury: Treasury balance increased by failed tx fee",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await skipInflationBlock(api);\n await wait_new_blocks_1.default(api, 1);\n const bobPrivateKey = privateKey_1.default('//Bob');\n const treasuryBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(Treasury)).data.free.toString());\n const bobBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.bobsPublicKey)).data.free.toString());\n const badTx = api.tx.balances.setBalance(accounts_1.alicesPublicKey, 0, 0);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(bobPrivateKey, badTx)).to.be.rejected;\n const treasuryBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(Treasury)).data.free.toString());\n const bobBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.bobsPublicKey)).data.free.toString());\n const fee = bobBalanceBefore.minus(bobBalanceAfter);\n const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);\n expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());\n});",
- "err": {},
- "uuid": "93062bf3-a522-428b-922b-80684d2cc0a0",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "NFT Transactions also send fees to Treasury",
- "fullTitle": "integration test: Fees must be credited to Treasury: NFT Transactions also send fees to Treasury",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await skipInflationBlock(api);\n await wait_new_blocks_1.default(api, 1);\n const treasuryBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(Treasury)).data.free.toString());\n const aliceBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n await helpers_1.createCollectionExpectSuccess();\n const treasuryBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(Treasury)).data.free.toString());\n const aliceBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n const fee = aliceBalanceBefore.minus(aliceBalanceAfter);\n const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);\n expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());\n});",
- "err": {},
- "uuid": "9f2156c7-beb1-40eb-84fb-754b080e4575",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Fees are sane",
- "fullTitle": "integration test: Fees must be credited to Treasury: Fees are sane",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await skipInflationBlock(api);\n await wait_new_blocks_1.default(api, 1);\n const aliceBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n await helpers_1.createCollectionExpectSuccess();\n const aliceBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n const fee = aliceBalanceBefore.minus(aliceBalanceAfter);\n expect(fee.dividedBy(1e15).toNumber()).to.be.lessThan(saneMaximumFee + createCollectionDeposit);\n expect(fee.dividedBy(1e15).toNumber()).to.be.greaterThan(saneMinimumFee + createCollectionDeposit);\n});",
- "err": {},
- "uuid": "b771b916-77d8-4052-a811-a1080c925937",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "NFT Transfer fee is close to 0.1 Unique",
- "fullTitle": "integration test: Fees must be credited to Treasury: NFT Transfer fee is close to 0.1 Unique",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await skipInflationBlock(api);\n await wait_new_blocks_1.default(api, 1);\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT');\n const aliceBalanceBefore = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n await helpers_1.transferExpectSuccess(collectionId, tokenId, alice, bob, 1, 'NFT');\n const aliceBalanceAfter = new bignumber_js_1.BigNumber((await api.query.system.account(accounts_1.alicesPublicKey)).data.free.toString());\n const fee = aliceBalanceBefore.minus(aliceBalanceAfter);\n // console.log(fee.toString());\n const expectedTransferFee = 0.1;\n const tolerance = 0.001;\n expect(fee.dividedBy(1e15).minus(expectedTransferFee).abs().toNumber()).to.be.lessThan(tolerance);\n});",
- "err": {},
- "uuid": "959a2708-5f73-4e34-b23b-451db6b792cb",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "30283cd1-c50d-47fe-a990-3e1bbb81dc54",
- "129ec89e-7233-46b1-9406-e8f837ec7df7",
- "93062bf3-a522-428b-922b-80684d2cc0a0",
- "9f2156c7-beb1-40eb-84fb-754b080e4575",
- "b771b916-77d8-4052-a811-a1080c925937",
- "959a2708-5f73-4e34-b23b-451db6b792cb"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "690f02a6-5932-480d-bdad-909c7451a15d",
- "title": "integration test: ext. destroyCollection():",
- "fullFile": "/nft_parachain/tests/src/destroyCollection.test.ts",
- "file": "/src/destroyCollection.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "NFT collection can be destroyed",
- "fullTitle": "integration test: ext. destroyCollection(): NFT collection can be destroyed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);",
- "err": {},
- "uuid": "4180464f-22c6-4e68-a585-4c7dfe2f7fde",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Fungible collection can be destroyed",
- "fullTitle": "integration test: ext. destroyCollection(): Fungible collection can be destroyed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);",
- "err": {},
- "uuid": "2e938b8d-c64e-49e5-a704-3b3ad62f2fd8",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "ReFungible collection can be destroyed",
- "fullTitle": "integration test: ext. destroyCollection(): ReFungible collection can be destroyed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);",
- "err": {},
- "uuid": "9297b7a6-20c5-49eb-bd2b-c09794ef5792",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "4180464f-22c6-4e68-a585-4c7dfe2f7fde",
- "2e938b8d-c64e-49e5-a704-3b3ad62f2fd8",
- "9297b7a6-20c5-49eb-bd2b-c09794ef5792"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "d09522f9-f6a3-479f-9398-a62427e9a352",
- "title": "(!negative test!) integration test: ext. destroyCollection():",
- "fullFile": "/nft_parachain/tests/src/destroyCollection.test.ts",
- "file": "/src/destroyCollection.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "(!negative test!) integration test: ext. destroyCollection(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "029c7b06-9a11-473f-9597-d857bb51b47a",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "(!negative test!) Destroy a collection that never existed",
- "fullTitle": "(!negative test!) integration test: ext. destroyCollection(): (!negative test!) Destroy a collection that never existed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // Find the collection that never existed\n const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n await helpers_1.destroyCollectionExpectFailure(collectionId);\n});",
- "err": {},
- "uuid": "53dcbc2e-6a9b-46e6-8548-8a9713b3208c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Destroy a collection that has already been destroyed",
- "fullTitle": "(!negative test!) integration test: ext. destroyCollection(): (!negative test!) Destroy a collection that has already been destroyed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);\nawait helpers_1.destroyCollectionExpectFailure(collectionId);",
- "err": {},
- "uuid": "c9193aa7-25a6-429d-878f-3150a9f87104",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Destroy a collection using non-owner account",
- "fullTitle": "(!negative test!) integration test: ext. destroyCollection(): (!negative test!) Destroy a collection using non-owner account",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.destroyCollectionExpectFailure(collectionId, '//Bob');\nawait helpers_1.destroyCollectionExpectSuccess(collectionId, '//Alice');",
- "err": {},
- "uuid": "470c05d3-d36a-4638-a972-45af56d80408",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Destroy a collection using collection admin account",
- "fullTitle": "(!negative test!) integration test: ext. destroyCollection(): (!negative test!) Destroy a collection using collection admin account",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\nawait helpers_1.destroyCollectionExpectFailure(collectionId, '//Bob');",
- "err": {},
- "uuid": "d1ef4c9e-3e82-4c0d-a7a1-c4f210d1ab74",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails when OwnerCanDestroy == false",
- "fullTitle": "(!negative test!) integration test: ext. destroyCollection(): fails when OwnerCanDestroy == false",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, { OwnerCanDestroy: false });\nawait helpers_1.destroyCollectionExpectFailure(collectionId, '//Alice');",
- "err": {},
- "uuid": "903a5aa7-495c-40da-8140-c165911e13dd",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "53dcbc2e-6a9b-46e6-8548-8a9713b3208c",
- "c9193aa7-25a6-429d-878f-3150a9f87104",
- "470c05d3-d36a-4638-a972-45af56d80408",
- "d1ef4c9e-3e82-4c0d-a7a1-c4f210d1ab74",
- "903a5aa7-495c-40da-8140-c165911e13dd"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "b82eb7b3-f4de-4127-b330-42ebda6df15a",
- "title": "Integration Test enableContractSponsoring",
- "fullFile": "/nft_parachain/tests/src/enableContractSponsoring.test.ts",
- "file": "/src/enableContractSponsoring.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "ensure tx fee is paid from endowment",
- "fullTitle": "Integration Test enableContractSponsoring ensure tx fee is paid from endowment",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "0ae636f0-531e-47d5-a219-33329a247bef",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "ensure it can be enabled twice",
- "fullTitle": "Integration Test enableContractSponsoring ensure it can be enabled twice",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "810ed4cb-bb60-4225-aecd-8b6f089a5469",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "ensure it can be disabled twice",
- "fullTitle": "Integration Test enableContractSponsoring ensure it can be disabled twice",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "133f6180-6c1c-4a81-a037-2bbc883f6c0e",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "ensure it can be re-enabled",
- "fullTitle": "Integration Test enableContractSponsoring ensure it can be re-enabled",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "7436de7a-9afc-4b17-b1d5-83d81324757e",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [
- "0ae636f0-531e-47d5-a219-33329a247bef",
- "810ed4cb-bb60-4225-aecd-8b6f089a5469",
- "133f6180-6c1c-4a81-a037-2bbc883f6c0e",
- "7436de7a-9afc-4b17-b1d5-83d81324757e"
- ],
- "skipped": [],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "0ea1b6f0-3109-4184-92a0-58b87521268a",
- "title": "Negative Integration Test enableContractSponsoring",
- "fullFile": "/nft_parachain/tests/src/enableContractSponsoring.test.ts",
- "file": "/src/enableContractSponsoring.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "fails when called for non-contract address",
- "fullTitle": "Negative Integration Test enableContractSponsoring fails when called for non-contract address",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "bb3cf798-d40c-4f39-8cdc-90775e1e3b89",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "fails when called by non-owning user",
- "fullTitle": "Negative Integration Test enableContractSponsoring fails when called by non-owning user",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "09fe0e7e-13a1-4d61-a3ed-01016a39b5b6",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [
- "bb3cf798-d40c-4f39-8cdc-90775e1e3b89",
- "09fe0e7e-13a1-4d61-a3ed-01016a39b5b6"
- ],
- "skipped": [],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "f9b63262-28cc-416a-b570-70da5d8f65f4",
- "title": "Enable/Disable Transfers",
- "fullFile": "/nft_parachain/tests/src/enableDisableTransfer.test.ts",
- "file": "/src/enableDisableTransfer.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "User can transfer token with enabled transfer flag",
- "fullTitle": "Enable/Disable Transfers User can transfer token with enabled transfer flag",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n // explicitely set transfer flag\n await helpers_1.setTransferFlagExpectSuccess(Alice, nftCollectionId, true);\n await helpers_1.transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1);\n});",
- "err": {},
- "uuid": "40955e62-05af-4179-be1d-5f281075f39c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "User can'n transfer token with disabled transfer flag",
- "fullTitle": "Enable/Disable Transfers User can'n transfer token with disabled transfer flag",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n // explicitely set transfer flag\n await helpers_1.setTransferFlagExpectSuccess(Alice, nftCollectionId, false);\n await helpers_1.transferExpectFailure(nftCollectionId, newNftTokenId, Alice, Bob, 1);\n});",
- "err": {},
- "uuid": "9393b0ed-dc59-4b6b-9934-f48351b5cc36",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "40955e62-05af-4179-be1d-5f281075f39c",
- "9393b0ed-dc59-4b6b-9934-f48351b5cc36"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "64ceb3ce-485a-4092-96b9-0918cbcbb806",
- "title": "Negative Enable/Disable Transfers",
- "fullFile": "/nft_parachain/tests/src/enableDisableTransfer.test.ts",
- "file": "/src/enableDisableTransfer.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Non-owner cannot change transfer flag",
- "fullTitle": "Negative Enable/Disable Transfers Non-owner cannot change transfer flag",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const Bob = privateKey_1.default('//Bob');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n // Change transfer flag\n await helpers_1.setTransferFlagExpectFailure(Bob, nftCollectionId, false);\n});",
- "err": {},
- "uuid": "5e8bf0a6-4130-427d-8aa0-a7e5de676d9c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "5e8bf0a6-4130-427d-8aa0-a7e5de676d9c"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "166a2b99-feef-4313-a348-0c84514b7e19",
- "title": "EVM allowlist",
- "fullFile": "/nft_parachain/tests/src/eth/allowlist.test.ts",
- "file": "/src/eth/allowlist.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Contract allowlist can be toggled",
- "fullTitle": "EVM allowlist Contract allowlist can be toggled",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "8a2553da-4d76-4d01-a46b-0c7aeda8f17e",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Non-whitelisted user can't call contract with allowlist enabled",
- "fullTitle": "EVM allowlist Non-whitelisted user can't call contract with allowlist enabled",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "6bfb1246-7056-4272-95a5-16c071445167",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "8a2553da-4d76-4d01-a46b-0c7aeda8f17e",
- "6bfb1246-7056-4272-95a5-16c071445167"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "1ef94075-5c71-4a69-8fee-0243a30ecf92",
- "title": "Contract calls",
- "fullFile": "/nft_parachain/tests/src/eth/base.test.ts",
- "file": "/src/eth/base.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Call of simple contract fee is less than 0.2 UNQ",
- "fullTitle": "Contract calls Call of simple contract fee is less than 0.2 UNQ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "2e8f1e63-d243-4508-8c90-83fe6bebf0c8",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Balance transfer fee is less than 0.2 UNQ",
- "fullTitle": "Contract calls Balance transfer fee is less than 0.2 UNQ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "a49dfe5b-78a8-4972-83c8-8f4838216a25",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "2e8f1e63-d243-4508-8c90-83fe6bebf0c8",
- "a49dfe5b-78a8-4972-83c8-8f4838216a25"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "63ceb95a-b882-4cf6-a99a-aa5b4993076b",
- "title": "Token transfer between substrate address and EVM address. Fungible",
- "fullFile": "/nft_parachain/tests/src/eth/crossTransfer.test.ts",
- "file": "/src/eth/crossTransfer.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "The private key X create a substrate address. Alice sends a token to the corresponding EVM address, and X can send it to Bob in the substrate",
- "fullTitle": "Token transfer between substrate address and EVM address. Fungible The private key X create a substrate address. Alice sends a token to the corresponding EVM address, and X can send it to Bob in the substrate",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "016bdad3-72c1-4b25-a25f-fa786dd3c92d",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "The private key X create a EVM address. Alice sends a token to the substrate address corresponding to this EVM address, and X can send it to Bob in the EVM",
- "fullTitle": "Token transfer between substrate address and EVM address. Fungible The private key X create a EVM address. Alice sends a token to the substrate address corresponding to this EVM address, and X can send it to Bob in the EVM",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "dc9e2f55-1603-434e-8bdc-d3669c24e2e4",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "016bdad3-72c1-4b25-a25f-fa786dd3c92d",
- "dc9e2f55-1603-434e-8bdc-d3669c24e2e4"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "3bcae81c-07ce-48a2-aa69-0d8c8e27c623",
- "title": "Token transfer between substrate address and EVM address. NFT",
- "fullFile": "/nft_parachain/tests/src/eth/crossTransfer.test.ts",
- "file": "/src/eth/crossTransfer.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "The private key X create a substrate address. Alice sends a token to the corresponding EVM address, and X can send it to Bob in the substrate",
- "fullTitle": "Token transfer between substrate address and EVM address. NFT The private key X create a substrate address. Alice sends a token to the corresponding EVM address, and X can send it to Bob in the substrate",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "687f48a8-d2de-4888-98c2-b23c2e116691",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "The private key X create a EVM address. Alice sends a token to the substrate address corresponding to this EVM address, and X can send it to Bob in the EVM",
- "fullTitle": "Token transfer between substrate address and EVM address. NFT The private key X create a EVM address. Alice sends a token to the substrate address corresponding to this EVM address, and X can send it to Bob in the EVM",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "e8feec8e-382f-487c-b76a-5acc10da9bce",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "687f48a8-d2de-4888-98c2-b23c2e116691",
- "e8feec8e-382f-487c-b76a-5acc10da9bce"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "e28ed94d-9043-43ab-b3d3-bdada9894d84",
- "title": "Fungible: Information getting",
- "fullFile": "/nft_parachain/tests/src/eth/fungible.test.ts",
- "file": "/src/eth/fungible.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "totalSupply",
- "fullTitle": "Fungible: Information getting totalSupply",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "a426de65-2a4a-4b02-9c67-45d296bf7dc1",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "balanceOf",
- "fullTitle": "Fungible: Information getting balanceOf",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "c1081390-abe4-4727-b086-68af2d8bd821",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "a426de65-2a4a-4b02-9c67-45d296bf7dc1",
- "c1081390-abe4-4727-b086-68af2d8bd821"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "38e5c06d-bbc9-4bae-bc0b-45b5475ebd53",
- "title": "Fungible: Plain calls",
- "fullFile": "/nft_parachain/tests/src/eth/fungible.test.ts",
- "file": "/src/eth/fungible.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Can perform approve()",
- "fullTitle": "Fungible: Plain calls Can perform approve()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "61154419-0a48-44b1-ae0f-4b3dd6e3a085",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can perform transferFrom()",
- "fullTitle": "Fungible: Plain calls Can perform transferFrom()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "25aa7368-095b-4f36-849e-2940ca117fba",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can perform transfer()",
- "fullTitle": "Fungible: Plain calls Can perform transfer()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "26bd4d69-70a0-41e3-9019-b1a9c61dd4db",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "61154419-0a48-44b1-ae0f-4b3dd6e3a085",
- "25aa7368-095b-4f36-849e-2940ca117fba",
- "26bd4d69-70a0-41e3-9019-b1a9c61dd4db"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "f64e15cb-ff19-483f-8370-1717a0e52137",
- "title": "Fungible: Fees",
- "fullFile": "/nft_parachain/tests/src/eth/fungible.test.ts",
- "file": "/src/eth/fungible.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "approve() call fee is less than 0.2UNQ",
- "fullTitle": "Fungible: Fees approve() call fee is less than 0.2UNQ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "18ee49b0-8612-4674-9e66-8e0855b1bed7",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "transferFrom() call fee is less than 0.2UNQ",
- "fullTitle": "Fungible: Fees transferFrom() call fee is less than 0.2UNQ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "8604d5a4-bb0d-4ce7-b997-3bb941d2dadc",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "transfer() call fee is less than 0.2UNQ",
- "fullTitle": "Fungible: Fees transfer() call fee is less than 0.2UNQ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "3b472b88-09a8-499e-8ae3-0082a0fd2b7e",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "18ee49b0-8612-4674-9e66-8e0855b1bed7",
- "8604d5a4-bb0d-4ce7-b997-3bb941d2dadc",
- "3b472b88-09a8-499e-8ae3-0082a0fd2b7e"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "0bd2f0db-3ea7-4d52-b1bd-b39e365c4611",
- "title": "Fungible: Substrate calls",
- "fullFile": "/nft_parachain/tests/src/eth/fungible.test.ts",
- "file": "/src/eth/fungible.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Events emitted for approve()",
- "fullTitle": "Fungible: Substrate calls Events emitted for approve()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "aa6f7c90-68ff-4b90-85cf-a35adfd5df6c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Events emitted for transferFrom()",
- "fullTitle": "Fungible: Substrate calls Events emitted for transferFrom()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "cf7b96d6-e4e1-4233-9d7b-4a072c9c200d",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Events emitted for transfer()",
- "fullTitle": "Fungible: Substrate calls Events emitted for transfer()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "2bba3c20-33bd-4365-bce6-a415c26f86b3",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "aa6f7c90-68ff-4b90-85cf-a35adfd5df6c",
- "cf7b96d6-e4e1-4233-9d7b-4a072c9c200d",
- "2bba3c20-33bd-4365-bce6-a415c26f86b3"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "ba3b6c83-0f9f-4fb8-8ad4-d53ef53312f7",
- "title": "Helpers sanity check",
- "fullFile": "/nft_parachain/tests/src/eth/helpersSmoke.test.ts",
- "file": "/src/eth/helpersSmoke.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Contract owner is recorded",
- "fullTitle": "Helpers sanity check Contract owner is recorded",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "051817e6-7916-4f3b-8f07-53399cadceb9",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Flipper is working",
- "fullTitle": "Helpers sanity check Flipper is working",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "ed6828c4-1e4d-4019-a9ab-09908d92a125",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "051817e6-7916-4f3b-8f07-53399cadceb9",
- "ed6828c4-1e4d-4019-a9ab-09908d92a125"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "f55a84b3-636b-41ab-a5b4-bc3c2a5b18d0",
- "title": "Matcher contract usage",
- "fullFile": "/nft_parachain/tests/src/eth/marketplace/marketplace.test.ts",
- "file": "/src/eth/marketplace/marketplace.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "With UNQ",
- "fullTitle": "Matcher contract usage With UNQ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "2f01ebb5-2705-439a-9540-390408e547c0",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "With custom ERC20",
- "fullTitle": "Matcher contract usage With custom ERC20",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "ccf9e063-ac4a-4c78-a9ed-13deb1d5e2ae",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "With escrow",
- "fullTitle": "Matcher contract usage With escrow",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "2ad4094c-5a03-4f59-8140-a973b6f16e87",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "2f01ebb5-2705-439a-9540-390408e547c0",
- "ccf9e063-ac4a-4c78-a9ed-13deb1d5e2ae",
- "2ad4094c-5a03-4f59-8140-a973b6f16e87"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "9c8dfde9-8dc0-4258-95ec-998c0cbd658b",
- "title": "Common metadata",
- "fullFile": "/nft_parachain/tests/src/eth/metadata.test.ts",
- "file": "/src/eth/metadata.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Returns collection name",
- "fullTitle": "Common metadata Returns collection name",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "6388af9f-2efe-42ba-bfd7-cd29fabd8af9",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Returns symbol name",
- "fullTitle": "Common metadata Returns symbol name",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "698a3dfb-824b-4e20-99fa-9ff4a01cc206",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "6388af9f-2efe-42ba-bfd7-cd29fabd8af9",
- "698a3dfb-824b-4e20-99fa-9ff4a01cc206"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "621af845-f162-42a3-b591-dfba99fe7e04",
- "title": "Fungible metadata",
- "fullFile": "/nft_parachain/tests/src/eth/metadata.test.ts",
- "file": "/src/eth/metadata.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Returns fungible decimals",
- "fullTitle": "Fungible metadata Returns fungible decimals",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "f09618db-1592-4fb9-acf1-b71ecf10b3d1",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "f09618db-1592-4fb9-acf1-b71ecf10b3d1"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "5e6c13ef-795c-416a-9c78-ead6a32d3b7d",
- "title": "EVM Migrations",
- "fullFile": "/nft_parachain/tests/src/eth/migration.test.ts",
- "file": "/src/eth/migration.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Deploy contract saved state",
- "fullTitle": "EVM Migrations Deploy contract saved state",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "a5a57dce-aec7-43f8-a4fb-8b7f28c8b098",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "a5a57dce-aec7-43f8-a4fb-8b7f28c8b098"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "29c89e20-ce3a-4cc7-b5ce-cf92a2f775c7",
- "title": "NFT: Information getting",
- "fullFile": "/nft_parachain/tests/src/eth/nonFungible.test.ts",
- "file": "/src/eth/nonFungible.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "totalSupply",
- "fullTitle": "NFT: Information getting totalSupply",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "1a7693a8-a035-43a6-ada3-9789e96b8afc",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "balanceOf",
- "fullTitle": "NFT: Information getting balanceOf",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "5ed76965-d2ea-4fcb-aca5-b2d941118ca4",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "ownerOf",
- "fullTitle": "NFT: Information getting ownerOf",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "67ee6485-e697-42c9-a3eb-304af1ac2530",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "1a7693a8-a035-43a6-ada3-9789e96b8afc",
- "5ed76965-d2ea-4fcb-aca5-b2d941118ca4",
- "67ee6485-e697-42c9-a3eb-304af1ac2530"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "dd3c3df9-87e7-4de4-9a10-86603947cd0a",
- "title": "NFT: Plain calls",
- "fullFile": "/nft_parachain/tests/src/eth/nonFungible.test.ts",
- "file": "/src/eth/nonFungible.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Can perform mint()",
- "fullTitle": "NFT: Plain calls Can perform mint()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "17886293-1b92-4e5e-8e87-b877c04eb0d7",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can perform burn()",
- "fullTitle": "NFT: Plain calls Can perform burn()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "777af62f-e701-4586-8b91-3136588eedc3",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can perform approve()",
- "fullTitle": "NFT: Plain calls Can perform approve()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "87cca972-d2fe-46d3-b8d9-78f13f0eeb56",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can perform transferFrom()",
- "fullTitle": "NFT: Plain calls Can perform transferFrom()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "bd6c2bd1-cf7d-417c-8d97-29bb263bd52f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can perform transfer()",
- "fullTitle": "NFT: Plain calls Can perform transfer()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "9a9d9fce-0eae-4350-bb31-7bd5cddfa379",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "17886293-1b92-4e5e-8e87-b877c04eb0d7",
- "777af62f-e701-4586-8b91-3136588eedc3",
- "87cca972-d2fe-46d3-b8d9-78f13f0eeb56",
- "bd6c2bd1-cf7d-417c-8d97-29bb263bd52f",
- "9a9d9fce-0eae-4350-bb31-7bd5cddfa379"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "2c5ec398-8026-4f53-a652-031d46ae1b99",
- "title": "NFT: Fees",
- "fullFile": "/nft_parachain/tests/src/eth/nonFungible.test.ts",
- "file": "/src/eth/nonFungible.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "approve() call fee is less than 0.2UNQ",
- "fullTitle": "NFT: Fees approve() call fee is less than 0.2UNQ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "2a278075-6373-464b-9c11-b9ad67ec0c4a",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "transferFrom() call fee is less than 0.2UNQ",
- "fullTitle": "NFT: Fees transferFrom() call fee is less than 0.2UNQ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "f5bdbf22-f3c5-4ed3-8b3b-0b8f888a4658",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "transfer() call fee is less than 0.2UNQ",
- "fullTitle": "NFT: Fees transfer() call fee is less than 0.2UNQ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "69da8472-8f02-4763-9ff6-9c2e60bbd4d9",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "2a278075-6373-464b-9c11-b9ad67ec0c4a",
- "f5bdbf22-f3c5-4ed3-8b3b-0b8f888a4658",
- "69da8472-8f02-4763-9ff6-9c2e60bbd4d9"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "be5044de-17be-4f4f-9c43-8a5c1139142e",
- "title": "NFT: Substrate calls",
- "fullFile": "/nft_parachain/tests/src/eth/nonFungible.test.ts",
- "file": "/src/eth/nonFungible.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Events emitted for mint()",
- "fullTitle": "NFT: Substrate calls Events emitted for mint()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "2bb08a8e-2873-4619-83bb-f39af6239a09",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Events emitted for burn()",
- "fullTitle": "NFT: Substrate calls Events emitted for burn()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "d49f6eb8-d101-48fc-a414-491137650956",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Events emitted for approve()",
- "fullTitle": "NFT: Substrate calls Events emitted for approve()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "57983457-a928-4a13-bb30-4802081a6197",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Events emitted for transferFrom()",
- "fullTitle": "NFT: Substrate calls Events emitted for transferFrom()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "ddab55e4-95e4-4e59-9b16-ac782e667252",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Events emitted for transfer()",
- "fullTitle": "NFT: Substrate calls Events emitted for transfer()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "14b7b792-d571-4ac5-92a0-c3803e8ffcf7",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "2bb08a8e-2873-4619-83bb-f39af6239a09",
- "d49f6eb8-d101-48fc-a414-491137650956",
- "57983457-a928-4a13-bb30-4802081a6197",
- "ddab55e4-95e4-4e59-9b16-ac782e667252",
- "14b7b792-d571-4ac5-92a0-c3803e8ffcf7"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "39e4e2ce-c9de-4260-a74f-8585fafecf1a",
- "title": "EVM payable contracts",
- "fullFile": "/nft_parachain/tests/src/eth/payable.test.ts",
- "file": "/src/eth/payable.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Evm contract can receive wei from eth account",
- "fullTitle": "EVM payable contracts Evm contract can receive wei from eth account",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "822d164c-5ac7-440a-8e76-c165898af1af",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Evm contract can receive wei from substrate account",
- "fullTitle": "EVM payable contracts Evm contract can receive wei from substrate account",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "e6b31921-975a-42c4-9675-bcab97445089",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Wei sent directly to backing storage of evm contract balance is unaccounted",
- "fullTitle": "EVM payable contracts Wei sent directly to backing storage of evm contract balance is unaccounted",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "6b49958a-fd26-40d3-a188-202fe5e5904a",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Balance can be retrieved from evm contract",
- "fullTitle": "EVM payable contracts Balance can be retrieved from evm contract",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "1fe5e42d-f3cb-46fd-ad4e-0c1e4525fa4f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "822d164c-5ac7-440a-8e76-c165898af1af",
- "e6b31921-975a-42c4-9675-bcab97445089",
- "6b49958a-fd26-40d3-a188-202fe5e5904a",
- "1fe5e42d-f3cb-46fd-ad4e-0c1e4525fa4f"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "d7123b77-e85e-4f5c-835e-25fb7ea0995c",
- "title": "Fungible (Via EVM proxy): Information getting",
- "fullFile": "/nft_parachain/tests/src/eth/proxy/fungibleProxy.test.ts",
- "file": "/src/eth/proxy/fungibleProxy.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "totalSupply",
- "fullTitle": "Fungible (Via EVM proxy): Information getting totalSupply",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "44d2365a-a35d-44cc-8cc0-8494474b9d2f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "balanceOf",
- "fullTitle": "Fungible (Via EVM proxy): Information getting balanceOf",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "9c9cc56c-a6ab-4f3d-8928-b6a7dac1bef2",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "44d2365a-a35d-44cc-8cc0-8494474b9d2f",
- "9c9cc56c-a6ab-4f3d-8928-b6a7dac1bef2"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "3d993567-a5f6-41b4-a454-426b2b0ba806",
- "title": "Fungible (Via EVM proxy): Plain calls",
- "fullFile": "/nft_parachain/tests/src/eth/proxy/fungibleProxy.test.ts",
- "file": "/src/eth/proxy/fungibleProxy.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Can perform approve()",
- "fullTitle": "Fungible (Via EVM proxy): Plain calls Can perform approve()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "85c01938-eb19-409f-9343-c89d4b128af5",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can perform transferFrom()",
- "fullTitle": "Fungible (Via EVM proxy): Plain calls Can perform transferFrom()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "978c10ed-0dcb-412f-b6a0-0e85366de9b1",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can perform transfer()",
- "fullTitle": "Fungible (Via EVM proxy): Plain calls Can perform transfer()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "3d203895-5663-4b95-b831-4d497ece8a12",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "85c01938-eb19-409f-9343-c89d4b128af5",
- "978c10ed-0dcb-412f-b6a0-0e85366de9b1",
- "3d203895-5663-4b95-b831-4d497ece8a12"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "a1237654-d12a-476d-a746-7e1caf639542",
- "title": "NFT (Via EVM proxy): Information getting",
- "fullFile": "/nft_parachain/tests/src/eth/proxy/nonFungibleProxy.test.ts",
- "file": "/src/eth/proxy/nonFungibleProxy.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "totalSupply",
- "fullTitle": "NFT (Via EVM proxy): Information getting totalSupply",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "3e71410e-4799-4d58-95bc-6ea860550b52",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "balanceOf",
- "fullTitle": "NFT (Via EVM proxy): Information getting balanceOf",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "28d140d6-9e3f-4b98-92fa-f8fa23158060",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "ownerOf",
- "fullTitle": "NFT (Via EVM proxy): Information getting ownerOf",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "159d2f85-802f-4728-b7f3-ed156ce034f3",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "3e71410e-4799-4d58-95bc-6ea860550b52",
- "28d140d6-9e3f-4b98-92fa-f8fa23158060",
- "159d2f85-802f-4728-b7f3-ed156ce034f3"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "6024151e-59e4-4403-bbbb-578984a48786",
- "title": "NFT (Via EVM proxy): Plain calls",
- "fullFile": "/nft_parachain/tests/src/eth/proxy/nonFungibleProxy.test.ts",
- "file": "/src/eth/proxy/nonFungibleProxy.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Can perform mint()",
- "fullTitle": "NFT (Via EVM proxy): Plain calls Can perform mint()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "b19fe432-9e66-4d0b-95d3-71c8da071695",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can perform burn()",
- "fullTitle": "NFT (Via EVM proxy): Plain calls Can perform burn()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "d9075a45-8e4b-4b0a-859f-7062a3bbfb08",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can perform approve()",
- "fullTitle": "NFT (Via EVM proxy): Plain calls Can perform approve()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "1e441b49-2c31-4352-8737-99d9fd0a53ce",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can perform transferFrom()",
- "fullTitle": "NFT (Via EVM proxy): Plain calls Can perform transferFrom()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "caa9e0f6-b5f8-4765-9a78-5a57314a93d4",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can perform transfer()",
- "fullTitle": "NFT (Via EVM proxy): Plain calls Can perform transfer()",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "9c70266f-3630-4867-bd98-99f85f3ad367",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "b19fe432-9e66-4d0b-95d3-71c8da071695",
- "d9075a45-8e4b-4b0a-859f-7062a3bbfb08",
- "1e441b49-2c31-4352-8737-99d9fd0a53ce",
- "caa9e0f6-b5f8-4765-9a78-5a57314a93d4",
- "9c70266f-3630-4867-bd98-99f85f3ad367"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "a6b7f868-6106-44c7-94bd-a23435c69ce8",
- "title": "EVM sponsoring",
- "fullFile": "/nft_parachain/tests/src/eth/sponsoring.test.ts",
- "file": "/src/eth/sponsoring.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Fee is deducted from contract if sponsoring is enabled",
- "fullTitle": "EVM sponsoring Fee is deducted from contract if sponsoring is enabled",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "e7d2b28d-add7-48b9-bb49-0f6e3de0e911",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "...but this doesn't applies to payable value",
- "fullTitle": "EVM sponsoring ...but this doesn't applies to payable value",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await usingWeb3(async (web3) => {\n await cb({ api, web3 });\n });\n});",
- "err": {},
- "uuid": "3b4ee7bd-ce13-4061-bb00-b42c12a56a51",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "e7d2b28d-add7-48b9-bb49-0f6e3de0e911",
- "3b4ee7bd-ce13-4061-bb00-b42c12a56a51"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "3a782123-a540-4917-97ca-acaa03e2ec44",
- "title": "integration test: Inflation",
- "fullFile": "/nft_parachain/tests/src/inflation.test.ts",
- "file": "/src/inflation.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "First year inflation is 10%",
- "fullTitle": "integration test: Inflation First year inflation is 10%",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const blockInterval = parseInt((await api.consts.inflation.inflationBlockInterval).toString());\n const totalIssuanceStart = new bignumber_js_1.BigNumber((await api.query.inflation.startingYearTotalIssuance()).toString());\n const blockInflation = new bignumber_js_1.BigNumber((await api.query.inflation.blockInflation()).toString());\n const YEAR = 5259600; // Blocks in one year\n const totalExpectedInflation = totalIssuanceStart.multipliedBy(0.1);\n const totalActualInflation = blockInflation.multipliedBy(YEAR / blockInterval);\n const tolerance = 0.00001; // Relative difference per year between theoretical and actual inflation\n expect(totalExpectedInflation.dividedBy(totalActualInflation).minus(1).abs().toNumber()).to.be.lessThan(tolerance);\n});",
- "err": {},
- "uuid": "4bb3a25e-9223-42c1-b99a-b78e248ac864",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "4bb3a25e-9223-42c1-b99a-b78e248ac864"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "3cb447bc-3795-43d4-ba76-9e96f7c10164",
- "title": "Integration Test fungible overflows",
- "fullFile": "/nft_parachain/tests/src/overflow.test.ts",
- "file": "/src/overflow.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test fungible overflows \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n charlie = privateKey_1.default('//Charlie');\n});",
- "err": {},
- "uuid": "87cb3cb2-344b-41dc-ab4e-43a13a6f956a",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "fails when overflows on transfer",
- "fullTitle": "Integration Test fungible overflows fails when overflows on transfer",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: helpers_1.U128_MAX });\nawait helpers_1.transferExpectSuccess(fungibleCollectionId, 0, alice, bob, helpers_1.U128_MAX, 'Fungible');\nawait helpers_1.createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: 1n });\nawait helpers_1.transferExpectFailure(fungibleCollectionId, 0, alice, bob, 1);\nexpect(await helpers_1.getFungibleBalance(fungibleCollectionId, alice.address)).to.equal(1n);\nexpect(await helpers_1.getFungibleBalance(fungibleCollectionId, bob.address)).to.equal(helpers_1.U128_MAX);",
- "err": {},
- "uuid": "494b4340-c214-43e1-9a60-bf5ed837b911",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails on allowance overflow",
- "fullTitle": "Integration Test fungible overflows fails on allowance overflow",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: helpers_1.U128_MAX });\nawait helpers_1.approveExpectSuccess(fungibleCollectionId, 0, alice, bob, helpers_1.U128_MAX);\nawait helpers_1.approveExpectFail(fungibleCollectionId, 0, alice, bob, helpers_1.U128_MAX);",
- "err": {},
- "uuid": "576bd335-6c12-4c4b-8330-3df79feaebab",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails when overflows on transferFrom",
- "fullTitle": "Integration Test fungible overflows fails when overflows on transferFrom",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: helpers_1.U128_MAX });\nawait helpers_1.approveExpectSuccess(fungibleCollectionId, 0, alice, bob, helpers_1.U128_MAX);\nawait helpers_1.transferFromExpectSuccess(fungibleCollectionId, 0, bob, alice, charlie, helpers_1.U128_MAX, 'Fungible');\nexpect(await helpers_1.getFungibleBalance(fungibleCollectionId, charlie.address)).to.equal(helpers_1.U128_MAX);\nexpect((await helpers_1.getAllowance(fungibleCollectionId, 0, alice.address, bob.address)).toString()).to.equal('0');\nawait helpers_1.createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: helpers_1.U128_MAX });\nawait helpers_1.approveExpectSuccess(fungibleCollectionId, 0, alice, bob, 1n);\nawait helpers_1.transferFromExpectFail(fungibleCollectionId, 0, bob, alice, charlie, 1);\nexpect(await helpers_1.getFungibleBalance(fungibleCollectionId, charlie.address)).to.equal(helpers_1.U128_MAX);\nexpect((await helpers_1.getAllowance(fungibleCollectionId, 0, alice.address, bob.address)).toString()).to.equal('1');",
- "err": {},
- "uuid": "a384b326-375e-4c27-96d7-ebb95b0f2952",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "494b4340-c214-43e1-9a60-bf5ed837b911",
- "576bd335-6c12-4c4b-8330-3df79feaebab",
- "a384b326-375e-4c27-96d7-ebb95b0f2952"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "eb63d35a-61f0-4f4b-97a3-3d752c0ed6ff",
- "title": "Pallet presence",
- "fullFile": "/nft_parachain/tests/src/pallet-presence.test.ts",
- "file": "/src/pallet-presence.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Required pallets are present",
- "fullTitle": "Pallet presence Required pallets are present",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n for (let i = 0; i < requiredPallets.length; i++) {\n chai_1.expect(getModuleNames(api)).to.include(requiredPallets[i]);\n }\n});",
- "err": {},
- "uuid": "ef7906da-de02-4c50-a4b9-2afeba4cff54",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Governance and consensus pallets are present",
- "fullTitle": "Pallet presence Governance and consensus pallets are present",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n for (let i = 0; i < consensusPallets.length; i++) {\n chai_1.expect(getModuleNames(api)).to.include(consensusPallets[i]);\n }\n});",
- "err": {},
- "uuid": "cdc09d05-ff48-4fa1-9afa-5a868164a7d3",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "No extra pallets are included",
- "fullTitle": "Pallet presence No extra pallets are included",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n chai_1.expect(getModuleNames(api).sort()).to.be.deep.equal([...requiredPallets, ...consensusPallets].sort());\n});",
- "err": {},
- "uuid": "3e3cc583-e342-44b9-a5c3-7a9101d48118",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "ef7906da-de02-4c50-a4b9-2afeba4cff54",
- "cdc09d05-ff48-4fa1-9afa-5a868164a7d3",
- "3e3cc583-e342-44b9-a5c3-7a9101d48118"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "dc732f9f-225a-4ac1-b53c-d6d723388d72",
- "title": "Integration Test removeCollectionAdmin(collection_id, account_id):",
- "fullFile": "/nft_parachain/tests/src/removeCollectionAdmin.test.ts",
- "file": "/src/removeCollectionAdmin.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Remove collection admin.",
- "fullTitle": "Integration Test removeCollectionAdmin(collection_id, account_id): Remove collection admin.",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(Alice.address);\n // first - add collection admin Bob\n const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await substrate_api_1.submitTransactionAsync(Alice, addAdminTx);\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId)).toJSON();\n expect(adminListAfterAddAdmin).to.be.deep.contains(helpers_1.normalizeAccountId(Bob.address));\n // then remove bob from admins of collection\n const removeAdminTx = api.tx.nft.removeCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await substrate_api_1.submitTransactionAsync(Alice, removeAdminTx);\n const adminListAfterRemoveAdmin = (await api.query.nft.adminList(collectionId)).toJSON;\n expect(adminListAfterRemoveAdmin).not.to.be.deep.contains(helpers_1.normalizeAccountId(Bob.address));\n});",
- "err": {},
- "uuid": "1e89bb51-7d8b-4059-8bec-06511701d088",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Remove collection admin by admin.",
- "fullTitle": "Integration Test removeCollectionAdmin(collection_id, account_id): Remove collection admin by admin.",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n const Charlie = privateKey_1.default('//Charlie');\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.deep.eq(Alice.address);\n // first - add collection admin Bob\n const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await substrate_api_1.submitTransactionAsync(Alice, addAdminTx);\n const addAdminTx2 = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Charlie.address));\n await substrate_api_1.submitTransactionAsync(Alice, addAdminTx2);\n const adminListAfterAddAdmin = (await api.query.nft.adminList(collectionId)).toJSON();\n expect(adminListAfterAddAdmin).to.be.deep.contains(helpers_1.normalizeAccountId(Bob.address));\n // then remove bob from admins of collection\n const removeAdminTx = api.tx.nft.removeCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await substrate_api_1.submitTransactionAsync(Charlie, removeAdminTx);\n const adminListAfterRemoveAdmin = (await api.query.nft.adminList(collectionId)).toJSON;\n expect(adminListAfterRemoveAdmin).not.to.be.deep.contains(helpers_1.normalizeAccountId(Bob.address));\n});",
- "err": {},
- "uuid": "aa6bb14d-7b07-4c11-8f63-f19f34678e0d",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Remove admin from collection that has no admins",
- "fullTitle": "Integration Test removeCollectionAdmin(collection_id, account_id): Remove admin from collection that has no admins",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const Alice = privateKey_1.default('//Alice');\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const adminListBeforeAddAdmin = (await api.query.nft.adminList(collectionId));\n expect(adminListBeforeAddAdmin).to.have.lengthOf(0);\n const tx = api.tx.nft.removeCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Alice.address));\n await substrate_api_1.submitTransactionAsync(Alice, tx);\n});",
- "err": {},
- "uuid": "19946d54-de8a-4a6b-95bd-05d67da4992a",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "1e89bb51-7d8b-4059-8bec-06511701d088",
- "aa6bb14d-7b07-4c11-8f63-f19f34678e0d",
- "19946d54-de8a-4a6b-95bd-05d67da4992a"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "55dcf9fb-d81f-497c-8e8f-362fe16e8d9b",
- "title": "Negative Integration Test removeCollectionAdmin(collection_id, account_id):",
- "fullFile": "/nft_parachain/tests/src/removeCollectionAdmin.test.ts",
- "file": "/src/removeCollectionAdmin.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Can't remove collection admin from not existing collection",
- "fullTitle": "Negative Integration Test removeCollectionAdmin(collection_id, account_id): Can't remove collection admin from not existing collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = (1 << 32) - 1;\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, helpers_1.normalizeAccountId(bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});",
- "err": {},
- "uuid": "cb3c0197-2eda-459f-98f2-fb24f0c8682a",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Can't remove collection admin from deleted collection",
- "fullTitle": "Negative Integration Test removeCollectionAdmin(collection_id, account_id): Can't remove collection admin from deleted collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, changeOwnerTx)).to.be.rejected;\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});",
- "err": {},
- "uuid": "10428424-2150-4a02-a617-0b21f301e690",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Regular user Can't remove collection admin",
- "fullTitle": "Negative Integration Test removeCollectionAdmin(collection_id, account_id): Regular user Can't remove collection admin",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n const Charlie = privateKey_1.default('//Charlie');\n const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await substrate_api_1.submitTransactionAsync(Alice, addAdminTx);\n const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, helpers_1.normalizeAccountId(Bob.address));\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Charlie, changeOwnerTx)).to.be.rejected;\n // Verifying that nothing bad happened (network is live, new collections can be created, etc.)\n await helpers_1.createCollectionExpectSuccess();\n});",
- "err": {},
- "uuid": "f4f77126-8ff7-41fa-8b6a-0136f721d9b6",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "cb3c0197-2eda-459f-98f2-fb24f0c8682a",
- "10428424-2150-4a02-a617-0b21f301e690",
- "f4f77126-8ff7-41fa-8b6a-0136f721d9b6"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "4964745b-c07c-469a-bd86-3aabe116e79c",
- "title": "integration test: ext. removeCollectionSponsor():",
- "fullFile": "/nft_parachain/tests/src/removeCollectionSponsor.test.ts",
- "file": "/src/removeCollectionSponsor.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "integration test: ext. removeCollectionSponsor(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});",
- "err": {},
- "uuid": "073aa191-794a-43ea-afe9-eece5ca6ea5b",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Removing NFT collection sponsor stops sponsorship",
- "fullTitle": "integration test: ext. removeCollectionSponsor(): Removing NFT collection sponsor stops sponsorship",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);\nawait substrate_api_1.default(async (api) => {\n // Find unused address\n const zeroBalance = await helpers_1.findUnusedAddress(api);\n // Mint token for unused address\n const itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', zeroBalance.address);\n // Transfer this tokens from unused address to Alice - should fail\n const AsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n const zeroToAlice = api.tx.nft.transfer(helpers_1.normalizeAccountId(alice.address), collectionId, itemId, 0);\n const badTransaction = async function () {\n await substrate_api_1.submitTransactionExpectFailAsync(zeroBalance, zeroToAlice);\n };\n await expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees');\n const BsponsorBalance = new bignumber_js_1.BigNumber((await api.query.system.account(bob.address)).data.free.toString());\n expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;\n});",
- "err": {},
- "uuid": "7340d2b9-1efe-4571-adb6-2fc324d04587",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Remove a sponsor after it was already removed",
- "fullTitle": "integration test: ext. removeCollectionSponsor(): Remove a sponsor after it was already removed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);",
- "err": {},
- "uuid": "989ef0aa-29ba-40e5-a468-77743d0450c7",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Remove sponsor in a collection that never had the sponsor set",
- "fullTitle": "integration test: ext. removeCollectionSponsor(): Remove sponsor in a collection that never had the sponsor set",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);",
- "err": {},
- "uuid": "48c44c61-dfae-46bf-9862-a56e3377f5d3",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Remove sponsor for a collection that had the sponsor set, but not confirmed",
- "fullTitle": "integration test: ext. removeCollectionSponsor(): Remove sponsor for a collection that had the sponsor set, but not confirmed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);",
- "err": {},
- "uuid": "79a34054-2bf6-453f-ab67-996b5a978801",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "7340d2b9-1efe-4571-adb6-2fc324d04587",
- "989ef0aa-29ba-40e5-a468-77743d0450c7",
- "48c44c61-dfae-46bf-9862-a56e3377f5d3",
- "79a34054-2bf6-453f-ab67-996b5a978801"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "46267fd7-8042-4ac8-8efa-9e6b2a450d98",
- "title": "(!negative test!) integration test: ext. removeCollectionSponsor():",
- "fullFile": "/nft_parachain/tests/src/removeCollectionSponsor.test.ts",
- "file": "/src/removeCollectionSponsor.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "(!negative test!) integration test: ext. removeCollectionSponsor(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});",
- "err": {},
- "uuid": "ed73243a-c3b3-47dc-accf-cfb8e03021ae",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "(!negative test!) Remove sponsor for a collection that never existed",
- "fullTitle": "(!negative test!) integration test: ext. removeCollectionSponsor(): (!negative test!) Remove sponsor for a collection that never existed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "// Find the collection that never existed\nlet collectionId = 0;\nawait substrate_api_1.default(async (api) => {\n collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n});\nawait helpers_1.removeCollectionSponsorExpectFailure(collectionId);",
- "err": {},
- "uuid": "e35932f4-4d42-4d65-8d46-7246df195d99",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Remove sponsor for a collection with collection admin permissions",
- "fullTitle": "(!negative test!) integration test: ext. removeCollectionSponsor(): (!negative test!) Remove sponsor for a collection with collection admin permissions",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\nawait helpers_1.removeCollectionSponsorExpectFailure(collectionId, '//Bob');",
- "err": {},
- "uuid": "85ae77c3-2b77-4f93-a49c-5b607907004e",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Remove sponsor for a collection by regular user",
- "fullTitle": "(!negative test!) integration test: ext. removeCollectionSponsor(): (!negative test!) Remove sponsor for a collection by regular user",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.removeCollectionSponsorExpectFailure(collectionId, '//Bob');",
- "err": {},
- "uuid": "7aaae6ca-2617-469d-9192-6689adf16516",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Remove sponsor in a destroyed collection",
- "fullTitle": "(!negative test!) integration test: ext. removeCollectionSponsor(): (!negative test!) Remove sponsor in a destroyed collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);\nawait helpers_1.removeCollectionSponsorExpectFailure(collectionId);",
- "err": {},
- "uuid": "9d7a6e72-16ef-4ce7-a2a3-adf9ab8682a6",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Set - remove - confirm: fails",
- "fullTitle": "(!negative test!) integration test: ext. removeCollectionSponsor(): Set - remove - confirm: fails",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Bob');",
- "err": {},
- "uuid": "271077e2-6ea6-4690-a3a5-2194bb57a35c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Set - confirm - remove - confirm: Sponsor cannot come back",
- "fullTitle": "(!negative test!) integration test: ext. removeCollectionSponsor(): Set - confirm - remove - confirm: Sponsor cannot come back",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId, '//Bob');\nawait helpers_1.removeCollectionSponsorExpectSuccess(collectionId);\nawait helpers_1.confirmSponsorshipExpectFailure(collectionId, '//Bob');",
- "err": {},
- "uuid": "cce11642-dcd7-40f6-bfdb-b1da80351677",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "e35932f4-4d42-4d65-8d46-7246df195d99",
- "85ae77c3-2b77-4f93-a49c-5b607907004e",
- "7aaae6ca-2617-469d-9192-6689adf16516",
- "9d7a6e72-16ef-4ce7-a2a3-adf9ab8682a6",
- "271077e2-6ea6-4690-a3a5-2194bb57a35c",
- "cce11642-dcd7-40f6-bfdb-b1da80351677"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "090e386e-3947-4ceb-b0e9-56c8c3508d7b",
- "title": "Integration Test removeFromContractWhiteList",
- "fullFile": "/nft_parachain/tests/src/removeFromContractWhiteList.test.ts",
- "file": "/src/removeFromContractWhiteList.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "user is no longer whitelisted after removal",
- "fullTitle": "Integration Test removeFromContractWhiteList user is no longer whitelisted after removal",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "30612bcc-b508-4b33-a278-2fe06ac300e1",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "user can't execute contract after removal",
- "fullTitle": "Integration Test removeFromContractWhiteList user can't execute contract after removal",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "bbd33294-82f8-450b-b4cc-e40250a1abbc",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "can be called twice",
- "fullTitle": "Integration Test removeFromContractWhiteList can be called twice",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "9b422317-c895-4d4d-84e2-d5fcb6691899",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [
- "30612bcc-b508-4b33-a278-2fe06ac300e1",
- "bbd33294-82f8-450b-b4cc-e40250a1abbc",
- "9b422317-c895-4d4d-84e2-d5fcb6691899"
- ],
- "skipped": [],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "d47d209d-7b8e-4624-9853-69ac8edb7cae",
- "title": "Negative Integration Test removeFromContractWhiteList",
- "fullFile": "/nft_parachain/tests/src/removeFromContractWhiteList.test.ts",
- "file": "/src/removeFromContractWhiteList.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "fails when called with non-contract address",
- "fullTitle": "Negative Integration Test removeFromContractWhiteList fails when called with non-contract address",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "4f24edbc-cc11-419a-beda-b4f5523bbacc",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "fails when executed by non owner",
- "fullTitle": "Negative Integration Test removeFromContractWhiteList fails when executed by non owner",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "bcbccafd-9285-4e64-9284-5f6db30eb825",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [
- "4f24edbc-cc11-419a-beda-b4f5523bbacc",
- "bcbccafd-9285-4e64-9284-5f6db30eb825"
- ],
- "skipped": [],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "5645c742-0df3-48e9-a87e-17c9b86fc529",
- "title": "Integration Test removeFromWhiteList",
- "fullFile": "/nft_parachain/tests/src/removeFromWhiteList.test.ts",
- "file": "/src/removeFromWhiteList.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test removeFromWhiteList \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "58a47998-94fb-4f5a-b1de-b091d4eb3c89",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "ensure bob is not in whitelist after removal",
- "fullTitle": "Integration Test removeFromWhiteList ensure bob is not in whitelist after removal",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionId, bob.address);\n await helpers_1.removeFromWhiteListExpectSuccess(alice, collectionId, helpers_1.normalizeAccountId(bob.address));\n expect(await helpers_1.isWhitelisted(collectionId, bob.address)).to.be.false;\n});",
- "err": {},
- "uuid": "ce40679f-cb58-4efd-9fab-0c937dbb8a16",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "allows removal from collection with unset whitelist status",
- "fullTitle": "Integration Test removeFromWhiteList allows removal from collection with unset whitelist status",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionWithoutWhitelistId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionWithoutWhitelistId);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionWithoutWhitelistId, bob.address);\n await helpers_1.disableWhiteListExpectSuccess(alice, collectionWithoutWhitelistId);\n await helpers_1.removeFromWhiteListExpectSuccess(alice, collectionWithoutWhitelistId, helpers_1.normalizeAccountId(bob.address));\n});",
- "err": {},
- "uuid": "dde05dbd-559a-45e3-9260-5830c90659ae",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "ce40679f-cb58-4efd-9fab-0c937dbb8a16",
- "dde05dbd-559a-45e3-9260-5830c90659ae"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "19ce9466-ea0d-482a-ab0e-6cbdab561771",
- "title": "Negative Integration Test removeFromWhiteList",
- "fullFile": "/nft_parachain/tests/src/removeFromWhiteList.test.ts",
- "file": "/src/removeFromWhiteList.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Negative Integration Test removeFromWhiteList \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "1a924510-3952-46dd-aa5c-548cfa332fac",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "fails on removal from not existing collection",
- "fullTitle": "Negative Integration Test removeFromWhiteList fails on removal from not existing collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.findNotExistingCollection(api);\n await helpers_1.removeFromWhiteListExpectFailure(alice, collectionId, helpers_1.normalizeAccountId(bob.address));\n});",
- "err": {},
- "uuid": "3469734c-9e2c-4d43-beb3-f4b29eb1bd46",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails on removal from removed collection",
- "fullTitle": "Negative Integration Test removeFromWhiteList fails on removal from removed collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionId, bob.address);\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n await helpers_1.removeFromWhiteListExpectFailure(alice, collectionId, helpers_1.normalizeAccountId(bob.address));\n});",
- "err": {},
- "uuid": "bcbedd90-5b70-413f-84db-44643f560207",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "3469734c-9e2c-4d43-beb3-f4b29eb1bd46",
- "bcbedd90-5b70-413f-84db-44643f560207"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "e52a884e-26af-4ea4-b808-af59702ee39c",
- "title": "Integration Test removeFromWhiteList with collection admin permissions",
- "fullFile": "/nft_parachain/tests/src/removeFromWhiteList.test.ts",
- "file": "/src/removeFromWhiteList.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test removeFromWhiteList with collection admin permissions \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n charlie = privateKey_1.default('//Charlie');\n});",
- "err": {},
- "uuid": "a181856c-c084-4e13-aa7f-c1f70231fe00",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "ensure address is not in whitelist after removal",
- "fullTitle": "Integration Test removeFromWhiteList with collection admin permissions ensure address is not in whitelist after removal",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n await helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionId, charlie.address);\n await helpers_1.removeFromWhiteListExpectSuccess(bob, collectionId, helpers_1.normalizeAccountId(charlie.address));\n expect(await helpers_1.isWhitelisted(collectionId, charlie.address)).to.be.false;\n});",
- "err": {},
- "uuid": "95ab897e-27d4-4d3f-a10b-3c2be388a913",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Collection admin allowed to remove from whitelist with unset whitelist status",
- "fullTitle": "Integration Test removeFromWhiteList with collection admin permissions Collection admin allowed to remove from whitelist with unset whitelist status",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionWithoutWhitelistId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionWithoutWhitelistId);\n await helpers_1.addCollectionAdminExpectSuccess(alice, collectionWithoutWhitelistId, bob);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionWithoutWhitelistId, charlie.address);\n await helpers_1.disableWhiteListExpectSuccess(alice, collectionWithoutWhitelistId);\n await helpers_1.removeFromWhiteListExpectSuccess(bob, collectionWithoutWhitelistId, helpers_1.normalizeAccountId(charlie.address));\n});",
- "err": {},
- "uuid": "65854ca8-cab8-4bec-bff4-8f2b22f904d0",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Regular user can`t remove from whitelist",
- "fullTitle": "Integration Test removeFromWhiteList with collection admin permissions Regular user can`t remove from whitelist",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionWithoutWhitelistId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionWithoutWhitelistId);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionWithoutWhitelistId, charlie.address);\n await helpers_1.removeFromWhiteListExpectFailure(bob, collectionWithoutWhitelistId, helpers_1.normalizeAccountId(charlie.address));\n});",
- "err": {},
- "uuid": "ea3232c6-dc6f-48f1-b0bf-16ff18789fcd",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "95ab897e-27d4-4d3f-a10b-3c2be388a913",
- "65854ca8-cab8-4bec-bff4-8f2b22f904d0",
- "ea3232c6-dc6f-48f1-b0bf-16ff18789fcd"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "d445ff02-9beb-4d72-a551-3cfcbe03f764",
- "title": "Integration Test scheduler base transaction",
- "fullFile": "/nft_parachain/tests/src/scheduler.test.ts",
- "file": "/src/scheduler.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "User can transfer owned token with delay (scheduler)",
- "fullTitle": "Integration Test scheduler base transaction User can transfer owned token with delay (scheduler)",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.setCollectionSponsorExpectSuccess(nftCollectionId, Alice.address);\n await helpers_1.confirmSponsorshipExpectSuccess(nftCollectionId);\n await helpers_1.scheduleTransferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 6000, 4);\n});",
- "err": {},
- "uuid": "a7260324-2729-42a7-9a19-8587cc347edd",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "a7260324-2729-42a7-9a19-8587cc347edd"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "31bca936-fc7a-4283-a857-2a6b853ab612",
- "title": "Negative Integration Test setChainLimits",
- "fullFile": "/nft_parachain/tests/src/setChainLimits.test.ts",
- "file": "/src/setChainLimits.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Negative Integration Test setChainLimits \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n dave = privateKey_1.default('//Dave');\n limits = {\n CollectionNumbersLimit: 1,\n AccountTokenOwnershipLimit: 1,\n CollectionsAdminsLimit: 1,\n CustomDataLimit: 1,\n NftSponsorTransferTimeout: 1,\n FungibleSponsorTransferTimeout: 1,\n RefungibleSponsorTransferTimeout: 1,\n OffchainSchemaLimit: 1,\n VariableOnChainSchemaLimit: 1,\n ConstOnChainSchemaLimit: 1,\n };\n});",
- "err": {},
- "uuid": "d688f74a-285d-42bc-be8d-681e088bb48b",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Collection owner cannot set chain limits",
- "fullTitle": "Negative Integration Test setChainLimits Collection owner cannot set chain limits",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nawait helpers_1.setChainLimitsExpectFailure(alice, limits);",
- "err": {},
- "uuid": "4c3a77eb-6b88-43db-87be-aad42e534e5d",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Collection admin cannot set chain limits",
- "fullTitle": "Negative Integration Test setChainLimits Collection admin cannot set chain limits",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\nawait helpers_1.setChainLimitsExpectFailure(bob, limits);",
- "err": {},
- "uuid": "e10a746b-5eb2-46b4-83c1-73610192c10d",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Regular user cannot set chain limits",
- "fullTitle": "Negative Integration Test setChainLimits Regular user cannot set chain limits",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.setChainLimitsExpectFailure(dave, limits);",
- "err": {},
- "uuid": "80a8e621-e260-4231-bd27-e4f4b15c1634",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "4c3a77eb-6b88-43db-87be-aad42e534e5d",
- "e10a746b-5eb2-46b4-83c1-73610192c10d",
- "80a8e621-e260-4231-bd27-e4f4b15c1634"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "864e8fd6-67ae-4a10-88ad-33850223b651",
- "title": "setCollectionLimits positive",
- "fullFile": "/nft_parachain/tests/src/setCollectionLimits.test.ts",
- "file": "/src/setCollectionLimits.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "setCollectionLimits positive \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n collectionIdForTesting = await helpers_1.createCollectionExpectSuccess({ name: 'A', description: 'B', tokenPrefix: 'C', mode: { type: 'NFT' } });\n});",
- "err": {},
- "uuid": "2cc67a48-a83e-49b2-9c6c-cce236dfc6ff",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "execute setCollectionLimits with predefined params ",
- "fullTitle": "setCollectionLimits positive execute setCollectionLimits with predefined params ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setCollectionLimits(collectionIdForTesting, {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n });\n const events = await substrate_api_1.submitTransactionAsync(alice, tx);\n const result = helpers_1.getCreateItemResult(events);\n // get collection limits defined previously\n const collectionInfo = await helpers_1.getDetailedCollectionInfo(api, collectionIdForTesting);\n // tslint:disable-next-line:no-unused-expression\n expect(result.success).to.be.true;\n expect(collectionInfo.Limits.AccountTokenOwnershipLimit).to.be.equal(accountTokenOwnershipLimit);\n expect(collectionInfo.Limits.SponsoredDataSize).to.be.equal(sponsoredDataSize);\n expect(collectionInfo.Limits.TokenLimit).to.be.equal(tokenLimit);\n expect(collectionInfo.Limits.SponsorTimeout).to.be.equal(sponsorTimeout);\n expect(collectionInfo.Limits.OwnerCanTransfer).to.be.true;\n expect(collectionInfo.Limits.OwnerCanDestroy).to.be.true;\n});",
- "err": {},
- "uuid": "d32d1982-da29-46d9-8d16-10523cd331b6",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Set the same token limit twice",
- "fullTitle": "setCollectionLimits positive Set the same token limit twice",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionLimits = {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n };\n // The first time\n const tx1 = api.tx.nft.setCollectionLimits(collectionIdForTesting, collectionLimits);\n const events1 = await substrate_api_1.submitTransactionAsync(alice, tx1);\n const result1 = helpers_1.getCreateItemResult(events1);\n const collectionInfo1 = await helpers_1.getDetailedCollectionInfo(api, collectionIdForTesting);\n // The second time\n const tx2 = api.tx.nft.setCollectionLimits(collectionIdForTesting, collectionLimits);\n const events2 = await substrate_api_1.submitTransactionAsync(alice, tx2);\n const result2 = helpers_1.getCreateItemResult(events2);\n const collectionInfo2 = await helpers_1.getDetailedCollectionInfo(api, collectionIdForTesting);\n // tslint:disable-next-line:no-unused-expression\n expect(result1.success).to.be.true;\n expect(collectionInfo1.Limits.TokenLimit).to.be.equal(tokenLimit);\n expect(result2.success).to.be.true;\n expect(collectionInfo2.Limits.TokenLimit).to.be.equal(tokenLimit);\n});",
- "err": {},
- "uuid": "6b883ae8-e9cc-436f-b66f-d589dee3774b",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "d32d1982-da29-46d9-8d16-10523cd331b6",
- "6b883ae8-e9cc-436f-b66f-d589dee3774b"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "80730974-8aaf-4b53-837e-843c327f5f32",
- "title": "setCollectionLimits negative",
- "fullFile": "/nft_parachain/tests/src/setCollectionLimits.test.ts",
- "file": "/src/setCollectionLimits.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "setCollectionLimits negative \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n collectionIdForTesting = await helpers_1.createCollectionExpectSuccess({ name: 'A', description: 'B', tokenPrefix: 'C', mode: { type: 'NFT' } });\n});",
- "err": {},
- "uuid": "a19bd118-2c02-44a5-8352-4ba72d5b51ea",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "execute setCollectionLimits for not exists collection",
- "fullTitle": "setCollectionLimits negative execute setCollectionLimits for not exists collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionCount = await helpers_1.getCreatedCollectionCount(api);\n const nonExistedCollectionId = collectionCount + 1;\n tx = api.tx.nft.setCollectionLimits(nonExistedCollectionId, {\n accountTokenOwnershipLimit,\n sponsoredDataSize,\n sponsoredMintSize,\n tokenLimit,\n });\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "53dc0d8c-321e-4901-9157-3fd66bcc15ab",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "execute setCollectionLimits from user who is not owner of this collection",
- "fullTitle": "setCollectionLimits negative execute setCollectionLimits from user who is not owner of this collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setCollectionLimits(collectionIdForTesting, {\n accountTokenOwnershipLimit,\n sponsoredDataSize,\n sponsoredMintSize,\n tokenLimit,\n });\n await expect(substrate_api_1.submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "ddad0ec1-5004-45c0-b755-a8c833b3c744",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "execute setCollectionLimits from admin collection",
- "fullTitle": "setCollectionLimits negative execute setCollectionLimits from admin collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob);\nawait substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setCollectionLimits(collectionIdForTesting, {\n accountTokenOwnershipLimit,\n sponsoredDataSize,\n sponsoredMintSize,\n tokenLimit,\n });\n await expect(substrate_api_1.submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "a62c80c1-5434-4801-9a9b-7a901d3a6e12",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "execute setCollectionLimits with incorrect limits",
- "fullTitle": "setCollectionLimits negative execute setCollectionLimits with incorrect limits",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setCollectionLimits(collectionIdForTesting, {\n accountTokenOwnershipLimit: 'awdawd',\n sponsorTransferTimeout: 'awd',\n sponsoredDataSize: '12312312312312312',\n tokenLimit: '-100',\n });\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "d2e949e0-7f48-4d3c-a12d-8da0910c3ce3",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails when trying to enable OwnerCanTransfer after it was disabled",
- "fullTitle": "setCollectionLimits negative fails when trying to enable OwnerCanTransfer after it was disabled",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: false,\n OwnerCanDestroy: true,\n});\nawait helpers_1.setCollectionLimitsExpectFailure(alice, collectionId, {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n});",
- "err": {},
- "uuid": "9520e496-d043-44a3-bb82-d17eb2499334",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails when trying to enable OwnerCanDestroy after it was disabled",
- "fullTitle": "setCollectionLimits negative fails when trying to enable OwnerCanDestroy after it was disabled",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: true,\n OwnerCanDestroy: false,\n});\nawait helpers_1.setCollectionLimitsExpectFailure(alice, collectionId, {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n});",
- "err": {},
- "uuid": "cbfc2098-3360-4c35-b9a3-1f2459547199",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Setting the higher token limit fails",
- "fullTitle": "setCollectionLimits negative Setting the higher token limit fails",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collectionLimits = {\n AccountTokenOwnershipLimit: accountTokenOwnershipLimit,\n SponsoredMintSize: sponsoredDataSize,\n TokenLimit: tokenLimit,\n SponsorTimeout: sponsorTimeout,\n OwnerCanTransfer: true,\n OwnerCanDestroy: true,\n };\n // The first time\n await helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, collectionLimits);\n // The second time - higher token limit\n collectionLimits.TokenLimit += 1;\n await helpers_1.setCollectionLimitsExpectFailure(alice, collectionId, collectionLimits);\n});",
- "err": {},
- "uuid": "ac5ff0da-daa7-4509-b527-09cc176b1d40",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "53dc0d8c-321e-4901-9157-3fd66bcc15ab",
- "ddad0ec1-5004-45c0-b755-a8c833b3c744",
- "a62c80c1-5434-4801-9a9b-7a901d3a6e12",
- "d2e949e0-7f48-4d3c-a12d-8da0910c3ce3",
- "9520e496-d043-44a3-bb82-d17eb2499334",
- "cbfc2098-3360-4c35-b9a3-1f2459547199",
- "ac5ff0da-daa7-4509-b527-09cc176b1d40"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "0ec248e7-8ae8-4211-8c0e-048f7bc90578",
- "title": "integration test: ext. setCollectionSponsor():",
- "fullFile": "/nft_parachain/tests/src/setCollectionSponsor.test.ts",
- "file": "/src/setCollectionSponsor.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "integration test: ext. setCollectionSponsor(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n});",
- "err": {},
- "uuid": "2efa7181-c0db-42f7-9833-9c853fb5a191",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Set NFT collection sponsor",
- "fullTitle": "integration test: ext. setCollectionSponsor(): Set NFT collection sponsor",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);",
- "err": {},
- "uuid": "6fd9bfef-84c0-41ef-8b43-bd993cfd739f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Set Fungible collection sponsor",
- "fullTitle": "integration test: ext. setCollectionSponsor(): Set Fungible collection sponsor",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);",
- "err": {},
- "uuid": "61a720d0-0fe1-4b46-967c-c01d70b6242c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Set ReFungible collection sponsor",
- "fullTitle": "integration test: ext. setCollectionSponsor(): Set ReFungible collection sponsor",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);",
- "err": {},
- "uuid": "cb5646f4-5aba-4d98-9817-de2c9bd42fce",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Set the same sponsor repeatedly",
- "fullTitle": "integration test: ext. setCollectionSponsor(): Set the same sponsor repeatedly",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);",
- "err": {},
- "uuid": "86441019-203b-4476-af25-ccba5b9e2741",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Replace collection sponsor",
- "fullTitle": "integration test: ext. setCollectionSponsor(): Replace collection sponsor",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nconst keyring = new api_1.Keyring({ type: 'sr25519' });\nconst charlie = keyring.addFromUri('//Charlie');\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, bob.address);\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, charlie.address);",
- "err": {},
- "uuid": "24d56994-b714-4916-a755-bbae2775d2c4",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "6fd9bfef-84c0-41ef-8b43-bd993cfd739f",
- "61a720d0-0fe1-4b46-967c-c01d70b6242c",
- "cb5646f4-5aba-4d98-9817-de2c9bd42fce",
- "86441019-203b-4476-af25-ccba5b9e2741",
- "24d56994-b714-4916-a755-bbae2775d2c4"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "cec3e13f-3894-41ae-b288-c60bfcf771dd",
- "title": "(!negative test!) integration test: ext. setCollectionSponsor():",
- "fullFile": "/nft_parachain/tests/src/setCollectionSponsor.test.ts",
- "file": "/src/setCollectionSponsor.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "(!negative test!) integration test: ext. setCollectionSponsor(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n charlie = keyring.addFromUri('//Charlie');\n});",
- "err": {},
- "uuid": "6e23f95c-a8f1-4af9-905e-d6cd335b614f",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "(!negative test!) Add sponsor with a non-owner",
- "fullTitle": "(!negative test!) integration test: ext. setCollectionSponsor(): (!negative test!) Add sponsor with a non-owner",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectFailure(collectionId, bob.address, '//Bob');",
- "err": {},
- "uuid": "683d509e-09c6-4df6-928b-aa8f1ca81b8c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Add sponsor to a collection that never existed",
- "fullTitle": "(!negative test!) integration test: ext. setCollectionSponsor(): (!negative test!) Add sponsor to a collection that never existed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "// Find the collection that never existed\nlet collectionId = 0;\nawait substrate_api_1.default(async (api) => {\n collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n});\nawait helpers_1.setCollectionSponsorExpectFailure(collectionId, bob.address);",
- "err": {},
- "uuid": "8f54053d-0d3a-4948-ad54-716e75cd82e0",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Add sponsor to a collection that was destroyed",
- "fullTitle": "(!negative test!) integration test: ext. setCollectionSponsor(): (!negative test!) Add sponsor to a collection that was destroyed",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.destroyCollectionExpectSuccess(collectionId);\nawait helpers_1.setCollectionSponsorExpectFailure(collectionId, bob.address);",
- "err": {},
- "uuid": "40568762-50de-4901-8db1-050f95fb2b52",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "(!negative test!) Collection admin add sponsor",
- "fullTitle": "(!negative test!) integration test: ext. setCollectionSponsor(): (!negative test!) Collection admin add sponsor",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\nawait helpers_1.setCollectionSponsorExpectFailure(collectionId, charlie.address, '//Bob');",
- "err": {},
- "uuid": "a33535e3-d85d-45f3-a599-7b4b2f2bc4ce",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "683d509e-09c6-4df6-928b-aa8f1ca81b8c",
- "8f54053d-0d3a-4948-ad54-716e75cd82e0",
- "40568762-50de-4901-8db1-050f95fb2b52",
- "a33535e3-d85d-45f3-a599-7b4b2f2bc4ce"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "158f543c-d1ad-433b-a908-e239b62b96d3",
- "title": "Integration Test ext. setConstOnChainSchema()",
- "fullFile": "/nft_parachain/tests/src/setConstOnChainSchema.test.ts",
- "file": "/src/setConstOnChainSchema.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Run extrinsic with parameters of the collection id, set the scheme",
- "fullTitle": "Integration Test ext. setConstOnChainSchema() Run extrinsic with parameters of the collection id, set the scheme",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.eq(Alice.address);\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);\n await substrate_api_1.submitTransactionAsync(Alice, setShema);\n});",
- "err": {},
- "uuid": "d112aefc-3e9d-46fb-b4a9-b0e0b8dc4d28",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Collection admin can set the scheme",
- "fullTitle": "Integration Test ext. setConstOnChainSchema() Collection admin can set the scheme",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.eq(Alice.address);\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);\n await substrate_api_1.submitTransactionAsync(Bob, setShema);\n});",
- "err": {},
- "uuid": "9af30569-5854-4062-be4e-a714e755a189",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Checking collection data using the ConstOnChainSchema parameter",
- "fullTitle": "Integration Test ext. setConstOnChainSchema() Checking collection data using the ConstOnChainSchema parameter",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);\n await substrate_api_1.submitTransactionAsync(Alice, setShema);\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.ConstOnChainSchema.toString()).to.be.eq(Shema);\n});",
- "err": {},
- "uuid": "22077b7e-d757-4822-894a-749f8188e9bd",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "d112aefc-3e9d-46fb-b4a9-b0e0b8dc4d28",
- "9af30569-5854-4062-be4e-a714e755a189",
- "22077b7e-d757-4822-894a-749f8188e9bd"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "28e4fb50-d2ac-49de-81fa-1a240770f61a",
- "title": "Negative Integration Test ext. setConstOnChainSchema()",
- "fullFile": "/nft_parachain/tests/src/setConstOnChainSchema.test.ts",
- "file": "/src/setConstOnChainSchema.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Set a non-existent collection",
- "fullTitle": "Negative Integration Test ext. setConstOnChainSchema() Set a non-existent collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: radix\n const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, setShema)).to.be.rejected;\n});",
- "err": {},
- "uuid": "7ce3cde5-be29-4d65-9320-46cc0d8a4f31",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Set a previously deleted collection",
- "fullTitle": "Negative Integration Test ext. setConstOnChainSchema() Set a previously deleted collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, setShema)).to.be.rejected;\n});",
- "err": {},
- "uuid": "9ee1b42d-b518-4090-a17a-dd57e2186940",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Set invalid data in schema (size too large:> 1024b)",
- "fullTitle": "Negative Integration Test ext. setConstOnChainSchema() Set invalid data in schema (size too large:> 1024b)",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, largeShema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, setShema)).to.be.rejected;\n});",
- "err": {},
- "uuid": "3fb38da2-5f4f-4929-aed8-07146645f2ed",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Execute method not on behalf of the collection owner",
- "fullTitle": "Negative Integration Test ext. setConstOnChainSchema() Execute method not on behalf of the collection owner",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.eq(Alice.address);\n const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Bob, setShema)).to.be.rejected;\n});",
- "err": {},
- "uuid": "75fdd293-994b-4984-b654-f245487e44d2",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "7ce3cde5-be29-4d65-9320-46cc0d8a4f31",
- "9ee1b42d-b518-4090-a17a-dd57e2186940",
- "3fb38da2-5f4f-4929-aed8-07146645f2ed",
- "75fdd293-994b-4984-b654-f245487e44d2"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "e78dc91b-d806-46dd-984e-ec046f502cd2",
- "title": "Integration Test setContractSponsoringRateLimit",
- "fullFile": "/nft_parachain/tests/src/setContractSponsoringRateLimit.test.ts",
- "file": "/src/setContractSponsoringRateLimit.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "ensure sponsored contract can't be called twice without pause for free",
- "fullTitle": "Integration Test setContractSponsoringRateLimit ensure sponsored contract can't be called twice without pause for free",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "135d3e1d-e004-44c4-9e22-3d6a253435c0",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "ensure sponsored contract can be called twice with pause for free",
- "fullTitle": "Integration Test setContractSponsoringRateLimit ensure sponsored contract can be called twice with pause for free",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "4b560f0c-46d1-49a7-b5a9-5496c91234fc",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [
- "135d3e1d-e004-44c4-9e22-3d6a253435c0",
- "4b560f0c-46d1-49a7-b5a9-5496c91234fc"
- ],
- "skipped": [],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "bc7ada2a-db31-43ce-a802-033605a598f1",
- "title": "Negative Integration Test setContractSponsoringRateLimit",
- "fullFile": "/nft_parachain/tests/src/setContractSponsoringRateLimit.test.ts",
- "file": "/src/setContractSponsoringRateLimit.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "fails when called for non-contract address",
- "fullTitle": "Negative Integration Test setContractSponsoringRateLimit fails when called for non-contract address",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "e39de7ef-40bc-4d8c-aae1-0b7745bad05e",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "fails when called by non-owning user",
- "fullTitle": "Negative Integration Test setContractSponsoringRateLimit fails when called by non-owning user",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "30b5ab68-1f40-4d2a-b589-6d866974e75c",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [
- "e39de7ef-40bc-4d8c-aae1-0b7745bad05e",
- "30b5ab68-1f40-4d2a-b589-6d866974e75c"
- ],
- "skipped": [],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "eb5cbed0-02a5-444a-93de-c94fef224554",
- "title": "Integration Test setMintPermission",
- "fullFile": "/nft_parachain/tests/src/setMintPermission.test.ts",
- "file": "/src/setMintPermission.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test setMintPermission \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "191f98d5-26a1-4910-8218-af236af77982",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "ensure white-listed non-privileged address can mint tokens",
- "fullTitle": "Integration Test setMintPermission ensure white-listed non-privileged address can mint tokens",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, true);\n await helpers_1.addToWhiteListExpectSuccess(alice, collectionId, bob.address);\n await helpers_1.createItemExpectSuccess(bob, collectionId, 'NFT');\n});",
- "err": {},
- "uuid": "884235b9-da39-4217-9f9a-73fac056921c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "can be enabled twice",
- "fullTitle": "Integration Test setMintPermission can be enabled twice",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, true);\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, true);\n});",
- "err": {},
- "uuid": "98173ea4-9d53-4b14-a61c-78b6c9158132",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "can be disabled twice",
- "fullTitle": "Integration Test setMintPermission can be disabled twice",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, true);\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, false);\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, false);\n});",
- "err": {},
- "uuid": "2aa44b95-b911-4a5e-9f3d-fda7b0c3fbda",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "884235b9-da39-4217-9f9a-73fac056921c",
- "98173ea4-9d53-4b14-a61c-78b6c9158132",
- "2aa44b95-b911-4a5e-9f3d-fda7b0c3fbda"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "cbc6e3f1-5d78-4769-9afd-72998c570eb6",
- "title": "Negative Integration Test setMintPermission",
- "fullFile": "/nft_parachain/tests/src/setMintPermission.test.ts",
- "file": "/src/setMintPermission.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Negative Integration Test setMintPermission \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "34da7a1c-2588-45e4-a3dd-8238f60e2e11",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "fails on not existing collection",
- "fullTitle": "Negative Integration Test setMintPermission fails on not existing collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const nonExistingCollection = await helpers_1.findNotExistingCollection(api);\n await helpers_1.setMintPermissionExpectFailure(alice, nonExistingCollection, true);\n});",
- "err": {},
- "uuid": "2646ad83-06be-4fee-92b4-0316359e4d47",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails on removed collection",
- "fullTitle": "Negative Integration Test setMintPermission fails on removed collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const removedCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.destroyCollectionExpectSuccess(removedCollectionId);\n await helpers_1.setMintPermissionExpectFailure(alice, removedCollectionId, true);\n});",
- "err": {},
- "uuid": "06542d72-bd12-4943-a060-726f91838cf6",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails when not collection owner tries to set mint status",
- "fullTitle": "Negative Integration Test setMintPermission fails when not collection owner tries to set mint status",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nawait helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\nawait helpers_1.setMintPermissionExpectFailure(bob, collectionId, true);",
- "err": {},
- "uuid": "b5f2f65c-cebf-4155-8a5b-f64db02dfd8b",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Collection admin fails on set",
- "fullTitle": "Negative Integration Test setMintPermission Collection admin fails on set",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\n await helpers_1.setMintPermissionExpectFailure(bob, collectionId, true);\n});",
- "err": {},
- "uuid": "d5919771-6a70-4e9b-978f-dae88e7bb206",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "ensure non-white-listed non-privileged address can't mint tokens",
- "fullTitle": "Negative Integration Test setMintPermission ensure non-white-listed non-privileged address can't mint tokens",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n await helpers_1.enableWhiteListExpectSuccess(alice, collectionId);\n await helpers_1.setMintPermissionExpectSuccess(alice, collectionId, true);\n await helpers_1.createItemExpectFailure(bob, collectionId, 'NFT');\n});",
- "err": {},
- "uuid": "17be383a-4cda-4426-9104-ca99e965bccc",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "2646ad83-06be-4fee-92b4-0316359e4d47",
- "06542d72-bd12-4943-a060-726f91838cf6",
- "b5f2f65c-cebf-4155-8a5b-f64db02dfd8b",
- "d5919771-6a70-4e9b-978f-dae88e7bb206",
- "17be383a-4cda-4426-9104-ca99e965bccc"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "8ee811c1-d214-486c-9cf1-2457e3e040d0",
- "title": "Integration Test setOffchainSchema",
- "fullFile": "/nft_parachain/tests/src/setOffchainSchema.test.ts",
- "file": "/src/setOffchainSchema.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test setOffchainSchema \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "784ee8b7-3378-496c-9630-39ea92fb5387",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "execute setOffchainSchema, verify data was set",
- "fullTitle": "Integration Test setOffchainSchema execute setOffchainSchema, verify data was set",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nawait helpers_1.setOffchainSchemaExpectSuccess(alice, collectionId, DATA);\nconst collection = await helpers_1.queryCollectionExpectSuccess(collectionId);\nexpect(collection.OffchainSchema).to.be.equal('0x' + Buffer.from(DATA).toString('hex'));",
- "err": {},
- "uuid": "74df46ab-1974-4c14-b1c8-b44107edf519",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "execute setOffchainSchema (collection admin), verify data was set",
- "fullTitle": "Integration Test setOffchainSchema execute setOffchainSchema (collection admin), verify data was set",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nawait helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\nawait helpers_1.setOffchainSchemaExpectSuccess(bob, collectionId, DATA);\nconst collection = await helpers_1.queryCollectionExpectSuccess(collectionId);\nexpect(collection.OffchainSchema).to.be.equal('0x' + Buffer.from(DATA).toString('hex'));",
- "err": {},
- "uuid": "a96f3c18-592c-4597-9516-3f5186e54953",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "74df46ab-1974-4c14-b1c8-b44107edf519",
- "a96f3c18-592c-4597-9516-3f5186e54953"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "128add77-4dab-49aa-93c8-f00f156e2fe8",
- "title": "Negative Integration Test setOffchainSchema",
- "fullFile": "/nft_parachain/tests/src/setOffchainSchema.test.ts",
- "file": "/src/setOffchainSchema.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Negative Integration Test setOffchainSchema \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n validCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n});",
- "err": {},
- "uuid": "42ceb947-54d1-43bd-818f-e2e6579f5bf4",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "fails on not existing collection id",
- "fullTitle": "Negative Integration Test setOffchainSchema fails on not existing collection id",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const nonExistingCollectionId = await substrate_api_1.default(helpers_1.findNotExistingCollection);\nawait helpers_1.setOffchainSchemaExpectFailure(alice, nonExistingCollectionId, DATA);",
- "err": {},
- "uuid": "57ef09b4-431d-44db-b422-f551119d8a58",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails on destroyed collection id",
- "fullTitle": "Negative Integration Test setOffchainSchema fails on destroyed collection id",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const destroyedCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nawait helpers_1.destroyCollectionExpectSuccess(destroyedCollectionId);\nawait helpers_1.setOffchainSchemaExpectFailure(alice, destroyedCollectionId, DATA);",
- "err": {},
- "uuid": "03fec951-9f04-44e6-bd91-b3db5006f811",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails on too long data",
- "fullTitle": "Negative Integration Test setOffchainSchema fails on too long data",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const tooLongData = new Array(4097).fill(0xff);\nawait helpers_1.setOffchainSchemaExpectFailure(alice, validCollectionId, tooLongData);",
- "err": {},
- "uuid": "0c79ca69-2103-4006-807b-ca84b88a4d3f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails on execution by non-owner",
- "fullTitle": "Negative Integration Test setOffchainSchema fails on execution by non-owner",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.setOffchainSchemaExpectFailure(bob, validCollectionId, DATA);",
- "err": {},
- "uuid": "e24a2704-3e4b-4e16-9bbf-8469e1075273",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "57ef09b4-431d-44db-b422-f551119d8a58",
- "03fec951-9f04-44e6-bd91-b3db5006f811",
- "0c79ca69-2103-4006-807b-ca84b88a4d3f",
- "e24a2704-3e4b-4e16-9bbf-8469e1075273"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "21cd6275-d772-43e4-8107-49172c63e008",
- "title": "Integration Test setPublicAccessMode(): ",
- "fullFile": "/nft_parachain/tests/src/setPublicAccessMode.test.ts",
- "file": "/src/setPublicAccessMode.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test setPublicAccessMode(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "2c502666-f62e-4258-b153-af208488ecd1",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Run extrinsic with collection id parameters, set the whitelist mode for the collection",
- "fullTitle": "Integration Test setPublicAccessMode(): Run extrinsic with collection id parameters, set the whitelist mode for the collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\n await helpers_1.enablePublicMintingExpectSuccess(Alice, collectionId);\n await helpers_1.addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);\n await helpers_1.createItemExpectSuccess(Bob, collectionId, 'NFT', Bob.address);\n});",
- "err": {},
- "uuid": "55b032ac-9618-4054-95ea-d81ba90b0c90",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Whitelisted collection limits",
- "fullTitle": "Integration Test setPublicAccessMode(): Whitelisted collection limits",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\n await helpers_1.enablePublicMintingExpectSuccess(Alice, collectionId);\n const tx = api.tx.nft.createItem(collectionId, helpers_1.normalizeAccountId(Bob.address), 'NFT');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Bob, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "1a73aee5-8fbf-4c9e-8597-1fd85d8535b9",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "55b032ac-9618-4054-95ea-d81ba90b0c90",
- "1a73aee5-8fbf-4c9e-8597-1fd85d8535b9"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "2b95666d-f34b-4ed3-acf5-fdd7ea14f453",
- "title": "Negative Integration Test ext. setPublicAccessMode(): ",
- "fullFile": "/nft_parachain/tests/src/setPublicAccessMode.test.ts",
- "file": "/src/setPublicAccessMode.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Set a non-existent collection",
- "fullTitle": "Negative Integration Test ext. setPublicAccessMode(): Set a non-existent collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: radix\n const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n const tx = api.tx.nft.setPublicAccessMode(collectionId, 'WhiteList');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "bf038639-2b3a-4e55-8fd8-87fc2dd2079f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Set the collection that has been deleted",
- "fullTitle": "Negative Integration Test ext. setPublicAccessMode(): Set the collection that has been deleted",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n const tx = api.tx.nft.setPublicAccessMode(collectionId, 'WhiteList');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "0869df88-a579-4e57-82e3-ed0cec2df308",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Re-set the list mode already set in quantity",
- "fullTitle": "Negative Integration Test ext. setPublicAccessMode(): Re-set the list mode already set in quantity",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\n await helpers_1.enableWhiteListExpectSuccess(Alice, collectionId);\n});",
- "err": {},
- "uuid": "c15c0080-3c65-4afd-89e5-b6ac7c08880a",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Execute method not on behalf of the collection owner",
- "fullTitle": "Negative Integration Test ext. setPublicAccessMode(): Execute method not on behalf of the collection owner",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const tx = api.tx.nft.setPublicAccessMode(collectionId, 'WhiteList');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Bob, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "65f44b07-e980-4937-a64e-966cc44cdfd0",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "bf038639-2b3a-4e55-8fd8-87fc2dd2079f",
- "0869df88-a579-4e57-82e3-ed0cec2df308",
- "c15c0080-3c65-4afd-89e5-b6ac7c08880a",
- "65f44b07-e980-4937-a64e-966cc44cdfd0"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "fe633113-3571-4966-8ef2-f21169ed6919",
- "title": "Negative Integration Test ext. collection admin setPublicAccessMode(): ",
- "fullFile": "/nft_parachain/tests/src/setPublicAccessMode.test.ts",
- "file": "/src/setPublicAccessMode.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Negative Integration Test ext. collection admin setPublicAccessMode(): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n});",
- "err": {},
- "uuid": "67f09b42-dea1-4c38-ae29-14ec5b16ac2f",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "setPublicAccessMode by collection admin",
- "fullTitle": "Negative Integration Test ext. collection admin setPublicAccessMode(): setPublicAccessMode by collection admin",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: no-bitwise\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const tx = api.tx.nft.setPublicAccessMode(collectionId, 'WhiteList');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Bob, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "f7f2e202-851a-4608-8011-59ed6f8cfd89",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "f7f2e202-851a-4608-8011-59ed6f8cfd89"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "95210d41-0381-4266-a470-6b1c1a8dd7d9",
- "title": "hooks",
- "fullFile": "/nft_parachain/tests/src/setSchemaVersion.test.ts",
- "file": "/src/setSchemaVersion.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "hooks \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n});",
- "err": {},
- "uuid": "65514693-ecaf-402a-a914-8207dc6e0e64",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "choose or create collection for testing",
- "fullTitle": "hooks choose or create collection for testing",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n collectionIdForTesting = await helpers_1.createCollectionExpectSuccess({ name: 'A', description: 'B', tokenPrefix: 'C', mode: { type: 'NFT' } });\n});",
- "err": {},
- "uuid": "5dd8b15a-e1e3-432c-a2d1-c3f239c17777",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "5dd8b15a-e1e3-432c-a2d1-c3f239c17777"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "b29cdf70-5c2b-4f4f-b53e-72c1180da4f5",
- "title": "setSchemaVersion positive",
- "fullFile": "/nft_parachain/tests/src/setSchemaVersion.test.ts",
- "file": "/src/setSchemaVersion.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "setSchemaVersion positive \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n});",
- "err": {},
- "uuid": "9013432b-5ba4-4bc8-a7a2-cde5e009de3e",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "execute setSchemaVersion with image url and unique ",
- "fullTitle": "setSchemaVersion positive execute setSchemaVersion with image url and unique ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');\n const events = await substrate_api_1.submitTransactionAsync(alice, tx);\n const result = helpers_1.getCreateItemResult(events);\n const collectionInfo = await helpers_1.getDetailedCollectionInfo(api, collectionIdForTesting);\n // tslint:disable-next-line:no-unused-expression\n expect(result.success).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n expect(collectionInfo).to.be.exist;\n // tslint:disable-next-line:no-unused-expression\n expect(collectionInfo ? collectionInfo.SchemaVersion.toString() : '').to.be.equal('Unique');\n});",
- "err": {},
- "uuid": "b1f37795-e81d-406d-87f8-c5dadaa5624e",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "b1f37795-e81d-406d-87f8-c5dadaa5624e"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "6b9969df-88db-40ee-8830-8ae2d4577acb",
- "title": "Collection admin setSchemaVersion positive",
- "fullFile": "/nft_parachain/tests/src/setSchemaVersion.test.ts",
- "file": "/src/setSchemaVersion.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Collection admin setSchemaVersion positive \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n bob = keyring.addFromUri('//Bob');\n await helpers_1.addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob);\n});",
- "err": {},
- "uuid": "499d6f5d-3966-4b81-b3a1-e140c0f46819",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "execute setSchemaVersion with image url and unique ",
- "fullTitle": "Collection admin setSchemaVersion positive execute setSchemaVersion with image url and unique ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');\n const events = await substrate_api_1.submitTransactionAsync(bob, tx);\n const result = helpers_1.getCreateItemResult(events);\n const collectionInfo = await helpers_1.getDetailedCollectionInfo(api, collectionIdForTesting);\n // tslint:disable-next-line:no-unused-expression\n expect(result.success).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n expect(collectionInfo).to.be.exist;\n // tslint:disable-next-line:no-unused-expression\n expect(collectionInfo ? collectionInfo.SchemaVersion.toString() : '').to.be.equal('Unique');\n});",
- "err": {},
- "uuid": "01b1449a-50b5-4294-b820-94be9a867866",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "validate schema version with just entered data",
- "fullTitle": "Collection admin setSchemaVersion positive validate schema version with just entered data",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'ImageURL');\n const events = await substrate_api_1.submitTransactionAsync(bob, tx);\n const result = helpers_1.getCreateItemResult(events);\n const collectionInfo = await helpers_1.getDetailedCollectionInfo(api, collectionIdForTesting);\n // tslint:disable-next-line:no-unused-expression\n expect(result.success).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n expect(collectionInfo).to.be.exist;\n // tslint:disable-next-line:no-unused-expression\n expect(collectionInfo ? collectionInfo.SchemaVersion.toString() : '').to.be.equal('ImageURL');\n});",
- "err": {},
- "uuid": "f3f49e1a-d105-4784-a94b-f19feafab72e",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "01b1449a-50b5-4294-b820-94be9a867866",
- "f3f49e1a-d105-4784-a94b-f19feafab72e"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "cca36752-479c-4b26-9c41-9ab7c1f97063",
- "title": "setSchemaVersion negative",
- "fullFile": "/nft_parachain/tests/src/setSchemaVersion.test.ts",
- "file": "/src/setSchemaVersion.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "setSchemaVersion negative \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const keyring = new api_1.Keyring({ type: 'sr25519' });\n alice = keyring.addFromUri('//Alice');\n charlie = keyring.addFromUri('//Charlie');\n});",
- "err": {},
- "uuid": "b4dad0a8-e978-4a1f-9a29-5c2bc9f8b228",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "execute setSchemaVersion for not exists collection",
- "fullTitle": "setSchemaVersion negative execute setSchemaVersion for not exists collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionCount = await helpers_1.getCreatedCollectionCount(api);\n const nonExistedCollectionId = collectionCount + 1;\n tx = api.tx.nft.setSchemaVersion(nonExistedCollectionId, 'ImageURL');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "711dd282-06df-4b27-ad74-4817c4199cbe",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "execute setSchemaVersion with not correct schema version",
- "fullTitle": "setSchemaVersion negative execute setSchemaVersion with not correct schema version",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const consoleError = console.error;\n console.error = () => { };\n try {\n tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Test');\n await substrate_api_1.submitTransactionAsync(alice, tx);\n }\n catch (e) {\n // tslint:disable-next-line:no-unused-expression\n expect(e).to.be.exist;\n }\n finally {\n console.error = consoleError;\n }\n});",
- "err": {},
- "uuid": "03934978-2e4a-416e-a7bd-322c1bf6998d",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "execute setSchemaVersion for deleted collection",
- "fullTitle": "setSchemaVersion negative execute setSchemaVersion for deleted collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n await helpers_1.destroyCollectionExpectSuccess(collectionIdForTesting);\n tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'ImageURL');\n await expect(substrate_api_1.submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "0f71035a-7ee8-49d5-9108-8c3a8cb20746",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Regular user can`t execute setSchemaVersion with image url and unique ",
- "fullTitle": "setSchemaVersion negative Regular user can`t execute setSchemaVersion with image url and unique ",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');\n await expect(substrate_api_1.submitTransactionAsync(charlie, tx)).to.be.rejected;\n});",
- "err": {},
- "uuid": "3340ff9a-6b05-4d6f-8008-742400241c25",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "711dd282-06df-4b27-ad74-4817c4199cbe",
- "03934978-2e4a-416e-a7bd-322c1bf6998d",
- "0f71035a-7ee8-49d5-9108-8c3a8cb20746",
- "3340ff9a-6b05-4d6f-8008-742400241c25"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "0e1d8b18-361d-486f-b15e-c942702380ce",
- "title": "Integration Test setVariableMetaData",
- "fullFile": "/nft_parachain/tests/src/setVariableMetaData.test.ts",
- "file": "/src/setVariableMetaData.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test setVariableMetaData \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT');\n});",
- "err": {},
- "uuid": "fda3fb20-122c-4c58-a568-38d5df352f10",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "execute setVariableMetaData",
- "fullTitle": "Integration Test setVariableMetaData execute setVariableMetaData",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.setVariableMetaDataExpectSuccess(alice, collectionId, tokenId, data);",
- "err": {},
- "uuid": "e6809f64-bb74-4063-af89-26ec8b8ccfa1",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "verify data was set",
- "fullTitle": "Integration Test setVariableMetaData verify data was set",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const item = (await api.query.nft.nftItemList(collectionId, tokenId)).unwrap();\n expect(Array.from(item.VariableData)).to.deep.equal(Array.from(data));\n});",
- "err": {},
- "uuid": "41676afc-1825-4f06-91ba-7d86efc503d2",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "e6809f64-bb74-4063-af89-26ec8b8ccfa1",
- "41676afc-1825-4f06-91ba-7d86efc503d2"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "5d5baf3a-85e8-457a-837c-aad3479ae0fa",
- "title": "Integration Test collection admin setVariableMetaData",
- "fullFile": "/nft_parachain/tests/src/setVariableMetaData.test.ts",
- "file": "/src/setVariableMetaData.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test collection admin setVariableMetaData \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n collectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n tokenId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT');\n await helpers_1.addCollectionAdminExpectSuccess(alice, collectionId, bob);\n});",
- "err": {},
- "uuid": "80e76546-37db-4019-a7d4-7c55efa8c3c7",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "execute setVariableMetaData",
- "fullTitle": "Integration Test collection admin setVariableMetaData execute setVariableMetaData",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.setVariableMetaDataExpectSuccess(bob, collectionId, tokenId, data);",
- "err": {},
- "uuid": "a729be6d-0a5f-453a-b96c-0abe0920eb11",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "verify data was set",
- "fullTitle": "Integration Test collection admin setVariableMetaData verify data was set",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const item = (await api.query.nft.nftItemList(collectionId, tokenId)).unwrap();\n expect(Array.from(item.VariableData)).to.deep.equal(Array.from(data));\n});",
- "err": {},
- "uuid": "5d706d87-49db-4147-9b21-896aafd8a741",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "a729be6d-0a5f-453a-b96c-0abe0920eb11",
- "5d706d87-49db-4147-9b21-896aafd8a741"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "8c8b8314-a60a-46d6-9f74-eedbe192ba40",
- "title": "Negative Integration Test setVariableMetaData",
- "fullFile": "/nft_parachain/tests/src/setVariableMetaData.test.ts",
- "file": "/src/setVariableMetaData.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Negative Integration Test setVariableMetaData \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n alice = privateKey_1.default('//Alice');\n bob = privateKey_1.default('//Bob');\n validCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\n validTokenId = await helpers_1.createItemExpectSuccess(alice, validCollectionId, 'NFT');\n});",
- "err": {},
- "uuid": "5f12f2fd-31df-495d-aea7-4b99d560b28c",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "fails on not existing collection id",
- "fullTitle": "Negative Integration Test setVariableMetaData fails on not existing collection id",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const nonExistingCollectionId = await helpers_1.findNotExistingCollection(api);\n await helpers_1.setVariableMetaDataExpectFailure(alice, nonExistingCollectionId, 1, data);\n});",
- "err": {},
- "uuid": "1520d86b-d0f4-4a03-93a4-c4d141613a26",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails on removed collection id",
- "fullTitle": "Negative Integration Test setVariableMetaData fails on removed collection id",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const removedCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nconst removedCollectionTokenId = await helpers_1.createItemExpectSuccess(alice, removedCollectionId, 'NFT');\nawait helpers_1.destroyCollectionExpectSuccess(removedCollectionId);\nawait helpers_1.setVariableMetaDataExpectFailure(alice, removedCollectionId, removedCollectionTokenId, data);",
- "err": {},
- "uuid": "44afa873-e07e-407c-bf4b-b79bb327ba52",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails on removed token",
- "fullTitle": "Negative Integration Test setVariableMetaData fails on removed token",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const removedTokenCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'NFT' } });\nconst removedTokenId = await helpers_1.createItemExpectSuccess(alice, removedTokenCollectionId, 'NFT');\nawait helpers_1.burnItemExpectSuccess(alice, removedTokenCollectionId, removedTokenId);\nawait helpers_1.setVariableMetaDataExpectFailure(alice, removedTokenCollectionId, removedTokenId, data);",
- "err": {},
- "uuid": "98e556c2-b933-484b-9d00-54f72c66bfb4",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails on not existing token",
- "fullTitle": "Negative Integration Test setVariableMetaData fails on not existing token",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const nonExistingTokenId = validTokenId + 1;\nawait helpers_1.setVariableMetaDataExpectFailure(alice, validCollectionId, nonExistingTokenId, data);",
- "err": {},
- "uuid": "00979659-a78e-45e7-a73d-18cb03a61c77",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails on too long data",
- "fullTitle": "Negative Integration Test setVariableMetaData fails on too long data",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const tooLongData = new Array(4097).fill(0xff);\nawait helpers_1.setVariableMetaDataExpectFailure(alice, validCollectionId, validTokenId, tooLongData);",
- "err": {},
- "uuid": "30efa555-6e64-4176-b43c-59aca9e238cf",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails on fungible token",
- "fullTitle": "Negative Integration Test setVariableMetaData fails on fungible token",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst fungibleTokenId = await helpers_1.createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.setVariableMetaDataExpectFailure(alice, fungibleCollectionId, fungibleTokenId, data);",
- "err": {},
- "uuid": "9487f809-f766-46d8-810c-db65c513e39d",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails on bad sender",
- "fullTitle": "Negative Integration Test setVariableMetaData fails on bad sender",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await helpers_1.setVariableMetaDataExpectFailure(bob, validCollectionId, validTokenId, data);",
- "err": {},
- "uuid": "303cec06-511c-4cb9-82d5-f8d2a651a289",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "1520d86b-d0f4-4a03-93a4-c4d141613a26",
- "44afa873-e07e-407c-bf4b-b79bb327ba52",
- "98e556c2-b933-484b-9d00-54f72c66bfb4",
- "00979659-a78e-45e7-a73d-18cb03a61c77",
- "30efa555-6e64-4176-b43c-59aca9e238cf",
- "9487f809-f766-46d8-810c-db65c513e39d",
- "303cec06-511c-4cb9-82d5-f8d2a651a289"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "1a362ae9-3751-4449-8623-b41905efddb4",
- "title": "Integration Test setVariableMetadataSponsoringRateLimit",
- "fullFile": "/nft_parachain/tests/src/setVariableMetadataSponsoringRateLimit.test.ts",
- "file": "/src/setVariableMetadataSponsoringRateLimit.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test setVariableMetadataSponsoringRateLimit \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n alice = privateKey_1.default('//Alice');\n userWithNoBalance = await helpers_1.findUnusedAddress(api);\n});",
- "err": {},
- "uuid": "b007713b-7a18-47e7-b3a0-93019aa5eac5",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "sponsored setVariableMetaData can be called twice with pause for free",
- "fullTitle": "Integration Test setVariableMetadataSponsoringRateLimit sponsored setVariableMetaData can be called twice with pause for free",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, alice.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId);\nawait helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, {\n SponsoredDataRateLimit: 0,\n});\nconst itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);\nawait helpers_1.setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);\nawait helpers_1.setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);",
- "err": {},
- "uuid": "a9c7a852-b054-41d0-9b46-81c6230b994e",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "sponsored setVariableMetaData can't be called twice without pause for free",
- "fullTitle": "Integration Test setVariableMetadataSponsoringRateLimit sponsored setVariableMetaData can't be called twice without pause for free",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, alice.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId);\nawait helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, {\n SponsoredDataRateLimit: 10,\n});\nconst itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);\nawait helpers_1.setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);\nawait helpers_1.setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1, 2, 3]);",
- "err": {},
- "uuid": "f044ca9e-d444-4740-b72d-1be45413342f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "sponsored setVariableMetaData can't be called for free with variable metadata above collection limits",
- "fullTitle": "Integration Test setVariableMetadataSponsoringRateLimit sponsored setVariableMetaData can't be called for free with variable metadata above collection limits",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, alice.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId);\nawait helpers_1.setCollectionLimitsExpectSuccess(alice, collectionId, {\n SponsoredDataRateLimit: 0,\n SponsoredDataSize: 1,\n});\nconst itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);\nawait helpers_1.setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1]);\nawait helpers_1.setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1, 2]);",
- "err": {},
- "uuid": "8441ac2e-8b88-415d-8be9-2064b1c0e265",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Default value of rate limit does not sponsor setting variable metadata",
- "fullTitle": "Integration Test setVariableMetadataSponsoringRateLimit Default value of rate limit does not sponsor setting variable metadata",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.setCollectionSponsorExpectSuccess(collectionId, alice.address);\nawait helpers_1.confirmSponsorshipExpectSuccess(collectionId);\nconst itemId = await helpers_1.createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);\nawait helpers_1.setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1]);",
- "err": {},
- "uuid": "5af868e4-77c9-4ddf-8715-0f4d88aa7632",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "a9c7a852-b054-41d0-9b46-81c6230b994e",
- "f044ca9e-d444-4740-b72d-1be45413342f",
- "8441ac2e-8b88-415d-8be9-2064b1c0e265",
- "5af868e4-77c9-4ddf-8715-0f4d88aa7632"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "18086b2e-2832-425b-9558-bc1e65fafd91",
- "title": "Integration Test ext. setVariableOnChainSchema()",
- "fullFile": "/nft_parachain/tests/src/setVariableOnChainSchema.test.ts",
- "file": "/src/setVariableOnChainSchema.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Run extrinsic with parameters of the collection id, set the scheme",
- "fullTitle": "Integration Test ext. setVariableOnChainSchema() Run extrinsic with parameters of the collection id, set the scheme",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.eq(Alice.address);\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await substrate_api_1.submitTransactionAsync(Alice, setSchema);\n});",
- "err": {},
- "uuid": "3e84ac33-edf8-463b-a798-9bd566c1923a",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Checking collection data using the setVariableOnChainSchema parameter",
- "fullTitle": "Integration Test ext. setVariableOnChainSchema() Checking collection data using the setVariableOnChainSchema parameter",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await substrate_api_1.submitTransactionAsync(Alice, setSchema);\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.VariableOnChainSchema.toString()).to.be.eq(Schema);\n});",
- "err": {},
- "uuid": "dcff870a-5f53-4ad5-8be3-00122f9d3f97",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "3e84ac33-edf8-463b-a798-9bd566c1923a",
- "dcff870a-5f53-4ad5-8be3-00122f9d3f97"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "5758eb2f-a731-428e-b6df-220ca5552865",
- "title": "Integration Test ext. collection admin setVariableOnChainSchema()",
- "fullFile": "/nft_parachain/tests/src/setVariableOnChainSchema.test.ts",
- "file": "/src/setVariableOnChainSchema.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Run extrinsic with parameters of the collection id, set the scheme",
- "fullTitle": "Integration Test ext. collection admin setVariableOnChainSchema() Run extrinsic with parameters of the collection id, set the scheme",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.eq(Alice.address);\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await substrate_api_1.submitTransactionAsync(Bob, setSchema);\n});",
- "err": {},
- "uuid": "c72d5119-bb01-455c-8ec7-9cbc3f68acf9",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Checking collection data using the setVariableOnChainSchema parameter",
- "fullTitle": "Integration Test ext. collection admin setVariableOnChainSchema() Checking collection data using the setVariableOnChainSchema parameter",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.addCollectionAdminExpectSuccess(Alice, collectionId, Bob);\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await substrate_api_1.submitTransactionAsync(Bob, setSchema);\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.VariableOnChainSchema.toString()).to.be.eq(Schema);\n});",
- "err": {},
- "uuid": "ab94900d-3da5-4bf8-96b9-f765ea577a32",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "c72d5119-bb01-455c-8ec7-9cbc3f68acf9",
- "ab94900d-3da5-4bf8-96b9-f765ea577a32"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "159c6c9c-e143-4ec8-b00c-9a6065bb7444",
- "title": "Negative Integration Test ext. setVariableOnChainSchema()",
- "fullFile": "/nft_parachain/tests/src/setVariableOnChainSchema.test.ts",
- "file": "/src/setVariableOnChainSchema.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Set a non-existent collection",
- "fullTitle": "Negative Integration Test ext. setVariableOnChainSchema() Set a non-existent collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // tslint:disable-next-line: radix\n const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected;\n});",
- "err": {},
- "uuid": "bc86c05c-a512-4230-9b61-d1f6c76a4501",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Set a previously deleted collection",
- "fullTitle": "Negative Integration Test ext. setVariableOnChainSchema() Set a previously deleted collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.destroyCollectionExpectSuccess(collectionId);\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected;\n});",
- "err": {},
- "uuid": "f082d5ab-8d6f-43cd-a23d-f89109a56116",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Set invalid data in schema (size too large:> 1024b)",
- "fullTitle": "Negative Integration Test ext. setVariableOnChainSchema() Set invalid data in schema (size too large:> 1024b)",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, largeSchema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected;\n});",
- "err": {},
- "uuid": "8cc68f97-6041-4842-b0fd-04dad9d20a74",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Execute method not on behalf of the collection owner",
- "fullTitle": "Negative Integration Test ext. setVariableOnChainSchema() Execute method not on behalf of the collection owner",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const collectionId = await helpers_1.createCollectionExpectSuccess();\n const collection = (await api.query.nft.collectionById(collectionId)).toJSON();\n expect(collection.Owner).to.be.eq(Alice.address);\n const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);\n await expect(substrate_api_1.submitTransactionExpectFailAsync(Bob, setSchema)).to.be.rejected;\n});",
- "err": {},
- "uuid": "721fe6f1-7388-4602-b44f-b306e4a80dc9",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "bc86c05c-a512-4230-9b61-d1f6c76a4501",
- "f082d5ab-8d6f-43cd-a23d-f89109a56116",
- "8cc68f97-6041-4842-b0fd-04dad9d20a74",
- "721fe6f1-7388-4602-b44f-b306e4a80dc9"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "5a1340ed-9a0e-4ec0-af62-ee259c4f8d77",
- "title": "Integration Test toggleContractWhiteList",
- "fullFile": "/nft_parachain/tests/src/toggleContractWhiteList.test.ts",
- "file": "/src/toggleContractWhiteList.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Enable white list contract mode",
- "fullTitle": "Integration Test toggleContractWhiteList Enable white list contract mode",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "3b1ce9c7-2447-420c-b474-ac3ca85fc507",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "Only whitelisted account can call contract",
- "fullTitle": "Integration Test toggleContractWhiteList Only whitelisted account can call contract",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "4b092e32-c2e5-4bc7-81d9-8efadf917431",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "Enabling white list repeatedly should not produce errors",
- "fullTitle": "Integration Test toggleContractWhiteList Enabling white list repeatedly should not produce errors",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "30f63030-adec-4500-b814-5da7eacddec7",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [
- "3b1ce9c7-2447-420c-b474-ac3ca85fc507",
- "4b092e32-c2e5-4bc7-81d9-8efadf917431",
- "30f63030-adec-4500-b814-5da7eacddec7"
- ],
- "skipped": [],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "3f130c5f-721a-473d-b977-74ca9fdab991",
- "title": "Negative Integration Test toggleContractWhiteList",
- "fullFile": "/nft_parachain/tests/src/toggleContractWhiteList.test.ts",
- "file": "/src/toggleContractWhiteList.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Enable white list for a non-contract",
- "fullTitle": "Negative Integration Test toggleContractWhiteList Enable white list for a non-contract",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "dda7fd05-b1e8-4974-a8df-a32680f561ac",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- },
- {
- "title": "Enable white list using a non-owner address",
- "fullTitle": "Negative Integration Test toggleContractWhiteList Enable white list using a non-owner address",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": true,
- "context": null,
- "code": "",
- "err": {},
- "uuid": "cf1a94b5-348b-4963-9504-b79dbdc57f5b",
- "parentUUID": null,
- "isHook": false,
- "skipped": false
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [
- "dda7fd05-b1e8-4974-a8df-a32680f561ac",
- "cf1a94b5-348b-4963-9504-b79dbdc57f5b"
- ],
- "skipped": [],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "9c8d5c0f-ed60-46ea-8dc8-d02454d960a4",
- "title": "Integration Test Transfer(recipient, collection_id, item_id, value)",
- "fullFile": "/nft_parachain/tests/src/transfer.test.ts",
- "file": "/src/transfer.test.ts",
- "beforeHooks": [],
- "afterHooks": [],
- "tests": [
- {
- "title": "Balance transfers and check balance",
- "fullTitle": "Integration Test Transfer(recipient, collection_id, item_id, value) Balance transfers and check balance",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n const [alicesBalanceBefore, bobsBalanceBefore] = await get_balance_1.default(api, [accounts_1.alicesPublicKey, accounts_1.bobsPublicKey]);\n const alicePrivateKey = privateKey_1.default('//Alice');\n const transfer = api.tx.balances.transfer(accounts_1.bobsPublicKey, 1n);\n const events = await substrate_api_1.submitTransactionAsync(alicePrivateKey, transfer);\n const result = helpers_1.getCreateItemResult(events);\n // tslint:disable-next-line:no-unused-expression\n chai_1.expect(result.success).to.be.true;\n const [alicesBalanceAfter, bobsBalanceAfter] = await get_balance_1.default(api, [accounts_1.alicesPublicKey, accounts_1.bobsPublicKey]);\n // tslint:disable-next-line:no-unused-expression\n chai_1.expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;\n // tslint:disable-next-line:no-unused-expression\n chai_1.expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;\n});",
- "err": {},
- "uuid": "ff5f089a-e6f0-4da1-9411-b0d0808e8007",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Inability to pay fees error message is correct",
- "fullTitle": "Integration Test Transfer(recipient, collection_id, item_id, value) Inability to pay fees error message is correct",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // Find unused address\n const pk = await helpers_1.findUnusedAddress(api);\n const badTransfer = api.tx.balances.transfer(accounts_1.bobsPublicKey, 1n);\n // const events = await submitTransactionAsync(pk, badTransfer);\n const badTransaction = async () => {\n const events = await substrate_api_1.submitTransactionAsync(pk, badTransfer);\n const result = helpers_1.getCreateCollectionResult(events);\n // tslint:disable-next-line:no-unused-expression\n chai_1.expect(result.success).to.be.false;\n };\n chai_1.expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees , e.g. account balance too low');\n});",
- "err": {},
- "uuid": "c05ffbdf-f157-4424-8a79-abaf1629a4b9",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "User can transfer owned token",
- "fullTitle": "Integration Test Transfer(recipient, collection_id, item_id, value) User can transfer owned token",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n await helpers_1.transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');\n // reFungible\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n await helpers_1.transferExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 100, 'ReFungible');\n});",
- "err": {},
- "uuid": "fe4480f5-d2ee-460a-a77f-d93a648df0a7",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Collection admin can transfer owned token",
- "fullTitle": "Integration Test Transfer(recipient, collection_id, item_id, value) Collection admin can transfer owned token",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const Alice = privateKey_1.default('//Alice');\n const Bob = privateKey_1.default('//Bob');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n await helpers_1.addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Bob, nftCollectionId, 'NFT', Bob.address);\n await helpers_1.transferExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, 1, 'NFT');\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n await helpers_1.addCollectionAdminExpectSuccess(Alice, fungibleCollectionId, Bob);\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible', Bob.address);\n await helpers_1.transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Bob, Alice, 1, 'Fungible');\n // reFungible\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n await helpers_1.addCollectionAdminExpectSuccess(Alice, reFungibleCollectionId, Bob);\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Bob, reFungibleCollectionId, 'ReFungible', Bob.address);\n await helpers_1.transferExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, 100, 'ReFungible');\n});",
- "err": {},
- "uuid": "fd485e0b-791b-41be-b8f6-67d6d90a2832",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "ff5f089a-e6f0-4da1-9411-b0d0808e8007",
- "c05ffbdf-f157-4424-8a79-abaf1629a4b9",
- "fe4480f5-d2ee-460a-a77f-d93a648df0a7",
- "fd485e0b-791b-41be-b8f6-67d6d90a2832"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "6a098daf-9cfd-4d12-a0d0-dce0047c4b5a",
- "title": "Negative Integration Test Transfer(recipient, collection_id, item_id, value)",
- "fullFile": "/nft_parachain/tests/src/transfer.test.ts",
- "file": "/src/transfer.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Negative Integration Test Transfer(recipient, collection_id, item_id, value) \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});",
- "err": {},
- "uuid": "f1154bc2-86d1-41f5-a635-80a9ea654c9c",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Transfer with not existed collection_id",
- "fullTitle": "Negative Integration Test Transfer(recipient, collection_id, item_id, value) Transfer with not existed collection_id",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // nft\n const nftCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.transferExpectFailure(nftCollectionCount + 1, 1, Alice, Bob, 1);\n // fungible\n const fungibleCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.transferExpectFailure(fungibleCollectionCount + 1, 1, Alice, Bob, 1);\n // reFungible\n const reFungibleCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.transferExpectFailure(reFungibleCollectionCount + 1, 1, Alice, Bob, 1);\n});",
- "err": {},
- "uuid": "c33a248a-96db-4899-a133-4b0b38537e2f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Transfer with deleted collection_id",
- "fullTitle": "Negative Integration Test Transfer(recipient, collection_id, item_id, value) Transfer with deleted collection_id",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "// nft\nconst nftCollectionId = await helpers_1.createCollectionExpectSuccess();\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.destroyCollectionExpectSuccess(nftCollectionId);\nawait helpers_1.transferExpectFailure(nftCollectionId, newNftTokenId, Alice, Bob, 1);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.destroyCollectionExpectSuccess(fungibleCollectionId);\nawait helpers_1.transferExpectFailure(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\nawait helpers_1.destroyCollectionExpectSuccess(reFungibleCollectionId);\nawait helpers_1.transferExpectFailure(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);",
- "err": {},
- "uuid": "287947b2-8b40-4497-a405-e5912ca3021c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Transfer with not existed item_id",
- "fullTitle": "Negative Integration Test Transfer(recipient, collection_id, item_id, value) Transfer with not existed item_id",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "// nft\nconst nftCollectionId = await helpers_1.createCollectionExpectSuccess();\nawait helpers_1.transferExpectFailure(nftCollectionId, 2, Alice, Bob, 1);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nawait helpers_1.transferExpectFailure(fungibleCollectionId, 2, Alice, Bob, 1);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nawait helpers_1.transferExpectFailure(reFungibleCollectionId, 2, Alice, Bob, 1);",
- "err": {},
- "uuid": "29c0307e-a6ae-4634-9f53-df09beed96ea",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Transfer with deleted item_id",
- "fullTitle": "Negative Integration Test Transfer(recipient, collection_id, item_id, value) Transfer with deleted item_id",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "// nft\nconst nftCollectionId = await helpers_1.createCollectionExpectSuccess();\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);\nawait helpers_1.transferExpectFailure(nftCollectionId, newNftTokenId, Alice, Bob, 1);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.burnItemExpectSuccess(Alice, fungibleCollectionId, newFungibleTokenId, 10);\nawait helpers_1.transferExpectFailure(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\nawait helpers_1.burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);\nawait helpers_1.transferExpectFailure(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);",
- "err": {},
- "uuid": "1cf9d8b1-7447-465a-9660-fd7c2ed5bf99",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Transfer with recipient that is not owner",
- "fullTitle": "Negative Integration Test Transfer(recipient, collection_id, item_id, value) Transfer with recipient that is not owner",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "// nft\nconst nftCollectionId = await helpers_1.createCollectionExpectSuccess();\nconst newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\nawait helpers_1.transferExpectFailure(nftCollectionId, newNftTokenId, Charlie, Bob, 1);\n// fungible\nconst fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\nconst newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\nawait helpers_1.transferExpectFailure(fungibleCollectionId, newFungibleTokenId, Charlie, Bob, 1);\n// reFungible\nconst reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\nconst newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\nawait helpers_1.transferExpectFailure(reFungibleCollectionId, newReFungibleTokenId, Charlie, Bob, 1);",
- "err": {},
- "uuid": "0e1fedb7-69b8-4481-b42b-8cc79765c4c2",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "c33a248a-96db-4899-a133-4b0b38537e2f",
- "287947b2-8b40-4497-a405-e5912ca3021c",
- "29c0307e-a6ae-4634-9f53-df09beed96ea",
- "1cf9d8b1-7447-465a-9660-fd7c2ed5bf99",
- "0e1fedb7-69b8-4481-b42b-8cc79765c4c2"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "0410e3f4-f36a-43d0-8d60-8b2e0be7c8d1",
- "title": "Integration Test transferFrom(from, recipient, collection_id, item_id, value):",
- "fullFile": "/nft_parachain/tests/src/transferFrom.test.ts",
- "file": "/src/transferFrom.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Integration Test transferFrom(from, recipient, collection_id, item_id, value): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});",
- "err": {},
- "uuid": "a7536c7c-5474-4888-afc7-521bef185f82",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "Execute the extrinsic and check nftItemList - owner of token",
- "fullTitle": "Integration Test transferFrom(from, recipient, collection_id, item_id, value): Execute the extrinsic and check nftItemList - owner of token",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);\n await helpers_1.transferFromExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1, 'NFT');\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n await helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);\n await helpers_1.transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1, 'Fungible');\n // reFungible\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n await helpers_1.approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 100);\n await helpers_1.transferFromExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 100, 'ReFungible');\n});",
- "err": {},
- "uuid": "404522b7-6b2c-4cab-a92f-51701c8d5e56",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "Should reduce allowance if value is big",
- "fullTitle": "Integration Test transferFrom(from, recipient, collection_id, item_id, value): Should reduce allowance if value is big",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const alice = privateKey_1.default('//Alice');\n const bob = privateKey_1.default('//Bob');\n const charlie = privateKey_1.default('//Charlie');\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: 500000n });\n await helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob, 500000n);\n await helpers_1.transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 500000n, 'Fungible');\n expect((await helpers_1.getAllowance(fungibleCollectionId, newFungibleTokenId, alice.address, bob.address)).toString()).to.equal('0');\n});",
- "err": {},
- "uuid": "67cc81b1-6b4d-4368-a5a8-4f53f3ed0401",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "can be called by collection owner on non-owned item when OwnerCanTransfer == true",
- "fullTitle": "Integration Test transferFrom(from, recipient, collection_id, item_id, value): can be called by collection owner on non-owned item when OwnerCanTransfer == true",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nconst itemId = await helpers_1.createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);\nawait helpers_1.transferFromExpectSuccess(collectionId, itemId, Alice, Bob, Charlie);",
- "err": {},
- "uuid": "f796b3fb-c283-49e4-af9d-a0d155adb5b9",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "404522b7-6b2c-4cab-a92f-51701c8d5e56",
- "67cc81b1-6b4d-4368-a5a8-4f53f3ed0401",
- "f796b3fb-c283-49e4-af9d-a0d155adb5b9"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- },
- {
- "uuid": "da6c9c5d-e934-43c6-b4f5-d81ee5822d3d",
- "title": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value):",
- "fullFile": "/nft_parachain/tests/src/transferFrom.test.ts",
- "file": "/src/transferFrom.test.ts",
- "beforeHooks": [
- {
- "title": "\"before all\" hook",
- "fullTitle": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): \"before all\" hook",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n Alice = privateKey_1.default('//Alice');\n Bob = privateKey_1.default('//Bob');\n Charlie = privateKey_1.default('//Charlie');\n});",
- "err": {},
- "uuid": "16c7cbf7-e6c2-4528-9716-20bce579c2c0",
- "parentUUID": null,
- "isHook": true,
- "skipped": false
- }
- ],
- "afterHooks": [],
- "tests": [
- {
- "title": "transferFrom for a collection that does not exist",
- "fullTitle": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom for a collection that does not exist",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async (api) => {\n // nft\n const nftCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.approveExpectFail(nftCollectionCount + 1, 1, Alice, Bob);\n await helpers_1.transferFromExpectFail(nftCollectionCount + 1, 1, Bob, Alice, Charlie, 1);\n // fungible\n const fungibleCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.approveExpectFail(fungibleCollectionCount + 1, 1, Alice, Bob);\n await helpers_1.transferFromExpectFail(fungibleCollectionCount + 1, 1, Bob, Alice, Charlie, 1);\n // reFungible\n const reFungibleCollectionCount = await api.query.nft.createdCollectionCount();\n await helpers_1.approveExpectFail(reFungibleCollectionCount + 1, 1, Alice, Bob);\n await helpers_1.transferFromExpectFail(reFungibleCollectionCount + 1, 1, Bob, Alice, Charlie, 1);\n});",
- "err": {},
- "uuid": "a5d44056-808b-4e47-ade8-bd1895df0d4a",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "transferFrom for not approved address",
- "fullTitle": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom for not approved address",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1);\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n await helpers_1.transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);\n // reFungible\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n await helpers_1.transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);\n});",
- "err": {},
- "uuid": "4b7c8080-6427-4e7e-afa5-0bf79d02c87b",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "transferFrom incorrect token count",
- "fullTitle": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom incorrect token count",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);\n await helpers_1.transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 2);\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n await helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);\n await helpers_1.transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 2);\n // reFungible\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n await helpers_1.approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);\n await helpers_1.transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 2);\n});",
- "err": {},
- "uuid": "ec426f3f-098a-4625-81db-114d31d1a074",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "execute transferFrom from account that is not owner of collection",
- "fullTitle": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): execute transferFrom from account that is not owner of collection",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const Dave = privateKey_1.default('//Dave');\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n try {\n await helpers_1.approveExpectFail(nftCollectionId, newNftTokenId, Dave, Bob);\n await helpers_1.transferFromExpectFail(nftCollectionId, newNftTokenId, Dave, Alice, Charlie, 1);\n }\n catch (e) {\n // tslint:disable-next-line:no-unused-expression\n expect(e).to.be.exist;\n }\n // await transferFromExpectFail(nftCollectionId, newNftTokenId, Dave, Alice, Charlie, 1);\n // fungible\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n try {\n await helpers_1.approveExpectFail(fungibleCollectionId, newFungibleTokenId, Dave, Bob);\n await helpers_1.transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Dave, Alice, Charlie, 1);\n }\n catch (e) {\n // tslint:disable-next-line:no-unused-expression\n expect(e).to.be.exist;\n }\n // reFungible\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n try {\n await helpers_1.approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Dave, Bob);\n await helpers_1.transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Dave, Alice, Charlie, 1);\n }\n catch (e) {\n // tslint:disable-next-line:no-unused-expression\n expect(e).to.be.exist;\n }\n});",
- "err": {},
- "uuid": "3f42770c-0612-4bda-9549-e6fd8f5ddc02",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "transferFrom burnt token before approve NFT",
- "fullTitle": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom burnt token before approve NFT",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);\n await helpers_1.approveExpectFail(nftCollectionId, newNftTokenId, Alice, Bob);\n await helpers_1.transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1);\n});",
- "err": {},
- "uuid": "f2ba3a52-2534-41d8-9030-8cb7882140ef",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "transferFrom burnt token before approve Fungible",
- "fullTitle": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom burnt token before approve Fungible",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n await helpers_1.burnItemExpectSuccess(Alice, fungibleCollectionId, 1, 10);\n await helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);\n await helpers_1.transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);\n});",
- "err": {},
- "uuid": "d50d2028-3c93-4588-a866-c4f15bddb4ca",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "transferFrom burnt token before approve ReFungible",
- "fullTitle": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom burnt token before approve ReFungible",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n await helpers_1.burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);\n await helpers_1.approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);\n await helpers_1.transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);\n});",
- "err": {},
- "uuid": "1b9fb2ec-9327-436e-b5aa-2331c5e7af30",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "transferFrom burnt token after approve NFT",
- "fullTitle": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom burnt token after approve NFT",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n // nft\n const nftCollectionId = await helpers_1.createCollectionExpectSuccess();\n const newNftTokenId = await helpers_1.createItemExpectSuccess(Alice, nftCollectionId, 'NFT');\n await helpers_1.approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);\n await helpers_1.burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);\n await helpers_1.transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1);\n});",
- "err": {},
- "uuid": "7321a1d8-58d6-40f8-a8f6-64a521b2b004",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "transferFrom burnt token after approve Fungible",
- "fullTitle": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom burnt token after approve Fungible",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const fungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });\n const newFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');\n await helpers_1.approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);\n await helpers_1.burnItemExpectSuccess(Alice, fungibleCollectionId, 1, 10);\n await helpers_1.transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);\n});",
- "err": {},
- "uuid": "9e0127f4-4609-415d-8aed-07f00745e523",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "transferFrom burnt token after approve ReFungible",
- "fullTitle": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): transferFrom burnt token after approve ReFungible",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "await substrate_api_1.default(async () => {\n const reFungibleCollectionId = await helpers_1.createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });\n const newReFungibleTokenId = await helpers_1.createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');\n await helpers_1.approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);\n await helpers_1.burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);\n await helpers_1.transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);\n});",
- "err": {},
- "uuid": "245c015f-866e-4a94-947f-24831361053c",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- },
- {
- "title": "fails when called by collection owner on non-owned item when OwnerCanTransfer == false",
- "fullTitle": "Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value): fails when called by collection owner on non-owned item when OwnerCanTransfer == false",
- "timedOut": false,
- "duration": 0,
- "state": null,
- "speed": null,
- "pass": false,
- "fail": false,
- "pending": false,
- "context": null,
- "code": "const collectionId = await helpers_1.createCollectionExpectSuccess();\nconst itemId = await helpers_1.createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);\nawait helpers_1.setCollectionLimitsExpectSuccess(Alice, collectionId, { OwnerCanTransfer: false });\nawait helpers_1.transferFromExpectFail(collectionId, itemId, Alice, Bob, Charlie);",
- "err": {},
- "uuid": "1ce5816b-f248-446a-80e8-a5cf15efd54f",
- "parentUUID": null,
- "isHook": false,
- "skipped": true
- }
- ],
- "suites": [],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [
- "a5d44056-808b-4e47-ade8-bd1895df0d4a",
- "4b7c8080-6427-4e7e-afa5-0bf79d02c87b",
- "ec426f3f-098a-4625-81db-114d31d1a074",
- "3f42770c-0612-4bda-9549-e6fd8f5ddc02",
- "f2ba3a52-2534-41d8-9030-8cb7882140ef",
- "d50d2028-3c93-4588-a866-c4f15bddb4ca",
- "1b9fb2ec-9327-436e-b5aa-2331c5e7af30",
- "7321a1d8-58d6-40f8-a8f6-64a521b2b004",
- "9e0127f4-4609-415d-8aed-07f00745e523",
- "245c015f-866e-4a94-947f-24831361053c",
- "1ce5816b-f248-446a-80e8-a5cf15efd54f"
- ],
- "duration": 0,
- "root": false,
- "rootEmpty": false,
- "_timeout": 9999999
- }
- ],
- "passes": [],
- "failures": [],
- "pending": [],
- "skipped": [],
- "duration": 0,
- "root": true,
- "rootEmpty": true,
- "_timeout": 9999999
- }
- ],
- "meta": {
- "mocha": {
- "version": "8.4.0"
- },
- "mochawesome": {
- "options": {
- "quiet": false,
- "reportFilename": "mochawesome",
- "saveHtml": true,
- "saveJson": true,
- "consoleReporter": "spec",
- "useInlineDiffs": false,
- "code": true
- },
- "version": "6.2.2"
- },
- "marge": {
- "options": null,
- "version": "5.2.0"
- }
- }
-}
\ No newline at end of file