diff --git a/package-lock.json b/package-lock.json
index 4df8d95b91a63e6954afe17cf63746bbbfa22a5c..94ddafe7eda2745d2901c8f61993b2ceb5d220d2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -24,6 +24,7 @@
         "chart.js": "^4.4.4",
         "dangerously-set-html-content": "^1.1.0",
         "dompurify": "^3.1.5",
+        "faker": "5.5.3",
         "framer-motion": "^11.2.13",
         "gsap": "^3.12.5",
         "markmap": "^0.6.1",
@@ -48,6 +49,7 @@
       "devDependencies": {
         "@types/aos": "^3.0.7",
         "@types/dompurify": "^3.0.5",
+        "@types/faker": "^6.6.9",
         "@types/jquery": "^3.5.30",
         "@types/node": "^20.12.10",
         "@types/react": "^18.2.66",
@@ -1756,6 +1758,16 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/@types/faker": {
+      "version": "6.6.9",
+      "resolved": "https://registry.npmjs.org/@types/faker/-/faker-6.6.9.tgz",
+      "integrity": "sha512-Y9YYm5L//8ooiiknO++4Gr539zzdI0j3aXnOBjo1Vk+kTvffY10GuE2wn78AFPECwZ5MYGTjiDVw1naLLdDimw==",
+      "deprecated": "This is a stub types definition. faker provides its own type definitions, so you do not need this installed.",
+      "dev": true,
+      "dependencies": {
+        "faker": "*"
+      }
+    },
     "node_modules/@types/geojson": {
       "version": "7946.0.14",
       "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz",
@@ -3555,6 +3567,11 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/faker": {
+      "version": "5.5.3",
+      "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz",
+      "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g=="
+    },
     "node_modules/fast-deep-equal": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
diff --git a/package.json b/package.json
index 33959c6630fbd38b6d09e7aa0912032f012ee65e..93f4eca97b7f579b1cdb19acbe69d70557dc4345 100644
--- a/package.json
+++ b/package.json
@@ -50,6 +50,7 @@
   "devDependencies": {
     "@types/aos": "^3.0.7",
     "@types/dompurify": "^3.0.5",
+    "@types/faker": "^6.6.9",
     "@types/jquery": "^3.5.30",
     "@types/node": "^20.12.10",
     "@types/react": "^18.2.66",
diff --git a/src/App/App.css b/src/App/App.css
index c08faa0872595916a255ff6aae82e59e69753b28..d278a39d09e2eb9644ee357554e075823e5aeb13 100644
--- a/src/App/App.css
+++ b/src/App/App.css
@@ -6,11 +6,16 @@
   --text-primary: #850F78 ; 
   --mediumpurple: #bc15aa; 
   --lightpurple: #B85BD1; 
+  --very-light-purple: #ce9fc9; 
   /*--purple: #B85BD1; */
   --accen-secondary: #F57D22; 
+  --dark-secondary: #ac5818 ; 
+  --light-secondary: #f7974e ; 
+  --very-light-secondary: #fabb8c; 
   --accent-gradient-one-of-three: #F59121; 
   --accent-gradient-two-of-three: #F5A520; 
   --accent-gradient-three-of-three: #F5B91F; 
+  --yellow-dark: #BB9909; 
   --accent-primary: #F4CC1E; 
   --lightyellow: #fae99e; 
   --lightblue: #A0A7F3 ; 
@@ -28,24 +33,31 @@
   --igemmediumgreen: #019968; 
   --igemlightgreen: #99cb9a; 
 
-  --info-border-color: var(--mediumpurple); 
+
     --vp-ct: var(--text-primary); 
     --info-border-color: var(--accent-primary); 
     --info-bg-color: var(--lightyellow); 
-    --info-title-color: var(--text-primary); 
+    --info-title-color: var(--offblack); 
     --info-code-bg-color: var(--lightyellow); 
+
     --note-border-color: var(--text-primary); 
-    --note-bg-color: var(--darkoffwhite); 
-    --note-title-color: var(--text-primary);
-    --note-code-bg-color: var(--darkoffwhite);
-    --tip-border-color: var(--text-primary); 
-    --tip-bg-color: var(--darkoffwhite);  
-    --tip-title-color: var(--text-primary);
-    --tip-code-bg-color: var(--darkoffwhite);
+    --note-bg-color: var(--very-light-purple); 
+    --note-title-color: var(--offblack);
+    --note-code-bg-color: var(--very-light-purple);
+
+    --tip-border-color: var(--offblack); 
+    --tip-bg-color: var(--darkerbeige);  
+    --tip-title-color: var(--offblack);
+    --tip-code-bg-color: var(--offblack);
+
     --warning-border-color: var(--accen-secondary); 
-    --warning-bg-color: var(--lightorange);  
-    --warning-title-color: var(--text-primary);
-    --warning-code-bg-color: var(--lightorange); 
+    --warning-bg-color: var(--very-light-secondary);  
+    --warning-title-color: var(--offblack);
+
+    --danger-code-bg-color: var(--verylightblue); 
+    --danger-border-color: var(--lightblue); 
+    --danger-bg-color: var(--verylightblue);  
+    --danger-title-color: var(--offblack);
 
     --markmap-a-color: var(--text-primary) !important; 
 
@@ -464,7 +476,7 @@ h2{
 }
 
 .bd-callout-danger {
-  border-left-color: #d9534f;
+  border-left-color: var(--lightblue);
 }
 
 /* * * * * * * */
@@ -1056,7 +1068,60 @@ html[dir=rtl] .hint-container.danger .hint-container-title:before {
 .hint-container.info code {
   background:var(--info-code-bg-color)
 }
+.hint-container.danger {
+  border-color:var(--danger-border-color);
+  background:var(--danger-bg-color)
+}
+.hint-container.danger>.hint-container-title {
+  color:var(--danger-title-color)
+}
+.hint-container.danger>.hint-container-title:before {
+  background-image:url("")
+}
+.hint-container.danger code {
+  background:var(--danger-code-bg-color)
+}
+.hint-container.tip {
+  border-color:var(--tip-border-color);
+  background:var(--tip-bg-color) !important; 
+}
+.hint-container.tip>.hint-container-title {
+  color:var(--tip-title-color)
+}
+.hint-container.tip>.hint-container-title:before {
+  background-image:url("")
+}
+.hint-container.tip code {
+  background:var(--tip-code-bg-color)
+}
 
+.hint-container.warning {
+  border-color:var(--warning-border-color);
+  background:var(--warning-bg-color) !important;
+}
+.hint-container.warning>.hint-container-title {
+  color:var(--warning-title-color);
+}
+.hint-container.warning>.hint-container-title:before {
+  background-image:url("")
+}
+.hint-container.warning code {
+  background:var(--warning-code-bg-color)
+}
+
+.hint-container.note {
+  border-color:var(--note-border-color);
+  background:var(--note-bg-color) !important;
+}
+.hint-container.note>.hint-container-title {
+  color:var(--note-title-color);
+}
+.hint-container.note>.hint-container-title:before {
+  background-image:url("")
+}
+.hint-container.note code {
+  background:var(--note-code-bg-color)
+}
 
 /*POPUP*/
 .popup {
diff --git a/src/App/App.tsx b/src/App/App.tsx
index 8e83db9338198cac0c7f5afb192a9016f26b6e57..9b1bfc5df8c193f89db801c115279c382edeedc3 100644
--- a/src/App/App.tsx
+++ b/src/App/App.tsx
@@ -4,7 +4,7 @@ import "./mediarules.css"
 import "./Timelines.css";
 import '../App/Graph.css'; 
 import '../components/test.css'
-import '../App/LandingPage.css'
+import "./LandingPage.css"
 import "../contents/example.css"
 import "./App.scss";
 import 'beautiful-react-diagrams/styles.css';
diff --git a/src/App/LandingPage.css b/src/App/LandingPage.css
index 7754eb3c20335a097953a3c1458896a2d072d8de..7a8334463ac6834ede432c62c9fd48506161e894 100644
--- a/src/App/LandingPage.css
+++ b/src/App/LandingPage.css
@@ -1,28 +1,17 @@
-.base-width-height {
-    width: 75vw;
-    height: 100vh;
-  }
-  
-  .fixed-pos {
-      top: 0;
-      left: 0;
-      position: fixed;
-  }
-  
-  .fade-in-out > img {
-    opacity: 0;
-    animation: fadeIn 5s;
-  }
-  
-  .br-magenta{
-    background-color: magenta;
-  }
-  
-  .br-black{
+.content-block {
+  width:100vw;
+  height:100vh;
+  opacity: 0;
+  visibility: hidden;  
+  transition: opacity 1200ms ease-out, transform 600ms ease-out,
+  visibility 1200ms ease-out;
+  will-change: opacity, visibility;
+  background-color: black;
+}
+
+.content-block.is-visible {
+    opacity: 1;
+    transform: none;
+    visibility: visible;
     background-color: black;
-  }
-  
-  @keyframes fadeIn {
-    0% { opacity: 0; }
-    100% { opacity: 1; }
-  }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/App/mediarules.css b/src/App/mediarules.css
index 00f8bc07a34d0067f7464c2b9e5e8735ca3a4235..3b116e0d621bab3162c5131724344285ab1a4398 100644
--- a/src/App/mediarules.css
+++ b/src/App/mediarules.css
@@ -163,7 +163,7 @@ body {
     background-position: center; /* Keeps the background centered */
     background-repeat: no-repeat;
 }
-}
+
 
 .img-half{
     max-width: 100% !important;
@@ -177,6 +177,7 @@ body {
     display: grid !important;
  }
 
+}
 /*For small Smartphones*/
 @media screen and (max-width: 750px){
     
diff --git a/src/components/Boxes.tsx b/src/components/Boxes.tsx
index 986cc72e949ec7667c6f59da19143b65e5079c5e..b804c992d5c3b6b25ba1501a38724fe296e8fbb7 100644
--- a/src/components/Boxes.tsx
+++ b/src/components/Boxes.tsx
@@ -77,4 +77,34 @@ export function WarnBox({title, children}:{title: string, children: React.ReactN
           </div>
         </aside>
     )
+}
+
+export function BlueInfoBox({title, children}:{title: string, children: React.ReactNode}){
+  return(
+      <aside className="hint-container danger">
+        <p className="hint-container-title">
+          {title}
+        </p>
+        <div className="v-card-text">
+          <p>
+              {children}
+          </p>
+        </div>
+      </aside>
+  )
+}
+
+export function NoteBox({title, children, id}:{title: string, children: React.ReactNode, id: string}){
+  return(
+      <aside className="hint-container note" id={id}>
+        <p className="hint-container-title">
+          {title}
+        </p>
+        <div className="v-card-text">
+          <p>
+              {children}
+          </p>
+        </div>
+      </aside>
+  )
 }
\ No newline at end of file
diff --git a/src/components/Buttons.tsx b/src/components/Buttons.tsx
index 6bea9546c221df61932b51a37f1c36d79c59f465..f734761ac9baded53e126fc777c8a90e096ed9f9 100644
--- a/src/components/Buttons.tsx
+++ b/src/components/Buttons.tsx
@@ -162,7 +162,18 @@ export function ButtonTwo(){
   )
 }
 
-export function ButtonOne({text, open}: {text:string, open:string}){
+export function ButtonOne({text, open, openclass}: {text:string, open:string, openclass?: string}){
+  if (openclass) {
+    return(
+      <div className="boxy-1">
+        <span typeof="button" onClick={openFromOtherPage(open, openclass)}>
+        <div className="btn-new btn-one">
+        {text}
+        </div></span>
+      </div>
+    )
+    
+  }
   return(
     <div className="boxy-1">
       <span typeof="button" onClick={openFromOtherPage(open)}>
diff --git a/src/components/FadeIn.tsx b/src/components/FadeIn.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..60628de62c29c777c10268c72b93f605dcc8423c
--- /dev/null
+++ b/src/components/FadeIn.tsx
@@ -0,0 +1,39 @@
+import { useEffect, useRef, useState } from "react";
+
+export function FadeIn({filepath}:{filepath: string}){
+    const [isVisible, setVisible] = useState(false);
+    const domRef = useRef(null)!;
+    useEffect(() => {
+        const observer = new IntersectionObserver(entries => {
+        entries.forEach(entry => setVisible(entry.isIntersecting));
+        {/* debug */}
+        entries.forEach(entry => console.log(entry.isIntersecting));
+        });
+        observer.observe(domRef.current!);
+    }, []);
+
+    return (
+        <>
+            <div 
+                className='col'
+                style={{ 'height': '100vh'}}
+                ref={domRef}>
+                    <img 
+                        style={{
+                            'position': 'fixed',
+                            'top': '20vh',
+                            'left': '20vw',
+                            'width': '60vw',
+                            'height': '60vh',
+                            'transition': 'opacity 0.6s ease-out',
+                            'opacity': `${isVisible ? '1' : '0'}`,
+                            'visibility': `${isVisible ? 'visible' : 'hidden'}`
+                        }}
+                        src={filepath}>
+                    </img>
+            </div>
+            {/* Spacing Block */}
+            <div className='col' style={{ 'height': '90vh' }}></div>
+        </>
+    );
+}
\ No newline at end of file
diff --git a/src/components/Graph.tsx b/src/components/Graph.tsx
index bf67b3263881382cf5ca70213085562216bd5667..8a931c5881223ce86670d668c25e8b40d3d35ddb 100644
--- a/src/components/Graph.tsx
+++ b/src/components/Graph.tsx
@@ -1,7 +1,7 @@
 import React from 'react';
 import { Pie } from 'react-chartjs-2';
 import { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js';
-import "../components/Graph.tsx"
+
 
 ChartJS.register(ArcElement, Tooltip, Legend);
 
diff --git a/src/components/HP-timeline.tsx b/src/components/HP-timeline.tsx
index 937a31150b88a39eb09f02f1456743d783074a18..dcfeb1201ffa9cde857feea20654c8229ca42b50 100644
--- a/src/components/HP-timeline.tsx
+++ b/src/components/HP-timeline.tsx
@@ -6,7 +6,6 @@ export function HPTimeline(){
     return(
       <section id="Timeline" className="section">
         <div className="center">
-          <h3  className="col personalstyleone">Timeline</h3>
         </div> 
         <TabButtonRow data={timelinebuttonrowdata} classy="" opentype="timelinecardtabs" closing="timelinepersontabs" />
         <ButtonRowTabs cla="timelinecardtabs" data={timelinebuttonrowdata}/> 
diff --git a/src/components/Headings.tsx b/src/components/Headings.tsx
index d366e1d3066f1b625ef1e4167c80018464457201..d853069cd8c20cc9c42aecbe4545b111218f6d03 100644
--- a/src/components/Headings.tsx
+++ b/src/components/Headings.tsx
@@ -97,14 +97,14 @@ export function H3({text, id}:{text: string, id?: string}){
 export function Hhighlight({children}:{children: React.ReactNode}){
     return(
     <div className="content v2">
-        {children}
+        <p>{children}</p>
     </div>
     )
 }
 export function Hspoiler({children}:{children: React.ReactNode}){
     return(
     <div className="content v3">
-        {children}
+        <p>{children}</p>
     </div>
     )
 }
diff --git a/src/components/Tabs.tsx b/src/components/Tabs.tsx
index 19359d9aa17613f6627e3104b5bec882aaab1ca1..75489451da91118df6fc29d8db67a13921f54037 100644
--- a/src/components/Tabs.tsx
+++ b/src/components/Tabs.tsx
@@ -204,4 +204,25 @@ import { BlockQuoteB } from "./Quotes";
       
     }
     return rows; 
-  }
\ No newline at end of file
+  }
+
+  export function OLDBFHStyleTabs({data, cla}: {data: Array<NodeDatensatz>, cla: string}) {
+    let rows = []
+    for ( let i = 0;  i < data.length; i++ ){
+      if (data[i].cssname === "timeline"){
+        rows.push(
+          <div id={data[i].cssname} className={cla} style={{display: "block"}}>
+              {data[i].node}
+          </div>
+        )
+      }
+      else{
+      rows.push(
+        <div id={data[i].cssname} className={cla}>
+            {data[i].node}
+        </div>
+      )
+      }
+    }
+    return rows; 
+  }
diff --git a/src/components/data/steckbriefe.ts b/src/components/data/steckbriefe.ts
index a93eda0d0b748fb20507731e5bd4b13af7d1f88b..538fa61017b2c640ed8b3e85f5aefd30bf0f1a5d 100644
--- a/src/components/data/steckbriefe.ts
+++ b/src/components/data/steckbriefe.ts
@@ -2,7 +2,7 @@ interface Steckbrief{
     title?: string;  /* Dr. oder Prof. oder so bei Jörn und so*/
     vorname: string; 
     nachname: string; 
-    age: number; 
+    age: number | string; 
     linkedinurl?: string; 
     hauptfoto: string; 
     zweitfoto?: string; 
@@ -15,10 +15,10 @@ interface Steckbrief{
     biggestchallenge: string |  Array<string>; 
     funfacts:string | Array<string>; 
     favmusic: string; 
-    sciencemedia: string; /* Is there a particular book, movie or series that has influenced your view of science? */
-    onechange: string; /* If you had the opportunity to change one thing in the world of science, what would it be and why? */
+    sciencemedia: string  | Array<string>; /* Is there a particular book, movie or series that has influenced your view of science? */
+    onechange: string  | Array<string>; /* If you had the opportunity to change one thing in the world of science, what would it be and why? */
     hobbies: Array<string>; /* Hobbies/interests outside of science */
-    scientificinterests: Array<string> ; /* Scientific interest/research focus [keywords] */
+    scientificinterests: string | Array<string> ; /* Scientific interest/research focus [keywords] */
 }
 
 
@@ -55,9 +55,9 @@ Vorlage Datensatz:
  bestpart:  [ "", ""], 
  biggestchallenge: [ "", ""],
  funfacts:  [ "", ""],
- favmusic: "", 
- sciencemedia: "",
- onechange: "",
+ favmusic: "XXX", 
+ sciencemedia: "XXX",
+ onechange: "XXX",
  hobbies:  [ "", ""],
  scientificinterests:  [ "", ""],
 
@@ -65,159 +65,400 @@ Vorlage Datensatz:
 */
 export const teammembers: Array<Steckbrief> = [
     {
+        title: "B.Sc.",
         vorname: "Anna", 
         nachname: "Baack", 
+        age: "25",
         linkedinurl: "www.linkedin.com/in/anna-lena-b-a488102a5",
-        hauptfoto: "https://static.igem.wiki/teams/5247/placeholders/placehilderperson.jpeg",
-        pronouns: "she/her", 
-        studiengang: "M.Sc. Molecular Cell Biology",
-        headof: "Laboratory",
+        hauptfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/anna-1-5-11zon.webp",
+        zweitfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/anna-2-6-11zon.webp",
+        pronouns: "she/her",
+        studiengang:  "M.Sc. Molecular Cell Biology",
+        headof: "Wet lab",
         igemjob: ["Delivery", "Creativity","Sponsoring"],
         whyigem: [
             "To prove to myself what I am capable of", 
-            "To be part of a dedicated team in which everyone understands when you are dead inside"
-        ],
+            "To be part of a dedicated team in which everyone understands when you are dead inside",
+            "I aim to constantly improve my skills in research, experimental design and data analysis",
+            "This journey not only enriches my academic experience, but also helps me to make valuable connections with professionals, mentors and colleagues and lay the foundation for future collaborations",
+            "I love to do research, want to improve my research skills and want to be a committed applicant who is willing to make a meaningful contribution to impactful scientific projects",
+        ], 
         bestpart: [
             "My Team", 
             "Chlorella x Kombucha",
             "Expanding my skills in the lab",
-        ], 
+        ],
         biggestchallenge: [
             ">12-hour shift in the lab",
             "Don't let anyone see your tears"
         ],
-        funfacts: "Proud Lab Mom - They see me rollin' with my E-Scooter",
-        favmusic: "The techno workout playlist from Lisa",
+        funfacts: [
+            "Proud Lab Mom - They see me rollin' with my E-Scooter",
+            "I would describe myself as a creative mind and food lover",
+                ],
+        favmusic: "Techno workout playlist from Lisa",
+        sciencemedia: [
+            "The competition with fellow students",
+            "Telling myself 'There must be stupider people than me' and 'Shit happens'",
+            "Crying"
+        ],
+        onechange: [
+            "My Kindle (with survival book)",
+            "Dark chocolate",
+            "Flintstone"
+        ],
+        hobbies:  [
+            "Reading",
+            "Going for a walk",
+            "Cuddling with dogs",
+            "Listening to/playing music",
+            "Painting",
+                ],
+        scientificinterests: "Molecular Biology and Biochemistry of Plants",
     },
-
+ 
     {
+        title: "B.Sc.",
         vorname: "Asal Sahami", 
-        nachname: "Moghaddam", 
+        nachname: "Baack", 
+        age: "24",
         linkedinurl: "www.linkedin.com/in/ asal-sahami-moghaddam-665302315",
-        hauptfoto: "https://static.igem.wiki/teams/5247/placeholders/placehilderperson.jpeg",
-        pronouns: "she/her", 
-        studiengang: "M.Sc. Bioinformatics",
-        igemjob: "Wiki, Mechanism & Public Outreach",
-        whyigem: "As an international student, iGEM offers me a unique opportunity to not only expand and deepen my scientific experience by working with a research team but also to enhance my social communication skills within my scientific field. iGEM provides different perspectives; it is not just a research project, but also a social activity where one can engage with diverse social opportunities and activities. This allows me to recognize and explore various possibilities beyond the science, making it a well-rounded and enriching experience",
-        bestpart: "The competition format of that and as a group we have the same goal", 
-        biggestchallenge: "A strong presentation of your work, showing what you've accomplished and the ideas you've contributed as part of the team", 
-        favmusic: "The techno workout playlist from Lisa",
+        hauptfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/asal-1-7-11zon.webp",
+        zweitfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/asal-2-8-11zon.webp",
+        pronouns: "she/her",
+        studiengang:  "M.Sc. Bioinformatics and Genome Research",
+        igemjob: ["Wiki, Mechanism & Public Outreach"],
+        whyigem: [
+            "As an international student, iGEM offers me a unique opportunity to not only expand and deepen my scientific experience by working with a research team but also to enhance my social communication skills within my scientific field",
+            "iGEM provides different perspectives - it is not just a research project, but also a social activity where one can engage with diverse social opportunities and activities",
+            "This allows me to recognize and explore various possibilities beyond the science, making it a well-rounded and enriching experience",
+            "To me, it's a great experience to bring a new idea realted to my field of study in the form of a project within an high cooperative group",
+        ], 
+        bestpart: [
+            "The competition format of that and as a group we have the same goal",
+        ],
+        biggestchallenge: [
+            "A strong presentation of your work, showing what you've accomplished and the ideas you've contributed as part of the team",
+        ],
+        funfacts: [
+            "I am a Researcher, but also try to have a creative mind",
+        ],
+        sciencemedia: [
+            "Unraveling mysteries, uncovering patterns, and contributing to our understanding of the world are deeply satisfying pursuits",
+            "I love the collaborative nature of scientific endeavors and working with other curious minds to solve complex problems",
+            "Crying"
+        ],
+        onechange: [
+            "My cat and love",
+            "a water purifier",
+        ],
+        hobbies:  [
+            "Trip",
+            "Visit new places",
+            "Have fun with dogs and cats",
+            "Cooking",
+            "To be active in social media and make content ",
+        ],
+        scientificinterests: "Medicine, Data Analayse, Genome Research, Coding",
+        favmusic: "XXX"
     },
 
     {
-        vorname: "Christian", 
-        nachname: "Michalek",
-        hauptfoto: "https://static.igem.wiki/teams/5247/placeholders/placehilderperson.jpeg",
-        pronouns: "he/him", 
+        title: "B.Sc.",
+        vorname: "Christian",
+        nachname: "Michalek", 
+        age: "26",
+        hauptfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/christian-1-1-11zon.webp",
+        zweitfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/christian-2-2-11zon.webp",
+        pronouns: "he/him",
         studiengang: "M.Sc. Cellular Biochemistry",
-        igemjob: "Wet lab, PrimeGuide, Biosafety",
-        whyigem: "To get to know new people with the same interests from different disciplines and to work together on a great project",
-        bestpart: "To live up to the responsibility and to keep going even if nothing works out again", 
-        biggestchallenge: "A strong presentation of your work, showing what you've accomplished and the ideas you've contributed as part of the team", 
+        igemjob: ["Wet lab, PrimeGuide, Biosafety"],
+        whyigem: [
+            "To get to know new people with the same interests from different disciplines and to work together on a great project", 
+            "Mistakes and setbacks are part of it, otherwise it becomes boring and monotonous",
+        ],
+        bestpart: [
+            "To live up to the responsibility and to keep going even if nothing works out again", 
+            "Working together as a team with a lot of fun on creative approaches",
+            "Thinking uutside of the box",
+        ],
+        biggestchallenge: [
+            "A strong presentation of your work, showing what you've accomplished and the ideas you've contributed as part of the team",
+        ],
+        funfacts: [
+            "researcher, mood maker",
+                ],
         favmusic: "There's nothing better than a relaxed, groovy techno set in the morning when you're starting work",
+        sciencemedia: [
+            "dive gear and endless supply of oxygen",
+        ],
+        onechange: [
+            "More people in science",
+        ],
+        hobbies:  [
+            "diving, swimming, hiking",
+                ],
+        scientificinterests: "Clinical Biochemistry, Medical Biology, Phatobiochemistry, Signalling Pathways",
     },
 
     {
+        title: "B.Sc.",
         vorname: "Isabell", 
-        nachname: "Guckes",
-        hauptfoto: "https://www.linkedin.com/in/isabell-alexandra-guckes-5023a030b/",
-        pronouns: "she/her", 
-        studiengang: "M.Sc. Molecular Cell Biology",
-        headof: "Sponsoring",
-        igemjob: "Wet lab, AirBuddy, Creativity",
-        whyigem: "It’s great to be part of a project from the formation of the idea until the final results, so you can contribute with your work but also gain new experiences",
-        bestpart: "Learning new techniques in the lab", 
-        biggestchallenge: "Coordination of many people and their individual work styles to work as one",
-        funfacts: "Can't decide if I'm left- or right-handed",
+        nachname: "Guckes", 
+        age: "24",
+        linkedinurl: "https://www.linkedin.com/in/isabell-alexandra-guckes-5023a030b/",
+        hauptfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/isabell-1-1-11zon.webp",
+        zweitfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/isabell-2-2-11zon.webp",
+        pronouns: "she/her",
+        studiengang:  "M.Sc. Molecular Cell Biology",
+        headof: "Sponsoring and Cell Culture (Cell lines)",
+        igemjob: ["Wet lab, AirBuddy, Creativity"],
+        whyigem: [
+            "It's great to be part of a project from the formation of the idea until the final results, so you can contribute with your work but also gain new experiences", 
+            "Because I want to be part of a dedicated team of young scientists and follow a project from the idea to the final result with all its' challenges",            "XX",
+        ], 
+        bestpart: [
+            "Learning new techniques in the lab", 
+        ],
+        biggestchallenge: [
+            "Coordination of many people and their individual work styles to work as one",
+        ],
+        funfacts: [
+            "Can't decide if I'm left- or right-handed",
+            "a fortune cookie once told me the future holds significant data",
+                ],
         favmusic: "Disney songs sung by Kaya",
+        sciencemedia: [
+            "sunscreen, swim suit and sangria",
+        ],
+        onechange: [
+            "More rapid improvement of AI in science to speed up microscopy sessions because usually you need to be very patient",
+        ],
+        hobbies:  [
+            "Baking",
+            "Yoga",
+            "Cycling",
+            "Crocheting",
+            "Guitar",
+                ],
+        scientificinterests: "Medical research, Oncology, Genetic Diseases",
     },
 
     {
         vorname: "Kai", 
-        nachname: "Kanthak",
-        hauptfoto: "https://www.linkedin.com/in/kai-kanthak-1715901b9/",
+        nachname: "Kanthak", 
+        age: "26",
+        linkedinurl: "https://www.linkedin.com/in/kai-kanthak-1715901b9/",
+        hauptfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/kai-1-1-11zon.webp",
+        zweitfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/kai-2-2-11zon.webp",
         pronouns: "he/him",
-        studiengang: "B.Sc. Molecular Biotechnology",
-        igemjob: "PrimeGuide, Biosafety, Sponsoring",
-        whyigem: "The best way to apply theoretical knowledge is through hands-on projects. Taking part in IGem has allowed me to learn more than I ever would have in the same amount of time at university",
-        bestpart: "When something meticulously thought out and planned works as intended in the laboratory. And to experience this together with the team", 
-        biggestchallenge: "Getting a team of very different people with different schedules and lifes to work together effectively and efficiently on something",
+        studiengang:  "B.Sc. Molecular Biotechnology",
+        igemjob: ["PrimeGuide, Biosafety, Sponsoring"],
+        whyigem: [
+            "The best way to apply theoretical knowledge is through hands-on projects. Taking part in iGEM has allowed me to learn more than I ever would have in the same amount of time at university",
+            "Finding out if a career in academia is something for me",
+            "Being part of a cool project where I can learn a ton of things along the way",
+            "The certainty that there must be a way.... but stubbornness definitely helps"
+        ], 
+        bestpart: [
+            "Learning new techniques in the lab", 
+        ],
+        biggestchallenge: [
+            "Getting a team of very different people with different schedules and lifes to work together effectively and efficiently on something",
+        ],
+        funfacts: [
+            "permanent doubter and so far the always sick guy (coughing while writing this)",
+            "XXX",
+                ],
         favmusic: "radio, techno",
+        sciencemedia: [
+            "Bear Grylls, 2000 piece puzzle and a camping chair",
+        ],
+        onechange: [
+            "Certain incentive structures in academia so that research would be driven more by childlike curiosity than personal career and status goals",
+        ],
+        hobbies:  [
+            "Swimming",
+            "Running",
+        ],
+        scientificinterests: "Neuroscience, Astronomy, Longevity",
     },
 
     {
+        title: "B.Sc.",
         vorname: "Kathleen", 
-        nachname: "Susat",
-        hauptfoto: "https://www.linkedin.com/in/kathleen-susat-261979301?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=ios_app",
+        nachname: "Susat", 
+        age: "25",
+        linkedinurl: "www.linkedin.com/in/anna-lena-b-a488102a5",
+        hauptfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/kathleen-1-3-11zon.webp",
+        zweitfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/kathleen-2-4-11zon.webp",
         pronouns: "she/her",
-        studiengang: "M.Sc. Genome Based Systems Biologie",
-        igemjob: "Wet lab, PrimeGuide, Biosafety, Human Practices, Public Engagement",
-        whyigem: "I want to acquire new skills and develop my character. Moreover working on an exciting project alongside passionate researchers enables meaningful contributions to be made",
-        bestpart: "Lab time and of course our wonderful team", 
-        biggestchallenge: "Not going crazy",
+        studiengang:  "M.Sc. Genome Based Systems Biologie",
+        headof: "Cell Culture (Primary Cells)",
+        igemjob: ["Wet lab, PrimeGuide, Biosafety, Human Practices, Public Engagement"],
+        whyigem: [
+            "I want to acquire new skills and develop my character. Moreover working on an exciting project alongside passionate researchers enables meaningful contributions to be made",
+        ], 
+        bestpart: [
+            "Lab time and of course our wonderful team",
+        ],
+        biggestchallenge: [
+            "Not going crazy"
+        ],
         funfacts: [
             "Passionate handball player",
             "Food lover",
-        ],
+                ],
         favmusic: "Musicals",
+        sciencemedia: [
+            "XXX"
+        ],
+        onechange: [
+            "XXX"
+        ],
+        hobbies:  [
+            "XXX",
+                ],
+        scientificinterests: "XXX",
     },
 
     {
+        title: "M.Sc.",
         vorname: "Kaya", 
-        nachname: "Lange",
-        hauptfoto: "https://www.linkedin.com/in/kaya-lange?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=android_app",
+        nachname: "Lange", 
+        age: "24",
+        linkedinurl: "https://www.linkedin.com/in/kaya-lange?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=android_app",
+        hauptfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/kaya-1-1-11zon.webp",
+        zweitfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/kaya-2-2-11zon.webp",
         pronouns: "she/her",
-        studiengang: "M.Sc. Molecular Biotechnology",
-        igemjob: "Wet lab, PrimeGuide, AirBuddy, Human Practices, Public Engagement",
-        whyigem: "I wanted to be part of an incredible team implementing a large and significant project together",
-        bestpart: "My favorite part of iGEM is learning a lot about scientific research, handling stress and working in a wonderful team on one page together to achieve our goal", 
-        biggestchallenge: "The biggest challenge is time management. It is quite difficult to manage all the different aspects of the project",
+        studiengang:  "M.Sc. Molecular Biotechnology",
+        headof: "Human Practice",
+        igemjob: ["Wet lab, PrimeGuide, AirBuddy, Human Practices, Public Engagement"],
+        whyigem: [
+            "I wanted to be part of an incredible team implementing a large and significant project together", 
+            "Challenges are also just thorny opportunities",
+        ], 
+        bestpart: [
+            "My favorite part of iGEM is learning a lot about scientific research, handling stress and working in a wonderful team on one page together to achieve our goal",
+            "I want to be part of a incredible team implementing a large and significant project together",
+        ],
+        biggestchallenge: [
+            "The biggest challenge is time management. It is quite difficult to manage all the different aspects of the project"
+        ],
         funfacts: [
             "I tend to say yes to everything",
             "My friends are often impressed by how I squeeze so much into my life",
-            "I love travelling and have lived in South America, Sweden and Spain"
+            "I love travelling and have lived in South America, Sweden and Spain",
         ],
         favmusic: "I like to listen to french café music to prepare for the grand jamboree in paris",
+        sciencemedia: [
+            "Survivalbook, friends and wine"
+        ],
+        onechange: [
+            "If given the opportunity to change one thing in the world of science, I would advocate for increased investment in scientific research and innovation"
+        ],
+        hobbies:  [
+            "Saying yes to everything",
+            "Volunteering",
+            "Swimming",
+            "Cooking",
+            "Being with friends",
+            "Traveling around the world"
+                ],
+        scientificinterests: "Plants, Gene Editing, Climate Change",
     },
 
     {
+        title: "B.Sc.",
         vorname: "Liliana", 
-        nachname: "Sanfilippo",
-        hauptfoto: "https://www.linkedin.com/in/liliana-sanfilippo-425709231/",
+        nachname: "Sanfilippo", 
+        age: "22",
+        linkedinurl: "https://www.linkedin.com/in/liliana-sanfilippo-425709231/",
+        hauptfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/liliana-1-1-11zon.webp",
+        zweitfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/liliana-2-2-11zon.webp",
         pronouns: "she/her",
-        studiengang: "M.Sc. Bioinformatic and Genome Research",
+        studiengang:  "M.Sc. Bioinformatics and Genome Research",
         headof: "Wiki",
-        igemjob: "Human Practices/ Public Engagement",
-        whyigem: "I am very curious and like projects",
-        bestpart: "Actually seeing results of what you are doing", 
-        biggestchallenge: "The biggest challenge is time management. It is quite difficult to manage all the different aspects of the project",
+        igemjob: ["Human Practices/ Public Engagement"],
+        whyigem: [
+            "I am very curious and like projects",
+        ], 
+        bestpart: [
+            "Actually seeing results of what you are doing",
+        ],
+        biggestchallenge: [
+            "The biggest challenge is time management. It is quite difficult to manage all the different aspects of the project"
+        ],
+        funfacts: [
+            "My roommates don't let me do experiments in the kitchen anymore",
+            "I just have a serious obsession with isopods and efficiency",
+            "Doing projects is fun",
+                ],
+        favmusic: "Techno workout playlist from Lisa",
+        onechange: [
+            "Make researchers put ALL their data into very detailed databases, that would make looking up data so efficient. You too, faunisticians and anatomists. I´m looking at you"
+        ],
+        hobbies:  [
+            "Painting & Drwaing",
+            "Maintaining a website",
+            "Keeping isopods",
+        ],
+        scientificinterests: "Terrestrial Isopods, Analysis of Postgenome Data, Phylogenetics & Machine Learning",
+        sciencemedia: "XXX",
     },
 
     {
+        title: "B.Sc.",
         vorname: "Lisa", 
-        nachname: "Wiesner",
-        hauptfoto: "XXX",
+        nachname: "Wiesner", 
+        age: "28",
+        linkedinurl: "XXX",
+        hauptfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/lisa-1-3-11zon.webp",
+        zweitfoto: "https://static.igem.wiki/teams/5247/photos/team-photos/lisa-2-4-11zon.webp",
         pronouns: "she/her",
-        studiengang: "XXX",
-        igemjob: "XXX",
-        whyigem: "XXX",
-        bestpart: "XXX", 
-        biggestchallenge: "XXX",
-        funfacts: [
+        studiengang:  "M.Sc. Molecular Cell Biology",
+        igemjob: ["XXX"],
+        whyigem: [
+            "My motivation for iGEM comes from the excitement of tackling real world problems through innovative synthetic biology solutions, alongside a global community of passionate scientists",
+            "The opportunity to showcase our work at the iGEM Giant Jamboree and potentially make a meaningful impact on the world",
+            "I just have a very high frustration tolerace",
+        ], 
+        bestpart: [
+            "XXX",
+        ],
+        biggestchallenge: [
             "XXX"
         ],
+        funfacts: [
+            "XXX",
+                ],
         favmusic: "XXX",
+        sciencemedia: [
+            "some divice to listen to music",
+            "kindle with unlimited excess of books",
+            "sunblocker with a very high SPF",
+        ],
+        onechange: [
+            "Enhance the accessibility and inclusivity of scientific knowledge and opportunities. Because knowledge is power and everyone should have equal opportunities regardless of their background"
+        ],
+        hobbies:  [
+            "Agility",
+            "Softball",
+            "Climbing",
+            "Basically everything outdoors"
+                ],
+        scientificinterests: "Cell Biology, Genetic Engineering, Biomedicine",
     },
 
     {
-        vorname: "Malte", 
+        vorname: "Malte",
         nachname: "Lenger",
         hauptfoto: "www.linkedin.com/in/malte-lenger-08j2003",
         pronouns: "he/him",
         studiengang: "B.Sc. Molecular Biotechnology",
         igemjob: "Wet lab, PrimeGuide, Biosafety",
         whyigem: "I wanted to take part in a research project like this to network with industry and other enthusiastic students worldwide, to learn about new molecular biology methods and to experience what it is like to do research and work independently at such a level, while coordinating and working in a team",
-        bestpart: "My favourite part of iGEM was/is meeting new people as well as working and researching with them. It's also the new insights you gain: both into working methods, for example in the lab, and into the field of work in general", 
+        bestpart: "My favourite part of iGEM was/is meeting new people as well as working and researching with them. It's also the new insights you gain: both into working methods, for example in the lab, and into the field of work in general",
         biggestchallenge: "The biggest challenge at iGEM during the semester was balancing the project and my own university tasks. And in general, it was to remain self-confident, both with some setbacks and with activities where you had a lot of responsibility but had never done them yourself before",
         funfacts: [
             "I like meeting up with people, especially if you go out in the city in the evening and meet up for a drink or something like that",
@@ -225,10 +466,15 @@ export const teammembers: Array<Steckbrief> = [
             "But last but not least I am very interested in sports, with my favourite sports being football, basketball, skiing and tennis. However, I am very broad-minded when it comes to sports, so I actually watch every sport if none of the above are on TV. For example, during the Olympic Games this year, I might spend a whole afternoon just watching the swimming competitions."
         ],
         favmusic: "My favorite music in the lab is the music I usually listen to. This mainly includes hip-hop and American rap, especially artists like Travis Scott, Gunna, Metro Boomin and Reezy",
+        age: "XXX",
+        sciencemedia: "XXX",
+        onechange: "XXX",
+        hobbies: ["XXX"],
+        scientificinterests: "XXX"
     },
 
     {
-        vorname: "Michael", 
+        vorname: "Michael",
         nachname: "Gröning",
         hauptfoto: "https://www.linkedin.com/in/michael-gröning-671732191",
         pronouns: "he/him",
@@ -236,7 +482,7 @@ export const teammembers: Array<Steckbrief> = [
         headof: "Creativity",
         igemjob: "Design, Public Engagement",
         whyigem: "I like worldwide competitions, team spirit and realizing projects that help people living a better life",
-        bestpart: "Huge community and creative freedom", 
+        bestpart: "Huge community and creative freedom",
         biggestchallenge: "To decipher every second technical term in discussions",
         funfacts: [
             "I've never worked in the lab",
@@ -244,10 +490,15 @@ export const teammembers: Array<Steckbrief> = [
             "I'm not related to the creator of The Simpsons",
         ],
         favmusic: "I would choose epic orchestras with choirs",
+        age: "XXX",
+        sciencemedia: "XXX",
+        onechange: "XXX",
+        hobbies: ["XXX"],
+        scientificinterests: "XXX",
     },
 
     {
-        vorname: "Philip", 
+        vorname: "Philip",
         nachname: "Mundt",
         hauptfoto: "linkedin.com/in/philip-mundt-3b1a53306",
         pronouns: "he/him",
@@ -255,7 +506,7 @@ export const teammembers: Array<Steckbrief> = [
         headof: "Mechanism",
         igemjob: "Wet lab, PrimeGuide, Wiki",
         whyigem: "To learn, to work as a team and to experience research from the ground up",
-        bestpart: "I like that it brings people together to strive for a common goal", 
+        bestpart: "I like that it brings people together to strive for a common goal",
         biggestchallenge: "The biggest challenge definitely is to handle the neverending amount of tasks, most of which are completely new challenges you have to learn by yourself",
         funfacts: [
             "I've never worked in the lab",
@@ -263,10 +514,15 @@ export const teammembers: Array<Steckbrief> = [
             "I'm not related to the creator of The Simpsons",
         ],
         favmusic: "Technoo",
+        age: "XXX",
+        sciencemedia: "XXX",
+        onechange: "XXX",
+        hobbies: ["XXX"],
+        scientificinterests: "XXX",
     },
 
     {
-        vorname: "Vera", 
+        vorname: "Vera",
         nachname: "Köhler",
         hauptfoto: "XXX",
         pronouns: "she/her",
@@ -274,24 +530,36 @@ export const teammembers: Array<Steckbrief> = [
         headof: "Delivery",
         igemjob: "Wet lab, AirBuddy, Human Practices/ Public Outreach, Creativity",
         whyigem: "To test my limits and expand various laboratory and soft skills",
-        bestpart: "The amazing Team and the funny, but also frustrating moments we lived through", 
+        bestpart: "The amazing Team and the funny, but also frustrating moments we lived through",
         biggestchallenge: "Completing ten different emergency tasks at the same time without losing your head",
         funfacts: [
             "As a child I thought I would be arrested if I ate in the car, so I hid my snack as soon as we passed another car. I wonder what my parents had drilled into me",
         ],
         favmusic: "Upbeat fun songs like Unwritten, C'est la bourgeoisie or Feminenomenom to keep me motivated",
+        age: "XXX",
+        sciencemedia: "XXX",
+        onechange: "XXX",
+        hobbies: ["XXX"],
+        scientificinterests: "XXX",
     },
 
     {
-        vorname: "Vincent Carl", 
+        vorname: "Vincent Carl",
         nachname: "Stöckl",
         hauptfoto: "XXX",
         pronouns: "he/him",
         studiengang: "B.Sc. Molecular Biotechnology",
         igemjob: "Wet lab, AirBuddy, Sponsoring",
         whyigem: "A chance to work as a real scientist as well as being part of a team working at the cutting edge of biotechnology",
-        bestpart: "The challenge of trying new things and working as a real scientist", 
+        bestpart: "The challenge of trying new things and working as a real scientist",
         biggestchallenge: "Balancing iGEM and university work ",
+        age: "XXX",
+        funfacts: "XXX",
+        favmusic: "XXX",
+        sciencemedia: "XXX",
+        onechange: "XXX",
+        hobbies: ["XXX"],
+        scientificinterests: "XXX",
     },
 
 ]
@@ -309,34 +577,44 @@ export const advisors: Array<Steckbrief> = [
         bestpart: "XXX",
         biggestchallenge: "XXX",
         funfacts: [
-            "XXX", 
+            "XXX",
             "XXX",
             "XXX",
             "XXX"
         ],
         favmusic: "XXX",
-        },
+        age: "XXX",
+        sciencemedia: "XXX",
+        onechange: "XXX",
+        hobbies: ["XXX"],
+        scientificinterests: "XXX",
+    },
    
     {
-    title: "M.Sc.",
-    vorname: "Lucas",
-    nachname: "Krause",
-    linkedinurl: "XXX",
-    hauptfoto: "https://static.igem.wiki/teams/5247/placeholders/placehilderperson.jpeg",
-    pronouns: "he/him",
-    studiengang: "Molecular Biotechnology",
-    headof: "XXX",
-    igemjob: "XXX",
-    whyigem: "XXX",
-    bestpart: "XXX",
-    biggestchallenge: "XXX",
-    funfacts: [
-        "XXX", 
-        "XXX",
-        "XXX",
-        "XXX"
-    ],
-    favmusic: "XXX",
+        title: "M.Sc.",
+        vorname: "Lucas",
+        nachname: "Krause",
+        linkedinurl: "XXX",
+        hauptfoto: "https://static.igem.wiki/teams/5247/placeholders/placehilderperson.jpeg",
+        pronouns: "he/him",
+        studiengang: "Molecular Biotechnology",
+        headof: "XXX",
+        igemjob: "XXX",
+        whyigem: "XXX",
+        bestpart: "XXX",
+        biggestchallenge: "XXX",
+        funfacts: [
+            "XXX",
+            "XXX",
+            "XXX",
+            "XXX"
+        ],
+        favmusic: "XXX",
+        age: "XXX",
+        sciencemedia: "XXX",
+        onechange: "XXX",
+        hobbies: ["XXX"],
+        scientificinterests: "XXX",
     },
 
     {
@@ -355,7 +633,12 @@ export const advisors: Array<Steckbrief> = [
             "I adore baking, especially sourdough bread and banana bread"
         ],
         favmusic: "Pokémon OST",
-        },
+        age: "XXX",
+        sciencemedia: "XXX",
+        onechange: "XXX",
+        hobbies: ["XXX"],
+        scientificinterests: "XXX",
+    },
 
     {
         title: "M.Sc.",
@@ -377,7 +660,12 @@ export const advisors: Array<Steckbrief> = [
             "XXX"
         ],
         favmusic: "XXX",
-        }
+        age: "XXX",
+        sciencemedia: "XXX",
+        onechange: "XXX",
+        hobbies: ["XXX"],
+        scientificinterests: "XXX",
+    }
 ]
 
 export const instructor: Array<Steckbrief> = [
@@ -396,48 +684,65 @@ export const instructor: Array<Steckbrief> = [
         bestpart: "Connections and networks formed during your iGEM journey have a lasting impact. That’s why I’m excited to launch a new platform for socializing and networking: the 'BFH European Meet-Up' - a collaboration between Bielefeld, Frankfurt, and Hamburg",
         biggestchallenge: "Whether it's during night shifts or endless team meetings. Staying awake can be a challenge. Sometimes I need to mediate between my kidz or try to help them out, but they grow up so fast and are ready to spread their wings. As a dad, it’s challenging for me to let them fly. But even then, I’m proud to see how they handle their challenges and come back stronger every time!",
         funfacts: [
-            "I function perfectly well without sleep – but beware if anyone expects me to be in a good mood without my beauty rest!", 
+            "I function perfectly well without sleep – but beware if anyone expects me to be in a good mood without my beauty rest!",
             "Coffee and energy drinks are basically my life elixir. Without them, I'd probably be a walking zombi",
             "My team has a special talent for making me “weak” - very effective",
             "Some people says that I'm a walking stock image.. can't relate"
         ],
         favmusic: "PCR and the Amplifiers – their hit single 'Heating Up the Room (Denaturation Blues)' really gets things going!",
-        }
+        age: "XXX",
+        sciencemedia: "XXX",
+        onechange: "XXX",
+        hobbies: ["XXX"],
+        scientificinterests: "XXX",
+    }
 
 ]
 export const pis: Array<Steckbrief> = [
 
     {
         title: "Prof. Dr.",
-        vorname: "Jörn", 
-        nachname: "Kalinowski", 
+        vorname: "Jörn",
+        nachname: "Kalinowski",
         linkedinurl: "linkedin.com/in/jörn-kalinowski-b7033b1b",
         hauptfoto: "https://static.igem.wiki/teams/5247/placeholders/placehilderperson.jpeg",
-        pronouns: "he/him", 
-        studiengang: "Research Group Leader - Microbial Genomics and Biotechnology", 
+        pronouns: "he/him",
+        studiengang: "Research Group Leader - Microbial Genomics and Biotechnology",
         igemjob: "Center for Biotechnology of Bielefeld University",
-        whyigem: "Because it is the best complement to our regular life sciences studies in educating scientists", 
-        bestpart: "The jamboree in which all participants get to know that they are not alone with their dreams but a huge worldwide community", 
-        biggestchallenge: "To be on time", 
+        whyigem: "Because it is the best complement to our regular life sciences studies in educating scientists",
+        bestpart: "The jamboree in which all participants get to know that they are not alone with their dreams but a huge worldwide community",
+        biggestchallenge: "To be on time",
         funfacts: [
-            "As a scientist never had to change my working place (from studies to retirement). Started parallel educations in biology and computer sciences when these disciplines were worlds apart (starting in 1977)."],
+            "As a scientist never had to change my working place (from studies to retirement). Started parallel educations in biology and computer sciences when these disciplines were worlds apart (starting in 1977)."
+        ],
         favmusic: "Metal (e.g. System of a down)",
+        age: "XXX",
+        sciencemedia: "XXX",
+        onechange: "XXX",
+        hobbies: ["XXX"],
+        scientificinterests: "XXX",
     },
 
     {
         title: "Prof. Dr.",
-        vorname: "Kristian", 
-        nachname: "Müller", 
+        vorname: "Kristian",
+        nachname: "Müller",
         linkedinurl: "https://www.linkedin.com/in/kristian-mueller/",
         hauptfoto: "https://static.igem.wiki/teams/5247/placeholders/placehilderperson.jpeg",
-        pronouns: "he/him", 
-        studiengang: "Research Group Leader - Molecular and Cellular Biotechnology", 
+        pronouns: "he/him",
+        studiengang: "Research Group Leader - Molecular and Cellular Biotechnology",
         igemjob: "Technical Facility of Bielefeld University",
-        whyigem: "The combination of fun and progress", 
-        bestpart: "Motivated coworkers", 
-        biggestchallenge: "Exaggerated statements", 
+        whyigem: "The combination of fun and progress",
+        bestpart: "Motivated coworkers",
+        biggestchallenge: "Exaggerated statements",
         funfacts: [
-            "iGEMmer since 2007 and keeping it rolling (any resemblance to Sisyphus is purely coincidental)"],
+            "iGEMmer since 2007 and keeping it rolling (any resemblance to Sisyphus is purely coincidental)"
+        ],
         favmusic: "Sam Cooke - Wonderful World",
+        age: "XXX",
+        sciencemedia: "XXX",
+        onechange: "XXX",
+        hobbies: ["XXX"],
+        scientificinterests: "XXX",
     }
 ]
\ No newline at end of file
diff --git a/src/components/landingpage/ContentBlock.tsx b/src/components/landingpage/ContentBlock.tsx
index d3adbb675048408377f61c5eb62d7756f2d19481..6736b4a7405f76e5a3c789a5d789c0487e6b273e 100644
--- a/src/components/landingpage/ContentBlock.tsx
+++ b/src/components/landingpage/ContentBlock.tsx
@@ -1,6 +1,19 @@
+import React from 'react';
+
 export function ContentBlock({file}:{file: string}) {
+    const [isVisible, setVisible] = React.useState(false);
+    const domRef = React.useRef(null)!;
+    React.useEffect(() => {
+      const observer = new IntersectionObserver(entries => {
+        entries.forEach(entry => setVisible(entry.isIntersecting));
+      });
+      observer.observe(domRef.current!);
+    }, []);
+    
+
     return(
-        <div className="row col base-width-height">
+        <div className={`content-block${isVisible ? 'is-visible' : ''}`}
+        ref={domRef}>
             {
                 <img src={file}></img>
             }
diff --git a/src/contents/Bfh.tsx b/src/contents/Bfh.tsx
index 05081e1c5b140338b63d7bbac3ccbe7b6c6af956..455a39bbf6764633a0f0b14ed99287effe4e474f 100644
--- a/src/contents/Bfh.tsx
+++ b/src/contents/Bfh.tsx
@@ -2,7 +2,7 @@ import { BFHTimeline } from "../components/BFH-Timeline";
 import BFHGallery from "../components/Photo-grid";
 import BFHpdf, { GuidePDF } from "../components/Pdfs";
 import { H2} from "../components/Headings";
-import { BFHStyleTabs } from "../components/Tabs";
+import { OLDBFHStyleTabs } from "../components/Tabs";
 import { useLocation } from "react-router-dom";
 import { useEffect } from "react";
 import { BlockQuoteB } from "../components/Quotes";
@@ -94,7 +94,7 @@ export function Bfh() {
 
         </div>
         <div className="col">
-          <BFHStyleTabs data={tabbys} cla="tabcontent"></BFHStyleTabs>
+          <OLDBFHStyleTabs data={tabbys} cla="tabcontent"></OLDBFHStyleTabs>
         </div>
       </div>
       <div className="row">
diff --git a/src/contents/Home.tsx b/src/contents/Home.tsx
index 388390372f9769f6d7fc472085a019d35490f456..a83c4fc6faba97571025b3fe6ab4f18eef5f51be 100644
--- a/src/contents/Home.tsx
+++ b/src/contents/Home.tsx
@@ -1,32 +1,45 @@
-import { ContentBlock } from "../components/landingpage/ContentBlock";
+import { FadeIn } from "../components/FadeIn";
 
-export function Home() {  
+export function Home() {
   return (
-    <>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/firstperson.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/firstbreathin.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/firstbreathoutrelease.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/firstbreathoutdone.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/revitalized.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/breathdeepin.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/breathhold.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/holdbad.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/holdpanic.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/holdrelief.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/holdreliefdone.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/privilage.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/threecircles.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/threepeople.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/blockedairway.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/infection.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/maskpsych.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/fear.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/twenty.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/oneintwenty.webp"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/treatmentnoloop.gif"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/precyse.gif"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/airbuddy.gif"></ContentBlock>
-      <ContentBlock file="https://static.igem.wiki/teams/5247/landing/primeguide.webp"></ContentBlock>
-    </>
+    <div className="row mt-4">
+      <div className="col">
+        <div  className="col">
+          {/* Spacing Block */}
+          <div className='col' style={{ 'height': '70vh' }}></div>
+
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/breath/breath-1.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/breath/breath-2.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/breath/breath-3.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/breath/breath-4.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/breath/breath-5.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/breath/breath-6.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/breath/breath-7.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/breath/breath-8.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/breath/breath-9.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/breath/breath-10.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/breath/breath-11.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/breath/breath-12.webp"></FadeIn>
+          
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/problems/problems-1.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/problems/problems-2.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/problems/problems-3.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/problems/problems-4.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/problems/problems-5.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/problems/problems-6.webp"></FadeIn>
+
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/oneintwenty-1.webp"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/oneintwenty-2.webp"></FadeIn>
+          
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/treatmentnoloop.gif"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/precyse.gif"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/airbuddy.gif"></FadeIn>
+          <FadeIn filepath="https://static.igem.wiki/teams/5247/landing/primeguide.webp"></FadeIn>
+          
+          {/* Spacing Block */}
+          <div className='col' style={{ 'height': '150vh' }}></div>
+        </div>
+      </div> 
+    </div> 
   );
 }
diff --git a/src/contents/drylab.tsx b/src/contents/drylab.tsx
deleted file mode 100644
index 70a65fa8ce73f3731f56aa517d2f67751efbef22..0000000000000000000000000000000000000000
--- a/src/contents/drylab.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import { useEffect } from "react";
-import { useLocation } from "react-router-dom";
-import { openFromOtherPage } from "../utils/openFromOtherpAge";
-export function Drylab() {
-  const location = useLocation();
-
-    useEffect(() => {
-        const params = new URLSearchParams(location.search);
-        const collapseId = params.get('collapseId');
-        const tabId = params.get('tab');
-
-        // Scroll to the section specified by collapseId
-        if (collapseId) {
-            const collapseElement = document.getElementById(collapseId);
-            if (collapseElement) {
-                const elementTop = collapseElement.getBoundingClientRect().top + window.pageYOffset;
-                const offset = window.innerHeight / 2 - collapseElement.offsetHeight / 2;
-                const scrollPosition = elementTop - offset;
-
-                window.scrollTo({
-                    top: scrollPosition,
-                    behavior: 'smooth',
-                });
-            }
-        }
-
-        // Open the tab specified by tabId
-        if (tabId) {
-            openFromOtherPage(tabId)({ currentTarget: document.getElementById(tabId)! });
-        }
-    }, [location.search]);
-
-    return (
-      <>
-        <div className="row">
-          <div className="col">
-
-          </div>
-        </div>
-        <div className="row">
-      
-        </div>
-      </>
-    );
-  }
-  
\ No newline at end of file
diff --git a/src/contents/education.tsx b/src/contents/education.tsx
deleted file mode 100644
index 2c942314fc4673bca159df0d446cae05ba8a4660..0000000000000000000000000000000000000000
--- a/src/contents/education.tsx
+++ /dev/null
@@ -1,142 +0,0 @@
-
-import { ButtonOne} from "../components/Buttons";
-import { useEffect } from "react";
-import { useLocation } from "react-router-dom";
-import { useNavigation } from "../utils/useNavigation";
-import { H2 } from "../components/Headings";
-
-export function Education() {
-  const { goToPagesAndOpenTab/* , goToTextsAndOpenCollapsible */ } = useNavigation();
-  const location = useLocation();
-  useEffect(() => {
-    const params = new URLSearchParams(location.search);
-    const collapseId = params.get('collapseId');
-    const tabId = params.get('tab');
-
-    // Open the tab specified by tabId
-    if (tabId) {
-        // Hide all tabs
-        const tabs = document.querySelectorAll('.cycletab');
-        tabs.forEach((tab) => {
-            (tab as HTMLElement).style.display = 'none';
-        });
-
-        // Show the selected tab
-        const selectedTab = document.getElementById(tabId);
-        if (selectedTab) {
-            selectedTab.style.display = 'block';
-        }
-    }
-
-    // Scroll to the section specified by collapseId after opening the tab
-    if (collapseId) {
-        const collapseElement = document.getElementById(collapseId);
-        if (collapseElement) {
-            const elementTop = collapseElement.getBoundingClientRect().top + window.pageYOffset;
-            const offset = window.innerHeight / 2 - collapseElement.offsetHeight / 2;
-            const scrollPosition = elementTop - offset;
-
-            window.scrollTo({
-                top: scrollPosition,
-                behavior: 'smooth',
-            });
-        }
-    }
-}, [location.search]);
-
-    return (
-      <>
-        <div>
-        <H2 id="interviews" text="Interviews Page"/>
-            {/* <a onClick={() => goToTextsAndOpenCollapsible("symptoms-collapsible", "/description?collapseId=")}> 
-                Go to Texts and Open Collapsible 1
-            </a> */}
-        </div>
-        <div className="row align-items-center" style={{marginTop: "5vh", marginBottom: "5vh"}}>
-        <div className="col">
-            <ButtonOne text="Overview" open="overview"></ButtonOne>
-          </div>
-          <div className="col">
-            <ButtonOne text="MukoMove" open="mukomove"></ButtonOne>
-          </div>
-          <div className="col">
-            <ButtonOne text="Teuto ruft!" open="teutoruft"></ButtonOne>
-          </div>
-          <div className="col">
-            <ButtonOne text="Schüler*innen Akademie" open="akademie"></ButtonOne>
-          </div>
-        </div>
-        <div id="overview" className="cycletab" style={{display: "block"}}>
-          <H2 id="edu-out-heading" text="Our education and outreach"/>
-          <H2 id="why-heading" text="If not as a special prize - then why?"/>
-        </div>
-        <div id="akademie" className="cycletab" style={{display: "none"}}>
-        <H2 id="student-academy-heading" text="Student academy on the topic of synthetic biology"/>
-        </div>
-        <div id="teutoruft" className="cycletab" style={{display: "none"}}>
-        <H2 id="teuroruft-heading" text="Educational city tour for young and old"/>
-        
-          <div className="row align-items-center">
-              <div className="col">
-                <img src="https://static.igem.wiki/teams/5247/photos/edcation-and-outreach/teutoruft-experminet.jpeg"></img>
-              </div>
-              <div className="col">
-              <img src="https://static.igem.wiki/teams/5247/photos/edcation-and-outreach/teutoruft-gruppe.jpeg"></img>
-              </div>
-            </div>
-        </div>
-        <div id="mukomove" className="cycletab" style={{display: "none"}}>
-        <H2 id="cf-month" text="Cystic fibrosis awareness month"/>
-          <div className="row">
-            <div className="full-small col-3">
-                <img className="max400" src="https://static.igem.wiki/teams/5247/photos/for-wiki-texts/po-mukomove/wir-plakat-mukomove.jpeg"></img>
-            </div>
-            <div className="col">
-            <h3>What is MUKOMOVE?</h3>
-            <p>As part of the cystic fibrosis awareness month May, we took part in this year's <a href="https://www.muko.info/mukomove">MUKOmove</a> from May 8th to May
-              12th under the team name iGEM Bielefeld. MUKOmove is a participatory sports initiative organized by 
-              <a href="https://www.muko.info/"> Mukoviszidose e.V.</a>, the German Cystic Fibrosis Association, aimed at raising awareness and funds 
-              for cystic fibrosis research and support. This annual event encourages individuals and teams to 
-              engage in various physical activities, track their movement, and share their experiences online.  </p>
-              <button>Spenden</button>
-            </div>
-          </div>
-          <br/> 
-          <div className="row">
-            <div className="col">
-            <h3>Why and in which ways were we invested in MUKOmove? </h3>
-          <p>We did not stop at our participation itself – we wanted to make other people from our university and city 
-            aware of the event and collect sport hours for cystic fibrosis with them by inviting them to join our team. 
-            Our survey about cystic fibrosis awareness and our discussions with <a onClick={() => goToPagesAndOpenTab('InvWesthoff', '/human-practices?tab=')}>Kathrin Westhoff</a>, the head of a 
-            practice for physiotherapy in Gütersloh who is also treating young CF patients, showed us how little known 
-            this illness still is. Especially the interview with the physiotherapist made us realize how important 
-            exercise is for everyone and how it brings a community together – we wanted to establish MUKOmove in 
-            Bielefeld. That is why we really got the publicity going by putting up posters and distributing flyers 
-            at the university and in our city as you can see in the following picture. </p>
-            </div>
-            <div className="full-small col-4">
-                <img className="max400" src="https://static.igem.wiki/teams/5247/photos/for-wiki-texts/po-mukomove/img-7828.jpeg"></img>
-              </div>
-          </div>
-            <br/> 
-          <p>We also called for MUKOmove on our socials and set our team a goal of collecting 240 hours doing sports together, 
-            while the entire MUKOmove had a goal of collecting 24,000 sport hours. In cooperation with our university's 
-            sports facilities, using their <a href="https://www.uni-bielefeld.de/einrichtungen/hochschulsport/zusatzangebote/houbi/">“HOUBI-Aktivmobil"</a> and other equipment, we organized a team event at the sports 
-            ground of our university at the begin of MUKOmove. Everyone was warmly invited to our event on May 8th, and 
-            it was a lot of fun to play various sport games together outside in the sun – check out in the following 
-            video! </p>
-          <div className="row align-items-center">
-            <div className="col">
-            <img src="https://www.mapcom.com/wp-content/uploads/2015/07/video-placeholder.jpg"></img>
-            </div>
-          </div>
-          <br/>
-          <h3>What did we achieve?</h3>
-          <p>We are happy to announce that both movement goals were surpassed: Team iGEM Bielefeld was able to collect 358 sport hours, and everyone who took part in MUKOmove together collected 36,542 sport hours!  </p>
-          <p>The MUKOmove was therefore a complete success, and we take pride in having contributed to the goal while raising more awareness for cystic fibrosis in our region and Germany as a whole.</p>
-          </div>
-
-      </>
-    );
-  }
-  
\ No newline at end of file
diff --git a/src/contents/ethics.tsx b/src/contents/ethics.tsx
deleted file mode 100644
index 8538b10ab18c6b80e982cfa662c2fafd6acf55b4..0000000000000000000000000000000000000000
--- a/src/contents/ethics.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-
-import { useEffect } from "react";
-import { useLocation } from "react-router-dom";
-import { openFromOtherPage } from "../utils/openFromOtherpAge";
-export function Ethics() {
-  const location = useLocation();
-
-    useEffect(() => {
-        const params = new URLSearchParams(location.search);
-        const collapseId = params.get('collapseId');
-        const tabId = params.get('tab');
-
-        // Scroll to the section specified by collapseId
-        if (collapseId) {
-            const collapseElement = document.getElementById(collapseId);
-            if (collapseElement) {
-                const elementTop = collapseElement.getBoundingClientRect().top + window.pageYOffset;
-                const offset = window.innerHeight / 2 - collapseElement.offsetHeight / 2;
-                const scrollPosition = elementTop - offset;
-
-                window.scrollTo({
-                    top: scrollPosition,
-                    behavior: 'smooth',
-                });
-            }
-        }
-
-        // Open the tab specified by tabId
-        if (tabId) {
-            openFromOtherPage(tabId)({ currentTarget: document.getElementById(tabId)! });
-        }
-    }, [location.search]);
-
-    return (
-      <>
-        <div className="row mt-4">
-          <div className="col-lg-8">
-          <p>Happy Birthday Kaya!</p>  
-          </div>
-  
-        </div>
-      </>
-    );
-  }
-  
\ No newline at end of file
diff --git a/src/contents/example.css b/src/contents/example.css
index bce2cdfe73b51bfdde7100a81bf82858d33ee550..7191414fcc057e208363db61be5f320807fd6124 100644
--- a/src/contents/example.css
+++ b/src/contents/example.css
@@ -1,8 +1,8 @@
-:root {
-    /* our colours*/ 
+/* :root {
+     our colours
     --text-primary: #850F78; 
     --mediumpurple: #bc15aa; 
-    /*--purple: #B85BD1; */
+    --purple: #B85BD1; 
     --accen-secondary: #F57D22; 
     --accent-primary: #F4CC1E; 
     --lightyellow: #fae99e; 
@@ -10,11 +10,11 @@
     --verylightblue: #ebecfd; 
     --offblack: #32232C ; 
     --cebitecgray: #8295A4; 
-    /*--offwhite: #e9dff1; */
+    --offwhite: #e9dff1; 
     --ourbeige: #FFF6F2; 
     --darkerbeige: #e2dad7; 
     --background: #FFF6F2; 
-    /*igem colours*/
+    igem colours
     --igemdarkgreen: #006530; 
     --igemmediumgreen: #019968; 
     --igemlightgreen: #99cb9a; 
@@ -38,7 +38,7 @@
       --warning-title-color: var(--text-primary);
       --warning-code-bg-color: var(--lightorange); 
   
-  }
+  } */
   
 .example-docu{
     background-color: var(--igemlightgreen);
diff --git a/src/contents/example.tsx b/src/contents/example.tsx
index 6ac884e98a44ae17d217bd4ee4ae838a061493fc..a1ab25e34b08f3055eb2f6ad25216f2bcc8a1da6 100644
--- a/src/contents/example.tsx
+++ b/src/contents/example.tsx
@@ -1,12 +1,114 @@
-import TestSVG from "../components/Testsvganimation";
 
+import { BlueInfoBox, BulbBox, InfoBox, NoteBox, QaBox, WarnBox } from "../components/Boxes";
+import { BFHMoreButton, ButtonOne } from "../components/Buttons";
+import Collapsible from "../components/Collapsible";
+import PieChart from "../components/Graph";
+import H1, { H2, H3, Hhighlight, Hhopp, Hsmoke, Hspoiler, Hwave } from "../components/Headings";
+import { LoremMedium, LoremShort } from "../components/Loremipsum";
+import SimpleSlider from "../components/Slider";
+import React from 'react';
+import { Bar, Doughnut, PolarArea } from 'react-chartjs-2';
+import { Chart as ChartJS, Tooltip, Legend, BarElement, CategoryScale, LinearScale, Title, RadialLinearScale } from 'chart.js';
 
+ChartJS.register(
+    CategoryScale,
+    RadialLinearScale,
+    LinearScale,
+    BarElement,
+    Title,
+    Tooltip,
+    Legend
+  );
+  
 export function Example() {
     return (
       <>
+      <h1> Here you can see what we can use</h1>
+      <h2>Collapisbles</h2>
+      <div className="row">
         <div className="col">
-        <TestSVG></TestSVG>
-{/*             <h3 className="example">Exercises</h3>
+            <details>
+                <summary>Expand me</summary>
+                <LoremMedium></LoremMedium>
+            </details>
+        </div>
+        <div className="col">
+            <Collapsible title="Title" id="collapsible"> <LoremMedium></LoremMedium></Collapsible>
+        </div>
+      </div>
+    <h2>Boxes</h2>
+      <div className="row">
+        <div className="col">
+            <InfoBox title="InfoBox" id="boxid"><LoremShort></LoremShort></InfoBox>
+            <BlueInfoBox title="BlueInfoBox"><LoremShort></LoremShort></BlueInfoBox>
+            <NoteBox title="NoteBox" id="notebox"><LoremShort></LoremShort></NoteBox>
+        </div>
+        <div className="col">
+            <WarnBox title="WarnBox"><LoremShort></LoremShort></WarnBox>
+            <BulbBox title="BulbBox"><LoremShort></LoremShort></BulbBox>
+            <QaBox 
+            q="A question or sentence." 
+            a="An answer or sentence"/> 
+        </div>
+      </div>
+      <h2>Headings</h2>
+      <div className="row">
+        <div className="col">
+        <H1 text="H1" id="text" /> 
+        <H2 text="H2" id="text" />
+        <H3 text="H3" id="text" />
+        </div>
+        <div className="col">
+        <Hsmoke text="Hsmoke" id="text" /> 
+        <Hhopp text="Hhopp" id="text" /> 
+        <Hhighlight> Highlight</Hhighlight>              
+        <Hspoiler>  Hspoiler </Hspoiler>
+        <Hwave text="Hwave" id="text" /> 
+        <a href="#" className="underline--magical">PreCyse</a>
+        </div>
+      </div>
+      <h2>Buttons</h2>
+      <div className="row">
+        <div className="col">
+            <div className="col">
+              <ButtonOne text="The Public" open="pubs" openclass="subcycletab"></ButtonOne>
+            </div>
+        </div>
+        <div className="col">
+            <BFHMoreButton it="id of part to be opened" />
+        </div>
+        <div className="col">
+        <button className="tablinks Patient hp-more-button" > Something </button>
+ 
+        </div>
+      </div>
+      <h2>Graphs</h2>
+      <div className="row">
+        <div className="col">
+            <PieChart></PieChart>
+            <DoughnutChart></DoughnutChart>
+        </div>
+        <div className="col">
+            <BarChartTwoSets></BarChartTwoSets>
+            <BarChart></BarChart>
+        </div>
+        <div className="col">
+            <BarChartVertical></BarChartVertical>
+            <PolarChart></PolarChart>
+        </div>
+      </div>
+      <h2>Boxes</h2>
+      <div className="row">
+        <div className="col">
+            
+        </div>
+        <div className="col">
+            
+        </div>
+      </div>
+
+        <div className="col">
+             <h3 className="example">Exercises</h3>
             <i><h6>By Your name</h6></i>
             <div className="example-exercise">
                 <p> All components should be in this file. The extra css has to be put into exapmle.css. Turn to Liliana if you need or want a scss file, too.</p>
@@ -42,28 +144,6 @@ export function Example() {
             </div>
         </div>
         <hr/>
-        <div className="col exercise">
-            <div className="row align-items-center">
-                <div className="col"><h4>Timeline BFH</h4></div>
-                <div className="col-1 "><div className="example-easy-tag">Easy</div></div>
-            </div>
-            <i><h6>By </h6></i>
-            <div className="example-exercise">
-            <p> Add a dummy timeline item</p>
-            </div>
-            <div className="timeline-container">
-                <TimelineItem
-                date='How to SynBio'
-                tag='Workshop Session I.'
-                color='var(--text-primary)'
-                csstag="Workshop"
-                >
-                Design genetic constructs and re-write the genomic code, and plan experiments using AI. Learn how to effectively build genetic circuit systems for implementation in your iGEM project.
-                </TimelineItem>
-               
-            </div>
-        </div>
-        <hr/>
         <div className="col">
         <div className="row align-items-center">
                 <div className="col"><h4>Picture Slider</h4></div>
@@ -168,8 +248,8 @@ export function Example() {
             <p> See DocuBox component.  </p>
             </div>
         </div>
-        <hr/>  */}
-{/*         <div className="col exercise">
+        <hr/>  
+      <div className="col exercise">
             <div className="row align-items-center">
                 <div className="col"><h4> </h4></div>
                 <div className="col-1 "><div className="example-easy-tag"></div></div>
@@ -179,11 +259,11 @@ export function Example() {
             <p> </p>
             </div>
         </div>
-        <hr/> */}
+        <hr/> 
 
         
 
-        </div>
+
       </>
     );
   }
@@ -201,4 +281,217 @@ export function Example() {
         </>
     )
   }
-  
\ No newline at end of file
+  
+
+  const BarChartTwoSets: React.FC = () => {
+    const labels = ['January', 'February', 'March', 'April', 'May', 'June', 'July'];
+
+    const data = {
+        labels,
+        datasets: [
+          {
+            label: 'Dataset 1',
+            data: [
+                0.004858000000000001,
+                0.0008859999999999997,
+                0.7264179999999972,
+                0.2384159999999995,
+                0.003703,
+                0.2384159999999995,
+                0.003703
+              ],
+            backgroundColor: 'rgba(255, 99, 132, 0.5)',
+          },
+          {
+            label: 'Dataset 2',
+            data: [
+                0.004858000000000001,
+                0.0008859999999999997,
+                0.7264179999999972,
+                0.2384159999999995,
+                0.003703,
+                0.2384159999999995,
+                0.003703
+              ],
+            backgroundColor: 'rgba(53, 162, 235, 0.5)',
+          },
+        ],
+      };
+    const options = {
+        responsive: true,
+        plugins: {
+          legend: {
+            position: 'top' as const,
+          },
+          title: {
+            display: true,
+            text: 'BarChartTwoSets',
+          },
+        },
+      };
+  
+    return (
+      <div className="bar-chart-container">
+        <Bar options={options} data={data} />
+        </div>
+    );
+  };
+
+  const BarChart: React.FC = () => {
+    const labels = ['January', 'February', 'March', 'April', 'May', 'June', 'July'];
+
+    const data = {
+        labels,
+        datasets: [
+          {
+            label: 'Dataset 1',
+            data: [
+                0.004858000000000001,
+                0.0008859999999999997,
+                0.7264179999999972,
+                0.2384159999999995,
+                0.003703,
+                0.2384159999999995,
+                0.003703
+              ],
+            backgroundColor: 'rgba(255, 99, 132, 0.5)',
+          },
+        ],
+      };
+    const options = {
+        responsive: true,
+        plugins: {
+          legend: {
+            position: 'top' as const,
+          },
+          title: {
+            display: true,
+            text: 'BarChartOneSet',
+          },
+        },
+      };
+  
+    return (
+      <div className="bar-chart-container">
+        <Bar options={options} data={data} />
+        </div>
+    );
+  };
+
+  const BarChartVertical: React.FC = () => {
+    const labels = ['January', 'February', 'March', 'April', 'May', 'June', 'July'];
+
+    const data = {
+        labels,
+        datasets: [{
+            axis: 'y',
+            label: 'My First Dataset',
+            data: [65, 59, 80, 81, 56, 55, 40],
+            fill: false,
+            backgroundColor: [
+              'rgba(255, 99, 132, 0.2)',
+              'rgba(255, 159, 64, 0.2)',
+              'rgba(255, 205, 86, 0.2)',
+              'rgba(75, 192, 192, 0.2)',
+              'rgba(54, 162, 235, 0.2)',
+              'rgba(153, 102, 255, 0.2)',
+              'rgba(201, 203, 207, 0.2)'
+            ],
+            borderColor: [
+                'rgb(255, 99, 132)',
+                'rgb(255, 159, 64)',
+                'rgb(255, 205, 86)',
+                'rgb(75, 192, 192)',
+                'rgb(54, 162, 235)',
+                'rgb(153, 102, 255)',
+                'rgb(201, 203, 207)'
+              ],
+              borderWidth: 1
+            }
+        ],
+      };
+    const options = {
+        indexAxis: 'y' as const,
+        responsive: true,
+        plugins: {
+          legend: {
+            position: 'top' as const,
+          },
+          title: {
+            display: true,
+            text: 'Vertical Bar Chart',
+          },
+        },
+      };
+  
+    return (
+      <div className="bar-chart-container">
+        <Bar options={options} data={data} />
+        </div>
+    );
+  };
+
+
+  const DoughnutChart: React.FC = () => {
+
+    const data = {
+        labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
+  datasets: [
+    {
+      label: '# of Votes',
+      data: [12, 19, 3, 5, 2, 3],
+      backgroundColor: [
+        'rgba(255, 99, 132, 0.2)',
+        'rgba(54, 162, 235, 0.2)',
+        'rgba(255, 206, 86, 0.2)',
+        'rgba(75, 192, 192, 0.2)',
+        'rgba(153, 102, 255, 0.2)',
+        'rgba(255, 159, 64, 0.2)',
+      ],
+      borderColor: [
+        'rgba(255, 99, 132, 1)',
+        'rgba(54, 162, 235, 1)',
+        'rgba(255, 206, 86, 1)',
+        'rgba(75, 192, 192, 1)',
+        'rgba(153, 102, 255, 1)',
+        'rgba(255, 159, 64, 1)',
+      ],
+      borderWidth: 1,
+    },
+  ],
+    };
+    return (
+      <div className="bar-chart-container">
+        <Doughnut data={data} />
+        </div>
+    );
+  };
+
+
+  const PolarChart: React.FC = () => {
+    const data = {
+        labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
+        datasets: [
+          {
+            label: '# of Votes',
+            data: [12, 19, 3, 5, 2, 3],
+            backgroundColor: [
+              'rgba(255, 99, 132, 0.5)',
+              'rgba(54, 162, 235, 0.5)',
+              'rgba(255, 206, 86, 0.5)',
+              'rgba(75, 192, 192, 0.5)',
+              'rgba(153, 102, 255, 0.5)',
+              'rgba(255, 159, 64, 0.5)',
+            ],
+            borderWidth: 1,
+          },
+        ],
+      };
+
+
+    return (
+        <div className="bar-chart-container">
+          <PolarArea data={data} />;
+          </div>
+      );
+    };
\ No newline at end of file
diff --git a/src/contents/human-practices.tsx b/src/contents/human-practices.tsx
index 0e3886507e47554d2835ec23888f8aaa58c1858e..4280b394bc0e6d7af391a41f107470dd9b8b01fb 100644
--- a/src/contents/human-practices.tsx
+++ b/src/contents/human-practices.tsx
@@ -48,16 +48,19 @@
   <h4>Implementation</h4>
   <p></p> 
             */
-import { MindMapTwo } from "../components/MindMapTwo";
 import {  ButtonOne } from "../components/Buttons";
 import { openFromOtherPage } from "../utils/openFromOtherpAge";
 import { BlockQuoteB } from "../components/Quotes";
 import { useEffect } from "react";
 import { useLocation } from "react-router-dom";
+import { useNavigation } from "../utils/useNavigation";
 import { openElement } from "../utils/openElement";
 import { HPTimeline } from "../components/HP-timeline";
+import { H2, H3 } from "../components/Headings";
 
 export function HumanPractices() {
+  const { goToPagesAndOpenTab/* , goToTextsAndOpenCollapsible */ } = useNavigation();
+  
   openElement({buttonClass: "tabbutton", elementToOpen: "All", classToHide: "timelinecardtabs", }); 
   const location = useLocation();
 
@@ -94,43 +97,203 @@ export function HumanPractices() {
       text="Human Practices is the study of how your work affects the world, and how the world affects your work."
       cite="- Peter Carr, Director of Judging"
       /> 
-    <section id="Overview" className="section">
-    <div  className="center" >
-      <h3  className="col personalstyleone">Overview</h3>
-    </div>
+    <img src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.6mRPyWPFEIQzo-HP4kEukgHaEK%26pid%3DApi&f=1&ipt=ad1e62d3df6a343c1c163a8246d424a7b61015ac43a0cbe279976cf544be7aa7&ipo=images" alt="placeholder"></img>
+
+    <H2 text="Introduction" id="intro"/>
+    <div className="row align-items-center" style={{marginTop: "5vh", marginBottom: "1vh"}}>
+        <div className="col">
+            <ButtonOne text="Our Understanding of HP" open="understanding"></ButtonOne>
+          </div>
+          <div className="col">
+            <ButtonOne text="Our Mission & Vision" open="mission"></ButtonOne>
+          </div>
+          <div className="col">
+            <ButtonOne text="Our Target Groups" open="targets"></ButtonOne>
+          </div>
+        </div>
+    <div className="col cycletab" id="understanding" style={{display: "block"}}> understanding </div>
+    <div className="col cycletab" id="mission" style={{display: "none"}}>mission </div>
+    <div className="col cycletab" id="targets" style={{display: "none"}}>targets </div>
+    
+  <H3 text="Framework" id="frame"/>
     <div className="row align-items-center" style={{marginTop: "5vh", marginBottom: "5vh"}}>
         <div className="col">
-            <ButtonOne text="Inspiration" open="inspiration"></ButtonOne>
+            <ButtonOne text="Stakeholder Management" open="stakemamange" openclass="framecycletab"></ButtonOne>
+          </div>
+          <div className="col">
+            <ButtonOne text="Mendelow Analysis" open="mendelow" openclass="framecycletab"></ButtonOne>
+          </div>
+          <div className="col">
+            <ButtonOne text="SWOT analysis" open="swot" openclass="framecycletab"></ButtonOne>
+          </div>
+      </div>
+      <div className="row align-items-center" style={{marginBottom: "5vh"}}>
+        <div className="col">
+            <ButtonOne text="Feedback Cycle" open="feedcycle" openclass="framecycletab"></ButtonOne>
+          </div>
+          <div className="col">
+            <ButtonOne text="Thirs Party Feedback" open="thirdparty" openclass="framecycletab"></ButtonOne>
+          </div>
+          <div className="col">
+            <ButtonOne text="Cycle of Reflection" open="refcycle" openclass="framecycletab"></ButtonOne>
+          </div>
+      </div>
+    <div className="col framecycletab" id="stakemamange" style={{display: "block"}}>stakemamange </div>
+    <div className="col framecycletab" id="mendelow" style={{display: "none"}}>mendelow </div>
+    <div className="col framecycletab" id="swot" style={{display: "none"}}>
+
+    <div className="row align-items-center" style={{marginTop: "5vh", marginBottom: "1vh"}}>
+        <div className="col">
+            <ButtonOne text="Patients" open="pats" openclass="subcycletab"></ButtonOne>
+          </div>
+          <div className="col">
+            <ButtonOne text="Industry" open="inds" openclass="subcycletab"></ButtonOne>
           </div>
           <div className="col">
-            <ButtonOne text="Methods" open="methods"></ButtonOne>
+            <ButtonOne text="Academia" open="acs" openclass="subcycletab"></ButtonOne>
           </div>
           <div className="col">
-            <ButtonOne text="Values and goals" open="values"></ButtonOne>
+            <ButtonOne text="Healthcare" open="healths" openclass="subcycletab"></ButtonOne>
           </div>
+        </div>
+        <div className="row align-items-center" style={{ marginBottom: "5vh"}}>
           <div className="col">
-            <ButtonOne text="Stakeholders" open="stakeholders"></ButtonOne>
-          </div>
-        </div> 
-    <div className="col cycletab" id="inspiration" style={{display: "block"}}>Hallo </div>
-    <div className="col cycletab" id="values" style={{display: "none"}}>Hallo </div>
-    <div className="col cycletab" id="methods" style={{display: "none"}}>Hallo </div>
-    <div className="col cycletab" id="stakeholders" style={{position: "relative", height: "fit-content", display: "none"}}>
-      <MindMapTwo></MindMapTwo>
-    </div> 
-  </section> 
-    <HPTimeline/>
-
-
-    <section id="Reflection" >
-      <div className="center">
-        <h3  className="col personalstyleone">Reflection Framework</h3>
-      </div> 
-          
-    </section>
+              <ButtonOne text="Government" open="govs" openclass="subcycletab"></ButtonOne>
+            </div>
+            <div className="col">
+              <ButtonOne text="Community" open="comms" openclass="subcycletab"></ButtonOne>
+            </div>
+            <div className="col">
+              <ButtonOne text="The Public" open="pubs" openclass="subcycletab"></ButtonOne>
+            </div>
+            <div className="col">
+              <ButtonOne text="Business" open="busi" openclass="subcycletab"></ButtonOne>
+          </div>
+        </div>
+        <div className="col subcycletab" id="pats" style={{display: "block"}}> pats </div>
+        <div className="col subcycletab" id="inds" style={{display: "none"}}>inds </div>
+        <div className="col subcycletab" id="acs" style={{display: "none"}}>acs </div>
+        <div className="col subcycletab" id="healths" style={{display: "none"}}> healths </div>
+        <div className="col subcycletab" id="govs" style={{display: "none"}}>govs </div>
+        <div className="col subcycletab" id="comms" style={{display: "none"}}>comms </div>
+        <div className="col subcycletab" id="pubs" style={{display: "none"}}>pubs </div>
+        <div className="col subcycletab" id="busi" style={{display: "none"}}>busi </div>
+    </div>
+    <div className="col framecycletab" id="thirdparty" style={{display: "none"}}>thirdparty </div>
+    <div className="col framecycletab" id="feedcycle" style={{display: "none"}}>feedcycle </div>
+    <div className="col framecycletab" id="refcycle" style={{display: "none"}}>refcycle </div>
+ 
+  <H2 text="Integrated Human Practices" id="timeline"/>
+  <HPTimeline/>
+  
+  <H2 text="Feedback and Implementation" id="feedback"/>
+  
+  <H2 text="Conclusion" id="conclusion"/>
+  
+  <H2 text="Additions" id="additions"/>
+
+  <H3 text="Public Engagement" id="public"/>
+
+  <H3 text="Education" id="edu"/>
+  <>
+        <div>
+            {/* <a onClick={() => goToTextsAndOpenCollapsible("symptoms-collapsible", "/description?collapseId=")}> 
+                Go to Texts and Open Collapsible 1
+            </a> */}
+        </div>
+        <div className="row align-items-center" style={{marginTop: "5vh", marginBottom: "5vh"}}>
+        <div className="col">
+            <ButtonOne text="Overview" open="overview"></ButtonOne>
+          </div>
+          <div className="col">
+            <ButtonOne text="MukoMove" open="mukomove"></ButtonOne>
+          </div>
+          <div className="col">
+            <ButtonOne text="Teuto ruft!" open="teutoruft"></ButtonOne>
+          </div>
+          <div className="col">
+            <ButtonOne text="Schüler*innen Akademie" open="akademie"></ButtonOne>
+          </div>
+        </div>
+        <div id="overview" className="cycletab" style={{display: "block"}}>
+          <H2 id="edu-out-heading" text="Our education and outreach"/>
+          <H2 id="why-heading" text="If not as a special prize - then why?"/>
+        </div>
+        <div id="akademie" className="cycletab" style={{display: "none"}}>
+        <H2 id="student-academy-heading" text="Student academy on the topic of synthetic biology"/>
+        </div>
+        <div id="teutoruft" className="cycletab" style={{display: "none"}}>
+        <H2 id="teuroruft-heading" text="Educational city tour for young and old"/>
+        
+          <div className="row align-items-center">
+              <div className="col">
+                <img src="https://static.igem.wiki/teams/5247/photos/edcation-and-outreach/teutoruft-experminet.jpeg"></img>
+              </div>
+              <div className="col">
+              <img src="https://static.igem.wiki/teams/5247/photos/edcation-and-outreach/teutoruft-gruppe.jpeg"></img>
+              </div>
+            </div>
+        </div>
+        <div id="mukomove" className="cycletab" style={{display: "none"}}>
+        <H2 id="cf-month" text="Cystic fibrosis awareness month"/>
+          <div className="row">
+            <div className="full-small col-3">
+                <img className="max400" src="https://static.igem.wiki/teams/5247/photos/for-wiki-texts/po-mukomove/wir-plakat-mukomove.jpeg"></img>
+            </div>
+            <div className="col">
+            <h3>What is MUKOMOVE?</h3>
+            <p>As part of the cystic fibrosis awareness month May, we took part in this year's <a href="https://www.muko.info/mukomove">MUKOmove</a> from May 8th to May
+              12th under the team name iGEM Bielefeld. MUKOmove is a participatory sports initiative organized by 
+              <a href="https://www.muko.info/"> Mukoviszidose e.V.</a>, the German Cystic Fibrosis Association, aimed at raising awareness and funds 
+              for cystic fibrosis research and support. This annual event encourages individuals and teams to 
+              engage in various physical activities, track their movement, and share their experiences online.  </p>
+              <button>Spenden</button>
+            </div>
+          </div>
+          <br/> 
+          <div className="row">
+            <div className="col">
+            <h3>Why and in which ways were we invested in MUKOmove? </h3>
+          <p>We did not stop at our participation itself – we wanted to make other people from our university and city 
+            aware of the event and collect sport hours for cystic fibrosis with them by inviting them to join our team. 
+            Our survey about cystic fibrosis awareness and our discussions with <a onClick={() => goToPagesAndOpenTab('InvWesthoff', '/human-practices?tab=')}>Kathrin Westhoff</a>, the head of a 
+            practice for physiotherapy in Gütersloh who is also treating young CF patients, showed us how little known 
+            this illness still is. Especially the interview with the physiotherapist made us realize how important 
+            exercise is for everyone and how it brings a community together – we wanted to establish MUKOmove in 
+            Bielefeld. That is why we really got the publicity going by putting up posters and distributing flyers 
+            at the university and in our city as you can see in the following picture. </p>
+            </div>
+            <div className="full-small col-4">
+                <img className="max400" src="https://static.igem.wiki/teams/5247/photos/for-wiki-texts/po-mukomove/img-7828.jpeg"></img>
+              </div>
+          </div>
+            <br/> 
+          <p>We also called for MUKOmove on our socials and set our team a goal of collecting 240 hours doing sports together, 
+            while the entire MUKOmove had a goal of collecting 24,000 sport hours. In cooperation with our university's 
+            sports facilities, using their <a href="https://www.uni-bielefeld.de/einrichtungen/hochschulsport/zusatzangebote/houbi/">“HOUBI-Aktivmobil"</a> and other equipment, we organized a team event at the sports 
+            ground of our university at the begin of MUKOmove. Everyone was warmly invited to our event on May 8th, and 
+            it was a lot of fun to play various sport games together outside in the sun – check out in the following 
+            video! </p>
+          <div className="row align-items-center">
+            <div className="col">
+            <img src="https://www.mapcom.com/wp-content/uploads/2015/07/video-placeholder.jpg"></img>
+            </div>
+          </div>
+          <br/>
+          <h3>What did we achieve?</h3>
+          <p>We are happy to announce that both movement goals were surpassed: Team iGEM Bielefeld was able to collect 358 sport hours, and everyone who took part in MUKOmove together collected 36,542 sport hours!  </p>
+          <p>The MUKOmove was therefore a complete success, and we take pride in having contributed to the goal while raising more awareness for cystic fibrosis in our region and Germany as a whole.</p>
+          </div>
+
+      </>
+  <H3 text="The survey" id="survey"/>
+
+  <H3 text="Collabroations" id="collabs"/>
 
+  <H3 text="Partnerships" id="ships"/>
     </div>
     
+  
   );  
 }
 
diff --git a/src/contents/index.tsx b/src/contents/index.tsx
index 418644d87910e159d6ed70a57be26aa8bcb4a92f..54c57aac860c55075d51fceb38b8d55f7c52a9c6 100644
--- a/src/contents/index.tsx
+++ b/src/contents/index.tsx
@@ -20,9 +20,7 @@ export * from "../sidebars/hpS.tsx"
 
 export * from "./Bfh.tsx";
 export * from "./wiki.tsx";
-export * from "./drylab.tsx";
 export * from "./impressum.tsx";
-export * from "./measurement.tsx";
 export * from "./partners.tsx";
 export * from "./supplementary-material.tsx";
 export * from "./interviews.tsx"; 
@@ -44,7 +42,6 @@ export * from "../headers/spons-h.tsx"
 export * from "../headers/dry-h.tsx"
 export * from "../headers/eng-h.tsx"
 export * from "../headers/sup-h.tsx"
-export * from "../headers/mes-h.tsx"
 
 export * from "./parts.tsx"; 
 export * from "../headers/part-h.tsx"
@@ -59,22 +56,17 @@ export * from "./judging.tsx";
 export * from "../headers/judge-h.tsx"
 
 
-export * from "./ethics.tsx"; 
-export * from "../headers/eth-h.tsx"
 
 export * from "./example.tsx"; 
 
-export * from "./education.tsx"; 
-export * from "../headers/edu-h.tsx"
+
 
 export * from "../sidebars/engS.tsx"
 export * from "../sidebars/intS.tsx"
 export * from "../sidebars/safeS.tsx"
 export * from "../sidebars/none.tsx"
-export * from "../sidebars/ethS.tsx"
 
-export * from "./survey.tsx"; 
-export * from "../headers/sur-h.tsx"
+
 
 export * from "./collaborations.tsx"; 
 export * from "../headers/coll-h.tsx"
diff --git a/src/contents/judging.tsx b/src/contents/judging.tsx
index ded41c5727e09fee6e1762b1a14513c477ceecaf..2f1e1e9ba45dac2c54a29b43c40d4f481b7e1f94 100644
--- a/src/contents/judging.tsx
+++ b/src/contents/judging.tsx
@@ -1,6 +1,7 @@
 import { useEffect } from "react";
 import { useLocation } from "react-router-dom";
 import { openFromOtherPage } from "../utils/openFromOtherpAge";
+import { H2 } from "../components/Headings";
 export function Judging() {
   const location = useLocation();
 
@@ -32,14 +33,11 @@ export function Judging() {
 
     return (
       <>
-        <div className="row">
-          <div className="col">
-            
-          </div>
-        </div>
-        <div className="row">
-      
-        </div>
+        <H2 text="Best New Part" id="newpart"/>
+
+        <H2 text="Safety and Security" id="safety"/>
+
+        <H2 text="Best Integrated Human Practice" id="ihp"/>
       </>
     );
   }
diff --git a/src/contents/measurement.tsx b/src/contents/measurement.tsx
deleted file mode 100644
index d09ad1b2da80ca34530af2268f67f5ad8eef148f..0000000000000000000000000000000000000000
--- a/src/contents/measurement.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import { useEffect } from "react";
-import { useLocation } from "react-router-dom";
-import { openFromOtherPage } from "../utils/openFromOtherpAge";
-export function Measurement() {
-  const location = useLocation();
-
-    useEffect(() => {
-        const params = new URLSearchParams(location.search);
-        const collapseId = params.get('collapseId');
-        const tabId = params.get('tab');
-
-        // Scroll to the section specified by collapseId
-        if (collapseId) {
-            const collapseElement = document.getElementById(collapseId);
-            if (collapseElement) {
-                const elementTop = collapseElement.getBoundingClientRect().top + window.pageYOffset;
-                const offset = window.innerHeight / 2 - collapseElement.offsetHeight / 2;
-                const scrollPosition = elementTop - offset;
-
-                window.scrollTo({
-                    top: scrollPosition,
-                    behavior: 'smooth',
-                });
-            }
-        }
-
-        // Open the tab specified by tabId
-        if (tabId) {
-            openFromOtherPage(tabId)({ currentTarget: document.getElementById(tabId)! });
-        }
-    }, [location.search]);
-
-    return (
-      <>
-        <div className="row">
-          <div className="col">
-            
-          </div>
-        </div>
-        <div className="row">
-      
-        </div>
-      </>
-    );
-  }
-  
\ No newline at end of file
diff --git a/src/contents/survey.tsx b/src/contents/survey.tsx
deleted file mode 100644
index 2491d39209c9ef87719fbd5362c210bf1753bd81..0000000000000000000000000000000000000000
--- a/src/contents/survey.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-import { useEffect } from "react";
-import { useLocation } from "react-router-dom";
-import { openFromOtherPage } from "../utils/openFromOtherpAge";
-export function Survey() {
-  const location = useLocation();
-
-    useEffect(() => {
-        const params = new URLSearchParams(location.search);
-        const collapseId = params.get('collapseId');
-        const tabId = params.get('tab');
-
-        // Scroll to the section specified by collapseId
-        if (collapseId) {
-            const collapseElement = document.getElementById(collapseId);
-            if (collapseElement) {
-                const elementTop = collapseElement.getBoundingClientRect().top + window.pageYOffset;
-                const offset = window.innerHeight / 2 - collapseElement.offsetHeight / 2;
-                const scrollPosition = elementTop - offset;
-
-                window.scrollTo({
-                    top: scrollPosition,
-                    behavior: 'smooth',
-                });
-            }
-        }
-
-        // Open the tab specified by tabId
-        if (tabId) {
-            openFromOtherPage(tabId)({ currentTarget: document.getElementById(tabId)! });
-        }
-    }, [location.search]);
-
-    return (
-      <>
-        <div className="row mt-4">
-          <div className="col">
-            
-          </div>
-        </div>
-      </>
-    );
-  }
-  
\ No newline at end of file
diff --git a/src/headers/edu-h.tsx b/src/headers/edu-h.tsx
deleted file mode 100644
index 5e57a1c0c62afae52bdccf148f9ab4975e4338f1..0000000000000000000000000000000000000000
--- a/src/headers/edu-h.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-export function EDUH() {
-    return (
-      <HeaderBox title="Education and Outreach">
-        
-      </HeaderBox>
-    );
-  }
-  
-  import HeaderBox from "../components/HeaderBox";
\ No newline at end of file
diff --git a/src/headers/eth-h.tsx b/src/headers/eth-h.tsx
deleted file mode 100644
index b52a8cc6226f9e8b70a617ffbea2e9bb6d79806b..0000000000000000000000000000000000000000
--- a/src/headers/eth-h.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-export function ETHH() {
-
-  return (
-    <HeaderBox title="Ethics">
-      
-    </HeaderBox>
-  );
-}
-
-import HeaderBox from "../components/HeaderBox";
\ No newline at end of file
diff --git a/src/headers/mes-h.tsx b/src/headers/mes-h.tsx
deleted file mode 100644
index 11929f8ec77b37ef4b9e588c8f1f873505edf3e6..0000000000000000000000000000000000000000
--- a/src/headers/mes-h.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-export function MESH() {
-
-  return (
-    <HeaderBox title="Measurement">
-      
-    </HeaderBox>
-  );
-}
-
-import HeaderBox from "../components/HeaderBox";
\ No newline at end of file
diff --git a/src/pages.ts b/src/pages.ts
index 73d4d0717fe9466620bfb0c97d9201225339acd3..f0bc50dc2f7f57673551387d34a635e598a83234 100644
--- a/src/pages.ts
+++ b/src/pages.ts
@@ -10,7 +10,6 @@
   Parts,
   Judging,
   Partners,
-  Measurement,
   Notebook,
   Results,
   Safety,
@@ -21,7 +20,7 @@
 } from "./contents"; 
 
 import { DescSidebar,  SafetySidebar, NoSidebar, EngSide } from "./contents";
-import {  COLLH,  JUDGEH,   SUPH, PARTH, MESH, ENGH,  HOMEH, HPH, SPONH, RESH, ATTH, CONTH, DESCH, EXPH, IMPH, NOTEH, SAFEH, TEAMH } from "./contents";
+import {  COLLH,  JUDGEH,   SUPH, PARTH, ENGH,  HOMEH, HPH, SPONH, RESH, ATTH, CONTH, DESCH, EXPH, IMPH, NOTEH, SAFEH, TEAMH } from "./contents";
 
 interface Base {
   name: string | undefined;
@@ -29,7 +28,7 @@ interface Base {
 
 class Folder implements Base {
   name: string | undefined;
-  folder: Page[] | undefined;
+  folder: Page[] | PageRef[] | undefined;
 }
 
 class Page implements Base {
@@ -41,6 +40,15 @@ class Page implements Base {
   navlist!:  React.FC; 
 }
 
+class PageRef implements Base{
+  name: string | undefined;
+  title: string | undefined;
+  path: string | undefined;
+  component?: React.FC | undefined;
+  header?: React.FC;
+  navlist?:  React.FC; 
+}
+
 const Pages: (Page | Folder)[] = [
   {
     name: "Attributions",
@@ -140,14 +148,6 @@ const Pages: (Page | Folder)[] = [
       header: JUDGEH, 
       navlist: NoSidebar,
     },
-    {
-      name: "Measurement",
-      title: "Measurement",
-      path: "/measurement",
-      component: Measurement,
-      header: MESH,
-      navlist: NoSidebar,
-    },
     {
       name: "Notebook",
       title: "Notebook",
@@ -189,9 +189,9 @@ const Pages: (Page | Folder)[] = [
       navlist: SafetySidebar,
     },
     {
-      name: "Supplementary",
+      name: "Materials and Methods",
       title: "Supplementary",
-      path: "/supplementary",
+      path: "/materials-methods",
       component: Supplementary,
       header: SUPH,
       navlist: NoSidebar,
@@ -206,7 +206,7 @@ const Pages: (Page | Folder)[] = [
     },
 ];
 
-export const NavPages: (Page | Folder)[] = [
+export const NavPages: (Page | PageRef | Folder)[] = [
     {
       name: "Home",
       title: "Bielefeld CeBiTec",
@@ -243,12 +243,10 @@ export const NavPages: (Page | Folder)[] = [
           navlist: NoSidebar,
         },
         {
-          name: "Collaborations",
-          title: "Collaborations",
-          path: "/collaborations",
-          component: Collaborations,
-          header: COLLH,
-          navlist: NoSidebar,
+          name: "iGem Bielefeld",
+          title: "iGem Bielefeld",
+          path: "/",
+ 
           },
       ],
     },
@@ -264,18 +262,48 @@ export const NavPages: (Page | Folder)[] = [
           navlist: DescSidebar  
         },
         {
-          name: "Judging",
-          title: "Judging",
-          path: "/judging",
-          component: Judging,
-          header: JUDGEH, 
-          navlist: NoSidebar,
+          name: "Engineering Success",
+          title: "Engineering",
+          path: "/engineering",
+          component: Engineering,
+          header: ENGH,
+          navlist: EngSide  ,
+        },
+        {
+          name: "Bioafety",
+          title: "Safety",
+          path: "/safety",
+          component: Safety,
+          header: SAFEH,
+          navlist: SafetySidebar,
+        },
+        {
+          name: "Project Documentation",
+          title: "Project Documentation",
+          path: "/",
+
         },
       ],
     },
     {
       name: "Lab", 
       folder: [
+        {
+          name: "Experiments",
+          title: "Experiments",
+          path: "/experiments",
+          component: Experiments,
+          header: EXPH,
+          navlist: NoSidebar,
+        },
+        {
+          name: "Materials and Methods",
+          title: "Supplementary",
+          path: "/materials-methods",
+          component: Supplementary,
+          header: SUPH,
+          navlist: NoSidebar,
+        },
         {
           name: "Results",
           title: "Results",
@@ -293,23 +321,7 @@ export const NavPages: (Page | Folder)[] = [
           navlist: NoSidebar,
         },
         {
-          name: "Engineering Success",
-          title: "Engineering",
-          path: "/engineering",
-          component: Engineering,
-          header: ENGH,
-          navlist: EngSide  ,
-        },
-        {
-          name: "Supplementary",
-          title: "Supplementary",
-          path: "/supplementary",
-          component: Supplementary,
-          header: SUPH,
-          navlist: NoSidebar,
-        },
-        {
-          name: "Notebook",
+          name: "Documentation",
           title: "Notebook",
           path: "/notebook",
           component: Notebook,
@@ -318,17 +330,14 @@ export const NavPages: (Page | Folder)[] = [
         },
       ]
     },
-    {
-      name: "Safety",
-      title: "Safety",
-      path: "/safety",
-      component: Safety,
-      header: SAFEH,
-      navlist: SafetySidebar,
-    },
     {
       name: "Human Practices",
       folder: [
+        {
+          name: "Introduction",
+          title: "Introduction",
+          path: "/human-practices?tab=intro"
+        },
         {
           name: "Integrated Human Practices",
           title: "Integrated Human Practices",
@@ -336,7 +345,60 @@ export const NavPages: (Page | Folder)[] = [
           component: HumanPractices,
           header: HPH,
            navlist: NoSidebar
-        }
+        },
+        {
+          name: "Feedback and Implementation",
+          title: "Feedback and Implementation",
+          path: "/human-practices?tab=feedback"
+        },
+        {
+          name: "Public Engagement",
+          title: "Education and Outreach",
+          path: "/human-practices?tab=public"
+        },
+        {
+          name: "Education",
+          title: "Education and Outreach",
+          path: "/human-practices?tab=edu"
+        },
+        {
+          name: "Collaboration",
+          title: "Collaboration",
+          path: "/human-practices?tab=collabs"
+        },
+        {
+          name: "Partnerships",
+          title: "Partnerships",
+          path: "/human-practices?tab=ships"
+        },
+      ]
+    },
+    {
+      name: "Judging",
+      folder: [
+        {
+          name: "Overview",
+          title: "Judging",
+          path: "/judging",
+          component: Judging,
+          header: JUDGEH, 
+          navlist: NoSidebar,
+        },
+        {
+          name: "Best New Part",
+          title: "Judging",
+          path: "/judging?tab=newpart",
+        },
+        {
+          name: "Safety & Security",
+          title: "Judging",
+          path: "/judging?tab=safety",
+        },
+        {
+          name: "Best Integrated Human Practice",
+          title: "Judging",
+          path: "/judging?tab=ihp",
+        },
       ]
     },
     {
diff --git a/src/sidebars/ethS.tsx b/src/sidebars/ethS.tsx
deleted file mode 100644
index 02c1b878b2b504dff5faf7161f017be2afcec520..0000000000000000000000000000000000000000
--- a/src/sidebars/ethS.tsx
+++ /dev/null
@@ -1,99 +0,0 @@
-import { useEffect } from "react";
-import { Highlight, NewHighlight } from "../utils/Highlight-functions";
-
-export function EthicsSidebar(){
-    let numsBig = [""]
-    let numsSub = [ "BS1", "BS2"]
-    useEffect(() => {
-        window.addEventListener('scroll', handleScroll);
-        return () => window.removeEventListener('scroll', handleScroll);
-      }, []);
-      const handleScroll = () => {
-          for(let idx in numsSub){
-            
-              const item = numsSub[idx];
-              let ind = numsSub.findIndex((e) => e == item)
-              let subdi = "newsubtitle" + ind 
-
-              console.log("We are looking at 'item' = " + numsSub[idx])
-              console.log("ind is: " + ind)
-              console.log("subdi is: " + subdi)
-              console.log("we use " +  document.getElementById(item)?.id + " and " + document.getElementById(subdi)?.id)
-              NewHighlight({el: document.getElementById(item)!}, {subtitle: document.getElementById(subdi)!});
-          }    
-          for(let idx in numsBig){
-            
-            const item = numsBig[idx];
-            let ind = numsBig.findIndex((e) => e == item)
-            let subdi = "subtitle" + ind 
-
-            console.log("We are looking at 'item' = " + numsBig[idx])
-            console.log("ind is: " + ind)
-            console.log("subdi is: " + subdi)
-            console.log("we use " +  document.getElementById(item)?.id + " and " + document.getElementById(subdi)?.id)
-            Highlight({el: document.getElementById(item)!}, {subtitle: document.getElementById(subdi)!});
-            }       
-          console.log("function HighlightCheck")
-      }
-      console.log(numsSub)
-    return(
-        <div className="col-2 d-none d-lg-block">
-            <div className="sticky-top">
-                <nav className="sidebar">
-                    <div> 
-                        <a onClick={openThem({it: "our-cycle"})}>
-                            <div className="detail-sideitem">
-                                <div id="parent-our-cycle" className="sideitem">
-                                    <summary>Our Cycle</summary>
-                                    <span id="our-cycle" className="sidesubtab" style={{display: "none"}}>
-                                        <ul>
-                                            <a href="#"><li>Iteration 1</li></a>
-                                            <a href="#"><li>Iteration 2</li></a>
-                                            <a href="#"><li>Iteration 3</li></a>
-                                        </ul>
-                                    </span>
-                                </div> 
-                            </div>
-                        </a>
-                    </div> 
-                </nav>
-            </div>
-        </div>
-    )
-}
-
-
-
-
-function openThem({it}: {it: string}){
-    const gotoandopen =  (_event : React.MouseEvent<HTMLElement, MouseEvent>) => {
-
-      console.log("it classname: " + document.getElementById(it)?.className)
-      console.log("it: " + it)
-      let contenttabid = "tab-" + it; 
-      let parent = "parent-" + it; 
-      console.log("we want to open " + it + " and " + contenttabid)
-      let sideitems = document.getElementsByClassName("sideitem"); 
-      let subtabs = document.getElementsByClassName("sidesubtab");
-      let contenttabs = document.getElementsByClassName("enginneeringtab");
-      for (let i = 0; i < subtabs.length; i++) {
-         (subtabs[i] as HTMLElement).style.display = "none";
-         console.log("Hiding sidebar subtab...")
-       }
-       for (let i = 0; i < contenttabs.length; i++) {
-        (contenttabs[i] as HTMLElement).style.display = "none";
-        console.log("Hiding content tab...")
-      }
-      for (let i = 0; i < sideitems.length; i++) {
-        (sideitems[i] as HTMLElement)!.classList.remove("active-sideitem");
-        console.log("Hiding sidebar subtab...")
-      }
-      
-        document.getElementById(it)!.style.display = "block";
-        document.getElementById(parent)!.classList.add("active-sideitem");
-        document.getElementById(contenttabid)!.style.display = "block";
-      
-        
-    }
-    return gotoandopen; 
-  }
\ No newline at end of file
diff --git a/src/utils/getPathMapping.ts b/src/utils/getPathMapping.ts
index 4c5d3fee1a531b620756ac4d473d3ca2bf4a6791..7800822a4fe572e29d752704efb05bd2ab412db1 100644
--- a/src/utils/getPathMapping.ts
+++ b/src/utils/getPathMapping.ts
@@ -25,8 +25,8 @@ export const getPathMapping = () => {
             name: page.name,
             title: page.title,
             component: page.component,
-            header: page.header,
-            navlist: page.navlist, 
+            header: page.header!,
+            navlist: page.navlist!, 
           };
         }
       });
diff --git a/src/utils/openFromOtherpAge.ts b/src/utils/openFromOtherpAge.ts
index 17702904465bfe56d414dd035946dbc9cb2c116c..383443f368ab3b1c8d647e7fdbbff0364c90275c 100644
--- a/src/utils/openFromOtherpAge.ts
+++ b/src/utils/openFromOtherpAge.ts
@@ -1,10 +1,21 @@
-export function openFromOtherPage(it: string) {
+export function openFromOtherPage(it: string, openclass?: string) {
+    var opcla: string; 
+    if (openclass){
+        opcla = openclass;
+    }
+    else{
+        opcla = "cycletab"; 
+    }
     return (event: React.MouseEvent<HTMLElement> | { currentTarget: HTMLElement }) => {
       // Get all elements with class "cycletab" and hide them
-      let tabcontent = document.getElementsByClassName("cycletab");
+      let tabcontent = document.getElementsByClassName(opcla);
+      /* let subtabcontent = document.getElementsByClassName("subcycletab"); */
       for (let i = 0; i < tabcontent.length; i++) {
           (tabcontent[i] as HTMLElement).style.display = "none";
       }
+      /* for (let i = 0; i < subtabcontent.length; i++) {
+        (subtabcontent[i] as HTMLElement).style.display = "none";
+    } */
       
       // Show the specific tab content based on the "it" parameter
       const tabToOpen = document.getElementById(it);
diff --git a/vite.config.js.timestamp-1723131218228-6c8a7f56f6db2.mjs b/vite.config.js.timestamp-1723131218228-6c8a7f56f6db2.mjs
deleted file mode 100644
index 0c04a9e6a163167dccec3dc1e6a9e31ab886f2b4..0000000000000000000000000000000000000000
--- a/vite.config.js.timestamp-1723131218228-6c8a7f56f6db2.mjs
+++ /dev/null
@@ -1,407 +0,0 @@
-// vite.config.js
-import { defineConfig, loadEnv } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/vite/dist/node/index.js";
-import react from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/@vitejs/plugin-react/dist/index.mjs";
-
-// src/contents/Home.tsx
-import { Fragment, jsx, jsxs } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/team.tsx
-import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/attributions.tsx
-import { useEffect } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js";
-import { Fragment as Fragment3, jsx as jsx3, jsxs as jsxs3 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/contribution.tsx
-import { Fragment as Fragment4, jsx as jsx4 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/headings.tsx
-import { jsx as jsx5, jsxs as jsxs4 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/Shapes.tsx
-import { jsx as jsx6 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/svgs.tsx
-import { Link } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react-router-dom/dist/main.js";
-import { Fragment as Fragment5, jsx as jsx7, jsxs as jsxs5 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/Graph.tsx
-import { Pie } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react-chartjs-2/dist/index.js";
-import { Chart as ChartJS, ArcElement, Tooltip, Legend } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/chart.js/dist/chart.js";
-import { jsx as jsx8 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-ChartJS.register(ArcElement, Tooltip, Legend);
-
-// src/contents/description.tsx
-import { jsx as jsx9, jsxs as jsxs6 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/Sidebar.tsx
-import { useEffect as useEffect2 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js";
-import { Fragment as Fragment6, jsx as jsx10, jsxs as jsxs7 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/sidebars/descS.tsx
-import { jsx as jsx11 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/Buttons.tsx
-import { Link as Link2 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react-router-dom/dist/main.js";
-
-// src/components/HorizontalTimeline.tsx
-import { jsx as jsx12, jsxs as jsxs8 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/Buttons.tsx
-import { Fragment as Fragment7, jsx as jsx13, jsxs as jsxs9 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/engineering.tsx
-import { Fragment as Fragment8, jsx as jsx14, jsxs as jsxs10 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/experiments.tsx
-import { Fragment as Fragment9, jsx as jsx15 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/notebook.tsx
-import { Fragment as Fragment10, jsx as jsx16 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/results.tsx
-import { Fragment as Fragment11, jsx as jsx17, jsxs as jsxs11 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/safety.tsx
-import { Fragment as Fragment12, jsx as jsx18, jsxs as jsxs12 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/Tabs.tsx
-import { jsx as jsx19 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/Quotes.tsx
-import { jsx as jsx20, jsxs as jsxs13 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/human-practices.tsx
-import { Box, Tab } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/@mui/material/node/index.js";
-import { TabContext, TabList, TabPanel } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/@mui/lab/node/index.js";
-import React from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js";
-import { Fragment as Fragment13, jsx as jsx21, jsxs as jsxs14 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-{
-}
-
-// src/sidebars/hpS.tsx
-import { jsx as jsx22 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/My-Timeline.tsx
-import { Fragment as Fragment14, jsx as jsx23, jsxs as jsxs15 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/photo-grid.tsx
-import { jsx as jsx24 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/pdfs.tsx
-import { jsx as jsx25, jsxs as jsxs16 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/Bfh.tsx
-import { Fragment as Fragment15, jsx as jsx26, jsxs as jsxs17 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/wiki.tsx
-import { Box as Box2, Tab as Tab2 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/@mui/material/node/index.js";
-import { TabContext as TabContext2, TabList as TabList2, TabPanel as TabPanel2 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/@mui/lab/node/index.js";
-import React3 from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js";
-
-// src/components/Collapsible.tsx
-import { useState } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js";
-import { Fragment as Fragment16, jsx as jsx27, jsxs as jsxs18 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/Filter.tsx
-import Select from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react-select/dist/react-select.cjs.mjs";
-import React2 from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js";
-import { jsx as jsx28 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-var wikioptions = [
-  { value: "all", label: "Show all" },
-  { value: "react", label: "React" },
-  { value: "type", label: "Types" },
-  { value: "property", label: "Properties" },
-  { value: "pipeline", label: "GitLab Pipeline" },
-  { value: "html", label: "HTML" },
-  { value: "css", label: "CSS" }
-];
-function filterMultiSelection(arr) {
-  let nono = document.getElementById("nono");
-  nono.className = "noshow";
-  var x, i;
-  x = document.getElementsByClassName("filterable");
-  for (i = 0; i < x.length; i++) {
-    let el = x[i];
-    w3RemoveClass(el, "show");
-  }
-  let shownum = 0;
-  let boo = true;
-  for (i = 0; i < x.length; i++) {
-    arr.forEach((entry) => {
-      if (x[i].className.indexOf(entry.value) <= -1) {
-        boo = false;
-      } else {
-        if (!x[i].classList.contains(entry.value)) {
-          boo = false;
-        }
-      }
-    });
-    if (boo) {
-      w3AddClass(x[i], "show");
-      shownum++;
-    }
-  }
-  let y = document.getElementsByClassName("show").length;
-  if (y < 1) {
-    console.log(y);
-    nono.className = "show";
-  }
-}
-function w3AddClass(element, name) {
-  var i, arr1, arr2;
-  arr1 = element.className.split(" ");
-  arr2 = name.split(" ");
-  for (i = 0; i < arr2.length; i++) {
-    if (arr1.indexOf(arr2[i]) == -1) {
-      element.className += " " + arr2[i];
-    }
-  }
-}
-function w3RemoveClass(element, name) {
-  var i, arr1, arr2;
-  arr1 = element.className.split(" ");
-  arr2 = name.split(" ");
-  for (i = 0; i < arr2.length; i++) {
-    while (arr1.indexOf(arr2[i]) > -1) {
-      arr1.splice(arr1.indexOf(arr2[i]), 1);
-    }
-  }
-  element.className = arr1.join(" ");
-}
-var WikiAction = class extends React2.Component {
-  state = {
-    selectedOption: null
-  };
-  handleChange = (selectedOption) => {
-    this.setState(
-      { selectedOption },
-      () => console.log(`Option selected:`, this.state.selectedOption)
-    );
-    filterMultiSelection(selectedOption);
-  };
-  render() {
-    const { selectedOption } = this.state;
-    return /* @__PURE__ */ jsx28(
-      Select,
-      {
-        value: selectedOption,
-        onChange: this.handleChange,
-        isMulti: true,
-        options: wikioptions,
-        defaultValue: [wikioptions[0]],
-        className: "basic-multi-select",
-        classNamePrefix: "select"
-      }
-    );
-  }
-};
-
-// src/contents/code.tsx
-import { jsx as jsx29 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/wiki.tsx
-import { Fragment as Fragment17, jsx as jsx30, jsxs as jsxs19 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/drylab.tsx
-import { Fragment as Fragment18, jsx as jsx31, jsxs as jsxs20 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/impressum.tsx
-import { Fragment as Fragment19, jsx as jsx32, jsxs as jsxs21 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/measurement.tsx
-import { Fragment as Fragment20, jsx as jsx33, jsxs as jsxs22 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/partners.tsx
-import { Fragment as Fragment21, jsx as jsx34, jsxs as jsxs23 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/supplementary-material.tsx
-import { Fragment as Fragment22, jsx as jsx35, jsxs as jsxs24 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/interviews.tsx
-import { Fragment as Fragment23, jsx as jsx36 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/bhf-h.tsx
-import { Fragment as Fragment24, jsx as jsx37, jsxs as jsxs25 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/header-box.tsx
-import { Fragment as Fragment25, jsx as jsx38, jsxs as jsxs26 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/attribution-h.tsx
-import { jsx as jsx39 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/cont-h.tsx
-import { jsx as jsx40 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/desc-h.tsx
-import { jsx as jsx41 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/home-h.tsx
-import { jsx as jsx42 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/exp-h.tsx
-import { jsx as jsx43 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/hp-h.tsx
-import { jsx as jsx44 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/imp-h.tsx
-import { jsx as jsx45 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/note-h.tsx
-import { jsx as jsx46 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/res-h.tsx
-import { jsx as jsx47 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/safe-h.tsx
-import { jsx as jsx48 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/team-h.tsx
-import { jsx as jsx49 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/wiki-h.tsx
-import { jsx as jsx50 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/ints-h.tsx
-import { jsx as jsx51 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/spons-h.tsx
-import { jsx as jsx52 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/dry-h.tsx
-import { jsx as jsx53 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/eng-h.tsx
-import { jsx as jsx54 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/sup-h.tsx
-import { jsx as jsx55 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/mes-h.tsx
-import { jsx as jsx56 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/parts.tsx
-import { Fragment as Fragment26, jsx as jsx57, jsxs as jsxs27 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/part-h.tsx
-import { jsx as jsx58 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/proof.tsx
-import { Fragment as Fragment27, jsx as jsx59 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/proof-h.tsx
-import { jsx as jsx60 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/design.tsx
-import { Fragment as Fragment28, jsx as jsx61 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/des-h.tsx
-import { jsx as jsx62 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/judging.tsx
-import { Fragment as Fragment29, jsx as jsx63, jsxs as jsxs28 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/judge-h.tsx
-import { jsx as jsx64 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/ethics.tsx
-import { Fragment as Fragment30, jsx as jsx65 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/eth-h.tsx
-import { jsx as jsx66 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/slider.tsx
-import Slider from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react-slick/lib/index.js";
-import { Fragment as Fragment31, jsx as jsx67 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/components/testsvganimation.tsx
-import gsap from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/gsap/dist/gsap.js";
-import { useGSAP } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/@gsap/react/dist/index.js";
-import { ScrollTrigger } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/gsap/dist/ScrollTrigger.js";
-import { useRef } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js";
-import { MotionPathPlugin } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/gsap/dist/MotionPathPlugin.js";
-import { jsx as jsx68, jsxs as jsxs29 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/example.tsx
-import { Fragment as Fragment32, jsx as jsx69, jsxs as jsxs30 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/education.tsx
-import { Fragment as Fragment33, jsx as jsx70, jsxs as jsxs31 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/edu-h.tsx
-import { jsx as jsx71 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/sidebars/engS.tsx
-import { jsx as jsx72 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/sidebars/none.tsx
-import { jsx as jsx73 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/survey.tsx
-import { Fragment as Fragment34, jsx as jsx74 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/sur-h.tsx
-import { jsx as jsx75 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/contents/collaborations.tsx
-import { Fragment as Fragment35, jsx as jsx76 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/headers/coll-h.tsx
-import { jsx as jsx77 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js";
-
-// src/utils/stringToSlug.ts
-function stringToSlug(string) {
-  let slug = String(string).toLowerCase();
-  slug = slug.replace(/[^a-z0-9-]/g, "-");
-  slug = slug.replace(/-+/g, "-");
-  const start = slug.search(/[^-]/);
-  const end = slug.search(/-+$/);
-  return slug.substring(start, end === -1 ? void 0 : end);
-}
-
-// src/utils/useScript.ts
-import { useEffect as useEffect3 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js";
-
-// vite.config.js
-import path from "path";
-var __vite_injected_original_dirname = "/Users/sahamiasad/wiki.css/bielefeld-cebitec";
-var vite_config_default = () => {
-  const env = loadEnv("dev", process.cwd());
-  if (!env.VITE_TEAM_NAME) {
-    throw new Error("VITE_TEAM_NAME environment variable is not defined");
-  }
-  const baseSlug = stringToSlug(env.VITE_TEAM_NAME);
-  console.log(`Base URL: /${baseSlug}/`);
-  console.log(`Output directory: ${path.resolve(__vite_injected_original_dirname, "dist")}`);
-  return defineConfig({
-    base: `/`,
-    plugins: [react()],
-    resolve: {
-      alias: {
-        "@": path.resolve(__vite_injected_original_dirname, "./src")
-        // Simplifies imports
-      }
-    },
-    css: {
-      preprocessorOptions: {
-        css: {
-          //javascriptEnabled: true, // Enable JavaScript in CSS (useful for certain CSS preprocessor plugins)
-        }
-      }
-    },
-    build: {
-      outDir: "dist",
-      rollupOptions: {
-        output: {
-          assetFileNames: `assets/[ext]/[name]-[hash].[ext]`
-        }
-      }
-    },
-    publicDir: "pubpub"
-  });
-};
-export {
-  vite_config_default as default
-};
-//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiLCAic3JjL2NvbnRlbnRzL0hvbWUudHN4IiwgInNyYy9jb250ZW50cy90ZWFtLnRzeCIsICJzcmMvY29udGVudHMvYXR0cmlidXRpb25zLnRzeCIsICJzcmMvY29udGVudHMvY29udHJpYnV0aW9uLnRzeCIsICJzcmMvY29tcG9uZW50cy9oZWFkaW5ncy50c3giLCAic3JjL2NvbXBvbmVudHMvU2hhcGVzLnRzeCIsICJzcmMvY29tcG9uZW50cy9zdmdzLnRzeCIsICJzcmMvY29udGVudHMvR3JhcGgudHN4IiwgInNyYy9jb250ZW50cy9kZXNjcmlwdGlvbi50c3giLCAic3JjL2NvbXBvbmVudHMvU2lkZWJhci50c3giLCAic3JjL3NpZGViYXJzL2Rlc2NTLnRzeCIsICJzcmMvY29tcG9uZW50cy9CdXR0b25zLnRzeCIsICJzcmMvY29tcG9uZW50cy9Ib3Jpem9udGFsVGltZWxpbmUudHN4IiwgInNyYy9jb250ZW50cy9lbmdpbmVlcmluZy50c3giLCAic3JjL2NvbnRlbnRzL2V4cGVyaW1lbnRzLnRzeCIsICJzcmMvY29udGVudHMvbm90ZWJvb2sudHN4IiwgInNyYy9jb250ZW50cy9yZXN1bHRzLnRzeCIsICJzcmMvY29udGVudHMvc2FmZXR5LnRzeCIsICJzcmMvY29tcG9uZW50cy9UYWJzLnRzeCIsICJzcmMvY29tcG9uZW50cy9RdW90ZXMudHN4IiwgInNyYy9jb250ZW50cy9odW1hbi1wcmFjdGljZXMudHN4IiwgInNyYy9zaWRlYmFycy9ocFMudHN4IiwgInNyYy9jb21wb25lbnRzL015LVRpbWVsaW5lLnRzeCIsICJzcmMvY29tcG9uZW50cy9waG90by1ncmlkLnRzeCIsICJzcmMvY29tcG9uZW50cy9wZGZzLnRzeCIsICJzcmMvY29udGVudHMvQmZoLnRzeCIsICJzcmMvY29udGVudHMvd2lraS50c3giLCAic3JjL2NvbXBvbmVudHMvQ29sbGFwc2libGUudHN4IiwgInNyYy9jb21wb25lbnRzL0ZpbHRlci50c3giLCAic3JjL2NvbnRlbnRzL2NvZGUudHN4IiwgInNyYy9jb250ZW50cy9kcnlsYWIudHN4IiwgInNyYy9jb250ZW50cy9pbXByZXNzdW0udHN4IiwgInNyYy9jb250ZW50cy9tZWFzdXJlbWVudC50c3giLCAic3JjL2NvbnRlbnRzL3BhcnRuZXJzLnRzeCIsICJzcmMvY29udGVudHMvc3VwcGxlbWVudGFyeS1tYXRlcmlhbC50c3giLCAic3JjL2NvbnRlbnRzL2ludGVydmlld3MudHN4IiwgInNyYy9oZWFkZXJzL2JoZi1oLnRzeCIsICJzcmMvY29tcG9uZW50cy9oZWFkZXItYm94LnRzeCIsICJzcmMvaGVhZGVycy9hdHRyaWJ1dGlvbi1oLnRzeCIsICJzcmMvaGVhZGVycy9jb250LWgudHN4IiwgInNyYy9oZWFkZXJzL2Rlc2MtaC50c3giLCAic3JjL2hlYWRlcnMvaG9tZS1oLnRzeCIsICJzcmMvaGVhZGVycy9leHAtaC50c3giLCAic3JjL2hlYWRlcnMvaHAtaC50c3giLCAic3JjL2hlYWRlcnMvaW1wLWgudHN4IiwgInNyYy9oZWFkZXJzL25vdGUtaC50c3giLCAic3JjL2hlYWRlcnMvcmVzLWgudHN4IiwgInNyYy9oZWFkZXJzL3NhZmUtaC50c3giLCAic3JjL2hlYWRlcnMvdGVhbS1oLnRzeCIsICJzcmMvaGVhZGVycy93aWtpLWgudHN4IiwgInNyYy9oZWFkZXJzL2ludHMtaC50c3giLCAic3JjL2hlYWRlcnMvc3BvbnMtaC50c3giLCAic3JjL2hlYWRlcnMvZHJ5LWgudHN4IiwgInNyYy9oZWFkZXJzL2VuZy1oLnRzeCIsICJzcmMvaGVhZGVycy9zdXAtaC50c3giLCAic3JjL2hlYWRlcnMvbWVzLWgudHN4IiwgInNyYy9jb250ZW50cy9wYXJ0cy50c3giLCAic3JjL2hlYWRlcnMvcGFydC1oLnRzeCIsICJzcmMvY29udGVudHMvcHJvb2YudHN4IiwgInNyYy9oZWFkZXJzL3Byb29mLWgudHN4IiwgInNyYy9jb250ZW50cy9kZXNpZ24udHN4IiwgInNyYy9oZWFkZXJzL2Rlcy1oLnRzeCIsICJzcmMvY29udGVudHMvanVkZ2luZy50c3giLCAic3JjL2hlYWRlcnMvanVkZ2UtaC50c3giLCAic3JjL2NvbnRlbnRzL2V0aGljcy50c3giLCAic3JjL2hlYWRlcnMvZXRoLWgudHN4IiwgInNyYy9jb21wb25lbnRzL3NsaWRlci50c3giLCAic3JjL2NvbXBvbmVudHMvdGVzdHN2Z2FuaW1hdGlvbi50c3giLCAic3JjL2NvbnRlbnRzL2V4YW1wbGUudHN4IiwgInNyYy9jb250ZW50cy9lZHVjYXRpb24udHN4IiwgInNyYy9oZWFkZXJzL2VkdS1oLnRzeCIsICJzcmMvc2lkZWJhcnMvZW5nUy50c3giLCAic3JjL3NpZGViYXJzL25vbmUudHN4IiwgInNyYy9jb250ZW50cy9zdXJ2ZXkudHN4IiwgInNyYy9oZWFkZXJzL3N1ci1oLnRzeCIsICJzcmMvY29udGVudHMvY29sbGFib3JhdGlvbnMudHN4IiwgInNyYy9oZWFkZXJzL2NvbGwtaC50c3giLCAic3JjL3V0aWxzL3N0cmluZ1RvU2x1Zy50cyIsICJzcmMvdXRpbHMvdXNlU2NyaXB0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3NhaGFtaWFzYWQvd2lraS5jc3MvYmllbGVmZWxkLWNlYml0ZWNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9zYWhhbWlhc2FkL3dpa2kuY3NzL2JpZWxlZmVsZC1jZWJpdGVjL3ZpdGUuY29uZmlnLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9zYWhhbWlhc2FkL3dpa2kuY3NzL2JpZWxlZmVsZC1jZWJpdGVjL3ZpdGUuY29uZmlnLmpzXCI7aW1wb3J0IHsgZGVmaW5lQ29uZmlnLCBsb2FkRW52IH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCByZWFjdCBmcm9tIFwiQHZpdGVqcy9wbHVnaW4tcmVhY3RcIjtcbmltcG9ydCB7IHN0cmluZ1RvU2x1ZyB9IGZyb20gXCIuL3NyYy91dGlsc1wiO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbi8vIGh0dHBzOi8vdml0ZWpzLmRldi9jb25maWcvXG5leHBvcnQgZGVmYXVsdCAoKSA9PiB7XG4gIGNvbnN0IGVudiA9IGxvYWRFbnYoXCJkZXZcIiwgcHJvY2Vzcy5jd2QoKSk7XG4gIGlmICghZW52LlZJVEVfVEVBTV9OQU1FKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVklURV9URUFNX05BTUUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGRlZmluZWRcIik7XG4gIH1cblxuICBjb25zdCBiYXNlU2x1ZyA9IHN0cmluZ1RvU2x1ZyhlbnYuVklURV9URUFNX05BTUUpO1xuICBjb25zb2xlLmxvZyhgQmFzZSBVUkw6IC8ke2Jhc2VTbHVnfS9gKTtcbiAgY29uc29sZS5sb2coYE91dHB1dCBkaXJlY3Rvcnk6ICR7cGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ2Rpc3QnKX1gKTtcblxuICBcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKHtcbiAgICBiYXNlOiBgL2AsXG4gICAgcGx1Z2luczogW3JlYWN0KCldLFxuICAgIHJlc29sdmU6IHtcbiAgICAgIGFsaWFzOiB7XG4gICAgICAgICdAJzogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vc3JjJyksIC8vIFNpbXBsaWZpZXMgaW1wb3J0c1xuICAgICAgfVxuICAgIH0sXG4gICAgY3NzOiB7XG4gICAgICBwcmVwcm9jZXNzb3JPcHRpb25zOiB7XG4gICAgICAgIGNzczoge1xuICAgICAgICAgIC8vamF2YXNjcmlwdEVuYWJsZWQ6IHRydWUsIC8vIEVuYWJsZSBKYXZhU2NyaXB0IGluIENTUyAodXNlZnVsIGZvciBjZXJ0YWluIENTUyBwcmVwcm9jZXNzb3IgcGx1Z2lucylcbiAgICAgICAgfVxuICAgICAgfSAgICB9LFxuICAgIGJ1aWxkOiB7XG4gICAgICBvdXREaXI6IFwiZGlzdFwiLFxuICAgICAgcm9sbHVwT3B0aW9uczoge1xuICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICBhc3NldEZpbGVOYW1lczogYGFzc2V0cy9bZXh0XS9bbmFtZV0tW2hhc2hdLltleHRdYFxuICAgICAgICAgIH0gICAgICBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICBwdWJsaWNEaXI6ICdwdWJwdWInLFxuICB9KTtcbn07XG4iLCAiXG5leHBvcnQgZnVuY3Rpb24gSG9tZSgpIHtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgIDxoMj5XaWtpIHVuZGVyIGNvbnN0cnVjdGlvbiE8L2gyPlxuICAgICAgICAgIDxoci8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgIFxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiXG5cbmV4cG9ydCBmdW5jdGlvbiBUZWFtKCkge1xuICBcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8YnIvPlxuICAgICAgPGJyLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgIDxTdGVja2JyaWVmIFxuICAgICAgICAgIHVybD1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCJcbiAgICAgICAgICBcbiAgICAgICAgICA+IFxuICAgICAgICAgICAgLlxuICAgICAgICAgIDwvU3RlY2ticmllZj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgPFN0ZWNrYnJpZWYgdXJsPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIj5cbiAgICAgICAgICAgIC5cbiAgICAgICAgICA8L1N0ZWNrYnJpZWY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICA8U3RlY2ticmllZiB1cmw9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiPiBcbiAgICAgICAgICAuXG4gICAgICAgIDwvU3RlY2ticmllZj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgIDxTdGVja2JyaWVmIHVybD1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCI+IFxuICAgICAgICAgICAgLiBcbiAgICAgICAgICA8L1N0ZWNrYnJpZWY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgIDxTdGVja2JyaWVmIHVybD1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCI+IFxuICAgICAgICAgICAgLiBcbiAgICAgICAgICA8L1N0ZWNrYnJpZWY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICA8U3RlY2ticmllZiB1cmw9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiPiBcbiAgICAgICAgICAuXG4gICAgICAgIDwvU3RlY2ticmllZj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuXG5pbnRlcmZhY2UgU3RlY2tQcm9wc3tcbiAgbmFtZT86IHN0cmluZzsgXG4gIHVybDogc3RyaW5nOyBcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTsgXG5cbn1cblxuZnVuY3Rpb24gU3RlY2ticmllZih7Y2hpbGRyZW4sIHVybCwgbmFtZX06IFN0ZWNrUHJvcHMpe1xuICByZXR1cm4oXG4gICAgPD5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImxucCBjZW50ZXJcIj5cbiAgICA8aW1nIHNyYz17dXJsfSBjbGFzc05hbWU9XCJpbWctcm91bmRcIj48L2ltZz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNlbnRlclwiPlxuICAgICAgPHA+e25hbWV9PC9wPlxuICAgIDwvZGl2PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvPlxuICApXG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBBdHRyaWJ1dGlvbnMoKSB7XG4gIGNvbnN0IHRlYW1JRCA9IGltcG9ydC5tZXRhLmVudi5WSVRFX1RFQU1fSUQ7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiBsaXN0ZW5Ub0lmcmFtZUhlaWdodChlOiBNZXNzYWdlRXZlbnQpIHtcbiAgICAgIGlmIChlLm9yaWdpbiA9PT0gXCJodHRwczovL3RlYW1zLmlnZW0ub3JnXCIpIHtcbiAgICAgICAgY29uc3QgeyB0eXBlLCBkYXRhIH0gPSBKU09OLnBhcnNlKGUuZGF0YSk7XG4gICAgICAgIGlmICh0eXBlID09PSBcImlnZW0tYXR0cmlidXRpb24tZm9ybVwiKSB7XG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaWdlbS1hdHRyaWJ1dGlvbi1mb3JtXCIpO1xuICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2RhdGEgKyAxMDB9cHhgO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbGlzdGVuVG9JZnJhbWVIZWlnaHQpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbGlzdGVuVG9JZnJhbWVIZWlnaHQpO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBtdC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpZnJhbWVcbiAgICAgICAgc3R5bGU9e3sgd2lkdGg6IFwiMTAwJVwiIH19XG4gICAgICAgIGlkPVwiaWdlbS1hdHRyaWJ1dGlvbi1mb3JtXCJcbiAgICAgICAgc3JjPXtgaHR0cHM6Ly90ZWFtcy5pZ2VtLm9yZy93aWtpLyR7dGVhbUlEfS9hdHRyaWJ1dGlvbnNgfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gQ29udHJpYnV0aW9uKCkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBtdC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiXG5leHBvcnQgZnVuY3Rpb24gSGhvcHAoe3RleHR9Ont0ZXh0OiBzdHJpbmd9KXtcbiAgICBjb25zdCBhcnIgPSBbXTsgXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHggPSB0ZXh0LmNoYXJBdChpKTsgXG4gICAgICAgIGFyci5wdXNoKDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt4fTwvc3Bhbj4pXG4gICAgfVxuICAgIHJldHVybihcbiAgICAgICAgPGgxIGNsYXNzTmFtZT1cInBsYXlmdWxcIiBhcmlhLWxhYmVsPVwiV2FzaCB5b3VyIGhhbmRzXCI+XG4gICAgICAgICAgICB7YXJyfSAgICAgICAgXG4gICAgICAgIDwvaDE+XG4gICAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gSHNtb2tlKHt0ZXh0fTp7dGV4dDogc3RyaW5nfSl7XG4gICAgY29uc3QgYXJyID0gW107IFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB4ID0gdGV4dC5jaGFyQXQoaSk7IFxuICAgICAgICBhcnIucHVzaCg8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eH08L3NwYW4+KVxuICAgIH1cbiAgICByZXR1cm4oXG4gICAgICAgIDxoMSBjbGFzc05hbWU9XCJzbW9rZVwiIGFyaWEtbGFiZWw9XCJXYXNoIHlvdXIgaGFuZHNcIj5cbiAgICAgICAgICAgIHthcnJ9ICAgICAgICBcbiAgICAgICAgPC9oMT5cbiAgICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIMSh7dGV4dH06e3RleHQ6IHN0cmluZ30pe1xuICAgIHJldHVybihcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBob25lXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiPlxuICAgICAgICA8dGV4dCB4PVwiMCVcIiB5PVwiNjAlXCI+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgICA8L3RleHQ+XG4gICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgKVxufVxuXG4vKiBleHBvcnQgZnVuY3Rpb24gSHByb21wdCh7dGV4dH06e3RleHQ6IHN0cmluZ30pe1xuICAgIHJldHVybihcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMj57dGV4dH08L2gyPlxuICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufSAqL1xuZXhwb3J0IGZ1bmN0aW9uIEgyKHt0ZXh0fTp7dGV4dDogc3RyaW5nfSl7XG4gICAgcmV0dXJuKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGgyPnt0ZXh0fTwvaDI+XG4gICAgICAgICAgICA8aHIvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGhpZ2hsaWdodCh7Y2hpbGRyZW59OntjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlfSl7XG4gICAgcmV0dXJuKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGVudCB2MlwiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICAgKVxufVxuZXhwb3J0IGZ1bmN0aW9uIEhzcG9pbGVyKHtjaGlsZHJlbn06e2NoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGV9KXtcbiAgICByZXR1cm4oXG4gICAgPGRpdiBjbGFzc05hbWU9XCJjb250ZW50IHYzXCI+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBId2F2ZSh7dGV4dH06e3RleHQ6IHN0cmluZ30pe1xuICAgIHJldHVybihcbiAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDEwMCAyMFwiPlxuICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cImdyYWRpZW50XCIgeDE9XCIwXCIgeDI9XCIwXCIgeTE9XCIwXCIgeTI9XCIxXCI+XG4gICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCI1JVwiIHN0b3AtY29sb3I9XCIjODUwRjc4XCIvPlxuICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiOTUlXCIgc3RvcC1jb2xvcj1cIiNBMEE3RjNcIi8+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgICAgPHBhdHRlcm4gaWQ9XCJ3YXZlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMTIwXCIgaGVpZ2h0PVwiMjBcIiBwYXR0ZXJuVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxuICAgICAgICAgICAgPHBhdGggaWQ9XCJ3YXZlUGF0aFwiIGQ9XCJNLTQwIDkgUS0zMCA3IC0yMCA5IFQwIDkgVDIwIDkgVDQwIDkgVDYwIDkgVDgwIDkgVDEwMCA5IFQxMjAgOSBWMjAgSC00MHpcIiBtYXNrPVwidXJsKCNtYXNrKVwiIGZpbGw9XCJ1cmwoI2dyYWRpZW50KVwiPiBcbiAgICAgICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybVxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgYmVnaW49XCIwc1wiXG4gICAgICAgICAgICAgICAgICAgIGR1cj1cIjEuNXNcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgZnJvbT1cIjAsMFwiXG4gICAgICAgICAgICAgICAgICAgIHRvPVwiNDAsMFwiXG4gICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiIC8+XG4gICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICA8L3BhdHRlcm4+XG4gICAgICAgIDwvZGVmcz5cbiAgICAgICAgPHRleHQgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiB4PVwiNTBcIiB5PVwiMTVcIiBmb250LXNpemU9XCIxN1wiIGZpbGw9XCJ1cmwoI3dhdmUpXCIgIGZpbGwtb3BhY2l0eT1cIjAuNlwiPnt0ZXh0fTwvdGV4dD5cbiAgICAgICAgPHRleHQgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiB4PVwiNTBcIiB5PVwiMTVcIiBmb250LXNpemU9XCIxN1wiIGZpbGw9XCJ1cmwoI2dyYWRpZW50KVwiIGZpbGwtb3BhY2l0eT1cIjAuMVwiPnt0ZXh0fTwvdGV4dD5cbiAgICAgICAgPC9zdmc+XG4gICAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gSHBvcGFydCh7dGV4dH06e3RleHQ6IHN0cmluZ30pe1xucmV0dXJuKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBwb3BhcnRcIj5cbiAgICAgICAgICAgIHt0ZXh0fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhzaGFkb25lKHt0ZXh0fTp7dGV4dDogc3RyaW5nfSl7XG4gICAgcmV0dXJuKFxuICAgIDxkaXY+XG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInN0cm9rZSBzaGFkb3ctc3Ryb2tlXCI+e3RleHR9PC9wPlxuICAgIDwvZGl2PlxuICAgIClcbn1cbmV4cG9ydCBkZWZhdWx0IEgxOyIsICJcblxuZXhwb3J0IGZ1bmN0aW9uIENpcmNsZSh7dGV4dH06e3RleHQ6IHN0cmluZ30pe1xuICAgIHJldHVybihcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wgY2lyY2xlXCI+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJzaGFwZS10ZXh0XCI+e3RleHR9PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICApXG59IiwgImltcG9ydCB7IExpbmsgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiXG5leHBvcnQgZnVuY3Rpb24gQ29tcGxleCgpe1xuICAgIHJldHVybihcbiAgICAgIDw+XG4gICA8c3ZnXG4gICB2ZXJzaW9uPVwiMS4xXCJcbiAgIGlkPVwic3ZnMVwiXG4gICB3aWR0aD1cIjE2ODAuNTM0N1wiXG4gICBoZWlnaHQ9XCIxMDAlXCJcbiAgIHZpZXdCb3g9XCIwIDAgMTY4MC41MzQ3IDg5NC4yMjY3NVwiXG4gICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxkZWZzXG4gICAgIGlkPVwiZGVmczFcIiAvPlxuICA8cGF0aFxuICAgICBzdHlsZT17e2Rpc3BsYXk6XCJpbmxpbmVcIixmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNiODViZDFcIixzdHJva2VXaWR0aDpcIjExXCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIGQ9XCJtIDUzNi4yNTU5MiwxNDAuNjYyMjUgYyAwLDAgMzYuNjg3NTUsLTQxLjQ2OTUwNSAxNTYuMTgzMTcsLTMzLjQyNjE4IDExOS40OTU2Miw4LjA0MzMzIDE2OC4yNTU4MSwxNS4zNDE5MyAyMjguNzQzNywzMS42NDg2MiA2MC40ODc4OSwxNi4zMDY2OSA3My4xMTEwNSw1OC44NjE2IDczLjExMTA1LDU4Ljg2MTZcIlxuICAgICBpZD1cInBhdGg0XCIgLz5cbiAgPHBhdGhcbiAgICAgc3R5bGU9e3tkaXNwbGF5OlwiaW5saW5lXCIsZmlsbDpcIiNmNTdkMjJcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCJub25lXCIsc3Ryb2tlV2lkdGg6XCI5LjgyNjc3XCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIGQ9XCJtIDM0OS43MDkyLDExNS45MDkxMiBjIC0yMS41ODE2NCw0My4yOTUxMSAtMjIuMDY4NzEsNDMuMzI3OTIgLTE5LjczODE2LDk1LjU4MTY1IDEuMDA1MjYsMjIuNTM5MjggMjcuODU2Niw2MS43OTc5MyA0MC44NDIzMyw3MC4zNDIzMiAxMi45ODU3Myw4LjU0NDM4IDM2LjkyNzY5LDExLjE5NDA1IDgxLjAwNjk4LDIuMTgwMjIgNDQuMDc5MjksLTkuMDEzODMgNzguMDQ4NzcsLTEyLjkzMTQ0IDk4LjI5MTM3LC00Mi4zMzg5NCAyMC4yNDI2LC0yOS40MDc1IDE5LjY0MzM2LC04MC4yOTA2OCA5LjI4MTk0LC0xMDUuMjQ2NzcgQyA1NDAuNDc1OSw5MC44NjMwMDkgNDI1Ljk0NzcyLDUyLjMyNjYgMzgxLjkyNDkzLDg4LjMxOTY0IDM1MS4yNzI4MywxMTMuMzgwOCAzNDkuNzA5MiwxMTUuOTA5MTIgMzQ5LjcwOTIsMTE1LjkwOTEyIFpcIlxuICAgICBpZD1cInJuYWJpbmRpbmdcIiAvPlxuICA8cGF0aFxuICAgICBzdHlsZT17e2Rpc3BsYXk6XCJpbmxpbmVcIixmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNiODViZDFcIixzdHJva2VXaWR0aDpcIjExXCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIGQ9XCJtIDExOTkuNzk5MSwyNzMuMzkwMTcgYyAwLDAgNjcuOTUxMywyLjIwODY2IDEwMC40NjQ3LDIwLjgwOTU0IDMyLjUxMzMsMTguNjAwODggNjQuOTI4Nyw1MC45NjkgNzIuOTQ3LDczLjg4MDQ2IDguMDE4MiwyMi45MTE0NiA5Ljk5NjMsOTQuODAwNzIgLTEuMTYxNSwxMzUuMDU3MDkgLTExLjE1NzksNDAuMjU2MzcgLTI2LjUyODksMTA1LjAwOTMyIC00MC4zMzc4LDEyMS44NTEwNSAtMTMuODA4OSwxNi44NDE3MyAtMjQuOTQ2NCwyOS43OTQ4MyAtNjAuMTQ5LDMzLjc4MjE5IC0zNS4yMDI2LDMuOTg3MzYgLTE0NS45MTQ4LC0yNC40MTc0NCAtMTQ1LjkxNDgsLTI0LjQxNzQ0XCJcbiAgICAgaWQ9XCJwYXRoNVwiIC8+XG4gIDxwYXRoXG4gICAgICBjbGFzc05hbWU9XCJybmFiaW5kaW5nbG9jaFwiXG4gICAgIHN0eWxlPXt7ZGlzcGxheTpcImlubGluZVwiLGZpbGw6XCIjZDE1ZjA5XCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOlwiOS44MjY3N1wiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIGQ9XCJtIDQzMy4zNTM0MywyODguMDQyMDcgYyAwLDAgLTMuMDQwMjMsLTIzLjA4MjU3IC00LjcxODQ2LC00OS41MDczNCAtMS42NzgyMywtMjYuNDI0NzggLTcuNjczMjYsLTM5LjIyMjAxIC0xNC41ODk3NywtNjcuNTQ2OTcgLTYuOTE2NTIsLTI4LjMyNDk2IDQuMTQwMTYsLTMyLjA0MjkyIDE1Ljk3ODI3LC0zNy4wNTAzNCAxMS44MzgxMSwtNS4wMDc0MyAyOC43MzA5NCwtMTQuOTE1MDggNDMuMzUyLDguNzUwNjEgMTQuNjIxMDcsMjMuNjY1NjkgMTQuOTk5ODksNTEuMDI1IDI3LjkyLDc2Ljc3ODUgMTIuOTIwMTEsMjUuNzUzNSAyNC44ODAwNiw0NC40MTUwMyAyNC44ODAwNiw0NC40MTUwMyAwLDAgLTI4LjI4NjEzLDE2Ljc2ODM3IC00Ny4wNTQxNCwxOS44NTcwMSAtMTguNzY4LDMuMDg4NjMgLTQ1Ljc2Nzk2LDQuMzAzNSAtNDUuNzY3OTYsNC4zMDM1IHpcIlxuICAgICBpZD1cInJuYWJpbmRpbmdsb2NoXCIgLz5cbiAgPHBhdGhcbiAgICAgc3R5bGU9e3tkaXNwbGF5OlwiaW5saW5lXCIsZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI3XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIGQ9XCJtIDU0MC45NzQyMSw1NDMuNjg0NzkgYyAtMTAuMTE0MDMsNC4zMDA4OSAtMjMuODQ4MzcsMTAuODE3NTEgLTE1LjUzMjc3LDI5LjI0NDk2IDguMzE1NiwxOC40Mjc0NSAxMy43NDQxOCwyNy4wNDE1OCAyNS4yNjY1NSwzNi4xMjE4IDEwLjQ1NTYxLDguMjM5NTYgMTIuMjA5MzEsLTAuNzc5NDIgMjguMDMyMTEsOS4zNjEzOCAxNy4xMDg2NSwxMC45NjQ4OSAxNi4zOTMyNiwzOC43NDU1MyAzLjM0MjIxLDQ2Ljc1MjggLTEzLjA1MTA1LDguMDA3MjcgLTM4LjA3OTI4LDEyLjU0MDg0IC00Ny43MDgxMiwxLjcwNzMxIC04LjQzMjY4LC05LjQ4NzcyIC0xMS41MjkwNCwtMzAuNTMzMTcgLTYuMTY4MzcsLTM4LjY1ODY3IDUuMzYwNjcsLTguMTI1NDkgLTEyLjk3OTcsLTIzLjE3NjMxIC0yMS42OTU2MywtNDYuNTU4MiAtOC43MTU5NCwtMjMuMzgxOSAtMi42NDg1NSwtMzIuMTM3ODcgLTI2LjM2MjA4LC0zMC42NTUxNyAtMTQuMTMzMjIsMC44ODM2OSAtMzcuMTEyNTcsMjUuMTA0ODQgLTM3LjExMjU3LDI1LjEwNDg0IGwgLTM0LjY5MDQ4LDIyLjM2ODcxXCJcbiAgICAgaWQ9XCJwYXRoOC0xXCJcbiAgICAgIC8+XG4gIDxwYXRoXG4gICAgIHN0eWxlPXt7ZGlzcGxheTpcImlubGluZVwiLGZpbGw6XCIjZjU3ZDIyXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOlwiOS44MjY3N1wiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICBkPVwibSA5MzcuNTM2NzEsMjIzLjk2Nzc2IGMgLTIxLjQwMDg5LDY1LjY0NzI4IDQzLjU0ODI1LDEwMC44NDM0OSA2MC41ODA0MiwxMDguOTc0MjMgMTcuMDMyMTcsOC4xMzA3NCA0MC45ODQ5NywxNy42MDcwOSA2NS40MjQxNywyMC42Mjc5NSAyNC40MzkyLDMuMDIwODcgOTIuMzM4OCw0Ljc0MDMgMTE5LjI0MzQsLTExLjYzOTggMTkuMTk4NywtMTEuNjg4NiA2My42MDkyLC0zMy43NTk2MyA0MC40MDA2LC05OC4zMzQ3NSAtMjMuMjA4NSwtNjQuNTc1MTIgLTQyLjk0OTcsLTg1LjkyMTY0IC05OC44NTg5LC05Ny4zNzQ4IC01NS45MDkyLC0xMS40NTMxNiAtNjcuNTk4NCwtMTUuNjEyMzEgLTEyMS4xNjU4LDEyLjM2NzQxIC01My41Njc0LDI3Ljk3OTczIC02NS42MjM4OSw2NS4zNzk3NiAtNjUuNjIzODksNjUuMzc5NzYgelwiXG4gICAgIGlkPVwibWluaXJ0XCJcbiAgICAgIC8+XG4gIDxwYXRoXG4gICAgIHN0eWxlPXt7ZGlzcGxheTpcImlubGluZVwiLGZpbGw6XCIjZjU3ZDIyXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOlwiOS44MjY3N1wiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICBkPVwibSA4MzcuNDAzOTgsNDU5LjYyMzg2IGMgNTMuNjE0OSwtMTguNzEyMjggNzEuMDE5MjIsLTI1Ljk5ODExIDEyMy40OTA3NCwtMTYuNzIzNTkgNTIuNDcxNDgsOS4yNzQ1MiAxMjYuODI4NDgsMjYuOTY5NTUgMTUwLjAzMTk4LDYyLjA4MTkyIDIzLjIwMzUsMzUuMTEyMzYgNDQuOTg0NCw5Ny42MjcwMyAzNS43ODI5LDEzMC4yMzcyNCAtOS4yMDE1LDMyLjYxMDIxIC0yMi42NTY0LDQzLjcyNDkxIC02NC41ODQ0LDYwLjM3MjkzIC00MS45MjgxLDE2LjY0ODAxIC0xMDEuNjc5MDMsMzYuMzk2MjQgLTE1NS4yMjE4MiwzNy41Mzk1MiAtNTMuNTQyNzgsMS4xNDMyOSAtOTQuMTQwMzMsLTAuMzgzMzcgLTE0NC4yNDI4MSwtMzUuNzU5OTkgLTUwLjEwMjQ4LC0zNS4zNzY2MiAtMTA1LjYwNDI3LC01My4zODM1IC0xMTMuMjE3NjMsLTkxLjY5NDYyIC0xNS45NzE4NywtODAuMzcxODcgNDUuNTk3NTksLTEwMy4zNDcgMTY3Ljk2MTA0LC0xNDYuMDUzNDEgelwiXG4gICAgIGlkPVwicGF0aDNcIlxuICAgICAgLz5cbiAgPHBhdGhcbiAgICAgc3R5bGU9e3tkaXNwbGF5OlwiaW5saW5lXCIsZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI3XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIGQ9XCJtIDQzMS43NTIwMiwyODguMTY3NDIgYyAwLDAgMjAuODI3OTUsLTE0LjcxNjI3IDIwLjQ4MDE1LC0zMC4xNTI1OCAtMC4zNDc4MSwtMTUuNDM2MzEgLTE1LjgzNTIyLC02Ny43NjMzOSAtMTguMjIyMzQsLTgzLjQwNDM5IC0yLjM4NzEyLC0xNS42NDEwMSAyMS41Njc4NiwtMzEuODcyNTEgMzAuODQ2ODMsLTcuMTM3OTggOS4yNzg5NywyNC43MzQ1MiAxMy42NzEwNyw2NC40NDc0NCAyNi40NzE5Miw4MS4yMTAwNyAxMi44MDA4NCwxNi43NjI2MyA0Mi4xMTYxNiwxOS4xMTEzOSA2NC41NzI2MiwxNC40ODQ3NlwiXG4gICAgIGlkPVwicGF0aDgtM1wiXG4gICAgICAvPlxuICA8cGF0aFxuICAgICBzdHlsZT17e2Rpc3BsYXk6XCJpbmxpbmVcIixmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjdcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgZD1cIm0gNTUzLjE3NDEyLDI2NC4yNTcwMyBjIDI0LjA0ODY2LDAuNTMxODcgMTcyLjg4NzIzLDMuMjMzMTIgMjA1LjI0Mzc4LC0wLjY0NzE0IDMyLjM1NjU0LC0zLjg4MDI2IDY1LjQ4NjAxLC0wLjc3ODUxIDEwMy4xMjUxMiwxMS4yMjE0MSAzNy42MzkxLDExLjk5OTkyIDEyMS41NTI3MSw1Mi41MTMzMiAxNDQuNTcyNzgsNTcuNDg2NDEgMjMuMDIwMSw0Ljk3MzA5IDEzMi44NzI1LDI2LjE0NzgxIDE1MC44MTExLDMyLjIyODY3IDE3LjkzODYsNi4wODA4NiAzMi45MDI5LDMwLjM0OTM5IDI5LjE0MDcsMzguNDQ3MTEgLTUuNDIxMywxMS42Njg1OCAtMjcuODg3OSwyMS42NDEwOCAtNDcuNzgxNywxNS44MDE2NyAtMTkuODkzOSwtNS44Mzk0MSAtNjkuMTY5NywtMjYuNDY1NzggLTk0LjE1NzUsLTI4LjIzOTEzIC0yNC45ODc4LC0xLjc3MzM2IC02OC40MzU5NCw1LjUzNTgzIC05MC44NjAwNSwxMy44ODYyIC0yMi40MjQxMSw4LjM1MDM3IC02MC43NDkxNywyMC4wMDAyMyAtNjIuNjIxMjEsMjkuOTY5MDYgLTQuMzg1ODcsMjMuMzU1MjcgMTMuMDAzODcsMzMuOTY1NzMgMjMuNzk0OTksNTIuNTQxNzYgMTQuMjY3NjUsMjQuNTYwNiAzMy43NzQ1LDQ5LjA1OTU5IDM5LjUxMjA0LDY0LjUyOTE3IDYuMzIwNDMsMTcuMDQxMTggMy4yOTM2MywzOC4wOTQ0NSAtMTIuNDQxMzIsNDIuODE2NjkgLTE1LjczNDk1LDQuNzIyMjUgLTI5LjE4ODA3LC03LjIwNjM5IC00MS45MTE0NSwtMzQuMzU2OCAtMTIuNzIzMzcsLTI3LjE1MDQxIC0yOS40MjA1NiwtNzAuNTY3MDQgLTM2LjcyNDk5LC04MS43MjY5NiAtNy4zMDQ0NCwtMTEuMTU5OTIgLTIyLjUxMTM3LC0zOC4xODMgLTM4LjU5Njk0LC00MC4zODY4NiAtMTYuMDg1NTcsLTIuMjAzODcgLTQwLjc5MTE2LDEyLjMwMDQzIC01NS45NjYyOSwyMi44MTEyNCAtMTUuMTc1MTIsMTAuNTEwOCAtMjEwLjM3NDcyLDc5LjMwMTA5IC0yMjkuNzM5MjMsODQuMzMyNFwiXG4gICAgIGlkPVwicGF0aDhcIlxuICAgICAvPlxuICA8Z1xuICAgICBpZD1cInBlZ3JuYXBhdGhcIlxuICAgICBzdHlsZT17e3N0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIn19XG4gICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgzMjIuNDY3OTEsNzQuOTg3MjIxKVwiPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA1MzAuODU5OTgsMzg5Ljc3OTQ2IGMgMzcuNjM0OCwtMTcuMTg4NTkgMzcuNjM0OCwtMTcuMTg4NTkgMzcuNjM0OCwtMTcuMTg4NTlcIlxuICAgICAgIGlkPVwicGF0aDE5XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNTY1LjEzNjg0LDQ1OS43MDM1MyBjIDQ2LjE3NTA4LC0xOS43NDE2IDQ2LjE3NTA4LC0xOS43NDE2IDQ2LjE3NTA4LC0xOS43NDE2XCJcbiAgICAgICBpZD1cInBhdGgyNlwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDczMy45OTE0NSwyNjQuMDU2NTUgLTEyLjE2MTYzLDUwLjEwNzUzXCJcbiAgICAgICBpZD1cInBhdGg5XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNzQ2Ljk2NDY0LDI3NS4zODIxNCBjIC01LjU4MzkzLDIwLjkxNTUzIC04LjYyMjE3LDMwLjg5Nzk0IC0xMi4xOTE2MSw0My4xNjE3M1wiXG4gICAgICAgaWQ9XCJwYXRoMTBcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA3NjMuMDA3ODcsMjczLjg5NDk2IGMgLTEzLjEzMzc2LDQ3LjgzNTU5IC0xMy4xMzM3Niw0Ny44MzU1OSAtMTMuMTMzNzYsNDcuODM1NTlcIlxuICAgICAgIGlkPVwicGF0aDExXCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNzc2LjAxMzcxLDI3OC4xMDgzMyBjIC0xMS41NTMzOCw0OS42MDk5OCAtMTEuNTUzMzgsNDkuNjA5OTggLTExLjU1MzM4LDQ5LjYwOTk4XCJcbiAgICAgICBpZD1cInBhdGgxMlwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDc5MC4yMzc0MSwyODAuNzg3NzMgYyAtMTEuNTUzMzgsNDkuNjA5OTggLTExLjU1MzM4LDQ5LjYwOTk4IC0xMS41NTMzOCw0OS42MDk5OFwiXG4gICAgICAgaWQ9XCJwYXRoMTItM1wiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDgwNS40NTQyNSwyODIuMzI1MzYgYyAtMTMuNzcxNjksNTMuMTAzOTEgLTEzLjc3MTY5LDUzLjEwMzkxIC0xMy43NzE2OSw1My4xMDM5MVwiXG4gICAgICAgaWQ9XCJwYXRoMTNcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA4MTkuNDAwNTYsMjg2LjEyODU1IGMgLTUuNTIyMjMsMjIuOTI0NDggLTUuNTIyMjMsMjIuOTI0NDggLTUuNTIyMjMsMjIuOTI0NDhcIlxuICAgICAgIGlkPVwicGF0aDI3XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gODAzLjE4OTczLDMzOS4xNzUwOCBjIDcuNjgzODYsLTE4LjUxMjY4IDcuNjgzODYsLTE4LjUxMjY4IDcuNjgzODYsLTE4LjUxMjY4XCJcbiAgICAgICBpZD1cInBhdGgyOFwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDgzNy4zMTczMSwyOTIuNDQ0OTMgYyAtMTAuNzkyMzgsMTQuMjU4NSAtMTAuNzkyMzgsMTQuMjU4NSAtMTAuNzkyMzgsMTQuMjU4NVwiXG4gICAgICAgaWQ9XCJwYXRoMjlcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA4MTguMTc5OCwzNDIuMDkxNDMgYyA0LjY1OTAzLC0xNy4yMTE1IDQuNjU5MDMsLTE3LjIxMTUgNC42NTkwMywtMTcuMjExNVwiXG4gICAgICAgaWQ9XCJwYXRoMzBcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA4NDAuNTgxNTUsMzQyLjQwOTMgYyAtNi42ODM2MiwtMTcuNjEyMDggLTYuNjgzNjIsLTE3LjYxMjA4IC02LjY4MzYyLC0xNy42MTIwOFwiXG4gICAgICAgaWQ9XCJwYXRoMzFcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA4NDkuNTM1NzIsMzAyLjQwOTU3IGMgLTEzLjQ5NTI2LDEzLjIxMTkyIC0xMy40OTUyNiwxMy4yMTE5MiAtMTMuNDk1MjYsMTMuMjExOTJcIlxuICAgICAgIGlkPVwicGF0aDMyXCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6NC4zNSxzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA4NjMuMzcxODIsMzI0Ljk4MTE0IGMgLTE1LjgzMzI5LDAgLTE1LjgzMzI5LDAgLTE1LjgzMzI5LDBcIlxuICAgICAgIGlkPVwicGF0aDMzXCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIk0gNTgzLjExNzIyLDM0NS4xMDE5OCA1NzIuOTkzMDEsMzI5LjgwODA0XCJcbiAgICAgICBpZD1cInBhdGg0MS04LTMtOC00XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIk0gNTk0Ljc3OTE2LDMzOS4yOTM0NCA1ODQuNjU0OTUsMzIzLjk5OTVcIlxuICAgICAgIGlkPVwicGF0aDQxLTgtMy04LTQtNlwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJNIDYwOC42ODg3OCwzMzIuMzE0MTEgNTk4LjU2NDU3LDMxNy4wMjAxN1wiXG4gICAgICAgaWQ9XCJwYXRoNDEtOC0zLTgtNC05XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIk0gNjIxLjE4MzA5LDMyOC42MDMwNCA2MTEuMDU4ODgsMzEzLjMwOTFcIlxuICAgICAgIGlkPVwicGF0aDQxLTgtMy04LTQtOFwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJNIDYzNS41NTcwNCwzMjQuNjUyMzEgNjI1LjQzMjgzLDMwOS4zNTgzN1wiXG4gICAgICAgaWQ9XCJwYXRoNDEtOC0zLTgtNC04NVwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDY0OC44NDgzNSwzMjAuMDUwODYgLTQuMzc3NSwtMTYuNDQxMTlcIlxuICAgICAgIGlkPVwicGF0aDQxLTgtMy04LTQtODhcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA2NjMuNjUwMjMsMzE3Ljk2NzMgLTEuNzM5MTYsLTE3LjkzMzkxXCJcbiAgICAgICBpZD1cInBhdGg0MS04LTMtOC00LTY0XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNjc2LjkwOTcyLDMxNS4xMzYzOCAtMS43MzkxNiwtMTcuOTMzOTFcIlxuICAgICAgIGlkPVwicGF0aDQxLTgtMy04LTQtNjQtNlwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDY5MC4yMjExMSwzMTMuOTczNjIgLTEuNzM5MTYsLTE3LjkzMzkxXCJcbiAgICAgICBpZD1cInBhdGg0MS04LTMtOC00LTY0LThcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwiTSA3MDUuOTc5NjQsMzEzLjI1OTQxIDcwNC4yNDA0OCwyOTUuMzI1NVwiXG4gICAgICAgaWQ9XCJwYXRoNDEtOC0zLTgtNC02NC00XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNTM5LjI5MjA4LDM5OC42ODUzNSAzMy44OTAwMywtMTQuOTk5NTZcIlxuICAgICAgIGlkPVwicGF0aDIxXCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNTQ0LjQ3OTk5LDQxMS40MzQxNSBjIDM4Ljc2OTA5LC0xNy4zNTQ1IDM4Ljc2OTA5LC0xNy4zNTQ1IDM4Ljc2OTA5LC0xNy4zNTQ1XCJcbiAgICAgICBpZD1cInBhdGgyMlwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDU0OS45OTg3Niw0MjMuMDU2NiA0MC41OTMsLTE1LjIzMDI5XCJcbiAgICAgICBpZD1cInBhdGgyM1wiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJNIDU1NC40NDQxNCw0MzQuNTY2MTQgQyA1OTQuMDY1NCw0MTguODk1OCA1OTQuMDY1NCw0MTguODk1OCA1OTQuMDY1NCw0MTguODk1OFwiXG4gICAgICAgaWQ9XCJwYXRoMjRcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA1NjAuNjQ0NzcsNDQ2LjQxMjY2IGMgNDIuOTczMDYsLTE3LjM3NjA3IDQyLjk3MzA2LC0xNy4zNzYwNyA0Mi45NzMwNiwtMTcuMzc2MDdcIlxuICAgICAgIGlkPVwicGF0aDI1XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNTcyLjY3ODg3LDQ3Mi42ODUxNCBjIDQ2LjE3NTA4LC0xOS43NDE2IDQ2LjE3NTA4LC0xOS43NDE2IDQ2LjE3NTA4LC0xOS43NDE2XCJcbiAgICAgICBpZD1cInBhdGgyNi02XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNTc4LjA1MzA1LDQ4NS41ODA0NCBjIDQ2LjE3NTA4LC0xOS43NDE2IDQ2LjE3NTA4LC0xOS43NDE2IDQ2LjE3NTA4LC0xOS43NDE2XCJcbiAgICAgICBpZD1cInBhdGgyNi02LTJcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA1ODIuODkzODEsNDk2LjY1MDY0IGMgMjEuMjY0MSwtNy44ODE5MiAyMS4yNjQxLC03Ljg4MTkyIDIxLjI2NDEsLTcuODgxOTJcIlxuICAgICAgIGlkPVwicGF0aDM0XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNjI5LjIwNTMyLDQ3NS41MzUxMyBjIC0xNS43MTE0LDkuMjcxMzYgLTE1LjcxMTQsOS4yNzEzNiAtMTUuNzExNCw5LjI3MTM2XCJcbiAgICAgICBpZD1cInBhdGgzNVwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDU5My4yMjQ3LDUwOS4yNTM4MSBjIDEyLjY5NDk5LC0xMC4xNzEzNiAxMi42OTQ5OSwtMTAuMTcxMzYgMTIuNjk0OTksLTEwLjE3MTM2XCJcbiAgICAgICBpZD1cInBhdGgzNlwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDYzOC4wNzk1NSw0OTAuMzU3NTEgYyAtMTkuMzgyNjYsNS4yODEyMiAtMTkuMzgyNjYsNS4yODEyMiAtMTkuMzgyNjYsNS4yODEyMlwiXG4gICAgICAgaWQ9XCJwYXRoMzdcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA2MTAuOTkxNDcsNTE4LjM5NzY0IGMgMi4zMTczNCwtMTEuNTE1ODkgMi4zMTczNCwtMTEuNTE1ODkgMi4zMTczNCwtMTEuNTE1ODlcIlxuICAgICAgIGlkPVwicGF0aDM4XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNTIyLjU1Mjc0LDM3Ni4wODc1MSBjIDE0LjQwMDQyLC04LjczMTY2IDE4LjI4ODIsLTEwLjgyODQ4IDE4LjI4ODIsLTEwLjgyODQ4XCJcbiAgICAgICBpZD1cInBhdGgzOVwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDUxNi43NjExMSwzNjguNjU1MTYgMTMuODk0MjIsLTE4LjU3MzE5XCJcbiAgICAgICBpZD1cInBhdGg0MFwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDU3MS44ODkzOCwzNjAuODAwMSAtMTcuODk0MzcsMC4xMjE5XCJcbiAgICAgICBpZD1cInBhdGg0MS04LTMtMVwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDQ5OC45MjcyMiwzNjEuMzc3NTMgMC4wMTQ5LC0xOS40MjA3NVwiXG4gICAgICAgaWQ9XCJwYXRoNDFcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA0NzMuMDQwOSwzNTEuMzkxMTggYyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxM1wiXG4gICAgICAgaWQ9XCJwYXRoNTAtMjlcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA0ODcuNjMwNjcsMzYxLjg3ODE5IC0yLjY1OTI1LC0xOC40MDY3MlwiXG4gICAgICAgaWQ9XCJwYXRoNDEtOFwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDMxMC44MzY4MSw0MTguNTI1OTMgYyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxM1wiXG4gICAgICAgaWQ9XCJwYXRoNTAtNVwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDMzNS44MTIzNSw0MDkuNDIxNjMgYyA2LjcxODk0LDE4LjYxODc5IDYuNzE4OTQsMTguNjE4NzkgNi43MTg5NCwxOC42MTg3OVwiXG4gICAgICAgaWQ9XCJwYXRoNTFcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAzMjMuMTk4NDksNDEyLjc2Nzc5IGMgNy4zNjQ4NCwxOC4wMDYwOSA3LjM2NDg0LDE4LjAwNjA5IDcuMzY0ODQsMTguMDA2MDkgdiAwXCJcbiAgICAgICBpZD1cInBhdGg1MlwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDI5OC42OTA1Miw0MjIuNTg0ODMgYyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxM1wiXG4gICAgICAgaWQ9XCJwYXRoNTBcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAyODYuMTAyMzEsNDI2Ljc1MjcyIGMgNy4yNTQ4MiwxNS4wNzcxMyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTNcIlxuICAgICAgIGlkPVwicGF0aDUwLTFcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAyNzMuNTAwMDUsNDMxLjMyNjA4IGMgNy4yNTQ4MiwxNS4wNzcxMyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTNcIlxuICAgICAgIGlkPVwicGF0aDUwLTlcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAyNTkuODkzNjgsNDM0Ljk3NjU3IGMgNy4yNTQ4MiwxNS4wNzcxMyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTNcIlxuICAgICAgIGlkPVwicGF0aDUwLTUwXCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMjQ2LjU1NDkzLDQ0MC41MjgzOSBjIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxMyA3LjI1NDgyLDE1LjA3NzEzXCJcbiAgICAgICBpZD1cInBhdGg1MC02XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMjMxLjk3NjM4LDQ0NS45NTEwNCBjIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxMyA3LjI1NDgyLDE1LjA3NzEzXCJcbiAgICAgICBpZD1cInBhdGg1MC0xNVwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDIxOC4xNjkwMiw0NTEuMTQ1MDIgYyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxM1wiXG4gICAgICAgaWQ9XCJwYXRoNTAtNTZcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAzNDguMzAxNSw0MDQuMjcxNTkgYyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxM1wiXG4gICAgICAgaWQ9XCJwYXRoNTAtNFwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDM2MC40NDQwMywzOTkuODA2MTIgYyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxM1wiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjhcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAzNzMuODkxNTYsMzk1Ljc2OTE2IGMgNy4yNTQ4MiwxNS4wNzcxMyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTNcIlxuICAgICAgIGlkPVwicGF0aDUwLTQ5XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMzg2LjI1NzEzLDM5MS42MjY0MyBjIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxMyA3LjI1NDgyLDE1LjA3NzEzXCJcbiAgICAgICBpZD1cInBhdGg1MC05MlwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDM5OS44MzU0NiwzODQuMjk2MzUgYyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxM1wiXG4gICAgICAgaWQ9XCJwYXRoNTAtMlwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDQxNC4yNjgwNywzNzkuNDg2ODQgYyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxM1wiXG4gICAgICAgaWQ9XCJwYXRoNTAtMTBcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA0MjUuMjQzMzksMzczLjk3OTI1IGMgNy4yNTQ4MiwxNS4wNzcxMyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTNcIlxuICAgICAgIGlkPVwicGF0aDUwLTQ5MFwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDQzNi43Nzc1MiwzNjguNDk3IGMgNy4yNTQ4MiwxNS4wNzcxMyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTNcIlxuICAgICAgIGlkPVwicGF0aDUwLTExXCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNDQ4LjI3ODA0LDM2MS44OTM2NSBjIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxMyA3LjI1NDgyLDE1LjA3NzEzXCJcbiAgICAgICBpZD1cInBhdGg1MC02N1wiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDQ2MS43MTE2MSwzNTUuMTA4MzkgYyA3LjI1NDgyLDE1LjA3NzEzIDcuMjU0ODIsMTUuMDc3MTMgNy4yNTQ4MiwxNS4wNzcxM1wiXG4gICAgICAgaWQ9XCJwYXRoNTAtM1wiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDUwNy4xNzc4LDM2NC41Nzk0MiA4LjA5OTk4LC0yMS44ODU3NVwiXG4gICAgICAgaWQ9XCJwYXRoNDEtOC0zXCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNTczLjgwMzM2LDM1MS4wMzUyNyAtMTUuNDM3NTksLTEwLjA4ODRcIlxuICAgICAgIGlkPVwicGF0aDQxLTgtMy04XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNDk5LjI5NTY2LDE5MS45MDcyIC0yLjk4NDYsMTkuNzc3MzZcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yLTgtMDYtODdcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA0ODYuNTIwOTYsMTkwLjcwNjU3IC0yLjk4NDYsMTkuNzc3MzZcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yLTgtMDYtOVwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDQxNy43ODIzMiwxOTEuNjc4MzUgLTEuMTM2NCwxOS40NzQ3MlwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNi04XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNTU0LjMyOTA3LDIwNy45MDcwOCAtNi40NjQ4MiwxOS42NTU1N1wiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNi04LTE5XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNTQxLjAwMzMsMjAyLjQ1MjE3IC02LjQ2NDgyLDE5LjY1NTU3XCJcbiAgICAgICBpZD1cInBhdGg1MC02Ny05LTUtMi04LTA2LTgtOFwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDUyNy43NzkzLDE5Ni40NDI2NCAtNi40NjQ4MiwxOS42NTU1N1wiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNi04LTRcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA1MTUuNTIyOTgsMTk0Ljc4NjAxIC02LjQ2NDgyLDE5LjY1NTU3XCJcbiAgICAgICBpZD1cInBhdGg1MC02Ny05LTUtMi04LTA2LTgtMjZcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA0NzQuNzU3NCwxOTAuMTU0NDggLTIuOTg0NiwxOS43NzczNlwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNi02XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNDU5LjM4MTkyLDE4OC45NDgxIC0yLjk4NDYsMTkuNzc3MzZcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yLTgtMDYtNVwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDQ0NS43MDYzMywxOTAuNjM2NzIgLTIuOTg0NiwxOS43NzczNlwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNi05MVwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDQzMi43MTI3NywxOTAuMDgxNzUgLTIuOTg0NiwxOS43NzczNlwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0xLTdcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA0MDQuNzM4NTYsMTkyLjgxMjcxIC0xLjEzNjQsMTkuNDc0NzJcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yLTgtMDYtOC0wXCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMzkyLjc4MDMsMTkzLjEyNTkxIC0xLjEzNjQsMTkuNDc0NzJcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yLTgtMDYtOC0wNVwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDM4MC42MTY5NCwxOTIuMzY0NyAtMS4xMzY0LDE5LjQ3NDcyXCJcbiAgICAgICBpZD1cInBhdGg1MC02Ny05LTUtMi04LTA2LTgtMjhcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAzNjcuMDY2NjQsMTkyLjkxMDgzIC0xLjEzNjQsMTkuNDc0NzJcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yLTgtMDYtOC0wOVwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDM1NC4xMjYxMiwxOTIuODMyNDIgLTEuMTM2NCwxOS40NzQ3MlwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNi04LTVcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAzNDEuMzg3MzMsMTk0Ljk5Njk5IC0xLjEzNjQsMTkuNDc0NzJcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yLTgtMDYtOC0zNlwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDMyOC45MDY5NSwxOTAuODEwNDIgLTEuMTM2NCwxOS40NzQ3MlwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNi04LTlcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAzMTQuNTY0OSwxOTEuMjAwOTkgLTEuMTM2NCwxOS40NzQ3MlwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNi04LTc0XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMzAwLjgxNzE0LDE5Mi42NzEwNSAtMS4xMzY0LDE5LjQ3NDcyXCJcbiAgICAgICBpZD1cInBhdGg1MC02Ny05LTUtMi04LTA2LTgtOTRcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAyODcuNjM5MzIsMTkzLjA0NDE5IC0xLjEzNjQsMTkuNDc0NzJcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yLTgtMDYtOC0xMlwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDI3NC4xNDEzMiwxODguOTQwNjggLTEuMTM2NCwxOS40NzQ3MlwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNi04LTg4XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMjU5LjEwOTE2LDE5Mi41MTkyNyAtMS4xMzY0LDE5LjQ3NDcyXCJcbiAgICAgICBpZD1cInBhdGg1MC02Ny05LTUtMi04LTA2LTgtODNcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAyNDYuMTA4OTgsMTg5LjQ3MjM1IC0xLjEzNjQsMTkuNDc0NzJcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yLTgtMDYtOC00N1wiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDcxOS41Njc5OSwyNjUuMTAzMTkgLTcuNzEzNzcsMjAuMDg1MVwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOVwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDU5OC44ODEyNywyMjQuNzQxNDcgLTYuNDY0ODIsMTkuNjU1NTdcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yLTgtMDYtOC03XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNTg4LjYxODg1LDIyMC4zNDA2NyAtNi40NjQ4MiwxOS42NTU1N1wiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNi04LTJcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA3MDUuMzU2MTUsMjYxLjk5NzA0IC03LjcxMzc3LDIwLjA4NTFcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNVwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDY4OS42OTU5NywyNTYuMTQ5MDkgLTMuODg5MDYsMjEuNzYwMjZcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yXCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNjc3LjYxODk1LDI1My4wMTAyOSAtNi44MzM1NSwyMS45NDU5NVwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItNVwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDY2MC4wNDY3MiwyNTIuNDQyNzcgLTIuOTg0NiwxOS43NzczNlwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOFwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDY0Ni4xNzA0NywyNDUuMjY1OSAtMi45ODQ2LDE5Ljc3NzM2XCJcbiAgICAgICBpZD1cInBhdGg1MC02Ny05LTUtMi04LTBcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSA2MzQuMjQxMDEsMjQxLjEzNDI0IC0yLjk4NDYsMTkuNzc3MzZcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yLTgtMVwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDYyMi42NjQ1NSwyMzUuNDQ1NDcgLTIuOTg0NiwxOS43NzczNlwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNlwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2MwMDAwMFwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDYwOS43MTM4MiwyMzEuMzQ1NDIgLTIuOTg0NiwxOS43NzczNlwiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNi00XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjYzAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gNTY1LjcyMDg0LDIxMS40Mjk2MyAtNi40NjQ4MiwxOS42NTU1N1wiXG4gICAgICAgaWQ9XCJwYXRoNTAtNjctOS01LTItOC0wNi04LTNcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNjMDAwMDBcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwiTSA1NzcuMDY0MDgsMjE2LjEwNDQzIDU3MC41OTkyNiwyMzUuNzZcIlxuICAgICAgIGlkPVwicGF0aDUwLTY3LTktNS0yLTgtMDYtOC0xXCJcbiAgICAgICAgLz5cbiAgPC9nPlxuICBcbiAgPGdcbiAgICAgaWQ9XCJnNTRcIlxuICAgICBzdHlsZT17e3N0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIn19XG4gICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgzMjIuNDY3OTEsNzQuOTg3MjIxKVwiPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNmNTdkMjJcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwiTSAyMDAuMzI2MDUsMTg5LjI0NDMzIDE5NC4xMzgsMjA2LjMzMDYyXCJcbiAgICAgICBpZD1cInBhdGg1MC02Ny05LTUtMi04LTA2LTgtNi04XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMjEzLjUwNDg5LDE5MC4zMTcwOSAtMS4xMzY0LDE5LjQ3NDcyXCJcbiAgICAgICBpZD1cInBhdGg1MC02Ny05LTUtMi04LTA2LTgtNi02XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMjI2Ljc4MjY4LDE5MS44NDk4NSAtMS4xMzY0LDE5LjQ3NDcyXCJcbiAgICAgICBpZD1cInBhdGg1MC02Ny05LTUtMi04LTA2LTgtNlwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDE3OS4xNDk1OSwxOTkuNjc0OSBjIDExLjYxNTE2LC0xMi4zNDgxNyAxMS42MTUxNiwtMTIuMzQ4MTcgMTEuNjE1MTYsLTEyLjM0ODE3IHYgMFwiXG4gICAgICAgaWQ9XCJwYXRoNTRcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNmNTdkMjJcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAxNjEuNzM4LDE5MC43ODU4MyBjIDExLjMzNzA2LC03LjY2MzY3IDExLjMzNzA2LC03LjY2MzY3IDExLjMzNzA2LC03LjY2MzY3XCJcbiAgICAgICBpZD1cInBhdGg1NVwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDE0OS45NTM0NiwxODAuNjc0NjIgYyAxNC4zMzI4NSwtOS42NjcxIDE0LjMzMjg1LC05LjY2NzEgMTQuMzMyODUsLTkuNjY3MVwiXG4gICAgICAgaWQ9XCJwYXRoNTZcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNmNTdkMjJcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAxMjMuODkwNzQsMTY2LjUzODU1IGMgMzQuMjE2MzEsLTEwLjA2MzgyIDM0LjIxNjMxLC0xMC4wNjM4MiAzNC4yMTYzMSwtMTAuMDYzODJcIlxuICAgICAgIGlkPVwicGF0aDU3XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMTE4LjU4NDksMTUxLjIwMDUzIGMgMzcuNjUxOTQsLTkuMjE0NTYgMzcuNjUxOTQsLTkuMjE0NTYgMzcuNjUxOTQsLTkuMjE0NTZcIlxuICAgICAgIGlkPVwicGF0aDU4XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMTE2LjEyMDE1LDEzNS43ODcyNyBjIDM3LjM2MjExLC05LjMzMjI1IDM3LjM2MjExLC05LjMzMjI1IDM3LjM2MjExLC05LjMzMjI1XCJcbiAgICAgICBpZD1cInBhdGg1OVwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDExMC44NDcxNiwxMTkuNzYwMDIgYyAzNi45MTY1OCwtNi44Mzk0NCAzNi45MTY1OCwtNi44Mzk0NCAzNi45MTY1OCwtNi44Mzk0NFwiXG4gICAgICAgaWQ9XCJwYXRoNjBcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNmNTdkMjJcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAxMTIuODcxMTEsMTA0LjIyNDYzIGMgMzAuMzMzMTEsLTYuMjgyODk0IDMwLjMzMzExLC02LjI4Mjg5NCAzMC4zMzMxMSwtNi4yODI4OTRcIlxuICAgICAgIGlkPVwicGF0aDYxXCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMTI2LjU5Mzg4LDE4Mi40NTI3MiBjIDE0LjA4MDQ2LC0xLjc4NjMxIDE0LjA4MDQ2LC0xLjc4NjMxIDE0LjA4MDQ2LC0xLjc4NjMxXCJcbiAgICAgICBpZD1cInBhdGg2MlwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDEyNi42NDIyMSwxOTMuMTA1MiBjIDE5Ljc5NjMsMi4xMTMyNCAxOS43OTYzLDIuMTEzMjQgMTkuNzk2MywyLjExMzI0XCJcbiAgICAgICBpZD1cInBhdGg2M1wiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDExOS42Mzk2OSwyMDEuMTAxOTggYyAyMC45NTY0NCw4LjAxODg0IDIwLjk1NjQ0LDguMDE4ODQgMjAuOTU2NDQsOC4wMTg4NFwiXG4gICAgICAgaWQ9XCJwYXRoNjRcIiAvPlxuICA8L2c+XG4gIDxnXG4gICAgIGlkPVwiZzc5XCJcbiAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCJ9fVxuICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMzIyLjQ2NzkxLDc0Ljk4NzIyMSlcIj5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gODYuMDc2NDY5LDUwMy42MTg2IGMgOS44ODU0NjYsMTAuMzQ0ODkgOS44ODU0NjYsMTAuMzQ0ODkgOS44ODU0NjYsMTAuMzQ0ODlcIlxuICAgICAgIGlkPVwicGF0aDc5XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMTUwLjI5OTc4LDQ1Ny45MDQ0IGMgMS45NDI0MywxNy44NjYgMS45NDI0MywxNy44NjYgMS45NDI0MywxNy44NjZcIlxuICAgICAgIGlkPVwicGF0aDc0XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMTk5LjI4NDksNDg5LjA5MjUzIGMgLTIwLjE2Mjk2LDYuMjU1NzMgLTIwLjE2Mjk2LDYuMjU1NzMgLTIwLjE2Mjk2LDYuMjU1NzNcIlxuICAgICAgIGlkPVwicGF0aDY1XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMTg1LjY0NjQzLDUwNy4yMTI4OSAxOC45MTA2OSwtOC4xMjUxXCJcbiAgICAgICBpZD1cInBhdGg2NlwiXG4gICAgICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDIwMC4wNjk0LDUzNS4zMjAyOSAxOC40NDE3NCwtMTEuMjIzNTNcIlxuICAgICAgIGlkPVwicGF0aDY4XCJcbiAgICAgICAgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMTkwLjM3Mjc3LDQ2OC42MzQ3NSBjIDEyLjAzNjA4LDExLjY1Njg2IDEyLjAzNjA4LDExLjY1Njg2IDEyLjAzNjA4LDExLjY1Njg2XCJcbiAgICAgICBpZD1cInBhdGg3MFwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDE4OC4wMTQ1Miw1MjAuNjA2NjUgYyAyMS45NTU1MSwtNy43NzYyNiAyMS45NTU1MSwtNy43NzYyNiAyMS45NTU1MSwtNy43NzYyNlwiXG4gICAgICAgaWQ9XCJwYXRoNjdcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNmNTdkMjJcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAyMDMuOTkyODUsNDU4LjQ1MzY5IGMgNi4wMjM4MiwxMi42NTkwNyA2LjAyMzgyLDEyLjY1OTA3IDYuMDIzODIsMTIuNjU5MDdcIlxuICAgICAgIGlkPVwicGF0aDcxXCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMTY4LjA0MDI4LDQ1OS44ODUwNyBjIC0zLjczOTU4LDE0LjkxODI1IC0zLjczOTU4LDE0LjkxODI1IC0zLjczOTU4LDE0LjkxODI1XCJcbiAgICAgICBpZD1cInBhdGg3M1wiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDE4Mi4wNzczNiw0NjguOTQxMTUgLTcuMTE2MDcsOC45NDIyOVwiXG4gICAgICAgaWQ9XCJwYXRoNzJcIlxuICAgICAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNmNTdkMjJcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAxMzQuMzgyMTUsNDY2LjcwMjM2IGMgNy45NjIxNiwxMi4zMzc2MyA3Ljk2MjE2LDEyLjMzNzYzIDcuOTYyMTYsMTIuMzM3NjNcIlxuICAgICAgIGlkPVwicGF0aDc1XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gMTA4Ljk0MTUsNDg1LjY4NDUzIGMgMTQuOTM4NDgsMTEuODk5NzUgMTQuOTM4NDgsMTEuODk5NzUgMTQuOTM4NDgsMTEuODk5NzVcIlxuICAgICAgIGlkPVwicGF0aDc3XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIm0gOTguODk3MzczLDQ5NC43MzAwMiBjIDEwLjc4ODM4NywxMS44MTU2NSAxMC43ODgzODcsMTEuODE1NjUgMTAuNzg4Mzg3LDExLjgxNTY1XCJcbiAgICAgICBpZD1cInBhdGg3OFwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDEyMi40NDk0OCw0NzUuNjg5OTcgYyAxMS4zMzk4MSwxMS45Mzk5MSAxMS4zMzk4MSwxMS45Mzk5MSAxMS4zMzk4MSwxMS45Mzk5MVwiXG4gICAgICAgaWQ9XCJwYXRoNzZcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNmNTdkMjJcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwibSAyMDcuNTEzNDgsNTQ2LjcyNzk0IGMgMTkuNzY1MzQsMTYuNDk1MzYgMTkuNzY1MzQsMTYuNDk1MzYgMTkuNzY1MzQsMTYuNDk1MzZcIlxuICAgICAgIGlkPVwicGF0aDgxXCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIk0gMjQ3Ljg2NzM1LDU0MC4yNDIxOSBDIDIzNS43OTY4NCw1NjQuMTYxMSAyMzUuNzk2ODQsNTY0LjE2MTEgMjM1Ljc5Njg0LDU2NC4xNjExXCJcbiAgICAgICBpZD1cInBhdGg4M1wiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDI2Ni4zNzM4LDU1MC4yNzI2NyBjIC0yOS41MzQ2MywxNS43NDgzIC0yOS41MzQ2MywxNS43NDgzIC0yOS41MzQ2MywxNS43NDgzXCJcbiAgICAgICBpZD1cInBhdGg4NFwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDIyNS4yMDI2Myw1MzQuNzkwNSBjIDguMjExMzcsMjQuODkyNTIgOC4yMTEzNywyNC44OTI1MiA4LjIxMTM3LDI0Ljg5MjUyXCJcbiAgICAgICBpZD1cInBhdGg4MlwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJNIDI3MS4wODg0OCw1NzkuODkzNjcgQyAyMzQuODI4MDcsNTY2LjU1NDgyIDIzNC44MjgwNyw1NjYuNTU0ODIgMjM0LjgyODA3LDU2Ni41NTQ4MlwiXG4gICAgICAgaWQ9XCJwYXRoODVcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgc3R5bGU9e3tmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiNmNTdkMjJcIixzdHJva2VXaWR0aDpcIjVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICBkPVwiTSAyNTEuODQ3NzMsNTkyLjc0NjE2IEMgMjM1LjI4OTYsNTY1LjE1NTg4IDIzNS4yODk2LDU2NS4xNTU4OCAyMzUuMjg5Niw1NjUuMTU1ODhcIlxuICAgICAgIGlkPVwicGF0aDg2XCIgLz5cbiAgICA8cGF0aFxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjZjU3ZDIyXCIsc3Ryb2tlV2lkdGg6XCI1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgZD1cIk0gMjI0Ljk2MzU2LDU5OC4wNTg1NSBDIDIzNS4zMzI0NCw1NjMuNzQzMSAyMzUuMzMyNDQsNTYzLjc0MzEgMjM1LjMzMjQ0LDU2My43NDMxXCJcbiAgICAgICBpZD1cInBhdGg4N1wiIC8+XG4gICAgPHBhdGhcbiAgICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZVdpZHRoOlwiNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIGQ9XCJtIDIwNC41Nzc5OSw1ODUuNTg0OTggYyAyOC40ODY0MywtMjAuMTk0NTIgMjguNDg2NDMsLTIwLjE5NDUyIDI4LjQ4NjQzLC0yMC4xOTQ1MiBsIC0yOS45NTQ2MSwyLjA1MTAxXCJcbiAgICAgICBpZD1cInBhdGg4OFwiIC8+XG4gIDwvZz5cbiAgPGNpcmNsZVxuICAgICBzdHlsZT17e2Rpc3BsYXk6XCJpbmxpbmVcIixmaWxsOlwiIzg4MTI3NlwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIm5vbmVcIixzdHJva2VXaWR0aDpcIjkuODI2NzdcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICBpZD1cInBhdGg2XCJcbiAgICAgY3g9XCI1NTcuNzAzMjVcIlxuICAgICBjeT1cIjY0MS42NDUyXCJcbiAgICAgcj1cIjlcIiAvPlxuICA8cGF0aFxuICAgICBzdHlsZT17e2ZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiIzAwMDAwMFwiLHN0cm9rZVdpZHRoOlwiN1wiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICBkPVwiTSA1MjUuMDk0OTIsNjYyLjA4MDc1IEMgMzc1LjY2MTYxLDcxNC40Mjc1MSAzNzUuNjYxNjEsNzE0LjQyNzUxIDM3NS42NjE2MSw3MTQuNDI3NTFcIlxuICAgICBpZD1cInBhdGg4OVwiIC8+XG4gIDx0ZXh0XG4gICAgIFxuICAgICBzdHlsZT17e2ZvbnRTdHlsZTpcIm5vcm1hbFwiLGZvbnRWYXJpYW50Olwibm9ybWFsXCIsZm9udFdlaWdodDpcIm5vcm1hbFwiLGZvbnRTdHJldGNoOlwibm9ybWFsXCIsZm9udFNpemU6XCIxNS42NjU0cHhcIixmb250RmFtaWx5OlwiQXJpYWxcIix3aGl0ZVNwYWNlOlwicHJlXCIsaW5saW5lU2l6ZTpcIjEyMy45MTFcIixmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiMwMDAwMDBcIixzdHJva2VXaWR0aDpcIjAuMzI2MzYzXCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIHg9XCIyNC44MzgyMzZcIlxuICAgICB5PVwiNjUwLjIzMzY0XCJcbiAgICAgaWQ9XCJyaWJvdGV4dFwiXG4gICAgIHRyYW5zZm9ybT1cIm1hdHJpeCgzLjA1MjY2OTcsMCwwLDMuMDc1NTEzMiwxODcuOTU1MDgsLTEyNDMuOTUzOSlcIj48dHNwYW5cbiAgICAgICB4PVwiMjQuODM4MjM2XCJcbiAgICAgICB5PVwiNjUwLjIzMzY0XCJcbiAgICAgICBpZD1cInJpYm90ZXh0XCI+PHRzcGFuXG4gICAgICAgICBzdHlsZT17e2ZpbGw6XCIjMDAwMDAwXCJ9fVxuICAgICAgICAgaWQ9XCJyaWJvdGV4dFwiPlJpYm9zd2l0Y2g8L3RzcGFuPjwvdHNwYW4+PC90ZXh0PlxuICA8cGF0aFxuICAgICBzdHlsZT17e2ZpbGw6XCIjMDAwMDAwXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiIzAwMDAwMFwiLHN0cm9rZVdpZHRoOlwiN1wiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICBkPVwiTSA3MTQuNTc2NTQsMjg2LjczNzgyIEMgNjAzLjA4ODUzLDM3My45NTI2MyA2MDMuMDg4NTMsMzczLjk1MjYzIDYwMy4wODg1MywzNzMuOTUyNjNcIlxuICAgICBpZD1cInBhdGg5MFwiIC8+XG4gIDxwYXRoXG4gICAgIHN0eWxlPXt7ZmlsbDpcIiMwMDAwMDBcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjMDAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI3XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIGQ9XCJNIDExMDMuNzM1OCwxOTYuNTY2NCBDIDEyNzMuNjk4NSw0NS41OTAyNTUgMTI3My42OTg1LDQ1LjU5MDI1NSAxMjczLjY5ODUsNDUuNTkwMjU1XCJcbiAgICAgaWQ9XCJwYXRoOTFcIiAvPlxuICA8cGF0aFxuICAgICBzdHlsZT17e2ZpbGw6XCIjMDAwMDAwXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiIzAwMDAwMFwiLHN0cm9rZVdpZHRoOlwiN1wiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICBkPVwibSAxMzc5LjY4OTksNDA1LjE3OTY5IGMgMTU1LjQwNjMsLTguMTY4NDMgMTU1LjQwNjMsLTguMTY4NDMgMTU1LjQwNjMsLTguMTY4NDNcIlxuICAgICBpZD1cInBhdGg5MlwiIC8+XG4gIDxwYXRoXG4gICAgIHN0eWxlPXt7ZmlsbDpcIiMwMDAwMDBcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjMDAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI3XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIGQ9XCJtIDEwNDcuMzA2MSw2OTAuNjkwNTUgYyAxMDguMTA3LDE1NS4zNzc4OSAxMDguMTA3LDE1NS4zNzc4OSAxMDguMTA3LDE1NS4zNzc4OVwiXG4gICAgIGlkPVwicGF0aDkzXCIgLz5cbiAgPHBhdGhcbiAgICAgc3R5bGU9e3tmaWxsOlwiIzAwMDAwMFwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiMwMDAwMDBcIixzdHJva2VXaWR0aDpcIjdcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgZD1cIm0gNDQwLjk2NTg3LDIyNS4xOTQ1IGMgLTIwMy40Mzk0LDM3LjgyNjE0IC0yMDMuNDM5NCwzNy44MjYxNCAtMjAzLjQzOTQsMzcuODI2MTRcIlxuICAgICBpZD1cInBhdGg5NFwiIC8+XG4gIDxwYXRoXG4gICAgIHN0eWxlPXt7ZmlsbDpcIiMwMDAwMDBcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjMDAwMDAwXCIsc3Ryb2tlV2lkdGg6XCI3XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIGQ9XCJNIDM3Mi43MzI2NSwxMTguODg3MDUgQyAyMzQuMjU5MjYsODEuNzk2Nzg3IDIzNC4yNTkyNiw4MS43OTY3ODcgMjM0LjI1OTI2LDgxLjc5Njc4N1wiXG4gICAgIGlkPVwicGF0aDk1XCIgLz5cbiAgPHRleHRcbiAgICAgXG4gICAgIHN0eWxlPXt7Zm9udFN0eWxlOlwibm9ybWFsXCIsZm9udFZhcmlhbnQ6XCJub3JtYWxcIixmb250V2VpZ2h0Olwibm9ybWFsXCIsZm9udFN0cmV0Y2g6XCJub3JtYWxcIixmb250U2l6ZTpcIjE1LjY2NTRweFwiLGZvbnRGYW1pbHk6XCJBcmlhbFwiLHdoaXRlU3BhY2U6XCJwcmVcIixpbmxpbmVTaXplOlwiMTIzLjkxMVwiLGRpc3BsYXk6XCJpbmxpbmVcIixmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIiMwMDAwMDBcIixzdHJva2VXaWR0aDpcIjAuMzI2MzYzXCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIHg9XCIyNC44MzgyMzZcIlxuICAgICB5PVwiNjUwLjIzMzY0XCJcbiAgICAgaWQ9XCJzdGVtbG9vcHRleHRcIlxuICAgICB0cmFuc2Zvcm09XCJtYXRyaXgoMy4wNTI2Njk3LDAsMCwzLjA3NTUxMzIsLTc3LjQ3MDExNiwtMTcxOC45NTUzKVwiPjx0c3BhblxuICAgICAgIHg9XCIyNC44MzgyMzZcIlxuICAgICAgIHk9XCI2NTAuMjMzNjRcIlxuICAgICAgIGlkPVwic3RlbWxvb3B0ZXh0XCI+PHRzcGFuXG4gICAgICAgICBzdHlsZT17e2ZpbGw6XCIjMDAwMDAwXCJ9fVxuICAgICAgICAgaWQ9XCJzdGVtbG9vcHRleHRcIj5TdGVtIExvb3A8L3RzcGFuPjwvdHNwYW4+PC90ZXh0PlxuICAgICAgPExpbmsgY2xhc3NOYW1lPVwiYnRuIHZpbGxhZ2Utc3R5bGUtYnV0dG9uXCIgcm9sZT1cImJ1dHRvblwiIHRvPVwiL2VuZ2luZWVyaW5nLyNSTkFiaW5kaW5ncHJvdGVpblwiPlxuICAgICAgICAgICAgPHRleHQgIFxuICAgICAgICAgc3R5bGU9e3tmb250U3R5bGU6XCJub3JtYWxcIixmb250VmFyaWFudDpcIm5vcm1hbFwiLGZvbnRXZWlnaHQ6XCJub3JtYWxcIixmb250U3RyZXRjaDpcIm5vcm1hbFwiLGZvbnRTaXplOlwiMTUuNjY1NHB4XCIsZm9udEZhbWlseTpcIkFyaWFsXCIsd2hpdGVTcGFjZTpcInByZVwiLGlubGluZVNpemU6XCIxMjMuOTExXCIsZGlzcGxheTpcImlubGluZVwiLGZpbGw6XCIjMDAwMDAwXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiIzAwMDAwMFwiLHN0cm9rZVdpZHRoOlwiMC4zMjYzNjNcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICAgIHg9XCIyNC44MzgyMzZcIlxuICAgICAgICAgeT1cIjY1MC4yMzM2NFwiXG4gICAgICAgICBpZD1cInJuYWJpbmRpbmd0ZXh0XCJcbiAgICAgICAgIHRyYW5zZm9ybT1cIm1hdHJpeCgzLjA1MjY2OTcsMCwwLDMuMDc1NTEzMiwtMzMuNjQ5Njk2LC0xOTQ3LjA3MDgpXCI+PHRzcGFuXG4gICAgICAgICAgICB4PVwiMjQuODM4MjM2XCJcbiAgICAgICAgICAgIHk9XCI2NTAuMjMzNjRcIlxuICAgICAgICAgICAgaWQ9XCJ0c3BhbjdcIj5STkEgYmluZGluZyA8L3RzcGFuPjx0c3BhblxuICAgICAgICAgICAgeD1cIjI0LjgzODIzNlwiXG4gICAgICAgICAgICB5PVwiNjY5LjgxNTM5XCJcbiAgICAgICAgICAgIGlkPVwidHNwYW44XCI+cHJvdGVpbjwvdHNwYW4+PC90ZXh0PlxuICAgIDwvTGluaz5cblxuICAgey8qIHBlZ1JOQSBUZXh0ICovfVxuICA8dGV4dFxuICAgICBzdHlsZT17e2ZvbnRTdHlsZTpcIm5vcm1hbFwiLGZvbnRWYXJpYW50Olwibm9ybWFsXCIsZm9udFdlaWdodDpcIm5vcm1hbFwiLGZvbnRTdHJldGNoOlwibm9ybWFsXCIsZm9udFNpemU6XCIxNS42NjU0cHhcIixmb250RmFtaWx5OlwiQXJpYWxcIiwgd2hpdGVTcGFjZTpcInByZVwiLGlubGluZVNpemU6XCIxMjMuOTExXCIsZGlzcGxheTpcImlubGluZVwiLGZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiIzAwMDAwMFwiLHN0cm9rZVdpZHRoOlwiMC4zMjYzNjNcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgeD1cIjI0LjgzODIzNlwiXG4gICAgIHk9XCI2NTAuMjMzNjRcIlxuICAgICBpZD1cInBlZ3JuYXRleHRcIlxuICAgICB0cmFuc2Zvcm09XCJtYXRyaXgoMy4wNTI2Njk3LDAsMCwzLjA3NTUxMzIsMzI3LjE1NTYsLTE1ODguMzMpXCI+PHRzcGFuXG4gICAgICAgeD1cIjI0LjgzODIzNlwiXG4gICAgICAgeT1cIjY1MC4yMzM2NFwiXG4gICAgICAgaWQ9XCJwZWdybmF0ZXh0XCI+PHRzcGFuXG4gICAgICAgICBzdHlsZT17e2ZpbGw6XCIjMDAwMDAwXCJ9fVxuICAgICAgICAgaWQ9XCJwZWdybmF0ZXh0XCI+cGVnUk5BPC90c3Bhbj48L3RzcGFuPjwvdGV4dD5cbiAgPGdcbiAgICAgaWQ9XCJnMVwiXG4gICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg4NDUuODk5NDcsMTE0LjExMzc4KVwiPlxuICAgIDx0ZXh0XG4gICAgICAgXG4gICAgICAgc3R5bGU9e3tmb250U3R5bGU6XCJub3JtYWxcIixmb250VmFyaWFudDpcIm5vcm1hbFwiLGZvbnRXZWlnaHQ6XCJub3JtYWxcIixmb250U3RyZXRjaDpcIm5vcm1hbFwiLGZvbnRTaXplOlwiMTUuNjY1NHB4XCIsZm9udEZhbWlseTpcIkFyaWFsXCIsd2hpdGVTcGFjZTpcInByZVwiLGlubGluZVNpemU6XCIxMjMuOTExXCIsZGlzcGxheTpcImlubGluZVwiLGZpbGw6XCIjMDAwMDAwXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiIzAwMDAwMFwiLHN0cm9rZVdpZHRoOjAuMzI2MzYzLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgIHg9XCIyNC44MzgyMzZcIlxuICAgICAgIHk9XCI2NTAuMjMzNjRcIlxuICAgICAgIGlkPVwibmlrYXNldGV4dFwiXG4gICAgICAgdHJhbnNmb3JtPVwibWF0cml4KDMuMDUyNjY5NywwLDAsMy4wNzU1MTMyLDIyNS4yNDAyNCwtMTIyMC43NTM4KVwiPjx0c3BhblxuICAgICAgICAgeD1cIjI0LjgzODIzNlwiXG4gICAgICAgICB5PVwiNjUwLjIzMzY0XCJcbiAgICAgICAgIGlkPVwidHNwYW4xMVwiPk5pa2FzZTwvdHNwYW4+PC90ZXh0PlxuICA8L2c+XG4gIDx0ZXh0XG4gICAgIFxuICAgICBzdHlsZT17e2ZvbnRTdHlsZTpcIm5vcm1hbFwiLGZvbnRWYXJpYW50Olwibm9ybWFsXCIsZm9udFdlaWdodDpcIm5vcm1hbFwiLGZvbnRTdHJldGNoOlwibm9ybWFsXCIsZm9udFNpemU6XCIxNS42NjU0cHhcIixmb250RmFtaWx5OlwiQXJpYWxcIix3aGl0ZVNwYWNlOlwicHJlXCIsaW5saW5lU2l6ZTpcIjEyMy45MTFcIixkaXNwbGF5OlwiaW5saW5lXCIsZmlsbDpcIiMwMDAwMDBcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCIjMDAwMDAwXCIsc3Ryb2tlV2lkdGg6MC4zMjYzNjMsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIHg9XCIyNC44MzgyMzZcIlxuICAgICB5PVwiNjUwLjIzMzY0XCJcbiAgICAgaWQ9XCJsaW5rZXJ0ZXh0XCJcbiAgICAgdHJhbnNmb3JtPVwibWF0cml4KDMuMDUyNjY5NywwLDAsMy4wNzU1MTMyLDE0NzMuMzExMywtMTU5My4zMDU2KVwiPjx0c3BhblxuICAgICAgIHg9XCIyNC44MzgyMzZcIlxuICAgICAgIHk9XCI2NTAuMjMzNjRcIlxuICAgICAgIGlkPVwidHNwYW4xMlwiPkxpbmtlcjwvdHNwYW4+PC90ZXh0PlxuICA8dGV4dFxuICAgICBcbiAgICAgc3R5bGU9e3tmb250U3R5bGU6XCJub3JtYWxcIixmb250VmFyaWFudDpcIm5vcm1hbFwiLGZvbnRXZWlnaHQ6XCJub3JtYWxcIixmb250U3RyZXRjaDpcIm5vcm1hbFwiLGZvbnRTaXplOlwiMTUuNjY1NHB4XCIsZm9udEZhbWlseTpcIkFyaWFsXCIsd2hpdGVTcGFjZTpcInByZVwiLGlubGluZVNpemU6XCIxMjMuOTExXCIsZGlzcGxheTpcImlubGluZVwiLGZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwiIzAwMDAwMFwiLHN0cm9rZVdpZHRoOlwiMC4zMjYzNjNcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgeD1cIjI0LjgzODIzNlwiXG4gICAgIHk9XCI2NTAuMjMzNjRcIlxuICAgICBpZD1cInRleHQ4OS00OVwiXG4gICAgIHRyYW5zZm9ybT1cIm1hdHJpeCgzLjA1MjY2OTcsMCwwLDMuMDc1NTEzMiwxMTk5LjAyOTgsLTE5NTcuMjE2KVwiPjx0c3BhblxuICAgICAgIHg9XCIyNC44MzgyMzZcIlxuICAgICAgIHk9XCI2NTAuMjMzNjRcIlxuICAgICAgIGlkPVwiUEV0ZXh0XCI+PHRzcGFuXG4gICAgICAgICBzdHlsZT17e2ZpbGw6XCIjMDAwMDAwXCJ9fVxuICAgICAgICAgaWQ9XCJQRXRleHRcIj5QRTwvdHNwYW4+PHRzcGFuXG4gICAgICAgICBzdHlsZT17e2ZvbnRTaXplOlwiNjUlXCIsYmFzZWxpbmVTaGlmdDpcInN1cGVyXCJ9fVxuICAgICAgICAgaWQ9XCJQRXRleHRsb3dcIj5DTzwvdHNwYW4+PHRzcGFuXG4gICAgICAgICBzdHlsZT17e2ZpbGw6XCIjMDAwMDAwXCJ9fVxuICAgICAgICAgaWQ9XCJQRXRleHRcIj4tTWluaSBSVDwvdHNwYW4+PC90c3Bhbj48L3RleHQ+XG48L3N2Zz5cbiAgICAgIDwvPlxuXG4gICAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRW5naW5lZXJpbmdDeWNsZSgpe1xuICAgcmV0dXJuKFxuPHN2Z1xuICAgd2lkdGg9XCI3MCVcIlxuICAgaGVpZ2h0PVwiNzAlXCJcbiAgIHZpZXdCb3g9XCIwIDAgMTMzIDEzM1wiXG4gICBpZD1cInN2ZzI1XCJcbiAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPGRlZnNcbiAgICAgaWQ9XCJkZWZzMVwiPlxuICAgIDwvZGVmcz5cbiAgPGdcbiAgICAgaWQ9XCJMYXllcl8yXCJcbiAgICAgZGF0YS1uYW1lPVwiTGF5ZXIgMlwiXG4gICAgIHN0eWxlPXt7c3Ryb2tlV2lkdGg6XCI2XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwifX0+XG4gICAgPGdcbiAgICAgICBpZD1cIlBsYXNtaWRcIlxuICAgICAgIHN0eWxlPXt7c3Ryb2tlV2lkdGg6XCI2XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwifX0+XG4gICAgICA8Z1xuICAgICAgICAgaWQ9XCJnMjVcIlxuICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDcuNTAwOTc4LDMuMDUwNDg5OClcIj5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICAgY2xhc3NOYW1lPVwiY2xzLTdcIlxuICAgICAgICAgICBkPVwibSA0Mi4wNSwxMTUuNTkgYyAyNy43Nyw5LjE5IDU3LjgzLC00Ljc5IDY5Ljc2LC0zMi4yM1wiXG4gICAgICAgICAgICBpZD1cInBhdGgyMlwiXG4gICAgICAgICAgIHN0eWxlPXt7c3Ryb2tlOlwiI2Y0Y2MxZVwiLHN0cm9rZVdpZHRoOlwiMTVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIn19IC8+XG4gICAgICA8L2c+XG4gICAgICA8Z1xuICAgICAgICAgaWQ9XCJnMjZcIlxuICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDguMDAxOTY5OSwyLjg0MTgyMjMpXCJcbiAgICAgICAgIHN0eWxlPXt7c3Ryb2tlV2lkdGg6XCI2XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwifX0+ICBcbiAgICAgICAgPHBvbHlnb25cbiAgICAgICAgICAgY2xhc3NOYW1lPVwiY2xzLTEzXCJcbiAgICAgICAgICAgcG9pbnRzPVwiMTEyLjA3LDgzLjM2IDExMC45NCw3Ni4yNyAxMTcuNjUsNzguODQgXCJcbiAgICAgICAgICAgIGlkPVwicG9seWdvbjI1XCJcbiAgICAgICAgICAgc3R5bGU9e3tmaWxsOlwiIzg1MGY3OFwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZVdpZHRoOlwiNlwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIn19XG4gICAgICAgICAgIHRyYW5zZm9ybT1cIm1hdHJpeCgyLjk4MDYyNTksMCwwLDIuOTgwNjI1OSwtMjI1LjQzNzIyLC0xNTYuNDUxMjMpXCIgLz5cbiAgICAgICAgIDxwYXRoXG4gICAgICAgICAgIGNsYXNzTmFtZT1cImNscy0xMlwiXG4gICAgICAgICAgIGQ9XCJNIDExNCw3OC41NSBDIDEyMy40NSw1MC44NiAxMTAsMjAuNzUgODIuNjYsOC42XCJcbiAgICAgICAgICAgIGlkPVwicGF0aDI1XCJcbiAgICAgICAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjE1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZTpcIiM4NTBmNzhcIixzdHJva2VPcGFjaXR5OlwiMVwifX0gLz5cbiAgICAgICAgPHRleHRcbiAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTpcIjE3LjMzMzNweFwiLGxpbmVIZWlnaHQ6XCIwXCIsZm9udEZhbWlseTpcIkFyaWFsXCIsZmlsbDpcIiMwMDAwMDBcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCJub25lXCIsc3Ryb2tlV2lkdGg6XCIxNVwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICAgICAgaWQ9XCJ0ZXh0MzFcIlxuICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNS42OTAyMTk0LC0wLjExNTUxODgzKVwiPjx0ZXh0UGF0aFxuICAgICAgICAgICAgeGxpbmtIcmVmPVwiI3BhdGgyNVwiXG4gICAgICAgICAgICAgaWQ9XCJ0ZXh0UGF0aDMzXCI+TGVhcm48dHNwYW5cbiAgICAgICAgIGlkPVwidHNwYW4zMVwiIC8+PC90ZXh0UGF0aD48L3RleHQ+XG4gICAgICA8L2c+XG4gICAgICA8Z1xuICAgICAgICAgaWQ9XCJnMjdcIlxuICAgICAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjZcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCJ9fVxuICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDguMDAxOTY5OSwyLjg0MTgyMjMpXCI+XG4gICAgICAgIDxwb2x5Z29uXG4gICAgICAgICAgIGNsYXNzTmFtZT1cImNscy0xMFwiXG4gICAgICAgICAgICBwb2ludHM9XCI2Mi41Myw3LjEyIDYzLjQ3LDAgNjkuMTcsNC4zNyBcIlxuICAgICAgICAgICBpZD1cInBvbHlnb24yM1wiXG4gICAgICAgICAgICB0cmFuc2Zvcm09XCJtYXRyaXgoMi43NzEyMjYzLDAuNTgxNDc1NDgsLTAuNTgxNDc1NDgsMi43NzEyMjYzLC05Ni41ODc4MjgsLTM5Ljc0ODA3MSlcIlxuICAgICAgICAgICBzdHlsZT17e2ZpbGw6XCIjYTBhN2YzXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlV2lkdGg6XCI2XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwifX1cbiAgICAgICAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci14PVwiMy42MTczNzUxXCJcbiAgICAgICAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci15PVwiNS4xOTc4ODUyXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICAgY2xhc3NOYW1lPVwiY2xzLTlcIlxuICAgICAgICAgICBkPVwiTSA3OC41OTkxMTEsNy41NDY4MjY0IEMgNDMuODIwMzQ2LC0yLjYxNzc1ODggMTMuOTU2NzQ2LDE0LjI4NjA0NiA0LjIxMDYyODEsNDYuMzY4NzQ5XCJcbiAgICAgICAgICAgaWQ9XCJwYXRoMjNcIlxuICAgICAgICAgICBzdHlsZT17e3N0cm9rZTpcIiNhMGE3ZjNcIixzdHJva2VXaWR0aDpcIjE1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCJ9fSAvPlxuICAgICAgICA8dGV4dFxuICAgICAgICAgICBcbiAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTpcIjE3LjMzMzNweFwiLGxpbmVIZWlnaHQ6XCIwXCIsZm9udEZhbWlseTpcIkFyaWFsXCIsZmlsbDpcIiMwMDAwMDBcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCJub25lXCIsc3Ryb2tlV2lkdGg6XCI2XCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgICAgICBpZD1cInRleHQyOFwiXG4gICAgICAgICAgIFxuICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTAuMDMwMjM1MDYsLTUuOTYwMjMzNilcIj48dGV4dFBhdGhcbiAgICAgICAgICAgeGxpbmtIcmVmPVwiI3BhdGgyM1wiXG4gICAgICAgICAgICBpZD1cInRleHRQYXRoMjhcIj5UZXN0PC90ZXh0UGF0aD48L3RleHQ+XG4gICAgICA8L2c+XG4gICAgICA8Z1xuICAgICAgICAgaWQ9XCJnMjhcIlxuICAgICAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjZcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCJ9fVxuICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDguMDAxOTY5OSwyLjg0MTgyMjMpXCI+XG4gICAgICAgIDxwb2x5Z29uXG4gICAgICAgICAgIGNsYXNzTmFtZT1cImNscy0xM1wiXG4gICAgICAgICAgIHBvaW50cz1cIjExNy42NSw3OC44NCAxMTIuMDcsODMuMzYgMTEwLjk0LDc2LjI3IFwiXG4gICAgICAgICAgICBpZD1cInBvbHlnb24yNS02XCJcbiAgICAgICAgICAgc3R5bGU9e3tmaWxsOlwiI2Y1N2QyMlwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZVdpZHRoOlwiNlwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIn19XG4gICAgICAgICAgIHRyYW5zZm9ybT1cIm1hdHJpeCgtMi45NjUwMzE0LDAuMzA0NDk4OTMsLTAuMzA0NDk4OTMsLTIuOTY1MDMxNCwzNjQuODQwNjcsMjQ5LjI4MjQ5KVwiIC8+XG4gICAgICAgICA8cGF0aFxuICAgICAgICAgICBjbGFzc05hbWU9XCJjbHMtMTFcIlxuICAgICAgICAgICBkPVwiTSAyLjY2NTk3NTMsNTAuOTUzNTA1IEMgLTIuMDk1NjY5NCw3Mi43Mjc5MTUgMTAuOTM2ODY2LDEwMi45NDI3MyAzNi42NTYyMzQsMTEzLjYyODM0XCJcbiAgICAgICAgICAgIGlkPVwicGF0aDI0XCJcbiAgICAgICAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjE1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZTpcIiNmNTdkMjJcIixzdHJva2VPcGFjaXR5OlwiMVwifX0gLz5cbiAgICAgICAgPHRleHRcbiAgICAgICAgICAgXG4gICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6XCIxNy4zMzMzcHhcIixsaW5lSGVpZ2h0OlwiMFwiLGZvbnRGYW1pbHk6XCJBcmlhbFwiLGZpbGw6XCIjMDAwMDAwXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOlwiMTVcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgICAgIGlkPVwidGV4dDMyXCJcbiAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC01LjcxMTAzMTUsMS43NDUzMjQzKVwiPjx0ZXh0UGF0aFxuICAgICAgICAgICAgeGxpbmtIcmVmPVwiI3BhdGgyNFwiXG4gICAgICAgICAgICAgaWQ9XCJ0ZXh0UGF0aDMyXCI+QnVpbGQ8dHNwYW5cbiAgIGlkPVwidHNwYW4zMlwiIC8+PC90ZXh0UGF0aD48L3RleHQ+XG4gICAgICA8L2c+XG4gICAgICA8cG9seWdvblxuICAgICAgICAgY2xhc3NOYW1lPVwiY2xzLThcIlxuICAgICAgICAgcG9pbnRzPVwiMzcuMjIsMTEzLjc0IDQ0LjMsMTEyLjU2IDQxLjc4LDExOS4yOCBcIlxuICAgICAgICAgaWQ9XCJwb2x5Z29uMjJcIlxuICAgICAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjZcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsZmlsbDpcIiNmNGNjMWVcIixmaWxsT3BhY2l0eTpcIjFcIn19XG4gICAgICAgICB0cmFuc2Zvcm09XCJtYXRyaXgoMi44MjQ4NTg4LDAsMCwyLjgyNDg1ODgsLTY3Ljc5Nzc4MSwtMjA3Ljk2OTc3KVwiIC8+XG4gICAgICA8dGV4dFxuICAgICAgICAgXG4gICAgICAgICBzdHlsZT17e2ZvbnRTaXplOlwiMTcuMzMzM3B4XCIsbGluZUhlaWdodDpcIjBcIixmb250RmFtaWx5OlwiQXJpYWxcIixmaWxsOlwiIzAwMDAwMFwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIm5vbmVcIixzdHJva2VXaWR0aDpcIjE1XCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgICAgaWQ9XCJ0ZXh0MjlcIlxuICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDguNDA1MjkyMSw4Ljg1NTMzMzQpXCI+PHRleHRQYXRoXG4gICAgICAgICB4bGlua0hyZWY9XCIjcGF0aDIyXCJcbiAgICAgICAgIGlkPVwidGV4dFBhdGgzNFwiPkRlc2lnbjx0c3BhblxuICAgICAgICAgaWQ9XCJ0c3BhbjI5XCIgLz48L3RleHRQYXRoPjwvdGV4dD5cbiAgICA8L2c+XG4gIDwvZz5cbjwvc3ZnPlxuXG4gICApXG59XG5cblxuXG5leHBvcnQgZnVuY3Rpb24gRW5naW5lZXJpbmdDeWNsZVp3ZWkoKXtcbiAgIHJldHVybihcbjxzdmdcbiAgIHZpZXdCb3g9XCIwIDAgMTU4NTEuMDE0IDE1NTI5LjExOFwiXG4gICB2ZXJzaW9uPVwiMS4xXCJcbiAgIGlkPVwic3ZnMjVcIlxuICAgd2lkdGg9XCIxNTg1MS4wMTRcIlxuICAgaGVpZ2h0PVwiMTU1MjkuMTE4XCJcbiAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPGRlZnNcbiAgICAgaWQ9XCJkZWZzMVwiPlxuICAgPC9kZWZzPlxuICA8Z1xuICAgICBpZD1cImcyNVwiXG4gICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg5NTEuNDkzNCwzNDIuMzY0MSlcIlxuICAgICBzdHlsZT17e3N0cm9rZVdpZHRoOlwiNlwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIn19PlxuICAgIDxwYXRoXG4gICAgICAgY2xhc3NOYW1lPVwiY2xzLTdcIlxuICAgICAgIGQ9XCJtIDQyLjA1LDExNS41OSBjIDI3Ljc3LDkuMTkgNTcuODMsLTQuNzkgNjkuNzYsLTMyLjIzXCJcbiAgICAgICBpZD1cInBhdGgyMlwiXG4gICAgICAgc3R5bGU9e3tzdHJva2U6XCIjZjRjYzFlXCIsc3Ryb2tlV2lkdGg6XCIxNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwifX0gXG4gICAgICAgLz5cbiAgPC9nPlxuICA8Z1xuICAgICBpZD1cImcyNlwiXG4gICAgIHN0eWxlPXt7c3Ryb2tlV2lkdGg6XCI2XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwifX1cbiAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDk1MS45OTQzOSwzNDIuMTU1NDMpXCI+XG4gICAgPHBvbHlnb25cbiAgICAgICBjbGFzc05hbWU9XCJjbHMtMTNcIlxuICAgICAgIHBvaW50cz1cIjExMi4wNyw4My4zNiAxMTAuOTQsNzYuMjcgMTE3LjY1LDc4Ljg0IFwiXG4gICAgICAgaWQ9XCJwb2x5Z29uMjVcIlxuICAgICAgIHN0eWxlPXt7ZmlsbDpcIiM4NTBmNzhcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2VXaWR0aDpcIjZcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCJ9fVxuICAgICAgIHRyYW5zZm9ybT1cIm1hdHJpeCgyLjk4MDYyNTksMCwwLDIuOTgwNjI1OSwtMjI1LjQzNzIyLC0xNTYuNDUxMjMpXCIgLz5cbiAgICA8cGF0aFxuICAgICAgIGNsYXNzTmFtZT1cImNscy0xMlwiXG4gICAgICAgZD1cIk0gMTE0LDc4LjU1IEMgMTIzLjQ1LDUwLjg2IDExMCwyMC43NSA4Mi42Niw4LjZcIlxuICAgICAgIGlkPVwicGF0aDI1XCJcbiAgICAgICBzdHlsZT17e3N0cm9rZVdpZHRoOlwiMTVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlOlwiIzg1MGY3OFwiLHN0cm9rZU9wYWNpdHk6XCIxXCJ9fSAvPlxuICAgIDx0ZXh0XG4gICAgICBcbiAgICAgIHN0eWxlPXt7Zm9udFNpemU6XCIxNy4zMzMzcHhcIixsaW5lSGVpZ2h0OlwiMFwiLGZvbnRGYW1pbHk6XCJBcmlhbFwiLGZpbGw6XCIjMDAwMDAwXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOlwiMTVcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICBpZD1cInRleHQzMVwiXG4gICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDUuNjkwMjE5NCwtMC4xMTU1MTg4MylcIj48dGV4dFBhdGhcbiAgICAgICAgIGlkPVwidGV4dFBhdGgzM1wiPkxlYXJuPHRzcGFuXG4gICBpZD1cInRzcGFuMzFcIiAvPjwvdGV4dFBhdGg+PC90ZXh0PlxuICA8L2c+XG4gIDxnXG4gICAgIGlkPVwiZzI3XCJcbiAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjZcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCJ9fVxuICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoOTUxLjk5NDM5LDM0Mi4xNTU0MylcIj5cbiAgICA8cG9seWdvblxuICAgICAgIGNsYXNzTmFtZT1cImNscy0xMFwiXG4gICAgICAgcG9pbnRzPVwiNjIuNTMsNy4xMiA2My40NywwIDY5LjE3LDQuMzcgXCJcbiAgICAgICBpZD1cInBvbHlnb24yM1wiXG4gICAgICAgdHJhbnNmb3JtPVwibWF0cml4KDIuNzcxMjI2MywwLjU4MTQ3NTQ4LC0wLjU4MTQ3NTQ4LDIuNzcxMjI2MywtOTYuNTg3ODI4LC0zOS43NDgwNzEpXCJcbiAgICAgICBzdHlsZT17e2ZpbGw6XCIjYTBhN2YzXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlV2lkdGg6XCI2XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwifX1cbiAgICAgICBpbmtzY2FwZTp0cmFuc2Zvcm0tY2VudGVyLXg9XCIzLjYxNzM3NTFcIlxuICAgICAgIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteT1cIjUuMTk3ODg1MlwiIC8+XG4gICAgPHBhdGhcbiAgICAgICBjbGFzc05hbWU9XCJjbHMtOVwiXG4gICAgICAgZD1cIk0gNzguNTk5MTExLDcuNTQ2ODI2NCBDIDQzLjgyMDM0NiwtMi42MTc3NTg4IDEzLjk1Njc0NiwxNC4yODYwNDYgNC4yMTA2MjgxLDQ2LjM2ODc0OVwiXG4gICAgICAgaWQ9XCJwYXRoMjNcIlxuICAgICAgIHN0eWxlPXt7c3Ryb2tlOlwiI2EwYTdmM1wiLHN0cm9rZVdpZHRoOlwiMTVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIn19IC8+XG4gICAgPHRleHRcbiAgICAgIFxuICAgICAgc3R5bGU9e3tmb250U2l6ZTpcIjE3LjMzMzNweFwiLGxpbmVIZWlnaHQ6XCIwXCIsZm9udEZhbWlseTpcIkFyaWFsXCIsZmlsbDpcIiMwMDAwMDBcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCJub25lXCIsc3Ryb2tlV2lkdGg6XCI2XCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgaWQ9XCJ0ZXh0MjhcIlxuICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMC4wMzAyMzUwNiwtNS45NjAyMzM2KVwiPjx0ZXh0UGF0aFxuICAgICAgICAgaWQ9XCJ0ZXh0UGF0aDI4XCI+VGVzdDwvdGV4dFBhdGg+PC90ZXh0PlxuICA8L2c+XG4gIDxnXG4gICAgIGlkPVwiZzI4XCJcbiAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjZcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCJ9fVxuICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoOTUxLjk5NDM5LDM0Mi4xNTU0MylcIj5cbiAgICA8cG9seWdvblxuICAgICAgIGNsYXNzTmFtZT1cImNscy0xM1wiXG4gICAgICAgcG9pbnRzPVwiMTE3LjY1LDc4Ljg0IDExMi4wNyw4My4zNiAxMTAuOTQsNzYuMjcgXCJcbiAgICAgICBpZD1cInBvbHlnb24yNS02XCJcbiAgICAgICBzdHlsZT17e2ZpbGw6XCIjZjU3ZDIyXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlV2lkdGg6XCI2XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwifX1cbiAgICAgICB0cmFuc2Zvcm09XCJtYXRyaXgoLTIuOTY1MDMxNCwwLjMwNDQ5ODkzLC0wLjMwNDQ5ODkzLC0yLjk2NTAzMTQsMzY0Ljg0MDY3LDI0OS4yODI0OSlcIiAvPlxuICAgIDxwYXRoXG4gICAgICAgY2xhc3NOYW1lPVwiY2xzLTExXCJcbiAgICAgICBkPVwiTSAyLjY2NTk3NTMsNTAuOTUzNTA1IEMgLTIuMDk1NjY5NCw3Mi43Mjc5MTUgMTAuOTM2ODY2LDEwMi45NDI3MyAzNi42NTYyMzQsMTEzLjYyODM0XCJcbiAgICAgICBpZD1cInBhdGgyNFwiXG4gICAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjE1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZTpcIiNmNTdkMjJcIixzdHJva2VPcGFjaXR5OlwiMVwifX0gLz5cbiAgICA8dGV4dFxuICAgICAgXG4gICAgICBzdHlsZT17e2ZvbnRTaXplOlwiMTcuMzMzM3B4XCIsbGluZUhlaWdodDpcIjBcIixmb250RmFtaWx5OlwiQXJpYWxcIixmaWxsOlwiIzAwMDAwMFwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZTpcIm5vbmVcIixzdHJva2VXaWR0aDpcIjE1XCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICAgaWQ9XCJ0ZXh0MzJcIlxuICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNS43MTEwMzE1LDEuNzQ1MzI0MylcIj48dGV4dFBhdGhcbiAgICAgICAgIGlkPVwidGV4dFBhdGgzMlwiPkJ1aWxkPHRzcGFuXG4gICBpZD1cInRzcGFuMzJcIiAvPjwvdGV4dFBhdGg+PC90ZXh0PlxuICA8L2c+XG4gIDxwb2x5Z29uXG4gICAgIGNsYXNzTmFtZT1cImNscy04XCJcbiAgICAgcG9pbnRzPVwiMzcuMjIsMTEzLjc0IDQ0LjMsMTEyLjU2IDQxLjc4LDExOS4yOCBcIlxuICAgICBpZD1cInBvbHlnb24yMlwiXG4gICAgIHN0eWxlPXt7c3Ryb2tlV2lkdGg6XCI2XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLGZpbGw6XCIjZjRjYzFlXCIsZmlsbE9wYWNpdHk6XCIxXCJ9fVxuICAgICB0cmFuc2Zvcm09XCJtYXRyaXgoMi44MjQ4NTg4LDAsMCwyLjgyNDg1ODgsODc2LjE5NDY0LDEzMS4zNDM4NClcIiAvPlxuICA8dGV4dFxuICAgIFxuICAgIHN0eWxlPXt7Zm9udFNpemU6XCIxNy4zMzMzcHhcIixsaW5lSGVpZ2h0OlwiMFwiLGZvbnRGYW1pbHk6XCJBcmlhbFwiLGZpbGw6XCIjMDAwMDAwXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOlwiMTVcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgaWQ9XCJ0ZXh0MjlcIlxuICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoOTUyLjM5NzcyLDM0OC4xNjg5NClcIj48dGV4dFBhdGhcbiAgICAgICBpZD1cInRleHRQYXRoMzRcIj5EZXNpZ248dHNwYW5cbiAgIGlkPVwidHNwYW4yOVwiIC8+PC90ZXh0UGF0aD48L3RleHQ+XG48L3N2Zz5cblxuICAgKVxufSIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUGllIH0gZnJvbSAncmVhY3QtY2hhcnRqcy0yJztcbmltcG9ydCB7IENoYXJ0IGFzIENoYXJ0SlMsIEFyY0VsZW1lbnQsIFRvb2x0aXAsIExlZ2VuZCB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCBcIi4uL2NvbnRlbnRzL0dyYXBoLnRzeFwiXG5cbkNoYXJ0SlMucmVnaXN0ZXIoQXJjRWxlbWVudCwgVG9vbHRpcCwgTGVnZW5kKTtcblxuY29uc3QgUGllQ2hhcnQ6IFJlYWN0LkZDID0gKCkgPT4ge1xuICBjb25zdCBkYXRhID0ge1xuICAgIGxhYmVsczogWydpbmRlbCcsICdpbnNlcnRpb24nLCAnZGVsZXRpb24nLCAnc3Vic3RpdHV0aW9uJywgJ290aGVyJ10sXG4gICAgZGF0YXNldHM6IFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdQZXJjZW50YWdlJyxcbiAgICAgICAgZGF0YTogW1xuICAgICAgICAgIDAuMDA0ODU4MDAwMDAwMDAwMDAxLFxuICAgICAgICAgIDAuMDAwODg1OTk5OTk5OTk5OTk5NyxcbiAgICAgICAgICAwLjcyNjQxNzk5OTk5OTk5NzIsXG4gICAgICAgICAgMC4yMzg0MTU5OTk5OTk5OTk1LFxuICAgICAgICAgIDAuMDAzNzAzXG4gICAgICAgIF0sXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogW1xuICAgICAgICAgICdyZ2JhKDI1NSwgOTksIDEzMiwgMC4yKScsXG4gICAgICAgICAgJ3JnYmEoNTQsIDE2MiwgMjM1LCAwLjIpJyxcbiAgICAgICAgICAncmdiYSgyNTUsIDIwNiwgODYsIDAuMiknLFxuICAgICAgICAgICdyZ2JhKDc1LCAxOTIsIDE5MiwgMC4yKScsXG4gICAgICAgICAgJ3JnYmEoMTUzLCAxMDIsIDI1NSwgMC4yKScsXG4gICAgICAgICAgJ3JnYmEoMjU1LCAxNTksIDY0LCAwLjIpJyxcbiAgICAgICAgXSxcbiAgICAgICAgYm9yZGVyQ29sb3I6IFtcbiAgICAgICAgICAncmdiYSgyNTUsIDk5LCAxMzIsIDEpJyxcbiAgICAgICAgICAncmdiYSg1NCwgMTYyLCAyMzUsIDEpJyxcbiAgICAgICAgICAncmdiYSgyNTUsIDIwNiwgODYsIDEpJyxcbiAgICAgICAgICAncmdiYSg3NSwgMTkyLCAxOTIsIDEpJyxcbiAgICAgICAgICAncmdiYSgxNTMsIDEwMiwgMjU1LCAxKScsXG4gICAgICAgICAgJ3JnYmEoMjU1LCAxNTksIDY0LCAxKScsXG4gICAgICAgIF0sXG4gICAgICAgIGJvcmRlcldpZHRoOiAxLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2VcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicGllLWNoYXJ0LWNvbnRhaW5lclwiPlxuICAgICAgPFBpZSBkYXRhPXtkYXRhfSBvcHRpb25zPXtvcHRpb25zfSAvPlxuICAgICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQaWVDaGFydDtcbiIsICJpbXBvcnQgeyBIMiB9IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRpbmdzXCI7XG5pbXBvcnQgeyBDaXJjbGUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9TaGFwZXNcIjtcbi8qIGltcG9ydCAge0xpbmVDaGFydH0gZnJvbSAnQG11aS94LWNoYXJ0cy9MaW5lQ2hhcnQnOyAqL1xuLyogaW1wb3J0IFwiLi4vdXRpbHMvdGV4dC5qc1wiOyAqL1xuLyogaW1wb3J0IHsgQ29sbGFwc2libGUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9Db2xsYXBzaWJsZVwiO1xuaW1wb3J0IHsgQnV0dG9uUm93VGFicyB9IGZyb20gXCIuLi9jb21wb25lbnRzL1RhYnNcIjtcbmltcG9ydCB7VGFiQnV0dG9uUm93fSBmcm9tIFwiLi4vY29tcG9uZW50cy9CdXR0b25zXCI7ICovXG4vKiBpbXBvcnQgeyBJbmZvQm94IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvQm94ZXNcIjsgICovXG5pbXBvcnQgeyBDb21wbGV4IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvc3Znc1wiO1xuaW1wb3J0IFBpZUNoYXJ0IGZyb20gJy4vR3JhcGgudHN4JztcblxuZXhwb3J0IGZ1bmN0aW9uIERlc2NyaXB0aW9uKCkgeyBcbiAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IG10LTRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICA8ZGl2ICBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgIDxzZWN0aW9uIGlkPVwiQWJzdHJhY3RcIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPEgyIHRleHQ9XCJBYnN0cmFjdFwiLz5cbiAgICAgICAgICAgICAgICA8cD5XZSBhcmUgcHJvdWQgdG8gaW50cm9kdWNlIG91ciBuZXh0LWdlbmVyYXRpb24gcHJpbWUgZWRpdGluZyB0ZWNobm9sb2d5IDxhIGhyZWY9XCIjXCIgY2xhc3NOYW1lPVwidW5kZXJsaW5lLS1tYWdpY2FsXCI+UHJlQ3lzZTwvYT4uIFdlIGFpbSB0byBkZXZlbG9wIGFuIGlubm92YXRpdmUgZ2VuZSB0aGVyYXB5IGFnYWluc3QgY3lzdGljIGZpYnJvc2lzLCB0YWNrbGluZyB0aGUgbW9zdCBjb21tb24gbXV0YXRpb24gXHUwMzk0RjUwOCBvZiB0aGUgQ0ZUUiAoQ3lzdGljIEZpYnJvc2lzIFRyYW5zbWVtYnJhbmUgQ29uZHVjdGFuY2UgUmVndWxhdG9yKSBnZW5lLiBXZSBvcHRpbWl6ZSBsaXBpZCBuYW5vcGFydGljbGVzIGZvciB0aGUgZWZmaWNpZW50IGFuZCBjZWxsLXNwZWNpZmljIGRlbGl2ZXJ5IG9mIG91ciB0aGVyYXBldXRpYyBtUk5BLiBDdXJyZW50IHRyZWF0bWVudCBzdHJhdGVnaWVzIGFyZSBsaW1pdGVkIGluIHRlcm1zIG9mIHNwZWVkLCBwcmVjaXNpb24gYW5kIGVmZmVjdGl2ZW5lc3MsIG9mdGVuIGZhaWxpbmcgdG8gYWNoaWV2ZSBsb25nLWxhc3RpbmcgaW1wcm92ZW1lbnRzLiBJbiBhZGRpdGlvbiwgaGlnaCBjb3N0cyBhbmQgbGltaXRlZCBhY2Nlc3NpYmlsaXR5IG9mIHBoYXJtYWNldXRpY2FscyBjb250cmlidXRlIHRvIGFkdmVyc2UgcHJvZ25vc2lzIG9mIG1hbnkgcGF0aWVudHMuIFdlIHdhbnQgdG8gZGV2ZWxvcCBhIG1vbnRobHkgYXBwbGllZCB3aGljaCByZXByZXNlbnRzIGEgY3VyZSB0aGF0IGlzIG1vcmUgYWR2YW5jZWQgYW5kIHVzZXItZnJpZW5kbHkgY29tcGFyZWQgdG8gb3RoZXIgbWVkaWNhdGlvbnMgZHVlIHRvIGl0cyBsb25nZXIgbGFzdGluZyB0aW1lLCBsb3dlcmluZyB0aGUgZnJlcXVlbmN5IG9mIHVzZS4gPC9wPlxuICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8L2Rpdj4gXG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgPHNlY3Rpb24gaWQ9XCJDeXN0aWMgRmlicm9zaXNcIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPEgyIHRleHQ9XCJDeXN0aWMgRmlicm9zaXNcIi8+XG4gICAgICAgICAgICAgICAgey8qIDxoMz5HZW5lcmFsPC9oMz4gKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBkYXRhLWFvcz1cInpvb20teS1vdXRcIiA+Q3lzdGljIGZpYnJvc2lzIChDRikgaXMgdGhlIG1vc3QgY29tbW9uIGxpZmUtbGltaXRpbmcgZ2VuZXRpYyBkaXNvcmRlciBpbiB0aGUgQ2F1Y2FzaWFuIHBvcHVsYXRpb24uIEluIEV1cm9wZSwgQ0YgYWZmZWN0aW5nIGFib3V0IDEgaW4gMywwMDAgbmV3Ym9ybnM8YSBocmVmPVwiI2Rlc2Mtb25lXCI+PHN1cD4xPC9zdXA+PC9hPi48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD4gSXQgaXMgY2F1c2VkIGJ5IG11dGF0aW9ucyBpbiB0aGUgQ0ZUUiBnZW5lLCB3aGljaCBjb250cm9scyBpb25zIGFuZCB3YXRlciBtb3ZlbWVudCBpbiBjZWxscy4gVGhpcyBsZWFkcyB0byB0aGljayBtdWN1cywgY2xvZ2dpbmcgYWlyd2F5cywgYW5kIGZyZXF1ZW50IGluZmVjdGlvbnMuIFRoZSBkZWZlY3RpdmUgQ0ZUUiBwcm90ZWluIGltcGFjdHMgdGhlIHJlc3BpcmF0b3J5IGFuZCBkaWdlc3RpdmUgc3lzdGVtcywgY2F1c2luZyBjaHJvbmljIGx1bmcgaW5mZWN0aW9ucywgYnJlYXRoaW5nIGRpZmZpY3VsdGllcywgYW5kIG1hbG51dHJpdGlvbi4gQ0YncyBzZXZlcml0eSB2YXJpZXMsIGJ1dCBpdCByZWR1Y2VzIGxpZmUgcXVhbGl0eSBhbmQgZXhwZWN0YW5jeS4gVGhlcmUgYXJlIG92ZXIgMSw3MDAgQ0ZUUiBtdXRhdGlvbnM7IHRoZSBcdTAzOTRGNTA4IG11dGF0aW9uIGlzIG1vc3QgY29tbW9uLCBwcmVzZW50IGluIDcwJSBvZiBjYXNlcy4gSXQgcHJldmVudHMgcHJvcGVyIHByb3RlaW4gZm9sZGluZywgYWZmZWN0aW5nIGl0cyBmdW5jdGlvbi4gPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMiBcIj4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPENpcmNsZSB0ZXh0PVwiMTozMDAwIG5ld2Jvcm5zIHdvcmxkd2lkZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2lyY2xlIHRleHQ9XCJ4OnkgbmV3Ym9ybnMgaW4gR2VybWFueVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2lyY2xlIHRleHQ9XCJrb3N0ZW5cIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7LyogPExpbmVDaGFydFxuICAgICAgICAgICAgICAgICAgICB4QXhpcz17W3sgZGF0YTogWzEsIDIsIDMsIDUsIDgsIDEwXSB9XX1cbiAgICAgICAgICAgICAgICAgICAgc2VyaWVzPXtbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBbMiwgNS41LCAyLCA4LjUsIDEuNSwgNV0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD17NTAwfVxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwMH1cbiAgICAgICAgICAgICAgICAgICAgLz4gKi99XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICB7LyogIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvY2hhcnRzLW1hcHMvY2ZwZXIxMC0wMDAucG5nXCI+PC9pbWc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGgzPkNGVFI8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0yIFwiPiBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIi8+IFxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgIDxwPlRleHQgYWJvdXQgQ0ZUUjwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9jaGFydHMtbWFwcy9jZnBlcjEwLTAwMC5wbmdcIi8+XG4gICAgICAgICAgICAgICAgPGgzPlN5bXB0b21zPC9oMz5cbiAgICAgICAgICAgICAgICA8cD5UZXh0IGFib3V0IHN5bXB0b21zPC9wPlxuICAgICAgICAgICAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIkhvdyB0aGUgc3ltcHRvbXMgYWZmZWN0IGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgYm9keVwiID48L0NvbGxhcHNpYmxlPlxuICAgICAgICAgICAgICAgIDxoMz5EaWFnbm9zaXM8L2gzPlxuICAgICAgICAgICAgICAgIDxwPkFib3V0IHRoZSB3YXlzIG9uZSBjYW4gYmUgZGlhZ25vc2VkPC9wPiBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICBIb3cgbmV3Ym9ybnNjcmVlbmluZyBhZmZlY3RlZCB0aGUgbnVtYmVycy5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+Ki99IFxuICAgICAgICAgICAgICAgey8qICA8aDM+VHJlYXRtZW50PC9oMz4gICovfSBcbiAgICAgICAgICAgICAgICB7Lyo8aW1nIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIvPiAqL30gXG4gICAgICAgICAgICAgICB7LyogIDxDb2xsYXBzaWJsZSB0aXRsZT1cIkRpZmZlcmVudCB0eXBlcyBvZiBkcnVnc1wiID5cbiAgICAgICAgICAgICAgICA8VGFiQnV0dG9uUm93IGRhdGE9e21lZGlidXR0b25yb3dkYXRhfSBvcGVudHlwZT1cIm1lZGl0YWJzXCIgY2xvc2luZz1cIlwiLz5cbiAgICAgICAgICAgICAgICA8QnV0dG9uUm93VGFicyBkYXRhPXttZWRpYnV0dG9ucm93ZGF0YX0gY2xhPVwibWVkaXRhYnNcIi8+XG4gICAgICAgICAgICAgICAgPC9Db2xsYXBzaWJsZT4gKi99XG4gICAgICAgICAgICAgICAgey8qIDxwPldoeSB3ZSBzdGlsbCBuZWVkIG90aGVyIG9wdGlvbnM8L3A+ICAqL30gXG4gICAgICAgICAgICAgICB7LyogPGltZyBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9jaGFydHMtbWFwcy9jZnBlcjEwLTAwMC5wbmdcIi8+ICovfSBcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8c2VjdGlvbiBpZD1cIk91ciBtb3RpdmF0aW9uXCIgY2xhc3NOYW1lPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxIMiB0ZXh0PVwiT3VyIG1vdGl2YXRpb25cIj48L0gyPlxuICAgICAgICAgICAgICAgIDxwPldlIGNob3NlIHRvIGZvY3VzIG9uIENGIGFuZCBzcGVjaWZpY2FsbHkgdGhlIFx1MDM5NEY1MDggbXV0YXRpb24gZHVlIHRvIGl0cyBwcmV2YWxlbmNlIGFuZCB0aGUgc2V2ZXJlIGltcGFjdCBpdCBoYXMgb24gcGF0aWVudHMnIGxpdmVzLiBBZGRpdGlvbmFsbHksIG91ciB0ZWFtIGluY2x1ZGVzIG1lbWJlcnMgd2hvIGhhdmUgY2xvc2UgZnJpZW5kcyBhZmZlY3RlZCBieSB0aGlzIGNvbmRpdGlvbiwgZ2l2aW5nIHVzIGEgcGVyc29uYWwgY29ubmVjdGlvbiBhbmQgYSBzdHJvbmcgbW90aXZhdGlvbiB0byBmaW5kIGEgc29sdXRpb24uIEJ5IHRhcmdldGluZyB0aGUgXHUwMzk0RjUwOCBtdXRhdGlvbiwgd2UgYWltIHRvIGRldmVsb3AgYSB0aGVyYXB5IHRoYXQgY291bGQgcG90ZW50aWFsbHksIG5vdCBvbmx5IGJlbmVmaXQgbWFueSBDRiBwYXRpZW50cyBhbmQgbWFrZSBhIHNpZ25pZmljYW50IGltcHJvdmVtZW50IGluIHRoZWlyIGxpdmVzLCBidXQgYWxzbyBjYW4gc2VydmUgYXMgYSB0ZW1wbGF0ZSwgd2hpY2ggcmVzZWFyY2ggZ3JvdXBzIGNhbiB1c2UgdG8gdGFyZ2V0IG90aGVyIGdlbmV0aWMgZGlzZWFzZXMuIDwvcD5cbiAgICAgICAgICAgICAgICB7LyogPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQWJvdXQgZGVsNTA4XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8cD5NYXg8L3A+ICovfVxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgIDxzZWN0aW9uIGlkPVwiQXBwcm9hY2hcIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPEgyIHRleHQ9XCJBcHByb2FjaFwiPjwvSDI+XG4gICAgICAgICAgICAgICAgPHA+VG8gY29ycmVjdCB0aGUgbXV0YXRpb24sIHdlIGFyZSB1dGlsaXppbmcgUHJpbWUgRWRpdGluZyB0ZWNobm9sb2dpZXMuIFByaW1lIEVkaXRpbmcgaXMgYSBnZW5vbWUgZWRpdGluZyB0ZWNobmlxdWUgdGhhdCBhbGxvd3MgcHJlY2lzZSBETkEgbW9kaWZpY2F0aW9ucyB3aXRob3V0IGNhdXNpbmcgZG91YmxlLXN0cmFuZCBicmVha3M8YSBocmVmPVwiI2Rlc2MtdHdvXCI+PHN1cD4yPC9zdXA+PC9hPi4gU3RydWN0dXJhbGx5LCB0aGUgUHJpbWUgRWRpdGluZyBjb21wbGV4IGNvbnNpc3RzIG9mIGEgQ2FzOSBlbmRvbnVjbGVhc2UgZnVzZWQgdG8gYSByZXZlcnNlIHRyYW5zY3JpcHRhc2UgKFJUKSBhbmQgZ3VpZGVkIGJ5IGEgcGVnUk5BLCB3aGljaCBkaXJlY3RzIHRoZSBjb21wbGV4IHRvIHRoZSB0YXJnZXQgc2l0ZSBpbiB0aGUgZ2Vub21lLiAgPC9wPlxuey8qICAgICAgICAgICAgICAgICA8SW5mb0JveCB0aXRsZT1cIlByaW1lIEVkaXRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgQWJvdXQgcHJpbWUgZWRpdGluZ1xuICAgICAgICAgICAgICAgIDwvSW5mb0JveD4gKi99XG57LyogICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXJpZ2h0IGltZy1oYWxmXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc2NpZW50aWZpYy1maWd1cmVzL2tvbXBsZXgta29tcGxldHQtYmVzY2hyaWZ0ZXQuc3ZnXCIvPiAgICBcbiAgICAgICAgICAgICAgICAqL30gPGRpdiBjbGFzc05hbWU9XCJpbWctcmlnaHQgaW1nLWhhbGZcIj48Q29tcGxleD48L0NvbXBsZXg+PC9kaXY+XG4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwPkhvd2V2ZXIsIHRoZSBQcmltZSBFZGl0aW5nIGNvbXBsZXggaXMgcmVsYXRpdmVseSBsYXJnZSwgcG9zaW5nIGNoYWxsZW5nZXMgZm9yIHRoZXJhcGV1dGljIGRlbGl2ZXJ5PGEgaHJlZj1cIiNkZXNjLXRocmVlXCI+PHN1cD4zPC9zdXA+PC9hPi4gQWRkaXRpb25hbGx5LCBQcmltZSBFZGl0aW5nIGhhcyBiZWVuIHNob3duIHRvIGJlIHJlbGF0aXZlbHkgaW5lZmZpY2llbnQgaW4gdGVybXMgb2YgZ2VuZSBlZGl0aW5nIHJhdGVzLCB3aGljaCBjb3VsZCBsaW1pdCBpdHMgdGhlcmFwZXV0aWMgdXRpbGl0eTxhIGhyZWY9XCIjZGVzYy1mb3VyXCI+PHN1cD40PC9zdXA+PC9hPi4gT3VyIHByb2plY3QgYWltcyB0byBlbmhhbmNlIHRoZSBQcmltZSBFZGl0aW5nIGFwcHJvYWNoIGJ5IG1pbmlhdHVyaXppbmcgaXRzIGNvbXBvbmVudHMuIEZhbnpvciwgYSByZWNlbnRseSBkaXNjb3ZlcmVkIGV1a2FyeW90aWMgZW5kb251Y2xlYXNlLCBwZXJmb3JtcyBmdW5jdGlvbnMgc2ltaWxhciB0byBDYXM5LCBhIGNydWNpYWwgcGFydCBvZiB0aGUgUHJpbWUgRWRpdGluZyBjb21wbGV4LCBidXQgaXMgc2lnbmlmaWNhbnRseSBzbWFsbGVyLiBXZSBhaW0gdG8gc3Vic3RpdHV0ZSBDYXM5IHdpdGggRmFuem9yLiA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwPkFkZGl0aW9uYWxseSwgd2UgcGxhbiB0byByZXBsYWNlIHRoZSByZXZlcnNlIHRyYW5zY3JpcHRhc2UgaW4gdGhlIFByaW1lIEVkaXRpbmcgY29tcGxleCB3aXRoIGEgc21hbGxlciBSVCB2YXJpYW50LiBGdXJ0aGVybW9yZSwgTUNQIHByb3RlaW5zIHdpbGwgYmUgYWRkZWQgdG8gdGhlIFByaW1lIEVkaXRpbmcgY29tcGxleCB0byBpbmNyZWFzZSBpdHMgc3RhYmlsaXR5PGEgaHJlZj1cIiNkZXNjLWZpdmVcIj48c3VwPjU8L3N1cD48L2E+LiAgPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHsvKiA8Q29sbGFwc2libGUgdGl0bGU9XCJDYXMgdnMuIEZhbnpvclwiID48L0NvbGxhcHNpYmxlPiAqL31cbiAgICAgICAgICAgICAgICA8cD5UaGUgcGVnUk5BIGlzIG9wdGltaXplZCB2aWEgYW4gZXh0ZW5zaW9uIGJ5IGEgc3RlbSBsb29wLCB3aGljaCBzdGFiaWxpemVzIHRoZSBSTkEgYnkgcHJvdGVjdGluZyBpdCBmcm9tIFJOYXNlcyBhbmQgc2VydmVzIGFzIGEgYmluZGluZyBzaXRlIGZvciB0aGUgTUNQLCB3aGljaCBhbHNvIHN1cHBvcnRzIHRoZSBzZWNvbmRhcnkgUk5BIHN0cnVjdHVyZS4gQWRkaXRpb25hbGx5LCB0aGUgcGVnUk5BIGNvbnRhaW5zIGEgcmlib3N3aXRjaCwgYSBzb2RpdW0gaW9uLWNvbnRyb2xsZWQgcmVndWxhdG9yIHRoYXQgc3dpdGNoZXMgb2ZmIHRoZSBjb21wbGV4LiBUaGlzIHJlcHJlc2VudHMgYSBtYWpvciBiaW9zYWZldHkgZmVhdHVyZSBpbiB0aGF0IHRoZSBjb21wbGV4IGlzIHN3aXRjaGVkIG9mZiBhZnRlciBzdWNjZXNzZnVsIEROQSBlZGl0aW5nIGFuZCB0aGUgc3Vic2VxdWVudCBpbmNyZWFzZWQgaW5mbHV4IG9mIGNobG9yaWRlIGlvbnMgaW50byB0aGUgY2VsbC4gVGhlIHBlZ1JOQSBpcyBjb21iaW5lZCB3aXRoIGFuIG9wdGltaXplZCBzZ1JOQSByZXN1bHRpbmcgaW4gaGlnaGVyIG9uLXRhcmdldCBlZmZlY3QuIE92ZXJhbGwsIGl0cyBvcHRpbWl6YXRpb24gbGVhZHMgdG8gYSBsb25nZXIgc2hlbGYgbGlmZSBhbmQgYW4gaW5jcmVhc2UgaW4gdGhlIGJpb3NhZmV0eSBvZiB0aGUgY29tcGxleC4gPC9wPlxuey8qICAgICAgICAgICAgICAgICA8SW5mb0JveCB0aXRsZT1cIlJpYm9zd2l0Y2hcIj5cbiAgICAgICAgICAgICAgICAgICAgQWJvdXQgdGhlIFJpYm9zd2l0Y2hcbiAgICAgICAgICAgICAgICA8L0luZm9Cb3g+ICovfVxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgIDxzZWN0aW9uIGlkPVwiRGVsaXZlcnlcIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPEgyIHRleHQ9XCJEZWxpdmVyeVwiPjwvSDI+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctbGVmdCBpbWctaGFsZiBzcGluXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc2NpZW50aWZpYy1maWd1cmVzL2xucC5wbmdcIiBoZWlnaHQ9e1wiMjAwdndcIn0vPiAgXG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHA+V2UgY2hvc2UgTE5QcyBhcyB0aGUgZGVsaXZlcnkgc3lzdGVtIG9mIG91ciBOZXh0LUdlbmVyYXRpb24gUHJpbWUgRWRpdGluZyBUZWNobm9sb2d5LiBCZWNhdXNlIG9mIHRoZWlyIGxhcmdlIGNhcGFjaXR5IGFuZCBsZXNzIGltbXVub2dlbmljIHNpZGUgZWZmZWN0cyBjb21wYXJlZCB0byBvdGhlciBkZWxpdmVyeSBzeXN0ZW1zIGxpa2UgQWRlbm8tYXNzb2NpYXRlZCBWaXJ1c2VzIChBVlYpPGEgaHJlZj1cIiNkZXNjLXNpeFwiPjxzdXA+Njwvc3VwPjwvYT4uIE91ciBhaW0gaXMgdG8gb3B0aW1pemUgdGhlIExOUCBmb3JtdWxhdGlvbiB0byBpbXByb3ZlIGRlbGl2ZXJ5IHRvIGx1bmcgdGlzc3VlIHZpYSBpbmhhbGF0aW9uLiBCZWNhdXNlIG9mIG91ciBjb2xsYWJvcmF0aW9ucywgd2UgYXJlIGFibGUgdG8gdGVzdCBhbmQgb3B0aW1pemUgZGlmZmVyZW50IGRlbGl2ZXJ5IHN5c3RlbXMgdG8gaW1wcm92ZSBvdXIgb3JnYW4gc3BlY2lmaWMgdGhlcmFwZXV0aWMgYXBwcm9hY2guIFRoZXJlZm9yZSwgb3VyIExOUCBkZXNpZ24gZm9jdXNzZXMgb24gc3RhYmlsaXR5IGFuZCB0YXJnZXRpbmcuIFN0YWJpbGl0eSBpcyBhY2hpZXZlZCBieSBhIHBvbHlldGh5bGVuZSBnbHljb2wgKFBFRykgY29hdGluZyB0aGF0IHByb3RlY3RzIHRoZSBMTlBzIGZyb20gZGVncmFkYXRpb24gYnkgdGhlIGltbXVuZSBzeXN0ZW08YSBocmVmPVwiI2Rlc2Mtc2V2ZW5cIj48c3VwPjc8L3N1cD48L2E+LiBNb3Jlb3Zlciwgd2UgdXNlIGNhcHNhaWNpbiBpbiBjb21iaW5hdGlvbiB3aXRoIGNoaXRvc2FuIHRvIGltcHJvdmUgdGhlIHVwdGFrZSBvZiBvdXIgY29uc3RydWN0IHRocm91Z2ggdGhlaXIgbXVjdXMtYWRoZXNpdmUgcHJvcGVydGllczxhIGhyZWY9XCIjZGVzYy1laWdodFwiPjxzdXA+ODwvc3VwPjwvYT4uIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbnsvKiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBMQWdlcnRlbXBlcmF0dXIgZGVyIFBhcnRzXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVHJvY2tudW5nXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAqL31cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8cD5XZSBhcmUgZnVydGhlcm1vcmUgb3B0aW1pc2luZyB0aGUgTE5QcyBmb3IgcHVsbW9uYXJ5IHRoZXJhcHkgYW5kIGludmVzdGlnYXRpbmcgZGVsaXZlcnkgYnkgbmVidWxpc2F0aW9uIGFzIGEgbm9uLWludmFzaXZlIG1ldGhvZCBjb21wYXJlZCB0byBzeXN0ZW1pYyBhcHByb2FjaGVzIHRvIG1ha2UgdGhlIHRoZXJhcHkgbW9yZSBjb252ZW5pZW50IGZvciBwYXRpZW50cy4gRm9yIHNwZWNpZmljIHRhcmdldGluZywgd2UgYXJlIGZvY3Vzc2luZyBvbiBtYXJrZXIgcHJvdGVpbnMgb2YgYmFzYWwgY2VsbHMgYW5kIGlvbm9jeXRlcyB0aGF0IHByb2R1Y2UgcGFydGljdWxhcmx5IGhpZ2ggbGV2ZWxzIG9mIENGVFIgcHJvdGVpbiBhbmQgd2hpY2ggd2Ugd2FudCB0byB0YXJnZXQgd2l0aCBhcHByb3ByaWF0ZSBhbnRpYm9kaWVzPGEgaHJlZj1cIiNkZXNjLW5pbmVcIj48c3VwPjk8L3N1cD48L2E+LiBPdXIgd29ya2Zsb3cgaW5jbHVkZXMgdGVzdGluZyBvdXIgbmV4dCBnZW5lcmF0aW9uIFByaW1lIEVkaXRpbmcgVGVjaG5vbG9neSBkZWxpdmVyZWQgYnkgb3VyIG9wdGltaXplZCBMTlBzIGluIGNlbGwgY3VsdHVyZSBsaW5lcyBidXQgYWxzbyBpbiBwcmltYXJ5IG5hc2FsIGVwaXRoZWxpYWwgY2VsbHMgb2YgQ0YgcGF0aWVudHMgdG8gZXZhbHVhdGUgb3VyIG9wdGltaXphdGlvbnMgYW5kIGZ1cnRoZXIgaW1wcm92ZW1lbnRzIGluIHZpdHJvLiBXZSBjYW4gYWxzbyBwcm92aWRlIHRoZSBvdXRsb29rIG9uIHRoZSBhZGFwdGF0aW9uIG9mIHRoZSBkZWxpdmVyeSBzeXN0ZW0gZW5hYmxpbmcgc3lzdGVtaWMgYXBwbGljYXRpb25zIGFzIHdlbGwuIDwvcD5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8c2VjdGlvbiBpZD1cIk91ciB2aXNpb25cIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPEgyIHRleHQ9XCJPdXIgdmlzaW9uXCI+PC9IMj4gICBcblxuICAgICAgICAgICAgICAgIDxwPldlIGFyZSBlbnZpc2lvbmluZyBhIHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBpbnRvIGEgYnJvYWRlciB0aGVyYXBldXRpYyBmcmFtZXdvcmsgaW52b2x2aW5nIGN1c3RvbWl6ZWQgZ2VuZSBlZGl0aW5nIHRvb2xzIGZvciB2YXJpb3VzIGdlbmV0aWMgZGlzb3JkZXJzLCB0aGF0IHByZXNlbnQgc2ltaWxhciBwcm9ibGVtcy9kaWZmaWN1bHRpZXMgdG8gdGhlIEY1MDhkZWwgbXV0YXRpb24sIGFzIHdlbGwgYXMgb3RoZXIgZ2VuZXRpYyBkaXNlYXNlcyBvZiBkaWZmZXJlbnQgY2F1c2VzLiBUaGlzIGNvdWxkIGluY2x1ZGUgY29sbGFib3JhdGlvbnMgd2l0aCBwaGFybWFjZXV0aWNhbCBjb21wYW5pZXMgdG8gZGV2ZWxvcCBuZXcgdHJlYXRtZW50IG1vZGFsaXRpZXMgZm9yIGdlbmV0aWMgZGlzZWFzZXMgYmV5b25kIGN5c3RpYyBmaWJyb3NpcywgdXRpbGl6aW5nIGFkdmFuY2VkIGRlbGl2ZXJ5IHN5c3RlbXMgYW5kIHBlcnNvbmFsaXplZCBtZWRpY2luZSBhcHByb2FjaGVzLiA8L3A+XG4gICAgICAgICAgICAgICAgPEgyIHRleHQ9XCJFZGl0aW5nIFN0YXRpc3RpY3NcIi8+XG4gICAgICAgICAgICAgICAgPFBpZUNoYXJ0IC8+IHsvKiBSZW5kZXIgdGhlIFBpZUNoYXJ0IGNvbXBvbmVudCAqL31cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICBcbiAgICAgICAgey8qIFNvdXJjZXMgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgIDxzZWN0aW9uIGlkPVwiUmVmZXJlbmNlc1wiPlxuICAgICAgICAgICAgPEgyIHRleHQ9XCJSZWZlcmVuY2VzXCI+PC9IMj4gICAgXG4gICAgICAgICAgICA8b2w+XG4gICAgICAgICAgICAgICAgey8qIDwhLS0gQ2l0YXRpb24gbnVtIDEtLT4gKi99XG4gICAgICAgICAgICAgICAgPGxpIHR5cGVvZj1cInNjaGVtYTpTY29sYXJseUFydGljbGVcIiByb2xlPVwiZG9jLWJpYmxpb2VudHJ5XCIgcHJvcGVydHk9XCJzY2hlbWE6Y2l0YXRpb25cIiBpZD1cImRlc2Mtb25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOmF1dGhvclwiIHR5cGVvZj1cInNjaGVtYTpQZXJzb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5TY290ZXQsIFYuPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5HdXRpZXJyZXosIEguPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5GYXJyZWxsLCBQLiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6bmFtZVwiPk5ld2Jvcm4gU2NyZWVuaW5nIGZvciBDRiBhY3Jvc3MgdGhlIEdsb2JlXHUyMDE0V2hlcmUgSXMgSXQgV29ydGh3aGlsZT8gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aSBwcm9wZXJ0eT1cInNjaGVtYTpwdWJsaXNoZXJcIiB0eXBlb2Y9XCJzY2hlbWE6T3JnYW5pemF0aW9uXCI+SW50IEogTmVvbmF0YWwgU2NyZWVuIDwvaT5cbiAgICAgICAgICAgICAgICAgICAgPGIgcHJvcGVydHk9XCJpc3N1ZU51bWJlclwiIHR5cGVvZj1cIlB1YmxpY2F0aW9uSXNzdWVcIj42PC9iPixcbiAgICAgICAgICAgICAgICAgICAgKDx0aW1lIHByb3BlcnR5PVwic2NoZW1hOmRhdGVQdWJsaXNoZWRcIiBkYXRhdHlwZT1cInhzZDpnWWVhclwiIGRhdGVUaW1lPVwiMjAyMFwiPjIwMjA8L3RpbWU+KS4gXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cImRvaVwiIGhyZWY9XCJodHRwczovL2RvaS5vcmcvMTAuMzM5MC9pam42MDEwMDE4XCI+IGRvaTogMTAuMzM5MC9pam42MDEwMDE4PC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICB7LyogPCEtLSBDaXRhdGlvbiBudW0gMi0tPiAqL31cbiAgICAgICAgICAgICAgICA8bGkgdHlwZW9mPVwic2NoZW1hOlNjb2xhcmx5QXJ0aWNsZVwiIHJvbGU9XCJkb2MtYmlibGlvZW50cnlcIiBwcm9wZXJ0eT1cInNjaGVtYTpjaXRhdGlvblwiIGlkPVwiZGVzYy10d29cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6YXV0aG9yXCIgdHlwZW9mPVwic2NoZW1hOlBlcnNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPkFuemFsb25lLCBBLlYuPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5SYW5kb2xwaCwgUC5CLjwvc3Bhbj4sXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+RGF2aXMsIEouUi48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPlNvdXNhLCBBLkEuPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5Lb2JsYW4sIEwuVy48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPkxldnksIEouTS48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPk5ld2J5LCBHLkEuPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5SYWd1cmFtLCBBLjwvc3Bhbj4sXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+TGl1LCBELlIuIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpuYW1lXCI+U2VhcmNoLWFuZC1yZXBsYWNlIGdlbm9tZSBlZGl0aW5nIHdpdGhvdXQgZG91YmxlLXN0cmFuZCBicmVha3Mgb3IgZG9ub3IgRE5BLiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxpIHByb3BlcnR5PVwic2NoZW1hOnB1Ymxpc2hlclwiIHR5cGVvZj1cInNjaGVtYTpPcmdhbml6YXRpb25cIj5OYXR1cmUgPC9pPlxuICAgICAgICAgICAgICAgICAgICA8YiBwcm9wZXJ0eT1cImlzc3VlTnVtYmVyXCIgdHlwZW9mPVwiUHVibGljYXRpb25Jc3N1ZVwiPjU3NDwvYj4sXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOnBhZ2VCZWdpblwiPiA1ODk8L3NwYW4+LTxzcGFuIHByb3BlcnR5PVwic2NoZW1hOnBhZ2VFbmRcIj41OTQgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgKDx0aW1lIHByb3BlcnR5PVwic2NoZW1hOmRhdGVQdWJsaXNoZWRcIiBkYXRhdHlwZT1cInhzZDpnWWVhclwiIGRhdGVUaW1lPVwiMjAxOVwiPjIwMTk8L3RpbWU+KS5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwiZG9pXCIgaHJlZj1cImh0dHBzOi8vZG9pLm9yZy8xMC4xMDM4L3M0MTU4Ni0wMTktMTcxMS00XCI+IGRvaTogMTAuMTAzOC9zNDE1ODYtMDE5LTE3MTEtNDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgey8qIDwhLS0gQ2l0YXRpb24gbnVtIDMtLT4gKi99XG4gICAgICAgICAgICAgICAgPGxpIHR5cGVvZj1cInNjaGVtYTpTY29sYXJseUFydGljbGVcIiByb2xlPVwiZG9jLWJpYmxpb2VudHJ5XCIgcHJvcGVydHk9XCJzY2hlbWE6Y2l0YXRpb25cIiBpZD1cImRlc2MtdGhyZWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6YXV0aG9yXCIgdHlwZW9mPVwic2NoZW1hOlBlcnNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPkJyb2FkIEluc3RpdHV0ZSBvZiBNSVQgYW5kIEhhcnZhcmQuIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpuYW1lXCI+UmVzZWFyY2hlcnMgZW5naW5lZXIgaW4gdml2byBkZWxpdmVyeSBzeXN0ZW0gZm9yIHByaW1lIGVkaXRpbmcsIHBhcnRpYWxseSByZXN0b3JpbmcgdmlzaW9uIGluIG1pY2UuIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGkgcHJvcGVydHk9XCJzY2hlbWE6cHVibGlzaGVyXCIgdHlwZW9mPVwic2NoZW1hOk9yZ2FuaXphdGlvblwiPlBoeXMub3JnIDwvaT5cbiAgICAgICAgICAgICAgICAgICAgKDx0aW1lIHByb3BlcnR5PVwic2NoZW1hOmRhdGVQdWJsaXNoZWRcIiBkYXRhdHlwZT1cInhzZDpnWWVhclwiIGRhdGVUaW1lPVwiMjAyNFwiPjIwMjQ8L3RpbWU+KS5cbiAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgey8qIDwhLS0gQ2l0YXRpb24gbnVtIDQtLT4gKi99XG4gICAgICAgICAgICAgICAgPGxpIHR5cGVvZj1cInNjaGVtYTpTY29sYXJseUFydGljbGVcIiByb2xlPVwiZG9jLWJpYmxpb2VudHJ5XCIgcHJvcGVydHk9XCJzY2hlbWE6Y2l0YXRpb25cIiBpZD1cImRlc2MtZm91clwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTphdXRob3JcIiB0eXBlb2Y9XCJzY2hlbWE6UGVyc29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+R2F1ZGVsbGksIE4uPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5Lb21vciwgQS48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPlJlZXMsIEguPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5QYWNrZXIsIE0uPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5CYWRyYW4sIEEuPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5Ccnlzb24sIEQuPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5MaXUsIEQuIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpuYW1lXCI+UHJvZ3JhbW1hYmxlIGVkaXRpbmcgb2YgYSB0YXJnZXQgYmFzZSBpbiBnZW5vbWljIEROQSB3aXRob3V0IGRvdWJsZS1zdHJhbmRlZCBETkEgY2xlYXZhZ2UuIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGkgcHJvcGVydHk9XCJzY2hlbWE6cHVibGlzaGVyXCIgdHlwZW9mPVwic2NoZW1hOk9yZ2FuaXphdGlvblwiPk5hdHVyZSA8L2k+XG4gICAgICAgICAgICAgICAgICAgIDxiIHByb3BlcnR5PVwiaXNzdWVOdW1iZXJcIiB0eXBlb2Y9XCJQdWJsaWNhdGlvbklzc3VlXCI+NTMzPC9iPixcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6cGFnZUJlZ2luXCI+IDQyMDwvc3Bhbj4tPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6cGFnZUVuZFwiPjQyNCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICg8dGltZSBwcm9wZXJ0eT1cInNjaGVtYTpkYXRlUHVibGlzaGVkXCIgZGF0YXR5cGU9XCJ4c2Q6Z1llYXJcIiBkYXRlVGltZT1cIjIwMTZcIj4yMDE2PC90aW1lPikuIFxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJkb2lcIiBocmVmPVwiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvbmF0dXJlMTc5NDZcIj4gZG9pOiAxMC4xMDM4L25hdHVyZTE3OTQ2PC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICB7LyogPCEtLSBDaXRhdGlvbiBudW0gNS0tPiAqL31cbiAgICAgICAgICAgICAgICA8bGkgdHlwZW9mPVwic2NoZW1hOlNjb2xhcmx5QXJ0aWNsZVwiIHJvbGU9XCJkb2MtYmlibGlvZW50cnlcIiBwcm9wZXJ0eT1cInNjaGVtYTpjaXRhdGlvblwiIGlkPVwiZGVzYy1maXZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOmF1dGhvclwiIHR5cGVvZj1cInNjaGVtYTpQZXJzb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5PcGVuRWQgQ1VOWS4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOm5hbWVcIj5STkEgU3RhYmlsaXR5IGFuZCB0aGUgUm9sZSBvZiBSTkEtQmluZGluZyBQcm90ZWlucy4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aSBwcm9wZXJ0eT1cInNjaGVtYTpwdWJsaXNoZXJcIiB0eXBlb2Y9XCJzY2hlbWE6T3JnYW5pemF0aW9uXCI+T3BlbkVkIENVTlkgPC9pPlxuICAgICAgICAgICAgICAgICAgICAoPHRpbWUgcHJvcGVydHk9XCJzY2hlbWE6ZGF0ZVB1Ymxpc2hlZFwiIGRhdGF0eXBlPVwieHNkOmdZZWFyXCIgZGF0ZVRpbWU9XCIyMDI0XCI+MjAyNDwvdGltZT4pLlxuICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICB7LyogPCEtLSBDaXRhdGlvbiBudW0gNi0tPiAqL31cbiAgICAgICAgICAgICAgICA8bGkgdHlwZW9mPVwic2NoZW1hOlNjb2xhcmx5QXJ0aWNsZVwiIHJvbGU9XCJkb2MtYmlibGlvZW50cnlcIiBwcm9wZXJ0eT1cInNjaGVtYTpjaXRhdGlvblwiIGlkPVwiZGVzYy1zaXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6YXV0aG9yXCIgdHlwZW9mPVwic2NoZW1hOlBlcnNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPlNhaGF5LCBHLjwvc3Bhbj4sXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+QWxha2hvdmEsIEQuWS48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPkthYmFub3YsIEEuVi4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOm5hbWVcIj5FbmRvY3l0b3NpcyBvZiBuYW5vbWVkaWNpbmVzLiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxpIHByb3BlcnR5PVwic2NoZW1hOnB1Ymxpc2hlclwiIHR5cGVvZj1cInNjaGVtYTpPcmdhbml6YXRpb25cIj5Kb3VybmFsIG9mIENvbnRyb2xsZWQgUmVsZWFzZSA8L2k+XG4gICAgICAgICAgICAgICAgICAgIDxiIHByb3BlcnR5PVwiaXNzdWVOdW1iZXJcIiB0eXBlb2Y9XCJQdWJsaWNhdGlvbklzc3VlXCI+MTQ1PC9iPixcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6cGFnZUJlZ2luXCI+IDE4Mjwvc3Bhbj4tPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6cGFnZUVuZFwiPjE5NSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICg8dGltZSBwcm9wZXJ0eT1cInNjaGVtYTpkYXRlUHVibGlzaGVkXCIgZGF0YXR5cGU9XCJ4c2Q6Z1llYXJcIiBkYXRlVGltZT1cIjIwMTBcIj4yMDEwPC90aW1lPikuXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cImRvaVwiIGhyZWY9XCJodHRwczovL2RvaS5vcmcvMTAuMTAxNi9qLmpjb25yZWwuMjAxMC4wMS4wMzZcIj4gZG9pOiAxMC4xMDE2L2ouamNvbnJlbC4yMDEwLjAxLjAzNjwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgey8qIDwhLS0gQ2l0YXRpb24gbnVtIDctLT4gKi99XG4gICAgICAgICAgICAgICAgPGxpIHR5cGVvZj1cInNjaGVtYTpTY29sYXJseUFydGljbGVcIiByb2xlPVwiZG9jLWJpYmxpb2VudHJ5XCIgcHJvcGVydHk9XCJzY2hlbWE6Y2l0YXRpb25cIiBpZD1cImRlc2Mtc2V2ZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6YXV0aG9yXCIgdHlwZW9mPVwic2NoZW1hOlBlcnNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPlJhbWFjaGFuZHJhbiwgUy48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPlNhdGFwYXRoeSwgUy5SLjwvc3Bhbj4sXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+RHV0dGEsIFQuIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpuYW1lXCI+RGVsaXZlcnkgU3RyYXRlZ2llcyBmb3IgbVJOQSBWYWNjaW5lcy4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aSBwcm9wZXJ0eT1cInNjaGVtYTpwdWJsaXNoZXJcIiB0eXBlb2Y9XCJzY2hlbWE6T3JnYW5pemF0aW9uXCI+UGhhcm1hY2V1dGljYWwgTWVkaWNpbmUgPC9pPlxuICAgICAgICAgICAgICAgICAgICA8YiBwcm9wZXJ0eT1cImlzc3VlTnVtYmVyXCIgdHlwZW9mPVwiUHVibGljYXRpb25Jc3N1ZVwiPjM2PC9iPixcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6cGFnZUJlZ2luXCI+IDExPC9zcGFuPi08c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpwYWdlRW5kXCI+MjAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAoPHRpbWUgcHJvcGVydHk9XCJzY2hlbWE6ZGF0ZVB1Ymxpc2hlZFwiIGRhdGF0eXBlPVwieHNkOmdZZWFyXCIgZGF0ZVRpbWU9XCIyMDIyXCI+MjAyMjwvdGltZT4pLlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJkb2lcIiBocmVmPVwiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDcvczQwMjkwLTAyMS0wMDQxNy01XCI+IGRvaTogMTAuMTAwNy9zNDAyOTAtMDIxLTAwNDE3LTU8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgIHsvKiA8IS0tIENpdGF0aW9uIG51bSA4LS0+ICovfVxuICAgICAgICAgICAgICAgIDxsaSB0eXBlb2Y9XCJzY2hlbWE6U2NvbGFybHlBcnRpY2xlXCIgcm9sZT1cImRvYy1iaWJsaW9lbnRyeVwiIHByb3BlcnR5PVwic2NoZW1hOmNpdGF0aW9uXCIgaWQ9XCJkZXNjLWVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOmF1dGhvclwiIHR5cGVvZj1cInNjaGVtYTpQZXJzb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5CYW5kaSwgUy5QLjwvc3Bhbj4sXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+QmhhdG5hZ2FyLCBTLjwvc3Bhbj4sXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+VmVudWdhbnRpLCBWLlYuSy4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOm5hbWVcIj5BZHZhbmNlZCBtYXRlcmlhbHMgZm9yIGRydWcgZGVsaXZlcnkgYWNyb3NzIG11Y29zYWwgYmFycmllcnMuIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGkgcHJvcGVydHk9XCJzY2hlbWE6cHVibGlzaGVyXCIgdHlwZW9mPVwic2NoZW1hOk9yZ2FuaXphdGlvblwiPkFjdGEgQmlvbWF0ZXJpYWxpYSA8L2k+XG4gICAgICAgICAgICAgICAgICAgIDxiIHByb3BlcnR5PVwiaXNzdWVOdW1iZXJcIiB0eXBlb2Y9XCJQdWJsaWNhdGlvbklzc3VlXCI+MTE5PC9iPixcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6cGFnZUJlZ2luXCI+IDEzPC9zcGFuPi08c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpwYWdlRW5kXCI+MjkgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAoPHRpbWUgcHJvcGVydHk9XCJzY2hlbWE6ZGF0ZVB1Ymxpc2hlZFwiIGRhdGF0eXBlPVwieHNkOmdZZWFyXCIgZGF0ZVRpbWU9XCIyMDIxXCI+MjAyMTwvdGltZT4pLlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJkb2lcIiBocmVmPVwiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5hY3RiaW8uMjAyMC4xMC4wMzFcIj4gZG9pOiAxMC4xMDE2L2ouYWN0YmlvLjIwMjAuMTAuMDMxPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L29sPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG5cblxuICAgICAgICA8L2Rpdj4gIFxuICAgICAgPC9kaXY+ICAgIFxuICApO1xufVxuXG4vKiBsZXQgbWVkaWJ1dHRvbnJvd2RhdGEgPVtcbiAgICB7XG4gICAgICAgIG5vZGU6IDxkaXY+QWJvdXQ8L2Rpdj4sIFxuICAgICAgICBidXR0b25uYW1lOiBcIkFib3V0XCIsIFxuICAgICAgICBjc3NuYW1lOiBcIkZpcnN0XCJcbiAgICAgICAgXG4gICAgfSxcbiAgICB7ICAgXG4gICAgICAgIG5vZGU6IDxoMj5Nb2R1bGF0b3JzPC9oMj4sXG4gICAgICAgIGJ1dHRvbm5hbWU6IFwiTW9kdWxhdG9yc1wiLCBcbiAgICAgICAgY3NzbmFtZTogXCJtb2R1bGF0b3JzXCJcbiAgICB9LFxuICAgIHtcbiAgICAgICAgbm9kZTogPGgyPkluaGFsYXRpb25zPC9oMj4sIFxuICAgICAgICBidXR0b25uYW1lOiBcIkluaGFsYXRpb25zXCIsIFxuICAgICAgICBjc3NuYW1lOiBcImluaGFsYXRpb25zXCJcbiAgICB9LFxuXVxuICovIiwgIlxuXG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5cbmZ1bmN0aW9uIFNpZGVJdGVtKHtoZXNoLCBudW19OntoZXNoOiBzdHJpbmc7IG51bTogbnVtYmVyfSl7XG4gICAgbGV0IGxpbmsgPSBcIiNcIiArIGhlc2hcbiAgICBsZXQgc3ViZGkgPSBcInN1YnRpdGxlXCIgKyBudW1cbiAgICByZXR1cm4oXG4gICAgICAgIDxkaXY+ICAgXG4gICAgICAgICAgICA8YSBocmVmPXtsaW5rfT5cbiAgICAgICAgICAgICAgICA8c3BhbiBpZD17c3ViZGl9PlxuICAgICAgICAgICAgICAgICAgICB7aGVzaH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PiAgIFxuICAgIClcbn1cblxuXG5cbi8qIExPYWRpbmcgdG9vIHNsb3cuLi5cbmZ1bmN0aW9uIFNpZGViYXIoKXtcbiAgICBjb25zdCBhbGxXaXRoQ2xhc3MgPSBBcnJheS5mcm9tKFxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzZWN0aW9uJylcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhhbGxXaXRoQ2xhc3MpO1xuICAgIGxldCBjb250ZW50ID0gW107XG4gICAgZm9yKGxldCBpZHggaW4gYWxsV2l0aENsYXNzKXtcbiAgICAgICAgY29uc3QgaXRlbSA9IGFsbFdpdGhDbGFzc1tpZHhdO1xuICAgICAgICBjb25zdCBpZCA9IGl0ZW0uaWQ7IFxuICAgICAgICBjb25zb2xlLmxvZyhcImlkeDogXCIgKyBpZHgpO1xuICAgICAgICBjb25zb2xlLmxvZyhcIml0ZW06IFwiICsgaXRlbSk7IFxuICAgICAgICBjb25zb2xlLmxvZyhcImlkOiBcIiArIGlkKTtcbiAgICAgICAgY29udGVudC5wdXNoKDxTaWRlSXRlbSBrZXk9e2lkfSBoZXNoPXtpZH0+PC9TaWRlSXRlbT4pO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgICA8bmF2IGNsYXNzTmFtZT1cInNpZGViYXJcIj5cbiAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICA8L25hdj4gICAgICAgIFxuICAgIClcbiAgICBcbn0gKi9cblxuXG4gICAgZnVuY3Rpb24gU2lkZWJhcih7bnVtc306e251bXM6IEFycmF5PHN0cmluZz59KXtcblxuICAgICAgXG4gICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgICAgICAgZm9yKGxldCBpZHggaW4gbnVtcyl7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IG51bXNbaWR4XTtcbiAgICAgICAgICAgICAgICBsZXQgaW5kID0gbnVtcy5maW5kSW5kZXgoKGUpID0+IGUgPT0gaXRlbSlcbiAgICAgICAgICAgICAgICBsZXQgc3ViZGkgPSBcInN1YnRpdGxlXCIgKyBpbmQgXG4gICAgICAgICAgICAgICAgSGlnaGxpZ2h0KHtlbDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaXRlbSkhfSwge3N1YnRpdGxlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzdWJkaSkhfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZnVuY3Rpb24gSGlnaGxpZ2h0Q2hlY2tcIilcbiAgICAgICAgfVxuICAgICAgXG5cbiAgICAgICAgY29uc29sZS5sb2cobnVtcylcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBbXTsgXG4gICAgICAgIGZvcihsZXQgaWR4IGluIG51bXMpe1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IG51bXNbaWR4XTtcbiAgICAgICAgICAgIC8qIGNvbnNvbGUubG9nKFwiaWR4OiBcIiArIGlkeCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIml0ZW06IFwiICsgaXRlbSk7ICAqL1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJUeXBlOiBcIiArIHR5cGVvZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpdGVtKSkpXG4gICAgICAgICAgICBsZXQgaW5kID0gbnVtcy5maW5kSW5kZXgoKGUpID0+IGUgPT0gaXRlbSlcbiAgICAgICAgICAgIGNvbnRlbnQucHVzaCg8U2lkZUl0ZW0ga2V5PXtpdGVtfSBoZXNoPXtpdGVtfSBudW09e2luZH0+PC9TaWRlSXRlbT4pO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZihudW1zLmxlbmd0aCA+IDEpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgIDxuYXYgY2xhc3NOYW1lPVwic2lkZWJhclwiPlxuICAgICAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgIDwvbmF2PiAgIFxuICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCIgc3R5bGU9e3tkaXNwbGF5OiBcImZsZXhcIiwgYWxpZ25JdGVtczogXCJyaWdodCAgICBcIn19PlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9eycjJyArIG51bXNbMF19IGNsYXNzTmFtZT1cImJhY2t0b3RvcFwiPlxuICAgICAgICAgICAgICAgICAgICBCYWNrIHRvIFRvcCAmIzg1OTM7XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+ICAgXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICBcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4oXG4gICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICApXG4gICAgfVxuICAgIFxuXG5cbiAgICAgIGZ1bmN0aW9uIEhpZ2hsaWdodCh7ZWx9OiB7ZWw6IEhUTUxFbGVtZW50IHwgbnVsbH0sIHtzdWJ0aXRsZX06e3N1YnRpdGxlOiBIVE1MRWxlbWVudCB8IG51bGx9KXtcbiAgICAgICAgbGV0IFRvcERpc3RhbmNlID0gMTAwOyBcbiAgICAgICAgaWYgKGVsICE9IG51bGwgJiYgc3VidGl0bGUgIT0gbnVsbCl7XG4gICAgICAgICAgICBpZiAoZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIDwgVG9wRGlzdGFuY2UgKyAxICYmIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSA+IFRvcERpc3RhbmNlKXtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZS5zdHlsZS5jb2xvciA9IFwiI0ZGRjZGMlwiO1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IFwiIzg1MEY3OFwiO1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlLnN0eWxlLmJvcmRlclJhZGl1cyA9IFwiMTVweFwiO1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlLnN0eWxlLmJvcmRlcldpZHRoID0gXCIxNXB4XCI7IFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlLnN0eWxlLmJvcmRlckNvbG9yID0gXCIjODUwRjc4XCI7IFxuLyogICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3VidGl0bGU6IFwiLHN1YnRpdGxlKVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3R5bGU6IFwiLCBzdWJ0aXRsZS5zdHlsZSlcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImNvbG9yOiBcIixzdWJ0aXRsZS5zdHlsZS5jb2xvcilcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImJhY2tjb2xvcjogXCIsc3VidGl0bGUuc3R5bGUuYmFja2dyb3VuZENvbG9yKSAgICAqLyAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlLnN0eWxlLmNvbG9yID0gXCIjODUwRjc4XCI7XG4gICAgICAgICAgICAgICAgc3VidGl0bGUuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gXCJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgIH1cbiAgICBcblxuZXhwb3J0IGRlZmF1bHQgU2lkZWJhcjsiLCAiaW1wb3J0IFNpZGViYXIgZnJvbSBcIi4uL2NvbXBvbmVudHMvU2lkZWJhclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gRGVzY1NpZGViYXIoKXtcbiAgICByZXR1cm4oXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTIgZC1ub25lIGQtbGctYmxvY2tcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3RpY2t5LXRvcFwiPlxuICAgICAgICAgICAgICAgIDxTaWRlYmFyIG51bXM9e1tcIkFic3RyYWN0XCIsIFwiQ3lzdGljIEZpYnJvc2lzXCIsIFwiT3VyIG1vdGl2YXRpb25cIiwgXG4gICAgICAgICAgICAgICAgXCJBcHByb2FjaFwiLCBcIkRlbGl2ZXJ5XCIsIFwiT3VyIHZpc2lvblwiLCBcIlJlZmVyZW5jZXNcIl19PjwvU2lkZWJhcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApXG59IiwgImltcG9ydCB7IExpbmsgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xuaW1wb3J0IHsgb3BlbkNpdHkgfSBmcm9tIFwiLi9Ib3Jpem9udGFsVGltZWxpbmVcIjtcblxuaW50ZXJmYWNlIFVybEJ1dHRvblByb3Bze1xuICAgIGhyZWY6IHN0cmluZyxcbiAgICBjaGlsZHJlbjogc3RyaW5nLFxuICB9O1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBWaWxsYWdlYnV0dG9uKHsgdGl0bGUsIHNvdXJjZSwgcGFnZSB9OiB7IHRpdGxlOiBzdHJpbmc7IHNvdXJjZTogc3RyaW5nOyBwYWdlOnN0cmluZ30pIHtcbiAgcmV0dXJuIChcbiAgICA8TGluayBjbGFzc05hbWU9XCJidG4gdmlsbGFnZS1zdHlsZS1idXR0b25cIiByb2xlPVwiYnV0dG9uXCIgdG89e3BhZ2V9PlxuICAgICAgPGltZyBzcmM9e3NvdXJjZX0gY2xhc3NOYW1lPVwiZC1ibG9jayBteC1hdXRvIG1iLTJcIiBhbHQ9XCJcIj48L2ltZz5cbiAgICAgIDxoMz57dGl0bGV9PC9oMz5cbiAgICA8L0xpbms+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZpbGxidXR0b25yb3coKXtcbiAgcmV0dXJuKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGJvdHRvbS1idXR0b25zXCI+XG4gICAgICAgIDxWaWxsYWdlYnV0dG9uIHBhZ2U9XCIvaHVtYW4tcHJhY3RpY2VzXCIgc291cmNlPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvZGVzaWduL2ljb25zL2h1bWFucHJhY3RpY2VzLnBuZ1wiIHRpdGxlPVwiSHVtYW4gUHJhY3RpY2VcIj48L1ZpbGxhZ2VidXR0b24+XG4gICAgICAgIDxWaWxsYWdlYnV0dG9uIHBhZ2U9XCIvdGVhbVwiIHNvdXJjZT1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2Rlc2lnbi9pY29ucy90ZWFtLnBuZ1wiIHRpdGxlPVwiVGVhbVwiPjwvVmlsbGFnZWJ1dHRvbj5cbiAgICAgICAgPFZpbGxhZ2VidXR0b24gcGFnZT1cIi9leHBlcmltZW50c1wiIHNvdXJjZT1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2Rlc2lnbi9pY29ucy9sYWIucG5nXCIgdGl0bGU9XCJFeHBlcmltZW50c1wiPjwvVmlsbGFnZWJ1dHRvbj5cbiAgICAgICAgPFZpbGxhZ2VidXR0b24gcGFnZT1cIi9kZXNjcmlwdGlvblwiIHNvdXJjZT1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2Rlc2lnbi9pY29ucy9kbmEucG5nXCIgdGl0bGU9XCJEZXNjcmlwdGlvblwiPjwvVmlsbGFnZWJ1dHRvbj5cbiAgICAgICAgPFZpbGxhZ2VidXR0b24gcGFnZT1cIi9lbmdpbmVlcmluZ1wiIHNvdXJjZT1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2Rlc2lnbi9pY29ucy9nZW5ldGljLWVuZ2luZWVyaW5nLnBuZ1wiIHRpdGxlPVwiRW5naW5lZXJpbmdcIj48L1ZpbGxhZ2VidXR0b24+XG4gICAgICAgIDxWaWxsYWdlYnV0dG9uIHBhZ2U9XCIvc2FmZXR5XCIgc291cmNlPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvZGVzaWduL2ljb25zL3NhZmV0eS5wbmdcIiB0aXRsZT1cIlNhZmV0eVwiPjwvVmlsbGFnZWJ1dHRvbj5cbiAgICAgICAgPFZpbGxhZ2VidXR0b24gcGFnZT1cIi9yZXN1bHRzXCIgc291cmNlPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvZGVzaWduL2ljb25zL3Jlc3VsdHMucG5nXCIgdGl0bGU9XCJSZXN1bHRzXCI+PC9WaWxsYWdlYnV0dG9uPlxuICAgICAgPC9kaXY+ICBcbiAgKVxufVxuXG5cbmV4cG9ydCBjb25zdCBVcmxCdXR0b24gPSAoeyBocmVmLCBjaGlsZHJlbiB9OlVybEJ1dHRvblByb3BzKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxhIGhyZWY9e2hyZWZ9IGNsYXNzTmFtZT1cInVybC1idXR0b25cIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9hPlxuICAgICk7XG4gIH1cblxuXG5cblxuZXhwb3J0IGNvbnN0IERvd25sb2FkTGluayA9ICh7IHVybCwgZmlsZU5hbWUgfToge3VybDogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nfSkgPT4ge1xuY29uc3QgaGFuZGxlRG93bmxvYWQgPSAoKSA9PiB7XG4gICAgZmV0Y2godXJsKVxuICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuYmxvYigpKVxuICAgIC50aGVuKChibG9iKSA9PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtibG9iXSkpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lIHx8IFwiZG93bmxvYWRlZC1maWxlXCI7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG5cbiAgICAgICAgbGluay5jbGljaygpO1xuXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyB0aGUgZmlsZTpcIiwgZXJyb3IpO1xuICAgIH0pO1xufTtcbiAgXG5yZXR1cm4gKFxuXG4gICAgPGEgdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZURvd25sb2FkfSBjbGFzc05hbWU9XCJkb3dubG9hZC1idXR0XCI+XG4gICAgICAgIERvd25sb2FkXG4gICAgPC9hPlxuXG4pO1xufTtcblxuXG5leHBvcnQgZnVuY3Rpb24gVGFiQnV0dG9uUm93KHtkYXRhLCBjbGFzc3ksIG9wZW50eXBlLCBjbG9zaW5nfToge2RhdGE6IEFycmF5PFRhYkRhdGVuc2F0ej4sIGNsYXNzeT86IHN0cmluZywgb3BlbnR5cGU6IHN0cmluZywgY2xvc2luZzogc3RyaW5nfSl7XG4gIGxldCByb3dzID0gW11cbiAgZm9yICggbGV0IGkgPSAwOyAgaSA8IGRhdGEubGVuZ3RoOyBpKysgKXtcbiAgICBpZihjbGFzc3kpe1xuICAgICAgcm93cy5wdXNoKDxUYWJCdXR0b24gY2xhc3N5PXtjbGFzc3l9IHR5cGU9e2RhdGFbaV0uY3NzbmFtZX0gbmFtZT17ZGF0YVtpXS5idXR0b25uYW1lfSBvcGVudHlwZT17b3BlbnR5cGV9IGNsb3Npbmc9e2Nsb3Npbmd9Lz4pXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICByb3dzLnB1c2goPFRhYkJ1dHRvbiB0eXBlPXtkYXRhW2ldLmNzc25hbWV9IG5hbWU9e2RhdGFbaV0uYnV0dG9ubmFtZX0gb3BlbnR5cGU9e29wZW50eXBlfSBjbG9zaW5nPXtjbG9zaW5nfS8+KVxuICAgIH1cbiAgfVxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJhbGlnbi1pdGVtcy1jZW50ZXIgbm9ybWFsLWJ1dHRvbnNcIj5cbiAgICB7cm93c31cbiAgPC9kaXY+OyBcbn1cblxuXG5cbmludGVyZmFjZSBUYWJCdXR0b25Qcm9wc3tcbiAgY2xhc3N5Pzogc3RyaW5nLCBcbiAgY2xvc2luZzogc3RyaW5nLCBcbiAgb3BlbnR5cGU6IHN0cmluZ1xuICAvKiBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZSwgICovXG4gIC8qIG9uQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudCwgTW91c2VFdmVudD4pID0+IHZvaWQsICAqL1xuICBuYW1lOiBzdHJpbmcsXG4gIHR5cGU6IHN0cmluZ1xufVxuLy8gbmV1ZXIgXG5leHBvcnQgZnVuY3Rpb24gVGFiQnV0dG9uKHtjbGFzc3ksIG5hbWUsIGNsb3NpbmcsIG9wZW50eXBlLCB0eXBlfTpUYWJCdXR0b25Qcm9wcyl7XG4gIGlmICghY2xhc3N5KXtcbiAgICBjbGFzc3kgPSBcIlwiXG4gIH1cbiAgbGV0IGNsYXNzbmFtZSA9IFwidGFiYnV0dG9uIFwiICsgdHlwZSArIFwiIFwiICsgY2xhc3N5OyBcbiAgcmV0dXJuKFxuICAgIDw+XG4gICAgPGJ1dHRvbiBjbGFzc05hbWU9e2NsYXNzbmFtZX0gb25DbGljaz17b3BlblRhYih7Y2l0eU5hbWU6IHR5cGUsIGNsYTogb3BlbnR5cGUsIHdlZzogY2xvc2luZyB9KX0+IHtuYW1lfTwvYnV0dG9uPlxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIUE1vcmVCdXR0b24oe25hbWV9OiB7bmFtZTogc3RyaW5nfSl7XG4gIGxldCBjID0gXCJ0aW1lbGluZXBlcnNvbnRhYnNcIlxuICByZXR1cm4oXG4gICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ0YWJsaW5rcyBocC1tb3JlLWJ1dHRvblwiIG9uQ2xpY2s9e29wZW5UYWIoe2NpdHlOYW1lOiBuYW1lLCBjbGE6IGN9KX0+IE1vcmU8L2J1dHRvbj5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQkZITW9yZUJ1dHRvbih7aXR9OiB7aXQ6IHN0cmluZ30pe1xuICByZXR1cm4oXG4gICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ0YWJsaW5rcyBiZmgtbW9yZS1idXR0b25cIiBvbkNsaWNrPXtleHBhbmRJdCh7aXR9KX0+IE1vcmU8L2J1dHRvbj5cbiAgKVxufVxuXG5mdW5jdGlvbiBleHBhbmRJdCh7aXR9OiB7aXQ6IHN0cmluZ30pe1xuICBjb25zdCBvcGVuaXQgPSAgKF9ldmVudCA6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQsIE1vdXNlRXZlbnQ+KSA9PntcbiAgICBjb25zb2xlLmxvZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpdCkpXG4gICAgY29uc29sZS5sb2coZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaXQpIS5zdHlsZS5kaXNwbGF5KVxuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpdCkhLnN0eWxlLmRpc3BsYXkgPT09IFwiYmxvY2tcIil7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpdCkhLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICB9XG4gICAgZWxzZSBpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpdCkhLnN0eWxlLmRpc3BsYXkgPT09IFwibm9uZVwiKXtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGl0KSEuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9wZW5pdDsgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuVGFiKHtjaXR5TmFtZSwgY2xhLCB3ZWd9OntjaXR5TmFtZTogc3RyaW5nLCBjbGE6IHN0cmluZywgd2VnPzogc3RyaW5nfSkge1xuICBjb25zdCBvcGVuY2l0eSA9ICAoZXZlbnQgOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50LCBNb3VzZUV2ZW50PikgPT57XG4gICAgdmFyIGksIHRhYmNvbnRlbnQsIHRhYmxpbmtzLCB3ZWdjb250ZW50O1xuICB0YWJjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGEpO1xuICBmb3IgKGkgPSAwOyBpIDwgdGFiY29udGVudC5sZW5ndGg7IGkrKykge1xuICAgICh0YWJjb250ZW50W2ldIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gIH1cbiAgdGFibGlua3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidGFiYnV0dG9uXCIpO1xuICBmb3IgKGkgPSAwOyBpIDwgdGFibGlua3MubGVuZ3RoOyBpKyspIHtcbiAgICB0YWJsaW5rc1tpXS5jbGFzc05hbWUgPSB0YWJsaW5rc1tpXS5jbGFzc05hbWUucmVwbGFjZShcIiBhY3RpdmVcIiwgXCJcIik7XG4gIH1cbiAgaWYgKHdlZyl7XG4gICAgd2VnY29udGVudCAgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHdlZyk7XG4gICAgZm9yIChpID0gMDsgaSA8IHdlZ2NvbnRlbnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICh3ZWdjb250ZW50W2ldIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgfVxuICB9XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNpdHlOYW1lKSEuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgZXZlbnQuY3VycmVudFRhcmdldC5jbGFzc05hbWUgKz0gXCIgYWN0aXZlXCI7XG4gIH1cbiAgcmV0dXJuIG9wZW5jaXR5OyBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJ1dHRvblRocmVlKCl7XG4gIHJldHVybihcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImJveHktM1wiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJidG4tbmV3IGJ0bi10aHJlZVwiPlxuICAgICAgICA8c3BhbiB0eXBlb2Y9XCJidXR0b25cIiBvbkNsaWNrPXtvcGVuQ2l0eSh7Y2l0eU5hbWU6IFwiYWJvdXRcIn0pfT5IT1ZFUiBNRTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCdXR0b25Ud28oKXtcbiAgcmV0dXJuKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYm94eS0yXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJ0bi1uZXcgYnRuLXR3b1wiPlxuICAgICAgICA8c3BhbiB0eXBlb2Y9XCJidXR0b25cIiBvbkNsaWNrPXtvcGVuQ2l0eSh7Y2l0eU5hbWU6IFwiYWJvdXRcIn0pfT5IT1ZFUiBNRTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCdXR0b25PbmUoe3RleHQsIG9wZW59OiB7dGV4dDpzdHJpbmcsIG9wZW46c3RyaW5nfSl7XG4gIHJldHVybihcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImJveHktMVwiPlxuICAgICAgPHNwYW4gdHlwZW9mPVwiYnV0dG9uXCIgb25DbGljaz17b3Blbkl0KHtpdDogb3Blbn0pfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnRuLW5ldyBidG4tb25lXCI+XG4gICAgICB7dGV4dH1cbiAgICAgIDwvZGl2Pjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBCdXR0b25Gb3VyRmlsbCgpe1xuICByZXR1cm4oXG4gICAgPGEgdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImljb24gaWNvbi1maWxsXCI+PGkgY2xhc3NOYW1lPVwiZmEgZmEtaG9tZVwiPjwvaT48L2E+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJ1dHRvbkZvdXJFbnRlcigpe1xuICByZXR1cm4oXG4gICAgPGEgdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImljb24gaWNvbi1lbnRlclwiPjxpIGNsYXNzTmFtZT1cImZhIGZhLWhvbWVcIj48L2k+PC9hPlxuICApXG59XG5leHBvcnQgZnVuY3Rpb24gQnV0dG9uRm91ckV4cGFuZCgpe1xuICByZXR1cm4oXG4gICAgPGEgdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImljb24gaWNvbi1leHBhbmRcIj48aSBjbGFzc05hbWU9XCJmYSBmYS1ob21lXCI+PC9pPjwvYT5cbiAgKVxufVxuZXhwb3J0IGZ1bmN0aW9uIEJ1dHRvbkZvdXJDb2xsYXBzZSgpe1xuICByZXR1cm4oXG4gICAgPGEgdHlwZT1cImJ1dHRvblwiICBjbGFzc05hbWU9XCJpY29uIGljb24tY29sbGFwc2VcIj48aSBjbGFzc05hbWU9XCJmYSBmYS1ob21lXCI+PC9pPjwvYT5cbiAgKVxufVxuZXhwb3J0IGZ1bmN0aW9uIEJ1dHRvbkZvdXJSb3RhdGUoKXtcbiAgcmV0dXJuKFxuICAgIDxhIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJpY29uIGljb24tcm90YXRlXCI+PGkgY2xhc3NOYW1lPVwiZmEgZmEtaG9tZVwiPjwvaT48L2E+XG4gIClcbn1cblxuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5JdCh7aXR9OiB7aXQ6IHN0cmluZ30pe1xuICBjb25zdCBvcGVuaXQgPSAgKGV2ZW50IDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudCwgTW91c2VFdmVudD4pID0+IHtcbiAgIC8qICBjb25zb2xlLmxvZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpdCkpICovXG4gICAgY29uc29sZS5sb2coZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaXQpPy5jbGFzc05hbWUpXG4gICAgbGV0IHRhYmNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiY3ljbGV0YWJcIik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJjb250ZW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgKHRhYmNvbnRlbnRbaV0gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgfVxuICAgIC8qIGNvbnNvbGUubG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGl0KSEuc3R5bGUuZGlzcGxheSkgKi9cbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGl0KSEuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICBcbiAgICBldmVudC5jdXJyZW50VGFyZ2V0LmNsYXNzTmFtZSArPSBcIiBhY3RpdmVcIjtcbiAgfVxuICByZXR1cm4gb3Blbml0OyBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5JdFR3byh7aXR9OiB7aXQ6IHN0cmluZ30pe1xuICBjb25zdCBvcGVuaXQgPSAgKGV2ZW50IDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudCwgTW91c2VFdmVudD4pID0+IHtcbiAgIC8qICBjb25zb2xlLmxvZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpdCkpICovXG4gICAgY29uc29sZS5sb2coZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaXQpPy5jbGFzc05hbWUpXG4gICAgbGV0IHRhYmNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiY29sIG91dHJlYWNoXCIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFiY29udGVudC5sZW5ndGg7IGkrKykge1xuICAgICAgICh0YWJjb250ZW50W2ldIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgIH1cbiAgICAvKiBjb25zb2xlLmxvZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpdCkhLnN0eWxlLmRpc3BsYXkpICovXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpdCkhLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgXG4gICAgZXZlbnQuY3VycmVudFRhcmdldC5jbGFzc05hbWUgKz0gXCIgYWN0aXZlXCI7XG4gIH1cbiAgcmV0dXJuIG9wZW5pdDsgXG59IiwgImltcG9ydCB7IEhQTW9yZUJ1dHRvbiB9IGZyb20gXCIuL0J1dHRvbnNcIjtcblxuZnVuY3Rpb24gVGltZUl0ZW0oe3RhZywgdGl0bGUsIHBpYywgYXV0aG9yLCB0YWJpZH06IEl0ZW1Qcm9wcyl7XG4gICAgbGV0IGNsID0gXCJ0LXRhZyBcIiArIHRhZztcbiAgICByZXR1cm4oXG4gICAgPGxpIGNsYXNzTmFtZT1cInRpbWVsaW5lb2xsaVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lbGluZS1pdGVtIG1vcmV0b3BcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbH0+XG4gICAgICAgICAgICAgICAge3RhZ31cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIiA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRsLWJ1dHRcIiBvbkNsaWNrPXtPcGVuKHtwZXJzb246IGF1dGhvcn0pfT4gPGltZyBjbGFzc05hbWU9XCJpbWctcm91bmRcIiBzcmM9e3BpY30gLz48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiID5cbiAgICAgICAgICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7bWFyZ2luVG9wOiBcIjEwcHhcIn19PnthdXRob3J9PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGFiXCI+XG4gICAgICAgICAgICAgICAgPEhQTW9yZUJ1dHRvbiBuYW1lPXt0YWJpZH0vPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICAgIClcbiAgfVxuICBcbiAgXG4gIFxuICBcbiAgZXhwb3J0IGZ1bmN0aW9uIEFsbFBvcHVzKCl7XG4gICAgbGV0IHJvd3MgPSBbXVxuICAgIGZvciAoIGxldCBpID0gMDsgIGkgPCBkYXRhLmxlbmd0aDsgaSsrICl7XG4gICAgICByb3dzLnB1c2goPFBvcHVwIHBlcnNvbj17ZGF0YVtpXS5hdXRob3J9PlxuICAgICAgICBIaVxuICAgICAgPC9Qb3B1cD4pXG4gICAgfVxuICAgIHJldHVybiByb3dzOyBcbiAgfVxuICBcbiAgZXhwb3J0IGZ1bmN0aW9uIFRpbWVIb3JpKHt0YWJ9Ont0YWI6IHN0cmluZ30pe1xuICAgIGxldCBub2Q7IFxuICAgIC8qIGNvbnNvbGUubG9nKFwiVGltZUhvcmlcIikgKi9cbiAgICBpZiAodGFiID09PSBcIlwiKXsgIFxuICAgICAgbm9kID0gPEFsbEl0ZW1zPjwvQWxsSXRlbXM+XG4gICAgICAvKiBjb25zb2xlLmxvZyhcIlRhYiA9ICcnXCIpICovXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICAvKiBjb25zb2xlLmxvZyhcIlRhYlwiKSAqL1xuICAgICAgbm9kID0gZ2V0SXRlbXNCeVR5cGUodGFiKTtcbiAgICB9XG4gICAgcmV0dXJuKFxuICAgIDxkaXY+XG4gIDxzZWN0aW9uIGNsYXNzTmFtZT1cInRpbWVsaW5lIHJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgPG9sIGNsYXNzTmFtZT1cInRpbWVsaW5lb2xcIj5cbiAgICAgIHtub2R9XG4gICAgPGxpIGNsYXNzTmFtZT1cInRpbWVsaW5lb2xsaVwiPjwvbGk+XG4gIDwvb2w+XG4gIFxuICBcbiAgPC9zZWN0aW9uPlxuICA8L2Rpdj5cbiAgXG4gICAgKVxuICB9XG4gIFxuICBmdW5jdGlvbiBPcGVuKHtwZXJzb259OntwZXJzb246IHN0cmluZ30pe1xuICAgIGNvbnN0IG9wZW5Qb3AgPSAgKF9ldmVudCA6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQsIE1vdXNlRXZlbnQ+KSA9PiB7XG4gICAgICB2YXIgcG9wdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwZXJzb24pO1xuICAgICAgcG9wdXAhLmNsYXNzTGlzdC50b2dnbGUoXCJzaG93XCIpO1xuICAgIH1cbiAgICByZXR1cm4gb3BlblBvcDsgXG4gICAgfVxuICBcbiAgaW50ZXJmYWNlIFBvcFByb3BzIHtcbiAgICBwZXJzb246IHN0cmluZywgXG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxuICAgIH1cbiAgICBcbiAgXG4gIGZ1bmN0aW9uIFBvcHVwKHtwZXJzb24sIGNoaWxkcmVufTogUG9wUHJvcHMpe1xuICAgIHJldHVybihcbiAgICAgIDxkaXYgaWQ9XCJteVBvcHVwXCIgY2xhc3NOYW1lPVwicG9wdXBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicG9wdXB0ZXh0XCIgaWQ9e3BlcnNvbn0+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtPcGVuKHtwZXJzb259KX0gPkNsb3NlPC9idXR0b24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgXG4gICAgICA8L2Rpdj5cbiAgICApXG4gICAgfVxuICBcbiAgXG4gICAgIGV4cG9ydCBmdW5jdGlvbiBvcGVuQ2l0eSh7Y2l0eU5hbWV9OntjaXR5TmFtZTogc3RyaW5nfSkge1xuICAgICAgICBjb25zdCBvcGVuY2l0eSA9ICAoZXZlbnQgOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50LCBNb3VzZUV2ZW50PikgPT57XG4gICAgICAgICAgdmFyIGksIHRhYmNvbnRlbnQsIHRhYmxpbmtzO1xuICAgICAgICB0YWJjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRhYmNvbnRlbnRcIik7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0YWJjb250ZW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgKHRhYmNvbnRlbnRbaV0gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgfVxuICAgICAgICB0YWJsaW5rcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ0YWJsaW5rc1wiKTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRhYmxpbmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGFibGlua3NbaV0uY2xhc3NOYW1lID0gdGFibGlua3NbaV0uY2xhc3NOYW1lLnJlcGxhY2UoXCIgYWN0aXZlXCIsIFwiXCIpO1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNpdHlOYW1lKSEuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5jbGFzc05hbWUgKz0gXCIgYWN0aXZlXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wZW5jaXR5OyBcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaW50ZXJmYWNlIEl0ZW1Qcm9wcyB7XG4gICAgICAgIHRpdGxlOiBzdHJpbmcgLFxuICAgICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICAgICAgICB0YWc6IHN0cmluZywgXG4gICAgICAgIHBpYzogc3RyaW5nLFxuICAgICAgICBhdXRob3I6IHN0cmluZywgXG4gICAgICAgIHRhYmlkOiBzdHJpbmdcbiAgICAgICAgfVxuICAgIFxuICAgICAgICBcblxuXG4gICAgICBmdW5jdGlvbiBBbGxJdGVtcygpe1xuICAgICAgICBsZXQgcm93cyA9IFtdXG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgIGkgPCBkYXRhLmxlbmd0aDsgaSsrICl7XG4gICAgICAgICAgcm93cy5wdXNoKDxUaW1lSXRlbSBcbiAgICAgICAgICAgIHRpdGxlPXtkYXRhW2ldLnRpdGxlfVxuICAgICAgICAgICAgcGljPXtkYXRhW2ldLnBpY31cbiAgICAgICAgICAgIHRhZz17ZGF0YVtpXS50YWd9XG4gICAgICAgICAgICBhdXRob3I9e2RhdGFbaV0uYXV0aG9yfVxuICAgICAgICAgICAgdGFiaWQ9e2RhdGFbaV0udGFiaWR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtkYXRhW2ldLnRleHR9XG4gICAgICAgICAgICA8L1RpbWVJdGVtPilcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93czsgXG4gICAgICB9XG5cbiAgICAgIFxuICAgICAgZXhwb3J0IGZ1bmN0aW9uIGdldEl0ZW1zQnlUeXBlKHRhYmlkOiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IHJvd3MgPSBbXVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0YWJpZCA9PT0gZGF0YVtpXS50YWcpIHtcbiAgICAgICAgICAgICAgICByb3dzLnB1c2goPFRpbWVJdGVtXG4gICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e2RhdGFbaV0udGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIHBpYz17ZGF0YVtpXS5waWN9XG4gICAgICAgICAgICAgICAgICAgIHRhZz17ZGF0YVtpXS50YWd9XG4gICAgICAgICAgICAgICAgICAgIGF1dGhvcj17ZGF0YVtpXS5hdXRob3J9XG4gICAgICAgICAgICAgICAgICAgIHRhYmlkPXtkYXRhW2ldLnRhYmlkfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2RhdGFbaV0udGV4dH1cbiAgICAgICAgICAgICAgICA8L1RpbWVJdGVtPilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93czsgXG4gICAgfVxuICAgIFxuICAgICAgXG4gICAgICBsZXQgZGF0YSA9IFtcbiAgICAgICAge1xuICAgICAgICB0aXRsZTogXCJGaXJzdCBJbXByZXNzaW9uXCIsXG4gICAgICAgIHBpYzogXCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLFxuICAgICAgICB0YWc6IFwiUGF0aWVudFwiLFxuICAgICAgICBhdXRob3I6IFwiTWF4IEJlY2ttYW5uXCIsXG4gICAgICAgIHRhYmlkOiBcIkludk1heDFcIixcbiAgICAgICAgdGV4dDogXCIgXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICB0aXRsZTogXCJQaHlzaW90aGVyYXBpZVwiICxcbiAgICAgICAgcGljOiBcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIsXG4gICAgICAgIHRhZzogIFwiTWVkaWNhbCBQcm9mZXNzaW9uYWxcIixcbiAgICAgICAgYXV0aG9yOiBcIkthdHJpbiBXZXN0aG9mZlwiLFxuICAgICAgICB0YWJpZDogXCJJbnZXZXN0aG9mZlwiLFxuICAgICAgICB0ZXh0OiBcIlRleHRcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiBcIlwiICxcbiAgICAgICAgICBwaWM6IFwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIixcbiAgICAgICAgICB0YWc6ICBcIk1lZGljYWwgUHJvZmVzc2lvbmFsXCIsXG4gICAgICAgICAgYXV0aG9yOiBcIkNyaXN0aWFuLUdhYnJpZWwgT2xhcml1XCIsXG4gICAgICAgICAgdGFiaWQ6IFwiSW52T2xhcml1XCIsXG4gICAgICAgICAgdGV4dDogXCJUZXh0XCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogXCJcIiAsXG4gICAgICAgICAgcGljOiBcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIsXG4gICAgICAgICAgdGFnOiAgXCJQYXRpZW50XCIsXG4gICAgICAgICAgYXV0aG9yOiBcIkp1bGlhXCIsXG4gICAgICAgICAgdGFiaWQ6IFwiSW52SnVsaWFcIixcbiAgICAgICAgICB0ZXh0OiBcIlRleHRcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiBcIlwiICxcbiAgICAgICAgICBwaWM6IFwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIixcbiAgICAgICAgICB0YWc6ICBcIkFjYWRlbWlhXCIsXG4gICAgICAgICAgYXV0aG9yOiBcIk5pY29sZSBGcmllZGxlaW5cIixcbiAgICAgICAgICB0YWJpZDogXCJJbnZGcmllZGxlaW5cIixcbiAgICAgICAgICB0ZXh0OiBcIlRleHRcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiBcIkFwcHJvYWNoPz9cIiAsXG4gICAgICAgICAgcGljOiBcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIsXG4gICAgICAgICAgdGFnOiAgXCJBY2FkZW1pYVwiLFxuICAgICAgICAgIGF1dGhvcjogXCJQcm9mLiBEci4gU3RlZmFuIEhhbW1lclwiLFxuICAgICAgICAgIHRhYmlkOiBcIkludkhhbW1lclwiLFxuICAgICAgICAgIHRleHQ6IFwiVGV4dFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogXCJBcHByb2FjaD8/XCIgLFxuICAgICAgICAgICAgcGljOiBcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIsXG4gICAgICAgICAgICB0YWc6ICBcIkFjYWRlbWlhXCIsXG4gICAgICAgICAgICBhdXRob3I6IFwiUHJvZi4gRHIuIENocmlzdG9waCBXZWJlclwiLFxuICAgICAgICAgICAgdGFiaWQ6IFwiSW52V2ViZXJcIixcbiAgICAgICAgICAgIHRleHQ6IFwiVGV4dFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiXCIgLFxuICAgICAgICAgICAgICBwaWM6IFwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIixcbiAgICAgICAgICAgICAgdGFnOiAgXCJBY2FkZW1pYVwiLFxuICAgICAgICAgICAgICBhdXRob3I6IFwiTWF0dGlqcyBCdWxjYWVuXCIsXG4gICAgICAgICAgICAgIHRhYmlkOiBcIkludkJ1bGNhZW4xXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiVGV4dFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IFwiRmlyc3QgU3RlcHMgaW4gTE5QXCIgLFxuICAgICAgICAgIHBpYzogXCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLFxuICAgICAgICAgIHRhZzogIFwiQWNhZGVtaWFcIixcbiAgICAgICAgICBhdXRob3I6IFwiRHIuIEthdGhhcmluYSBLb2xvbmtvXCIsXG4gICAgICAgICAgdGFiaWQ6IFwiSW52S29sb25rb1wiLFxuICAgICAgICAgIHRleHQ6IFwiVGV4dFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IFwiUGh5c2lvdGhlcmFwaWUgbGl2ZVwiICxcbiAgICAgICAgICBwaWM6IFwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIixcbiAgICAgICAgICB0YWc6ICBcIk1lZGljYWwgUHJvZmVzc2lvbmFsXCIsXG4gICAgICAgICAgYXV0aG9yOiBcIkthdHJpbiBXZXN0aG9mZlwiLFxuICAgICAgICAgIHRhYmlkOiBcIkJlc1dlc3Rob2ZmXCIsXG4gICAgICAgICAgdGV4dDogXCJUZXh0XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiBcIkh5Z2llbmUgQ29uY2VwdFwiLFxuICAgICAgICAgIHBpYzogXCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLFxuICAgICAgICAgIHRhZzogXCJQYXRpZW50XCIsXG4gICAgICAgICAgYXV0aG9yOiBcIk1heCBCZWNrbWFublwiLFxuICAgICAgICAgIHRhYmlkOiBcIkludk1heDJcIixcbiAgICAgICAgICB0ZXh0OiBcIiBcIlxuICAgICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogXCJcIiAsXG4gICAgICAgICAgcGljOiBcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIsXG4gICAgICAgICAgdGFnOiAgXCJQYXRpZW50XCIsXG4gICAgICAgICAgYXV0aG9yOiBcIkpvc2h1YVwiLFxuICAgICAgICAgIHRhYmlkOiBcIkludkpvc2h1YVwiLFxuICAgICAgICAgIHRleHQ6IFwiVGV4dFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IFwiXCIgLFxuICAgICAgICAgIHBpYzogXCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLFxuICAgICAgICAgIHRhZzogIFwiSW5kdXN0cnlcIixcbiAgICAgICAgICBhdXRob3I6IFwiUk5hbGVcIixcbiAgICAgICAgICB0YWJpZDogXCJJbnZSTmFsZVwiLFxuICAgICAgICAgIHRleHQ6IFwiVGV4dFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IFwiXCIgLFxuICAgICAgICAgIHBpYzogXCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLFxuICAgICAgICAgIHRhZzogIFwiQWNhZGVtaWFcIixcbiAgICAgICAgICBhdXRob3I6IFwiTWF0dGlqcyBCdWxjYWVuXCIsXG4gICAgICAgICAgdGFiaWQ6IFwiSW52QnVsY2FlbjJcIixcbiAgICAgICAgICB0ZXh0OiBcIlRleHRcIixcbiAgICAgICAgICB9XG4gICAgICAgIF0iLCAiXG5pbXBvcnQgeyBvcGVuSXQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9CdXR0b25zXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBFbmdpbmVlcmluZygpIHtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBtdC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICA8RW5naW5lZXJpbmdDeWNsZVRhYi8+XG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN5Y2xldGFiXCIgaWQ9XCJvdmVydmlld1wiIHN0eWxlPXt7ZGlzcGxheTogXCJibG9ja1wifX0+XG4gICAgICAgICAgICAgPGgzPk92ZXJ2aWV3PC9oMz5cbiAgICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3ljbGV0YWJcIiBpZD1cImxlYXJuaW5nXCIgc3R5bGU9e3tkaXNwbGF5OiBcIm5vbmVcIn19PlxuICAgICAgICAgICAgIDxoMz5MZWFybmluZzwvaDM+XG4gICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN5Y2xldGFiXCIgaWQ9XCJ0ZXN0aW5nXCIgc3R5bGU9e3tkaXNwbGF5OiBcIm5vbmVcIn19PlxuICAgICAgICAgICAgIDxoMz5UZXN0aW5nPC9oMz5cbiAgICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3ljbGV0YWJcIiBpZD1cImJ1aWxkaW5nXCIgc3R5bGU9e3tkaXNwbGF5OiBcIm5vbmVcIn19PlxuICAgICAgICAgICAgIDxoMz5CdWlsZGluZzwvaDM+XG4gICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN5Y2xldGFiXCIgaWQ9XCJkZXNpZ25pbmdcIiBzdHlsZT17e2Rpc3BsYXk6IFwibm9uZVwifX0+XG4gICAgICAgICAgICAgPGgzPkRlc2lnbmluZzwvaDM+XG4gICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8c2VjdGlvbiBpZD1cIlJOQWJpbmRpbmdwcm90ZWluXCI+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgPHNlY3Rpb24gaWQ9XCJSTkFiaW5kaW5ncHJvdGVpblwiPlxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgIDxzZWN0aW9uIGlkPVwiUk5BYmluZGluZ3Byb3RlaW5cIj5cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICA8c2VjdGlvbiBpZD1cIlJOQWJpbmRpbmdwcm90ZWluXCI+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDwvZGl2PlxuICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9IFxuXG4gIFxuXG5mdW5jdGlvbiBFbmdpbmVlcmluZ0N5Y2xlVGFiKCl7XG4gICAgcmV0dXJuKFxuIDxzdmcgY2xhc3NOYW1lPVwicm90YXRlLWxpbmVhci1pbmZpbml0ZVwiXG4gICAgd2lkdGg9XCIxMDAlXCJcbiAgICBoZWlnaHQ9XCIxMDAlXCJcbiAgICB2aWV3Qm94PVwiMCAwIDEzMyAxMzNcIlxuICAgIGlkPVwic3ZnMjVcIlxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgIDxkZWZzXG4gICAgICBpZD1cImRlZnMxXCI+XG4gICAgIDwvZGVmcz5cbiAgIDxnXG4gICAgICBpZD1cIkxheWVyXzJcIlxuICAgICAgZGF0YS1uYW1lPVwiTGF5ZXIgMlwiXG4gICAgICBzdHlsZT17e3N0cm9rZVdpZHRoOlwiNlwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIn19PlxuICAgICA8Z1xuICAgICAgICBpZD1cIlBsYXNtaWRcIlxuICAgICAgICBzdHlsZT17e3N0cm9rZVdpZHRoOlwiNlwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIn19PlxuICAgICAgIDxnXG4gICAgICAgICAgaWQ9XCJnMjVcIlxuICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg3LjUwMDk3OCwzLjA1MDQ4OTgpXCI+XG4gICAgICAgICAgICA8YSAgdHlwZW9mPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwic3ZnLWJ1dHRvblwiIG9uQ2xpY2s9e29wZW5JdCh7aXQ6IFwiZGVzaWduaW5nXCJ9KX0+XG4gICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiY2xzLTdcIlxuICAgICAgICAgICAgZD1cIm0gNDIuMDUsMTE1LjU5IGMgMjcuNzcsOS4xOSA1Ny44MywtNC43OSA2OS43NiwtMzIuMjNcIlxuICAgICAgICAgICAgIGlkPVwicGF0aDIyXCJcbiAgICAgICAgICAgIHN0eWxlPXt7c3Ryb2tlOlwiI2Y0Y2MxZVwiLHN0cm9rZVdpZHRoOlwiMTVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIn19IC8+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgPC9nPlxuICAgICAgIDxnXG4gICAgICAgICAgaWQ9XCJnMjZcIlxuICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg4LjAwMTk2OTksMi44NDE4MjIzKVwiXG4gICAgICAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjZcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCJ9fT4gIFxuICAgICAgICAgPHBvbHlnb25cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImNscy0xM1wiXG4gICAgICAgICAgICBwb2ludHM9XCIxMTIuMDcsODMuMzYgMTEwLjk0LDc2LjI3IDExNy42NSw3OC44NCBcIlxuICAgICAgICAgICAgIGlkPVwicG9seWdvbjI1XCJcbiAgICAgICAgICAgIHN0eWxlPXt7ZmlsbDpcIiM4NTBmNzhcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2VXaWR0aDpcIjZcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCJ9fVxuICAgICAgICAgICAgdHJhbnNmb3JtPVwibWF0cml4KDIuOTgwNjI1OSwwLDAsMi45ODA2MjU5LC0yMjUuNDM3MjIsLTE1Ni40NTEyMylcIiAvPlxuICAgICAgICAgICAgPGEgIHR5cGVvZj1cImJ1dHRvblwiIGNsYXNzTmFtZT1cInN2Zy1idXR0b25cIiBvbkNsaWNrPXtvcGVuSXQoe2l0OiBcImxlYXJuaW5nXCJ9KX0+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjbHMtMTJcIlxuICAgICAgICAgICAgICBkPVwiTSAxMTQsNzguNTUgQyAxMjMuNDUsNTAuODYgMTEwLDIwLjc1IDgyLjY2LDguNlwiXG4gICAgICAgICAgICAgIGlkPVwicGF0aDI1XCJcbiAgICAgICAgICAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjE1XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZTpcIiM4NTBmNzhcIixzdHJva2VPcGFjaXR5OlwiMVwifX0gLz4gXG4gICAgICAgICAgIFxuICAgICAgICAgPHRleHRcbiAgICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6XCIxNy4zMzMzcHhcIixsaW5lSGVpZ2h0OlwiMFwiLGZvbnRGYW1pbHk6XCJBcmlhbFwiLGZpbGw6XCIjMDAwMDAwXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOlwiMTVcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgICAgICBpZD1cInRleHQzMVwiXG4gICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNS42OTAyMTk0LC0wLjExNTUxODgzKVwiPjx0ZXh0UGF0aFxuICAgICAgICAgICAgIHhsaW5rSHJlZj1cIiNwYXRoMjVcIlxuICAgICAgICAgICAgICBpZD1cInRleHRQYXRoMzNcIj5MZWFybjx0c3BhblxuICAgICAgICAgIGlkPVwidHNwYW4zMVwiIC8+PC90ZXh0UGF0aD48L3RleHQ+ICA8L2E+XG4gICAgICAgPC9nPlxuICAgICAgIDxnXG4gICAgICAgICAgaWQ9XCJnMjdcIlxuICAgICAgICAgIHN0eWxlPXt7c3Ryb2tlV2lkdGg6XCI2XCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwifX1cbiAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoOC4wMDE5Njk5LDIuODQxODIyMylcIj5cbiAgICAgICAgIDxwb2x5Z29uXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJjbHMtMTBcIlxuICAgICAgICAgICAgIHBvaW50cz1cIjYyLjUzLDcuMTIgNjMuNDcsMCA2OS4xNyw0LjM3IFwiXG4gICAgICAgICAgICBpZD1cInBvbHlnb24yM1wiXG4gICAgICAgICAgICAgdHJhbnNmb3JtPVwibWF0cml4KDIuNzcxMjI2MywwLjU4MTQ3NTQ4LC0wLjU4MTQ3NTQ4LDIuNzcxMjI2MywtOTYuNTg3ODI4LC0zOS43NDgwNzEpXCJcbiAgICAgICAgICAgIHN0eWxlPXt7ZmlsbDpcIiNhMGE3ZjNcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2VXaWR0aDpcIjZcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCJ9fVxuICAgICAgICAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci14PVwiMy42MTczNzUxXCJcbiAgICAgICAgICAgIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteT1cIjUuMTk3ODg1MlwiIC8+XG4gICAgICAgICAgICA8YSAgdHlwZW9mPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwic3ZnLWJ1dHRvblwiIG9uQ2xpY2s9e29wZW5JdCh7aXQ6IFwidGVzdGluZ1wifSl9PlxuICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImNscy05XCJcbiAgICAgICAgICAgIGQ9XCJNIDc4LjU5OTExMSw3LjU0NjgyNjQgQyA0My44MjAzNDYsLTIuNjE3NzU4OCAxMy45NTY3NDYsMTQuMjg2MDQ2IDQuMjEwNjI4MSw0Ni4zNjg3NDlcIlxuICAgICAgICAgICAgaWQ9XCJwYXRoMjNcIlxuICAgICAgICAgICAgc3R5bGU9e3tzdHJva2U6XCIjYTBhN2YzXCIsc3Ryb2tlV2lkdGg6XCIxNVwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIixzdHJva2VPcGFjaXR5OlwiMVwifX0gLz5cbiAgICAgICAgIDx0ZXh0XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6XCIxNy4zMzMzcHhcIixsaW5lSGVpZ2h0OlwiMFwiLGZvbnRGYW1pbHk6XCJBcmlhbFwiLGZpbGw6XCIjMDAwMDAwXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOlwiNlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICAgICAgIGlkPVwidGV4dDI4XCJcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0wLjAzMDIzNTA2LC01Ljk2MDIzMzYpXCI+PHRleHRQYXRoXG4gICAgICAgICAgICB4bGlua0hyZWY9XCIjcGF0aDIzXCJcbiAgICAgICAgICAgICBpZD1cInRleHRQYXRoMjhcIj5UZXN0PC90ZXh0UGF0aD48L3RleHQ+IDwvYT5cbiAgICAgICA8L2c+XG4gICAgICAgPGdcbiAgICAgICAgICBpZD1cImcyOFwiXG4gICAgICAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjZcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCJ9fVxuICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg4LjAwMTk2OTksMi44NDE4MjIzKVwiPlxuICAgICAgICAgPHBvbHlnb25cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImNscy0xM1wiXG4gICAgICAgICAgICBwb2ludHM9XCIxMTcuNjUsNzguODQgMTEyLjA3LDgzLjM2IDExMC45NCw3Ni4yNyBcIlxuICAgICAgICAgICAgIGlkPVwicG9seWdvbjI1LTZcIlxuICAgICAgICAgICAgc3R5bGU9e3tmaWxsOlwiI2Y1N2QyMlwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZVdpZHRoOlwiNlwiLHN0cm9rZURhc2hhcnJheTpcIm5vbmVcIn19XG4gICAgICAgICAgICB0cmFuc2Zvcm09XCJtYXRyaXgoLTIuOTY1MDMxNCwwLjMwNDQ5ODkzLC0wLjMwNDQ5ODkzLC0yLjk2NTAzMTQsMzY0Ljg0MDY3LDI0OS4yODI0OSlcIiAvPlxuICAgICAgICAgICAgPGEgIHR5cGVvZj1cImJ1dHRvblwiIGNsYXNzTmFtZT1cInN2Zy1idXR0b25cIiBvbkNsaWNrPXtvcGVuSXQoe2l0OiBcImJ1aWxkaW5nXCJ9KX0+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImNscy0xMVwiXG4gICAgICAgICAgICBkPVwiTSAyLjY2NTk3NTMsNTAuOTUzNTA1IEMgLTIuMDk1NjY5NCw3Mi43Mjc5MTUgMTAuOTM2ODY2LDEwMi45NDI3MyAzNi42NTYyMzQsMTEzLjYyODM0XCJcbiAgICAgICAgICAgICBpZD1cInBhdGgyNFwiXG4gICAgICAgICAgICBzdHlsZT17e3N0cm9rZVdpZHRoOlwiMTVcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlOlwiI2Y1N2QyMlwiLHN0cm9rZU9wYWNpdHk6XCIxXCJ9fSAvPlxuICAgICAgICAgPHRleHRcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTpcIjE3LjMzMzNweFwiLGxpbmVIZWlnaHQ6XCIwXCIsZm9udEZhbWlseTpcIkFyaWFsXCIsZmlsbDpcIiMwMDAwMDBcIixmaWxsT3BhY2l0eTpcIjFcIixzdHJva2U6XCJub25lXCIsc3Ryb2tlV2lkdGg6XCIxNVwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpcIjFcIixwYWludE9yZGVyOlwiZmlsbCBtYXJrZXJzIHN0cm9rZVwifX1cbiAgICAgICAgICAgIGlkPVwidGV4dDMyXCJcbiAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNS43MTEwMzE1LDEuNzQ1MzI0MylcIj48dGV4dFBhdGhcbiAgICAgICAgICAgICB4bGlua0hyZWY9XCIjcGF0aDI0XCJcbiAgICAgICAgICAgICAgaWQ9XCJ0ZXh0UGF0aDMyXCI+QnVpbGQ8dHNwYW5cbiAgICBpZD1cInRzcGFuMzJcIiAvPjwvdGV4dFBhdGg+PC90ZXh0PiA8L2E+XG4gICAgICAgPC9nPlxuICAgICAgIDxwb2x5Z29uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiY2xzLThcIlxuICAgICAgICAgIHBvaW50cz1cIjM3LjIyLDExMy43NCA0NC4zLDExMi41NiA0MS43OCwxMTkuMjggXCJcbiAgICAgICAgICBpZD1cInBvbHlnb24yMlwiXG4gICAgICAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDpcIjZcIixzdHJva2VEYXNoYXJyYXk6XCJub25lXCIsZmlsbDpcIiNmNGNjMWVcIixmaWxsT3BhY2l0eTpcIjFcIn19XG4gICAgICAgICAgdHJhbnNmb3JtPVwibWF0cml4KDIuODI0ODU4OCwwLDAsMi44MjQ4NTg4LC02Ny43OTc3ODEsLTIwNy45Njk3NylcIiAvPlxuICAgICAgICAgIDxhICB0eXBlb2Y9XCJidXR0b25cIiBjbGFzc05hbWU9XCJzdmctYnV0dG9uXCIgb25DbGljaz17b3Blbkl0KHtpdDogXCJkZXNpZ25pbmdcIn0pfT5cbiAgICAgICA8dGV4dFxuICAgICAgICAgIFxuICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6XCIxNy4zMzMzcHhcIixsaW5lSGVpZ2h0OlwiMFwiLGZvbnRGYW1pbHk6XCJBcmlhbFwiLGZpbGw6XCIjMDAwMDAwXCIsZmlsbE9wYWNpdHk6XCIxXCIsc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOlwiMTVcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHN0cm9rZU9wYWNpdHk6XCIxXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgICAgICAgaWQ9XCJ0ZXh0MjlcIlxuICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg4LjQwNTI5MjEsOC44NTUzMzM0KVwiPjx0ZXh0UGF0aFxuICAgICAgICAgIHhsaW5rSHJlZj1cIiNwYXRoMjJcIlxuICAgICAgICAgIGlkPVwidGV4dFBhdGgzNFwiPkRlc2lnbjx0c3BhblxuICAgICAgICAgIGlkPVwidHNwYW4yOVwiIC8+PC90ZXh0UGF0aD48L3RleHQ+IDwvYT5cbiAgICAgPC9nPlxuICAgPC9nPlxuICAgPGEgIHR5cGVvZj1cImJ1dHRvblwiIGNsYXNzTmFtZT1cInN2Zy1idXR0b25cIiBvbkNsaWNrPXtvcGVuSXQoe2l0OiBcIm92ZXJ2aWV3XCJ9KX0+XG4gICA8Y2lyY2xlXG4gICAgIHN0eWxlPXt7b3BhY2l0eTpcIjAuODVcIixmaWxsOlwiI2UyZGFkN1wiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZVdpZHRoOlwiMTVcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIscGFpbnRPcmRlcjpcImZpbGwgbWFya2VycyBzdHJva2VcIn19XG4gICAgIGlkPVwicGF0aDFcIlxuICAgICBjeD1cIjY3LjkxNjIxNFwiXG4gICAgIGN5PVwiNjMuMjE0MDA1XCJcbiAgICAgcj1cIjIwXCIgLz5cbiAgPHRleHRcbiAgICAgc3R5bGU9e3tmb250U2l6ZTpcIjhweFwiLGxpbmVIZWlnaHQ6XCIwXCIsZm9udEZhbWlseTpcIkFyaWFsXCIsb3BhY2l0eTpcIjAuODVcIixmaWxsOlwiIzAwMDAwMFwiLGZpbGxPcGFjaXR5OlwiMVwiLHN0cm9rZVdpZHRoOlwiMTVcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsc3Ryb2tlRGFzaGFycmF5Olwibm9uZVwiLHBhaW50T3JkZXI6XCJmaWxsIG1hcmtlcnMgc3Ryb2tlXCJ9fVxuICAgICB4PVwiNTAuOTI5ODI1XCJcbiAgICAgeT1cIjY2LjY3NjY3NFwiXG4gICAgIGlkPVwidGV4dDFcIj5cbiAgICAgIDx0c3BhblxuICAgICAgIGlkPVwidHNwYW4xXCJcbiAgICAgICB4PVwiNTAuOTI5ODI1XCJcbiAgICAgICB5PVwiNjYuNjc2Njc0XCJcbiAgICAgICBzdHlsZT17e2ZvbnRTaXplOlwiOHB4XCJ9fT5PdmVydmlldzwvdHNwYW4+PC90ZXh0PiBcbiAgICAgICA8L2E+XG5cbiA8L3N2Zz5cbiBcbiAgICApXG4gfVxuIiwgIlxuXG5leHBvcnQgZnVuY3Rpb24gRXhwZXJpbWVudHMoKSB7XG4gIFxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBtdC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLWxnLThcIj5cbiAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuIiwgIlxuXG5leHBvcnQgZnVuY3Rpb24gTm90ZWJvb2soKSB7XG4gXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IG10LTRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbGctOFwiPlxuICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiXG5cbmV4cG9ydCBmdW5jdGlvbiBSZXN1bHRzKCkge1xuXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgbXQtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1sZy01XCI+XG4gICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IG10LTRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbGctOFwiPlxuICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIFNhZmV0eSgpIHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgbXQtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IG10LTRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgIFxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IG10LTRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbGctOFwiPlxuICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbGctNFwiPlxuICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiLy8gVGhlIG1haW4gdGFiIGhhcyB0byBiZSBnaXZlbiBkaXNwbGF5OiBibG9jazsgdmlhIGlkIGNzcyBvciBiZSBnaXZlbiB0aGUgaWQgXCJGaXJzdFwiXG5leHBvcnQgZnVuY3Rpb24gQnV0dG9uUm93VGFicyh7ZGF0YSwgY2xhfToge2RhdGE6IEFycmF5PFRhYkRhdGVuc2F0ej4sIGNsYTogc3RyaW5nfSkge1xuICAgIGxldCByb3dzID0gW11cbiAgICBmb3IgKCBsZXQgaSA9IDA7ICBpIDwgZGF0YS5sZW5ndGg7IGkrKyApe1xuICAgICAgcm93cy5wdXNoKFxuICAgICAgICA8ZGl2IGlkPXtkYXRhW2ldLmNzc25hbWV9IGNsYXNzTmFtZT17Y2xhfT5cbiAgICAgICAgICAgIHtkYXRhW2ldLm5vZGV9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gcm93czsgXG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIEJGSFN0eWxlVGFicyh7ZGF0YSwgY2xhfToge2RhdGE6IEFycmF5PE5vZGVEYXRlbnNhdHo+LCBjbGE6IHN0cmluZ30pIHtcbiAgICBsZXQgcm93cyA9IFtdXG4gICAgZm9yICggbGV0IGkgPSAwOyAgaSA8IGRhdGEubGVuZ3RoOyBpKysgKXtcbiAgICAgIGlmIChkYXRhW2ldLmNzc25hbWUgPT09IFwidGltZWxpbmVcIil7XG4gICAgICAgIHJvd3MucHVzaChcbiAgICAgICAgICA8ZGl2IGlkPXtkYXRhW2ldLmNzc25hbWV9IGNsYXNzTmFtZT17Y2xhfSBzdHlsZT17e2Rpc3BsYXk6IFwiYmxvY2tcIn19PlxuICAgICAgICAgICAgICB7ZGF0YVtpXS5ub2RlfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgICB9XG4gICAgICBlbHNle1xuICAgICAgcm93cy5wdXNoKFxuICAgICAgICA8ZGl2IGlkPXtkYXRhW2ldLmNzc25hbWV9IGNsYXNzTmFtZT17Y2xhfT5cbiAgICAgICAgICAgIHtkYXRhW2ldLm5vZGV9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcm93czsgXG4gIH0iLCAiXG5cbmV4cG9ydCBmdW5jdGlvbiBCbG9ja1F1b3RlKHt0ZXh0LCBjaXRlfToge3RleHQ6IHN0cmluZzsgY2l0ZTogc3RyaW5nfSl7XG4gICAgcmV0dXJuKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2NrcXVvdGUtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3F1b3RlXCI+XG4gICAgICAgICAgICAgICAgPGgyPlxuICAgICAgICAgICAgICAgICAgICB7dGV4dH1cbiAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgIDxoND48ZW0+e2NpdGV9PC9lbT48L2g0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCbG9ja1F1b3RlQih7dGV4dCwgY2l0ZSwgaWR9OiB7dGV4dDogc3RyaW5nOyBjaXRlOiBzdHJpbmcsIGlkPzogc3RyaW5nfSl7XG4gICAgaWYgKGlkKXtcbiAgICAgICAgbGV0IGggPSBcIiNcIiArIHtpZH1cbiAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3F1b3RlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2NrcXVvdGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0ZXh0fVxuICAgICAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgICAgICA8aDQ+PGVtPntjaXRlfTwvZW0+IDxhIGhyZWY9e2h9PjxzdXA+e2lkfTwvc3VwPjwvYT48L2g0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgIFxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICByZXR1cm4oXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2NrcXVvdGUtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2txdW90ZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgyPlxuICAgICAgICAgICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgICAgIDxoND48ZW0+e2NpdGV9PC9lbT48L2g0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxuICAgIFxufVxuXG5cbi8qIDxzcGFuPldpbnN0b24gQ2h1cmNoaWxsPC9zcGFuPlxuICA8YmxvY2txdW90ZT5cbiAgICA8cD48aT4mbGRxdW87U3VjY2VzcyBjb25zaXN0cyBvZiBnb2luZyBmcm9tIGZhaWx1cmUgdG8gZmFpbHVyZSB3aXRob3V0IGxvc3Mgb2YgZW50aHVzaWFzbS4mcmRxdW87IDwvaT48L3A+XG4gIDwvYmxvY2txdW90ZT4gKi8iLCAiLyogXG4tIHNlaXR3XHUwMEU0cnRzIFxuLSBtaXQgRmFyYmVuIHVuZCBUZXh0IGFuemVpZ2VuIHdvenUgZGllIGdlaFx1MDBGNnJlbiBcbi0gYmVpIHNob3cgbW9yZSB1bnRlbiBkcnVudGVyIFRhYnMgXHUwMEY2ZmZuZW5cbi0gd2VubiBtYW4gYXVmIGRpZSBQZXJzb24ga2xpY2t0IHNvbGwgZXMgSW5mb3MgXHUwMEZDYmVyIGRpZSBQZXJzb24gYW56ZWlnZW4gXG4tIGthbm4gbW4gZGllIEthcnRlbiBuYWNoIExpbmtzIHVuZCBuYWNoIHJlY2h0cyBhdXN3ZWl0ZW4gemIgZlx1MDBGQ3IgTWVociBpbmZvcyBmXHUwMEZDciBkaWUgUGVyc29uPyBcbi0gTWVpbGVuc3RlaW5lIGFscyBQb3B1cFxuLSBGaWx0ZXIgbWl0IEhhbGJrcmVpc0RpbmcgYWxzIFRhYnN0ZXVlcnVuZyB8IEVpbnRlaWx1bmcgbmFjaCBCZXJlaWNoIChBY2FkZW1pYSwgSW5zdXN0cnksIC4uLiwgdW5kIGF1Y2ggbmFjaCBEZWxpdmVyeSB1bmQgTWVjaGFuaXNtKSBcbi0gRE5BIFN0cmFuZyBhbHMgVGltZWxpbmU/IFxuKi9cblxuXG4vKiAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgPGgzPk5hbWU8L2gzPlxuICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInQtdGFnIFRhZ1wiPlxuICAgICAgICAgICAgICAgIEJlcnVmXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5PcmlnaW5hbCBsYW5ndWFnZTogR2VybWFuPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPEJsb2NrUXVvdGVCIHRleHQ9XCJRdW90ZVwiIGNpdGU9XCIuXCI+PC9CbG9ja1F1b3RlQj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cIm1pZGRsZSBzZWNocHJvXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIi8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aDQ+QWltIG9mIGNvbnRhY3Q8L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgICAgPGg0Pkluc2lnaHRzPC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5DbGFyaWZpY2F0aW9uPC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5JbXBsZW1lbnRhdGlvbjwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+ICovXG5cblxuLypcbiAgPGg0PkFpbSBvZiBjb250YWN0PC9oND5cbiAgPHA+PC9wPlxuICA8aDQ+SW5zaWdodHM8L2g0PlxuICA8cD48L3A+XG4gIDxoND5DbGFyaWZpY2F0aW9uPC9oND5cbiAgPHA+PC9wPlxuICA8aDQ+SW1wbGVtZW50YXRpb248L2g0PlxuICA8cD48L3A+IFxuICAgICAgICAgICAgKi9cbmltcG9ydCB7IFRpbWVIb3JpIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvSG9yaXpvbnRhbFRpbWVsaW5lXCI7XG5pbXBvcnQgeyBBbGxQb3B1cyB9IGZyb20gXCIuLi9jb21wb25lbnRzL0hvcml6b250YWxUaW1lbGluZVwiO1xuaW1wb3J0IHsgQkZIU3R5bGVUYWJzLCBCdXR0b25Sb3dUYWJzIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGFic1wiO1xuaW1wb3J0IHsgIEJ1dHRvbk9uZSwgVGFiQnV0dG9uUm93LCBvcGVuVGFiIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvQnV0dG9uc1wiO1xuaW1wb3J0IHsgQmxvY2tRdW90ZUIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9RdW90ZXNcIjtcbmltcG9ydCB7IEJveCwgVGFiIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7VGFiQ29udGV4dCwgVGFiTGlzdCwgVGFiUGFuZWx9IGZyb20gJ0BtdWkvbGFiJztcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuXG5sZXQgdGltZWxpbmVidXR0b25yb3dkYXRhID0gW1xuICB7XG4gICAgYnV0dG9ubmFtZTogXCJBbGxcIiwgXG4gICAgbm9kZTogPFRpbWVIb3JpIHRhYj1cIlwiID48L1RpbWVIb3JpPiwgXG4gICAgY3NzbmFtZTogXCJGaXJzdFwiXG4gIH0sXG4gIHsgXG4gICAgbm9kZTogPFRpbWVIb3JpIHRhYj1cIlBhdGllbnRcIiA+PC9UaW1lSG9yaT4sXG4gICAgYnV0dG9ubmFtZTogXCJQYXRpZW50c1wiLCBcbiAgICBjc3NuYW1lOiBcIlBhdGllbnRcIlxuICB9LFxuICB7XG4gICAgbm9kZTogPFRpbWVIb3JpIHRhYj1cIk1lZGljYWwgUHJvZmVzc2lvbmFsXCIgPjwvVGltZUhvcmk+LFxuICAgIGJ1dHRvbm5hbWU6IFwiTWVkaWNhbCBQcm9mZXNzaW9uYWxzXCIsIFxuICAgIGNzc25hbWU6IFwiTWVkaWNhbFwiXG4gIH0sXG4gIHtcbiAgICBub2RlOiA8VGltZUhvcmkgdGFiPVwiQWNhZGVtaWFcIiA+PC9UaW1lSG9yaT4sXG4gICAgYnV0dG9ubmFtZTogXCJBY2FkZW1pYVwiLCBcbiAgICBjc3NuYW1lOiBcIkFjYWRlbWlhXCJcbiAgfSxcbiAgeyBcbiAgICBub2RlOiA8VGltZUhvcmkgdGFiPVwiSW5kdXN0cnlcIiA+PC9UaW1lSG9yaT4sXG4gICAgYnV0dG9ubmFtZTogXCJJbmR1c3RyeVwiLCBcbiAgICBjc3NuYW1lOiBcIkluZHVzdHJ5XCJcbiAgfVxuXVxuXG5sZXQgdGltZWxpbmVwZXJzb250YWJzID1bXG4gIHtcbiAgICBub2RlOiA8PlxuICAgICAgICAgIDxici8+XG4gICAgICAgICAgICA8aDM+TWF4IEJlY2ttYW5uPC9oMz5cbiAgICAgICAgICAgIDxoNT5GaXJzdCBvZmZpY2lhbCBpbnRlcnZpZXc8L2g1PlxuICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInQtdGFnIFBhdGllbnRcIj5cbiAgICAgICAgICAgICAgICBQYXRpZW50XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5PcmlnaW5hbCBsYW5ndWFnZTogR2VybWFuPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPEJsb2NrUXVvdGVCIHRleHQ9XCJRdW90ZVwiIGNpdGU9XCIuXCI+PC9CbG9ja1F1b3RlQj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cIm1pZGRsZSBzZWNocHJvXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIi8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aDQ+QWltIG9mIGNvbnRhY3Q8L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgICAgPGg0Pkluc2lnaHRzPC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5DbGFyaWZpY2F0aW9uPC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5JbXBsZW1lbnRhdGlvbjwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgPC8+LCBcbiAgICBjc3NuYW1lOiBcIkludk1heDFcIlxuICB9LFxuICB7XG4gICAgbm9kZTogPD5cbiAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgPGgzPk1heCBCZWNrbWFubjwvaDM+XG4gICAgICAgICAgICA8aDU+RmVlZGJhY2sgSW50ZXJ2aWV3PC9oNT5cbiAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0LXRhZyBQYXRpZW50XCI+XG4gICAgICAgICAgICAgICAgUGF0aWVudFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+T3JpZ2luYWwgbGFuZ3VhZ2U6IEdlcm1hbjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxCbG9ja1F1b3RlQiB0ZXh0PVwiUXVvdGVcIiBjaXRlPVwiLlwiPjwvQmxvY2tRdW90ZUI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0zXCI+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJtaWRkbGUgc2VjaHByb1wiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGg0PkFpbSBvZiBjb250YWN0PC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5JbnNpZ2h0czwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+Q2xhcmlmaWNhdGlvbjwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+SW1wbGVtZW50YXRpb248L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgIDwvPiwgXG4gICAgY3NzbmFtZTogXCJJbnZNYXgyXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgPGJyLz5cbiAgIDxoMz5CZXJlbnM8L2gzPlxuICAgPGhyLz5cbiAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0yXCI+XG4gICA8ZGl2IGNsYXNzTmFtZT1cInQtdGFnIEFjYWRlbWlhXCI+XG4gICAgICAgQmVydWZcbiAgIDwvZGl2PlxuICAgPC9kaXY+XG4gICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPk9yaWdpbmFsIGxhbmd1YWdlOiBHZXJtYW48L2Rpdj5cbiAgIDwvZGl2PlxuICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICA8QmxvY2tRdW90ZUIgdGV4dD1cIlF1b3RlXCIgY2l0ZT1cIi5cIj48L0Jsb2NrUXVvdGVCPlxuICAgICA8L2Rpdj5cbiAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtM1wiPlxuICAgICAgIDxpbWcgY2xhc3NOYW1lPVwibWlkZGxlIHNlY2hwcm9cIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLz5cbiAgICAgPC9kaXY+XG4gICA8L2Rpdj5cbiAgIDxoND5BaW0gb2YgY29udGFjdDwvaDQ+XG4gICA8cD48L3A+XG4gICA8aDQ+SW5zaWdodHM8L2g0PlxuICAgPHA+PC9wPlxuICAgPGg0PkNsYXJpZmljYXRpb248L2g0PlxuICAgPHA+PC9wPlxuICAgPGg0PkltcGxlbWVudGF0aW9uPC9oND5cbiAgIDxwPjwvcD5cbiAgICA8Lz4sXG4gICAgY3NzbmFtZTogXCJCZXJlbnNcIlxuICB9LFxuICB7XG4gICAgbm9kZTogPD5cbiAgICA8YnIvPlxuICAgPGgzPldpc2NobWV5ZXI8L2gzPlxuICAgPGhyLz5cbiAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0yXCI+XG4gICA8ZGl2IGNsYXNzTmFtZT1cInQtdGFnIEFjYWRlbWlhXCI+XG4gICAgICAgQmVydWZcbiAgIDwvZGl2PlxuICAgPC9kaXY+XG4gICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPk9yaWdpbmFsIGxhbmd1YWdlOiBHZXJtYW48L2Rpdj5cbiAgIDwvZGl2PlxuICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICA8QmxvY2tRdW90ZUIgdGV4dD1cIlF1b3RlXCIgY2l0ZT1cIi5cIj48L0Jsb2NrUXVvdGVCPlxuICAgICA8L2Rpdj5cbiAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtM1wiPlxuICAgICAgIDxpbWcgY2xhc3NOYW1lPVwibWlkZGxlIHNlY2hwcm9cIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLz5cbiAgICAgPC9kaXY+XG4gICA8L2Rpdj5cbiAgIDxoND5BaW0gb2YgY29udGFjdDwvaDQ+XG4gICA8cD48L3A+XG4gICA8aDQ+SW5zaWdodHM8L2g0PlxuICAgPHA+PC9wPlxuICAgPGg0PkNsYXJpZmljYXRpb248L2g0PlxuICAgPHA+PC9wPlxuICAgPGg0PkltcGxlbWVudGF0aW9uPC9oND5cbiAgIDxwPjwvcD5cbiAgICA8Lz4sXG4gICAgY3NzbmFtZTogXCJXaXNjaG1leWVyXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgIDxoMz5OaWNvbGUgRnJpZWRsZWluPC9oMz5cbiAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0LXRhZyBFdGhpY3NcIj5cbiAgICAgICAgICAgICAgICBQaGQgXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5PcmlnaW5hbCBsYW5ndWFnZTogR2VybWFuPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPEJsb2NrUXVvdGVCIHRleHQ9XCJRdW90ZVwiIGNpdGU9XCIuXCI+PC9CbG9ja1F1b3RlQj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cIm1pZGRsZSBzZWNocHJvXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIi8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aDQ+QWltIG9mIGNvbnRhY3Q8L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgICAgPGg0Pkluc2lnaHRzPC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5DbGFyaWZpY2F0aW9uPC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5JbXBsZW1lbnRhdGlvbjwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgPC8+LFxuICAgIGNzc25hbWU6IFwiSW52RnJpZWRsZWluXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgPGJyLz5cbiAgIDxoMz5SbmFoYWxlPC9oMz5cbiAgIDxoci8+XG4gICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMlwiPlxuICAgPGRpdiBjbGFzc05hbWU9XCJ0LXRhZyBJbmR1c3RyeVwiPlxuICAgICAgIEJlcnVmXG4gICA8L2Rpdj5cbiAgIDwvZGl2PlxuICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5PcmlnaW5hbCBsYW5ndWFnZTogR2VybWFuPC9kaXY+XG4gICA8L2Rpdj5cbiAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgPEJsb2NrUXVvdGVCIHRleHQ9XCJRdW90ZVwiIGNpdGU9XCIuXCI+PC9CbG9ja1F1b3RlQj5cbiAgICAgPC9kaXY+XG4gICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTNcIj5cbiAgICAgICA8aW1nIGNsYXNzTmFtZT1cIm1pZGRsZSBzZWNocHJvXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIi8+XG4gICAgIDwvZGl2PlxuICAgPC9kaXY+XG4gICA8aDQ+QWltIG9mIGNvbnRhY3Q8L2g0PlxuICAgPHA+PC9wPlxuICAgPGg0Pkluc2lnaHRzPC9oND5cbiAgIDxwPjwvcD5cbiAgIDxoND5DbGFyaWZpY2F0aW9uPC9oND5cbiAgIDxwPjwvcD5cbiAgIDxoND5JbXBsZW1lbnRhdGlvbjwvaDQ+XG4gICA8cD48L3A+XG4gICAgPC8+LFxuICAgIGNzc25hbWU6IFwiSW52Uk5hbGVcIlxuICB9LFxuICB7XG4gICAgbm9kZTogPD5cbiAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICA8aDM+TWF0dGlqcyBCdWxjYWVuPC9oMz5cbiAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtNVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0LXRhZyBBY2FkZW1pYVwiPlxuICAgICAgICAgICAgICAgIFBoZC4gU3R1ZGVudCAoTW9sZWN1bGFyIFZpcm9sb2d5IGFuZCBHZW5lIFRoZXJhcHkpXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5PcmlnaW5hbCBsYW5ndWFnZTogRW5nbGlzaDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxCbG9ja1F1b3RlQiB0ZXh0PVwiUXVvdGVcIiBjaXRlPVwiLlwiPjwvQmxvY2tRdW90ZUI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0zXCI+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJtaWRkbGUgc2VjaHByb1wiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGg0PkFpbSBvZiBjb250YWN0PC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5JbnNpZ2h0czwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+Q2xhcmlmaWNhdGlvbjwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+SW1wbGVtZW50YXRpb248L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgIDwvPixcbiAgICBjc3NuYW1lOiBcIkludkJ1bGNhZW4xXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgPGgzPk1hdHRpanMgQnVsY2FlbjwvaDM+XG4gICAgICAgICAgICA8aDU+RmVlZGJhY2sgSW50ZXJ2aWV3PC9oNT5cbiAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtNVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0LXRhZyBBY2FkZW1pYVwiPlxuICAgICAgICAgICAgICAgIFBoZC4gU3R1ZGVudCAoTW9sZWN1bGFyIFZpcm9sb2d5IGFuZCBHZW5lIFRoZXJhcHkpXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5PcmlnaW5hbCBsYW5ndWFnZTogRW5nbGlzaDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxCbG9ja1F1b3RlQiB0ZXh0PVwiUXVvdGVcIiBjaXRlPVwiLlwiPjwvQmxvY2tRdW90ZUI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0zXCI+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJtaWRkbGUgc2VjaHByb1wiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGg0PkFpbSBvZiBjb250YWN0PC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5JbnNpZ2h0czwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+Q2xhcmlmaWNhdGlvbjwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+SW1wbGVtZW50YXRpb248L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgIDwvPixcbiAgICBjc3NuYW1lOiBcIkludkJ1bGNhZW4yXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgPGgzPkp1bGlhPC9oMz5cbiAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0LXRhZyBQYXRpZW50XCI+XG4gICAgICAgICAgICAgICAgUGFyZW50XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5PcmlnaW5hbCBsYW5ndWFnZTogR2VybWFuPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPEJsb2NrUXVvdGVCIHRleHQ9XCJRdW90ZVwiIGNpdGU9XCIuXCI+PC9CbG9ja1F1b3RlQj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cIm1pZGRsZSBzZWNocHJvXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIi8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aDQ+QWltIG9mIGNvbnRhY3Q8L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgICAgPGg0Pkluc2lnaHRzPC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5DbGFyaWZpY2F0aW9uPC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5JbXBsZW1lbnRhdGlvbjwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgPC8+LFxuICAgIGNzc25hbWU6IFwiSW52SnVsaWFcIlxuICB9LFxuICB7XG4gICAgbm9kZTogPD5cbiAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICA8aDM+Sm9zaHVhIEJhdWRlcjwvaDM+XG4gICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidC10YWcgUGF0aWVudFwiPlxuICAgICAgICAgICAgICAgIFBhcmVudFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+T3JpZ2luYWwgbGFuZ3VhZ2U6IEVuZ2xpc2g8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8QmxvY2tRdW90ZUIgdGV4dD1cIlF1b3RlXCIgY2l0ZT1cIi5cIj48L0Jsb2NrUXVvdGVCPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwibWlkZGxlIHNlY2hwcm9cIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxoND5BaW0gb2YgY29udGFjdDwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+SW5zaWdodHM8L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgICAgPGg0PkNsYXJpZmljYXRpb248L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgICAgPGg0PkltcGxlbWVudGF0aW9uPC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICA8Lz4sXG4gICAgY3NzbmFtZTogXCJJbnZKb3NodWFcIlxuICB9LFxuICB7XG4gICAgbm9kZTogPD5cbiAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICA8aDM+S2F0cmluIFdlc3Rob2ZmPC9oMz5cbiAgICAgICAgICAgIDxoNT5Jbml0aWFsIEludGVydmlldzwvaDU+XG4gICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidC10YWcgTWVkaWNhbFwiPlxuICAgICAgICAgICAgICAgIFBoeXNpb3RoZXJhcGlzdFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+T3JpZ2luYWwgbGFuZ3VhZ2U6IEdlcm1hbjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxCbG9ja1F1b3RlQiB0ZXh0PVwiVGhlIG1vcmUgd2Uga25vdywgdGhlIG1vcmUgb3Bwb3J0dW5pdGllcyB3ZSBoYXZlLlwiIGNpdGU9XCJLYXRyaW4gV2VzdGhvZmZcIj48L0Jsb2NrUXVvdGVCPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwibWlkZGxlIHNlY2hwcm9cIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxoND5BaW0gb2YgY29udGFjdDwvaDQ+XG4gICAgICAgICAgICA8cD5UaGUgb2JqZWN0aXZlIG9mIHRoZSBjb250YWN0IHdhcyB0byBnYWluIGluLWRlcHRoIGluc2lnaHRzIGludG8gdGhlIHRyZWF0bWVudCBhbmQgY2FyZSBvZiBjaGlsZHJlbiB3aXRoIGN5c3RpYyBmaWJyb3Npcy4gVGhlIHRoZXJhcGlzdCdzIGV4cGVydGlzZSB3YXMgaW50ZW5kZWQgdG8gaGVscCBkZXZlbG9wIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNoYWxsZW5nZXMgYW5kIG5lY2Vzc2FyeSBtZWFzdXJlcyBpbiB0aGUgdHJlYXRtZW50IG9mIHRoaXMgY2hyb25pYyBkaXNlYXNlLiBJbiBhZGRpdGlvbiwgdGhlIGFpbSB3YXMgdG8gYXNjZXJ0YWluIGhvdyB0aGUgdGhlcmFweSBpcyBpbXBsZW1lbnRlZCBpbiBldmVyeWRheSBsaWZlIGFuZCB3aGljaCBzcGVjaWZpYyBhcHByb2FjaGVzIGFuZCBtZXRob2RzIGFyZSBwYXJ0aWN1bGFybHkgZWZmZWN0aXZlLiA8L3A+XG4gICAgICAgICAgICA8aDQ+SW5zaWdodHM8L2g0PlxuICAgICAgICAgICAgPHA+VGhlIGludGVydmlldyB5aWVsZGVkIHZhbHVhYmxlIGluc2lnaHRzIGludG8gdGhlIHJlZ3VsYXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIHRoZXJhcHksIHRoZSB1c2Ugb2YgYWlkcywgYW5kIHRoZSBhZGFwdGF0aW9uIFxuICAgICAgICAgICAgICBvZiBleGVyY2lzZXMgdG8gdGhlIGluZGl2aWR1YWwgbmVlZHMgb2YgdGhlIHBhdGllbnRzLiBJdCB3YXMgbm90YWJsZSB0aGF0IHRoZSB0aGVyYXB5IGhhcyBpbXByb3ZlZCBcbiAgICAgICAgICAgICAgY29uc2lkZXJhYmx5IHRoYW5rcyB0byBiZXR0ZXIgbWVkaWNhdGlvbiBhbmQgYWRhcHRlZCBleGVyY2lzZXMsIHdpdGggYSBjb25jb21pdGFudCBpbmNyZWFzZSBpbiBsaWZlIFxuICAgICAgICAgICAgICBleHBlY3RhbmN5IGZvciBjaGlsZHJlbiBhZmZlY3RlZCBieSBjeXN0aWMgZmlicm9zaXMuIE9mIHBhcnRpY3VsYXIgaW50ZXJlc3Qgd2FzIHRoZSBlbXBoYXNpcyBcbiAgICAgICAgICAgICAgb24gdGhlIGltcG9ydGFuY2Ugb2Ygc3BvcnQgYW5kIGV4ZXJjaXNlLCB3aGljaCBzaG91bGQgbm90IG9ubHkgYmUgdGhlcmFwZXV0aWNhbGx5IGVmZmVjdGl2ZSwgYnV0IGFsc28gaW5jcmVhc2UgcXVhbGl0eSBvZiBsaWZlLiA8L3A+XG4gICAgICAgICAgICA8aDQ+Q2xhcmlmaWNhdGlvbjwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+SW1wbGVtZW50YXRpb248L2g0PlxuICAgICAgICAgICAgPHA+VGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgYnkgS2F0cmluIFdlc3Rob2ZmIGhhZCBhIHBhcnRpY3VsYXJseSBwcm9mb3VuZCBpbXBhY3Qgb24gb3VyIHByb2plY3Q6IFwiVGhlIG1vcmUgd2Uga25vdywgdGhlIG1vcmUgb3Bwb3J0dW5pdGllcyB3ZSBoYXZlLlwiIFxuICAgICAgICAgICAgICBXZSBsZWFybmVkIGZyb20gdGhlIGludGVydmlldyB0aGF0IHRoZSBjdXJyZW50IG1lZGljYXRpb24gaXMgYWxyZWFkeSBoZWxwaW5nIG1hbnkgcGF0aWVudHMgdG8gYSBodWdlIFxuICAgICAgICAgICAgICBleHRlbnQsIGJ1dCB0aGF0IHRoZXJlIGlzIHN0aWxsIGEgc2lnbmlmaWNhbnQgb3Bwb3J0dW5pdHkgZm9yIGltcHJvdmVtZW50LiBBZnRlciBhbGwsIHN1Y2Nlc3NmdWwgZ2VuZSBcbiAgICAgICAgICAgICAgdGhlcmFweSB3b3VsZCBtYXJrZWRseSBlbmhhbmNlIHRoZSBxdWFsaXR5IG9mIGxpZmUgZm9yIHRob3NlIGFmZmVjdGVkLiBUaGUgZmluZGluZ3Mgb2YgdGhpcyBwcm9qZWN0IHdpbGwgXG4gICAgICAgICAgICAgIGJlIGRpc3NlbWluYXRlZCB0byB0aGUgcmVsZXZhbnQgcmVzZWFyY2hlcnMgaW4gb3JkZXIgdG8gZmFjaWxpdGF0ZSB0aGUgcmFwaWQgaW1wcm92ZW1lbnQgb2YgdGhlIHF1YWxpdHkgb2YgXG4gICAgICAgICAgICAgIGxpZmUgb2YgYWxsIGN5c3RpYyBmaWJyb3NpcyBwYXRpZW50cywgcmVnYXJkbGVzcyBvZiB0aGVpciBtdXRhdGlvbi4gPC9wPlxuICAgICAgICAgIDwvPixcbiAgICBjc3NuYW1lOiBcIkludldlc3Rob2ZmXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgPGgzPkthdHJpbiBXZXN0aG9mZjwvaDM+XG4gICAgICAgICAgICA8aDU+VmlzaXQ8L2g1PlxuICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInQtdGFnIE1lZGljYWxcIj5cbiAgICAgICAgICAgICAgICBQaHlzaW90aGVyYXBpc3RcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPk9yaWdpbmFsIGxhbmd1YWdlOiBHZXJtYW48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8QmxvY2tRdW90ZUIgdGV4dD1cIlF1b3RlXCIgY2l0ZT1cIi5cIj48L0Jsb2NrUXVvdGVCPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwibWlkZGxlIHNlY2hwcm9cIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxoND5BaW0gb2YgY29udGFjdDwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+SW5zaWdodHM8L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgICAgPGg0PkNsYXJpZmljYXRpb248L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgICAgPGg0PkltcGxlbWVudGF0aW9uPC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICA8Lz4sXG4gICAgY3NzbmFtZTogXCJCZXNXZXN0aG9mZlwiXG4gIH0sXG4gIHtcbiAgICBub2RlOiA8PlxuICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgIDxoMz5DcmlzdGlhbi1HYWJyaWVsIE9sYXJpdTwvaDM+XG4gICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidC10YWcgTWVkaWNhbFwiPlxuICAgICAgICAgICAgICAgIFBlZGlhdHJpY2lhblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+T3JpZ2luYWwgbGFuZ3VhZ2U6IEdlcm1hbjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxCbG9ja1F1b3RlQiB0ZXh0PVwiUXVvdGVcIiBjaXRlPVwiLlwiPjwvQmxvY2tRdW90ZUI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0zXCI+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJtaWRkbGUgc2VjaHByb1wiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGg0PkFpbSBvZiBjb250YWN0PC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5JbnNpZ2h0czwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+Q2xhcmlmaWNhdGlvbjwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+SW1wbGVtZW50YXRpb248L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgIDwvPixcbiAgICBjc3NuYW1lOiBcIkludk9sYXJpdVwiXG4gIH0sXG4gIHtcbiAgICBub2RlOiA8PlxuICAgIDxici8+XG4gICA8aDM+RHIuIEthdGhhcmluYSBLb2xvbmtvPC9oMz5cbiAgIDxoci8+XG4gICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMlwiPlxuICAgPGRpdiBjbGFzc05hbWU9XCJ0LXRhZyBBY2FkZW1pYVwiPlxuICAgICAgIEJlcnVmXG4gICA8L2Rpdj5cbiAgIDwvZGl2PlxuICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5PcmlnaW5hbCBsYW5ndWFnZTogR2VybWFuPC9kaXY+XG4gICA8L2Rpdj5cbiAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgPEJsb2NrUXVvdGVCIHRleHQ9XCJRdW90ZVwiIGNpdGU9XCIuXCI+PC9CbG9ja1F1b3RlQj5cbiAgICAgPC9kaXY+XG4gICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTNcIj5cbiAgICAgICA8aW1nIGNsYXNzTmFtZT1cIm1pZGRsZSBzZWNocHJvXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIi8+XG4gICAgIDwvZGl2PlxuICAgPC9kaXY+XG4gICA8aDQ+QWltIG9mIGNvbnRhY3Q8L2g0PlxuICAgPHA+PC9wPlxuICAgPGg0Pkluc2lnaHRzPC9oND5cbiAgIDxwPjwvcD5cbiAgIDxoND5DbGFyaWZpY2F0aW9uPC9oND5cbiAgIDxwPjwvcD5cbiAgIDxoND5JbXBsZW1lbnRhdGlvbjwvaDQ+XG4gICA8cD48L3A+XG4gICAgPC8+LFxuICAgIGNzc25hbWU6IFwiSW52S29sb25rb1wiXG4gIH0sXG4gIHtcbiAgICBub2RlOiA8PlxuICAgIDxici8+XG4gICA8aDM+UHJvZi4gRHIuIENocmlzdG9waCBXZWJlcjwvaDM+XG4gICA8aHIvPlxuICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTJcIj5cbiAgIDxkaXYgY2xhc3NOYW1lPVwidC10YWcgQWNhZGVtaWFcIj5cbiAgICAgICBCZXJ1ZlxuICAgPC9kaXY+XG4gICA8L2Rpdj5cbiAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+T3JpZ2luYWwgbGFuZ3VhZ2U6IEdlcm1hbjwvZGl2PlxuICAgPC9kaXY+XG4gICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgIDxCbG9ja1F1b3RlQiB0ZXh0PVwiUXVvdGVcIiBjaXRlPVwiLlwiPjwvQmxvY2tRdW90ZUI+XG4gICAgIDwvZGl2PlxuICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0zXCI+XG4gICAgICAgPGltZyBjbGFzc05hbWU9XCJtaWRkbGUgc2VjaHByb1wiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIvPlxuICAgICA8L2Rpdj5cbiAgIDwvZGl2PlxuICAgPGg0PkFpbSBvZiBjb250YWN0PC9oND5cbiAgIDxwPjwvcD5cbiAgIDxoND5JbnNpZ2h0czwvaDQ+XG4gICA8cD48L3A+XG4gICA8aDQ+Q2xhcmlmaWNhdGlvbjwvaDQ+XG4gICA8cD48L3A+XG4gICA8aDQ+SW1wbGVtZW50YXRpb248L2g0PlxuICAgPHA+PC9wPlxuICAgIDwvPixcbiAgICBjc3NuYW1lOiBcIkludldlYmVyXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgIDxoMz5Qcm9mLiBEci4gU3RlZmFuIEhhbW1lcjwvaDM+XG4gICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidC10YWcgQWNhZGVtaWFcIj5cbiAgICAgICAgICAgICAgICBCZXJ1ZlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+T3JpZ2luYWwgbGFuZ3VhZ2U6IEdlcm1hbjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxCbG9ja1F1b3RlQiB0ZXh0PVwiUXVvdGVcIiBjaXRlPVwiLlwiPjwvQmxvY2tRdW90ZUI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0zXCI+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJtaWRkbGUgc2VjaHByb1wiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGg0PkFpbSBvZiBjb250YWN0PC9oND5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICAgIDxoND5JbnNpZ2h0czwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+Q2xhcmlmaWNhdGlvbjwvaDQ+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgICA8aDQ+SW1wbGVtZW50YXRpb248L2g0PlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgIDwvPixcbiAgICBjc3NuYW1lOiBcIkludkhhbW1lclwiXG4gIH0sXG5cbl1cbi8vIGRpZSBoZWlnaHQgZlx1MDBGQ3IgY2xhc3NOYW1lPVwidGltZWxpbmUgcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiIG11c3MgYW5nZXBhc3N0IHdlcmRlbiwgZGFtaXQgZGllIEJveGVuIGhcdTAwRjZoZXIgc2VpbiBrXHUwMEY2bm5lblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBIdW1hblByYWN0aWNlcygpIHtcbiAgb3BlblRhYih7Y2l0eU5hbWU6IFwiQWxsXCIsIGNsYTogXCJ0aW1lbGluZWNhcmR0YWJzXCJ9KTsgXG4gIHJldHVybiAoICBcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBtdC00XCI+XG4gICAgICBcbiAgICA8QmxvY2tRdW90ZUJcbiAgICAgIHRleHQ9XCJIdW1hbiBQcmFjdGljZXMgaXMgdGhlIHN0dWR5IG9mIGhvdyB5b3VyIHdvcmsgYWZmZWN0cyB0aGUgd29ybGQsIGFuZCBob3cgdGhlIHdvcmxkIGFmZmVjdHMgeW91ciB3b3JrLlwiXG4gICAgICBjaXRlPVwiLSBQZXRlciBDYXJyLCBEaXJlY3RvciBvZiBKdWRnaW5nXCJcbiAgICAgIC8+IFxuICAgIDxIUE92ZXJ2aWV3Lz4gXG4gICAgPEhQVGltZWxpbmUvPlxuXG4gICAgICB7LyogPEhQVGFic1R3by8+ICovfVxuXG4gICAgPHNlY3Rpb24gaWQ9XCJBbmFseXNpc1wiPlxuICAgICAgPGRpdiAgY2xhc3NOYW1lPVwiY2VudGVyXCIgPlxuICAgICAgICA8aDMgIGNsYXNzTmFtZT1cImNvbCBwZXJzb25hbHN0eWxlb25lXCI+QW5hbHlzaXM8L2gzPlxuICAgICAgPC9kaXY+IFxuICAgICAgPEhQVGFicy8+XG4gICAgPC9zZWN0aW9uPlxuICAgIFxuICAgIFxuXG5cbiAgICA8c2VjdGlvbiBpZD1cIlJlZmxlY3Rpb25cIiA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNlbnRlclwiPlxuICAgICAgICA8aDMgIGNsYXNzTmFtZT1cImNvbCBwZXJzb25hbHN0eWxlb25lXCI+UmVmbGVjdGlvbiBGcmFtZXdvcms8L2gzPlxuICAgICAgPC9kaXY+IFxuICAgICAgICAgIFxuICAgIDwvc2VjdGlvbj5cbiAgICBcbnsvKiBcbiAgICA8c2VjdGlvbiBpZD1cIkltcGxlbWVudGF0aW9uXCIgY2xhc3NOYW1lPVwic2VjdGlvblwiPlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY2VudGVyXCI+XG4gICAgICA8aDMgY2xhc3NOYW1lPVwiY29sIHBlcnNvbmFsc3R5bGVvbmVcIj5JbXBsZW1lbnRhdGlvbjwvaDM+XG4gICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPiAqL31cblxuICAgIDwvZGl2PlxuICAgIFxuICApOyAgXG59XG5cblxuZnVuY3Rpb24gSFBUYWJzKCl7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoJzEnKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoX2V2ZW50OiBSZWFjdC5TeW50aGV0aWNFdmVudCwgbmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgcmV0dXJuKFxuICAgIDxCb3ggc3g9e3sgd2lkdGg6ICcxMDAlJywgdHlwb2dyYXBoeTogJ2JvZHkxJyB9fT5cbiAgICA8VGFiQ29udGV4dCB2YWx1ZT17dmFsdWV9PlxuICAgICAgPEJveCBzeD17eyBib3JkZXJCb3R0b206IDEsIGJvcmRlckNvbG9yOiAnZGl2aWRlcicgfX0+XG4gICAgICAgIDxUYWJMaXN0IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9IGFyaWEtbGFiZWw9XCJsYWIgQVBJIHRhYnMgZXhhbXBsZVwiPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJQYXRpZW50IE5lZWRzXCIgdmFsdWU9XCIxXCIgLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPVwiU2NpZW50aWZpYyBDaGFsbGVuZ2VzXCIgdmFsdWU9XCIyXCIgLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPVwiQWNhZGVtaWMgY29uc2lkZXJhdGlvblwiIHZhbHVlPVwiM1wiIC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD1cIkV0aGljYWwgcXVlc3Rpb25zXCIgdmFsdWU9XCI0XCIgLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPVwiTWVkaWNhbCBwZXJzcGVjdGl2ZXNcIiB2YWx1ZT1cIjVcIiAvPlxuICAgICAgICAgIFxuICAgICAgICAgIFxuICAgICAgICA8L1RhYkxpc3Q+XG4gICAgICA8L0JveD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjFcIj4gIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9XCIyXCI+ICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjNcIj4gICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPVwiNFwiPiAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9XCI1XCI+ICAgPC9UYWJQYW5lbD5cbiAgICA8L1RhYkNvbnRleHQ+XG4gIDwvQm94PlxuICApXG59XG5cblxuLyogPGRpdiBjbGFzc05hbWU9XCJtZXRob2RzLW5vZGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5SPHN1cD4zPC9zdXA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWV0aG9kcy1ub2RlXCI+XG4gICAgICAgICAgICAgIDxkaXY+SHVtYW4gUHJhY3RpY2VzIEN5Y2xlPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWV0aG9kcy1ub2RlXCI+XG4gICAgICAgICAgICAgIDxkaXY+U3Rha2Vob2xkZXIgRnJhbWV3b3JrPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWV0aG9kcy1ub2RlXCI+XG4gICAgICAgICAgICAgIDxkaXY+RmVlZGJhY2sgQ3ljbGU8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXRob2RzLW5vZGVcIj5cbiAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gSFBUYWJzVHdvKCl7XG5cbiAgcmV0dXJuKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtOFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXRob2RzLW5vZGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5Qcm9qZWN0IHNlbGVjdGlvbjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1ldGhvZHMtbm9kZVwiPlxuICAgICAgICAgICAgICA8ZGl2PkZvdW5kYXRpb248L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXRob2RzLW5vZGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5EaXZlcnNpZmljYXRpb248L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXRob2RzLW5vZGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5GaW5lLXR1bmluZzwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1ldGhvZHMtbm9kZVwiPlxuICAgICAgICAgICAgICA8ZGl2PkZpbmFsaXphdGlvbjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtM1wiPlxuICAgICAgICAgXG4gICAgICAgIHsvKiA8Qm94IHN4PXt7IGJvcmRlckJvdHRvbTogMSwgYm9yZGVyQ29sb3I6ICdkaXZpZGVyJyB9fT5cbiAgICAgICAgPFRhYkxpc3Qgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gYXJpYS1sYWJlbD1cImxhYiBBUEkgdGFicyBleGFtcGxlXCI+XG4gICAgICAgICAgPFRhYiBsYWJlbD1cIlBhdGllbnQgTmVlZHNcIiB2YWx1ZT1cIjFcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJTY2llbnRpZmljIENoYWxsZW5nZXNcIiB2YWx1ZT1cIjJcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJBY2FkZW1pYyBjb25zaWRlcmF0aW9uXCIgdmFsdWU9XCIzXCIgLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPVwiRXRoaWNhbCBxdWVzdGlvbnNcIiB2YWx1ZT1cIjRcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJNZWRpY2FsIHBlcnNwZWN0aXZlc1wiIHZhbHVlPVwiNVwiIC8+XG4gICAgICAgIDwvVGFiTGlzdD5cbiAgICAgICAgPC9Cb3g+ICovfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgey8qIDxUYWJQYW5lbCB2YWx1ZT1cIjFcIj4gMSA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPVwiMlwiPiAgMiA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPVwiM1wiPiAzICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPVwiNFwiPiAgNCA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPVwiNVwiPiA1ICA8L1RhYlBhbmVsPiAqL31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvPlxuICApXG59XG57LyogXG4gICBcbiAgICAgIFxuICAgICAgICBcbiAgICAgIFxuXG4gICAgXG4gICovfVxuXG4vKiAgPFRhYiBsYWJlbD1cIlByb2JsZW1cIiB2YWx1ZT1cIjFcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJJbmZsdWVuY2VcIiB2YWx1ZT1cIjVcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJQYXRpZW50IE5lZWRzXCIgdmFsdWU9XCIyXCIgLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPVwiU2NpZW50aWZpYyBDaGFsbGVuZ2VzXCIgdmFsdWU9XCIzXCIgLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPVwiU3VydmV5c1wiIHZhbHVlPVwiNFwiIC8+ICovXG5cbmZ1bmN0aW9uIEhQT3ZlcnZpZXcoKXtcbiAgcmV0dXJuKFxuICAgIDxzZWN0aW9uIGlkPVwiT3ZlcnZpZXdcIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgPGRpdiAgY2xhc3NOYW1lPVwiY2VudGVyXCIgPlxuICAgICAgPGgzICBjbGFzc05hbWU9XCJjb2wgcGVyc29uYWxzdHlsZW9uZVwiPk92ZXJ2aWV3PC9oMz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT17e21hcmdpblRvcDogXCI1dmhcIiwgbWFyZ2luQm90dG9tOiBcIjV2aFwifX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8QnV0dG9uT25lIHRleHQ9XCJJbnNwaXJhdGlvblwiIG9wZW49XCJpbnNwaXJhdGlvblwiPjwvQnV0dG9uT25lPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8QnV0dG9uT25lIHRleHQ9XCJNZXRob2RzXCIgb3Blbj1cIm1ldGhvZHNcIj48L0J1dHRvbk9uZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgPEJ1dHRvbk9uZSB0ZXh0PVwiVmFsdWVzIGFuZCBnb2Fsc1wiIG9wZW49XCJ2YWx1ZXNcIj48L0J1dHRvbk9uZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgPEJ1dHRvbk9uZSB0ZXh0PVwiU3Rha2Vob2xkZXJzXCIgb3Blbj1cInN0YWtlaG9sZGVyc1wiPjwvQnV0dG9uT25lPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj4gXG4gICAgPGRpdiBjbGFzc05hbWU9XCJjb2wgY3ljbGV0YWJcIiBpZD1cImluc3BpcmF0aW9uXCIgc3R5bGU9e3tkaXNwbGF5OiBcImJsb2NrXCJ9fT5IYWxsbyA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbCBjeWNsZXRhYlwiIGlkPVwidmFsdWVzXCIgc3R5bGU9e3tkaXNwbGF5OiBcIm5vbmVcIn19PkhhbGxvIDwvZGl2PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sIGN5Y2xldGFiXCIgaWQ9XCJtZXRob2RzXCIgc3R5bGU9e3tkaXNwbGF5OiBcIm5vbmVcIn19PkhhbGxvIDwvZGl2PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sIGN5Y2xldGFiXCIgaWQ9XCJzdGFrZWhvbGRlcnNcIiBzdHlsZT17e3Bvc2l0aW9uOiBcInJlbGF0aXZlXCIsIGhlaWdodDogXCJmaXQtY29udGVudFwiLCBkaXNwbGF5OiBcIm5vbmVcIn19PlxuICAgICAgPE1pbmRNYXBUd28+PC9NaW5kTWFwVHdvPlxuICAgIDwvZGl2PiBcbiAgPC9zZWN0aW9uPlxuICApXG59XG5cbmZ1bmN0aW9uIEhQVGltZWxpbmUoKXtcbiAgcmV0dXJuKFxuICAgIDxzZWN0aW9uIGlkPVwiVGltZWxpbmVcIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNlbnRlclwiPlxuICAgICAgICA8aDMgIGNsYXNzTmFtZT1cImNvbCBwZXJzb25hbHN0eWxlb25lXCI+VGltZWxpbmU8L2gzPlxuICAgICAgPC9kaXY+IFxuICAgICAgPFRhYkJ1dHRvblJvdyBkYXRhPXt0aW1lbGluZWJ1dHRvbnJvd2RhdGF9IGNsYXNzeT1cIlwiIG9wZW50eXBlPVwidGltZWxpbmVjYXJkdGFic1wiIGNsb3Npbmc9XCJ0aW1lbGluZXBlcnNvbnRhYnNcIiAvPlxuICAgICAgPEFsbFBvcHVzPjwvQWxsUG9wdXM+XG4gICAgICA8QnV0dG9uUm93VGFicyBjbGE9XCJ0aW1lbGluZWNhcmR0YWJzXCIgZGF0YT17dGltZWxpbmVidXR0b25yb3dkYXRhfS8+IFxuICAgICAgPEJGSFN0eWxlVGFicyBjbGE9XCJ0aW1lbGluZXBlcnNvbnRhYnNcIiBkYXRhPXt0aW1lbGluZXBlcnNvbnRhYnN9PjwvQkZIU3R5bGVUYWJzPiBcbiAgICA8L3NlY3Rpb24+XG4gIClcbn1cblxuZnVuY3Rpb24gTWluZE1hcFR3bygpe1xuICByZXR1cm4oXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtaW5kbWFwXCI+XG5cbiAgey8qIDwhLS1MRUZULS0+ICovfVxuICA8b2wgY2xhc3NOYW1lPVwiY2hpbGRyZW4gY2hpbGRyZW5fbGVmdGJyYW5jaFwiPlxuICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIiA+XG4gICAgICAgIDxkaXYgaWQ9XCJMMVwiIGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPiBNZWRpY2FsIDxici8+IFByb2Zlc3Npb25hbHM8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG9sIGNsYXNzTmFtZT1cImNoaWxkcmVuXCI+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiTDEuMVwiIGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPkthdHJpbjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICAgICAgPGRpdiBpZD1cIkwxLjJcIiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5DcmlzdGlhbjwvZGl2PiBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvb2w+XG4gICAgPC9saT5cbiAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJMMlwiIGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPkluZHVzdHJ5PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxvbCBjbGFzc05hbWU9XCJjaGlsZHJlblwiPlxuICAgICAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5MMi4xPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPkwyLjI8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+TDIuMzwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgPC9vbD5cbiAgICA8L2xpPlxuICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgPGRpdiBpZD1cIkwzXCIgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+aUdlbTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8b2wgY2xhc3NOYW1lPVwiY2hpbGRyZW5cIj5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+TDIuMTwvZGl2PiBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+TDIuMjwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPkwyLjM8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgPC9vbD5cbiAgICA8L2xpPlxuICA8L29sPlxuXG4gey8qICA8IS0tQ0VOVEVSLS0+ICovfVxuICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGUgbm9kZV9yb290XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+U3Rha2Vob2xkZXJzPC9kaXY+XG4gIDwvZGl2PlxuXG4gIHsvKiA8IS0tUklHSFQtLT4gKi99XG4gIDxvbCBjbGFzc05hbWU9XCJjaGlsZHJlbiBjaGlsZHJlbl9yaWdodGJyYW5jaFwiPlxuICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgPGRpdiBpZD1cIlIxXCIgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+UGF0aWVudHMgJiA8YnIvPiBuZXh0IG9mIGtpbiA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG9sIGNsYXNzTmFtZT1cImNoaWxkcmVuXCI+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiUjEuMVwiIGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPk1heDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiUjEuMlwiIGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPkp1bGlhPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJSMS4zXCIgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+Sm9zaHVhPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvb2w+XG4gICAgPC9saT5cbiAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJSMlwiIGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPkFjYWRlbWlhPC9kaXY+XG4gICAgICAgIFxuICAgICAgPC9kaXY+XG4gICAgICA8b2wgY2xhc3NOYW1lPVwiY2hpbGRyZW5cIj5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJSMi4xXCIgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+TWF0dGlqczwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPlIyLjI8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5SMi4zPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+UjIuNDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L29sPlxuICAgIDwvbGk+XG4gICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICA8ZGl2IGlkPVwiUjNcIiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5Tb2NpZXR5PC9kaXY+XG4gICAgICAgIFxuICAgICAgPC9kaXY+XG4gICAgICA8b2wgY2xhc3NOYW1lPVwiY2hpbGRyZW5cIj5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJSMy4xXCIgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+S3JhbmtrLjwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiUjMuMlwiIGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPkV0aGlrPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+UjMuMzwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L29sPlxuICAgIDwvbGk+XG4gIDwvb2w+XG4gICAgPC9kaXY+XG5cblxuXG5cblxuICApXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGlkVGFiTGluZSh7YmVydWYsIHRhZ2VuZCwgbGFuZ306e2JlcnVmOiBzdHJpbmcsIHRhZ2VuZDogc3RyaW5nLCBsYW5nOiBzdHJpbmd9KXtcbiAgbGV0IGNsID0gXCJ0LXRhZyBcIiArIHRhZ2VuZFxuICByZXR1cm4oXG4gICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbH0+XG4gICAgICAgICAgICAgICAge2JlcnVmfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+IE9yaWdpbmFsIGxhbmd1YWdlOiB7bGFuZ308L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufSIsICJpbXBvcnQgU2lkZWJhciBmcm9tIFwiLi4vY29tcG9uZW50cy9TaWRlYmFyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBIcFNpZGViYXIoKXtcbiAgICByZXR1cm4oXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTIgZC1ub25lIGQtbGctYmxvY2tcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3RpY2t5LXRvcFwiPlxuICAgICAgICAgICAgICAgIDxTaWRlYmFyIG51bXM9e1tcIk92ZXJ2aWV3XCIsIFwiVGltZWxpbmVcIiwgXCJJbnNwaXJhdGlvblwiLCBcIk1ldGhvZHNcIiwgXCJBbmFseXNpc1wiLCBcIlJlZmxlY3Rpb25cIiwgXCJJbXBsZW1lbnRhdGlvblwiXX0+PC9TaWRlYmFyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn0iLCAiaW1wb3J0IHsgQkZITW9yZUJ1dHRvbiB9IGZyb20gXCIuL0J1dHRvbnNcIjtcblxuXG5cblxuaW50ZXJmYWNlIEl0ZW1Qcm9wcyB7XG4gICAgZGF0ZTogc3RyaW5nICxcbiAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICAgIHRhZzogc3RyaW5nLCBcbiAgICBjb2xvcjogc3RyaW5nLFxuICAgIGNzc3RhZzogc3RyaW5nXG59XG5cbi8qIGltcG9ydCBJbWFnZUV2ZW50IGZyb20gJy4vSW1hZ2VFdmVudC50c3gnO1xuaW1wb3J0IFVybEJ1dHRvbiBmcm9tICcuL1VybEJ1dHRvbi50c3gnOyAqL1xuXG5cbmV4cG9ydCBjb25zdCBUaW1lbGluZUl0ZW0gID0gKHsgZGF0ZSwgdGFnLCBjb2xvciwgY2hpbGRyZW4sIGNzc3RhZyB9Okl0ZW1Qcm9wcykgPT4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtaXRlbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lLWl0ZW0tY29udGVudFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGFnXCIgc3R5bGU9e3sgYmFja2dyb3VuZDogY29sb3IgfX0+XG4gICAgICAgICAgICAgICAge3RhZ31cbiAgICAgICAgICAgIDwvc3Bhbj4gXG4gICAgICAgICAgICA8dGltZT57ZGF0ZX08L3RpbWU+XG4gICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPEJGSE1vcmVCdXR0b24gaXQ9e2Nzc3RhZ30+PC9CRkhNb3JlQnV0dG9uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiY2lyY2xlXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4pO1xuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIE15VGltZWxpbmUgKCkge1xuICAgIHJldHVybihcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3RpbWVsaW5lLWJlZ2luJz5cbiAgICAgICAgICAgICAgICBPcGVuaW5nXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8VGltZWxpbmVJdGVtXG4gICAgICAgICAgICAgICAgZGF0ZT0nU2NpZW50aWZpYyBUYWxrIEkuJ1xuICAgICAgICAgICAgICAgIHRhZz0gJ1RhbGtzJ1xuICAgICAgICAgICAgICAgIGNvbG9yPSd2YXIoLS1saWdodGJsdWUpJ1xuICAgICAgICAgICAgICAgIGNzc3RhZz1cInRhbGtvbmVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+U2NpZW50aWZpYyBUYWxrIDEgYnkgS3Jpc3RpYW4gTVx1MDBGQ2xsZXIgYW5kIFJhbSBTaGFrYXI8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0YWxrb25lXCIgc3R5bGU9e3tkaXNwbGF5OiBcIm5vbmVcIn19PlxuICAgICAgICAgICAgICAgICAgICAgICAgU28gbXVjaCBtb3JlXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgey8qIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZUV2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlPVwiNC8xMy8xOVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PVwiWW91IGNhbiBlbWJlZCBpbWFnZXMuLi5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9yZXMuY2xvdWRpbmFyeS5jb20vZG92b3E4am91L2ltYWdlL3VwbG9hZC92MTU2NDc3MjE5NC9qZWxseWZpc2guanBnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cImplbGx5ZmlzaCBzd2ltbWluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVkaXQ9XCJQaG90byBieSBbQHRhdmkwMDRdKGh0dHBzOi8vdW5zcGxhc2guY29tL0B0YXZpMDA0KVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9J1NjaWVudGlmaWMgVGFsayBJLic+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VXJsQnV0dG9uIGhyZWY9XCJodHRwczovL3Vuc3BsYXNoLmNvbS9zZWFyY2gvcGhvdG9zL3VuZGVyc2VhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgbW9yZSB1bmRlcnNlYSBwaG90b3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9VcmxCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbWFnZUV2ZW50PiAqL31cblxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdIb3cgdG8gV2lraSdcbiAgICAgICAgICAgICAgICB0YWc9J1dvcmtzaG9wIFNlc3Npb24gSS4nXG4gICAgICAgICAgICAgICAgY29sb3I9J3ZhcigtLXRleHQtcHJpbWFyeSknXG4gICAgICAgICAgICAgICAgY3NzdGFnPVwid2lraXdvcmtzaG9wXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4+TGVhcm5pbmcgdGhlIGJhc2ljcyBvZiBXaWtpIGNvZGluZyBhbmQgZGVzaWduLiBJbiB0aGlzIHdvcmtzaG9wLCB0aGUgcGFydGljaXBhbnRzIGdlaW5lZCBleHBlcnRpc2UgdG8gZWxldmF0ZSB0aGVpciB0ZWFtcyB3aWtpLlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwid2lraXdvcmtzaG9wXCIgc3R5bGU9e3tkaXNwbGF5OiBcIm5vbmVcIn19PlxuICAgICAgICAgICAgICAgICAgICAgICAgU28gbXVjaCBtb3JlXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9UaW1lbGluZUl0ZW0+XG4gICAgICAgICAgICAgICAgPFRpbWVsaW5lSXRlbVxuICAgICAgICAgICAgICAgIGRhdGU9J0hvdyB0byBTeW5CaW8nXG4gICAgICAgICAgICAgICAgdGFnPSdXb3Jrc2hvcCBTZXNzaW9uIEkuJ1xuICAgICAgICAgICAgICAgIGNvbG9yPSd2YXIoLS10ZXh0LXByaW1hcnkpJ1xuICAgICAgICAgICAgICAgIGNzc3RhZz1cInN5bndvcmtzaG9wXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4+RGVzaWduIGdlbmV0aWMgY29uc3RydWN0cyBhbmQgcmUtd3JpdGUgdGhlIGdlbm9taWMgY29kZSwgYW5kIHBsYW4gZXhwZXJpbWVudHMgdXNpbmcgQUkuIExlYXJuIGhvdyB0byBlZmZlY3RpdmVseSBidWlsZCBnZW5ldGljIGNpcmN1aXQgc3lzdGVtcyBmb3IgaW1wbGVtZW50YXRpb24gaW4geW91ciBpR0VNIHByb2plY3QuXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJzeW53b3Jrc2hvcFwiIHN0eWxlPXt7ZGlzcGxheTogXCJub25lXCJ9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvIG11Y2ggbW9yZVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdIb3cgdG8gdXNlIEFJIGFzIGEgc2NpZW50aXN0J1xuICAgICAgICAgICAgICAgIHRhZz0nV29ya3Nob3AgU2Vzc2lvbiBJLidcbiAgICAgICAgICAgICAgICBjb2xvcj0ndmFyKC0tdGV4dC1wcmltYXJ5KSdcbiAgICAgICAgICAgICAgICBjc3N0YWc9XCJhaXdvcmtzaG9wXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxoNT5Nb2Rlcm4gcHJvYmxlbXMgcmVxdWlyZSBtb2Rlcm4gc29sdXRpb25zPC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Q29tcHV0YXRpb25hbCB0ZWNobm9sb2dpZXMgYXJlIGdldHRpbmcgbW9yZSBpbiB0aGUgZm9jdXMgb2Ygc2NpZW50aWZpYyByZXNlYXJjaC4gSW50ZWdyYXRpb24gb2YgZ2VuZXJhdGl2ZSBLSSBsaWtlIEdlbkFJIGJ5cGFzcyBsaW1pdGF0aW9ucyBhbmQgb2ZmZXJzIHBvdGVudGlhbCByaXNrcyAtIGxlYXJuIGhvdyB0byBpbXBsZW1lbnQgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UuXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImFpd29ya3Nob3BcIiBzdHlsZT17e2Rpc3BsYXk6IFwibm9uZVwifX0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTbyBtdWNoIG1vcmVcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IFxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdTY2llbnRpZmljIFRhbGsgSUkuJ1xuICAgICAgICAgICAgICAgIHRhZz0gJ1RhbGtzJ1xuICAgICAgICAgICAgICAgIGNvbG9yPSd2YXIoLS1saWdodGJsdWUpJ1xuICAgICAgICAgICAgICAgIGNzc3RhZz1cInRhbGt0d29cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+U2NpZW50aWZpYyBUYWxrIDIgYnkgS2FybGEgV2FnbmVyPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidGFsa3R3b1wiIHN0eWxlPXt7ZGlzcGxheTogXCJub25lXCJ9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvIG11Y2ggbW9yZVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gXG4gICAgICAgICAgICAgICAgPC9UaW1lbGluZUl0ZW0+XG4gICAgICAgICAgICAgICAgPFRpbWVsaW5lSXRlbVxuICAgICAgICAgICAgICAgIGRhdGU9J1RlYW0gcHJvamVjdCBwcmVzZW50YXRpb25zJ1xuICAgICAgICAgICAgICAgIHRhZz0gJ1RlYW0gcHJlc2VudGF0aW9ucydcbiAgICAgICAgICAgICAgICBjb2xvcj0ndmFyKC0tYWNjZW50LXByaW1hcnknXG4gICAgICAgICAgICAgICAgY3NzdGFnPVwidGVhbXByZXNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGg1PlRlYW0gcHJvamVjdCBwcmVzZW50YXRpb25zPC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidGVhbXByZXNcIiBzdHlsZT17e2Rpc3BsYXk6IFwibm9uZVwifX0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTbyBtdWNoIG1vcmVcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IFxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdQb3N0ZXIgRXhoaWJpdGlvbiBCb290aCdcbiAgICAgICAgICAgICAgICB0YWc9ICdUZWFtIHByZXNlbnRhdGlvbnMnXG4gICAgICAgICAgICAgICAgY29sb3I9J3ZhcigtLWFjY2VudC1wcmltYXJ5KSdcbiAgICAgICAgICAgICAgICBjc3N0YWc9XCJ0ZWFtYm9vdGhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGg1PlBvc3RlciBFeGhpYml0aW9uIEJvb3RoIDwvaDU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInRlYW1ib290aFwiIHN0eWxlPXt7ZGlzcGxheTogXCJub25lXCJ9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvIG11Y2ggbW9yZVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gXG4gICAgICAgICAgICAgICAgPC9UaW1lbGluZUl0ZW0+XG4gICAgICAgICAgICAgICAgPFRpbWVsaW5lSXRlbVxuICAgICAgICAgICAgICAgIGRhdGU9J0hvdyB0byB3b3JrIHNhZmUnXG4gICAgICAgICAgICAgICAgdGFnPSdXb3Jrc2hvcCBTZXNzaW9uIElJLidcbiAgICAgICAgICAgICAgICBjb2xvcj0ndmFyKC0tdGV4dC1wcmltYXJ5KSdcbiAgICAgICAgICAgICAgICBjc3N0YWc9XCJzYWZld29ya3Nob3BcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGg1PkFib3V0IER1YWwtdXNlIGFuZCBCaW9zYWZldHk8L2g1PlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Ob3ZlbCB0ZWNobm9sb2dpZXMgb3BlbmVkIHBvc3NpYmlsaXRpZXMgYW5kIHJpc2tzLiBMZWFybiBob3cgeW91IGltcGxlbWVudCBTYWZldHkgYW5kIFNlY3VyaXR5IFN0cmF0ZWdpZXMgd2l0aGluIHlvdXIgcHJvamVjdCBhbmQgdGhpbmsgbW9yZSByZXNwb25zaWJsZSBpbiB0ZXJtcyBvZiBEdWFsIFVzZS5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwic2FmZXdvcmtzaG9wXCIgc3R5bGU9e3tkaXNwbGF5OiBcIm5vbmVcIn19PlxuICAgICAgICAgICAgICAgICAgICAgICAgU28gbXVjaCBtb3JlXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiBcbiAgICAgICAgICAgICAgICA8L1RpbWVsaW5lSXRlbT5cbiAgICAgICAgICAgICAgICA8VGltZWxpbmVJdGVtXG4gICAgICAgICAgICAgICAgZGF0ZT0nSG93IHRvIENvbW11bmljYXRlIFNjaWVuY2UnXG4gICAgICAgICAgICAgICAgdGFnPSdXb3Jrc2hvcCBTZXNzaW9uIElJLidcbiAgICAgICAgICAgICAgICBjb2xvcj0ndmFyKC0tdGV4dC1wcmltYXJ5KSdcbiAgICAgICAgICAgICAgICBjc3N0YWc9XCJjb21td29ya3Nob3BcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIEV4cGVyaWVuY2UgaG93IHNjaWVuY2UgY29tbXVuaWNhdGlvbiBjb3VsZCBiZS4gTGVhcm4gY3JlYXRpdmUgYW5kIGZ1bm55IHdheXMgdG8gY29tbXVuaWNhdGUgZGlmZmljdWx0IHRvcGljcy4gXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJyPjwvYnI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlRoaW5rIG91dHNpZGUgdGhlIGJveCBhbmQgdHJhaW4geW91ciBza2lsbHMuIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJjb21td29ya3Nob3BcIiBzdHlsZT17e2Rpc3BsYXk6IFwibm9uZVwifX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnI+PC9icj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNj5TZXR0aW5nPC9oNj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB3b3Jrc2hvcCB3YXMgb2ZmZXJlZCB0byB1cyBieSA8YSBocmVmPVwiaHR0cHM6Ly93d3cuc3R1ZC1zY2ljb20uZGUvXCI+U3R1ZFNjaUNvbTwvYT4uXG4gICAgICAgICAgICAgICAgICAgICAgICBTdHVkU2NpQ29tIGlzIGFuIGluaXRpYXRpdmUgZm9yIHNjaWVuY2UgY29tbXVuaWNhdGlvbiBieSBzdHVkZW50cyBmb3Igc3R1ZGVudHMgaW4gR2VybWFueS4gXG4gICAgICAgICAgICAgICAgICAgICAgICBUaGV5IGhlbGQgdGhpcyB3b3Jrc2hvcCBmb3IgdXMgZm9yIHRoZSB2ZXJ5IGZpcnN0IHRpbWUgYW5kIHdlIGFyZSBnbGFkIHRoYXQgd2Ugd2VyZSBhYmxlIHRvIG9mZmVyIHRoZSBcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwcmlzaW5nIFN0dWRTY2lDb20gdGVhbSBhIHBsYXRmb3JtIHRvIHRyeSBvdXQgdGhpcyBraW5kIG9mIG91dHJlYWNoLiBJbiBhZGRpdGlvbiwgd2Ugd2VyZSBhYmxlIHRvIGdhaW4gXG4gICAgICAgICAgICAgICAgICAgICAgICBrbm93bGVkZ2UgYWJvdXQgcHJvcGVyIHNjaWVuY2UgY29tbXVuaWNhdGlvbiBcdTIwMTMgIGEgY2xlYXIgd2luLXdpbiBzaXR1YXRpb24gZm9yIGFsbCBvZiB1cyFcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNj5XaGF0IGRpZCB3ZSBsZWFybj88L2g2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICBKdWxpYSBLYWxpbm93c2tpLCBQaEQgYXQgQmllbGVmZWxkIFVuaXZlcnNpdHkgYW5kIEZvcmVpZ24gTWluaXN0ZXIgb2YgU3R1ZFNjaUNvbSwgdG9nZXRoZXIgd2l0aCBDYXJvbGluIE1hbG1lbmRpZXIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWVyIHBoeXNpY3Mgc3R1ZGVudCBhbmQgbm93IG9yZ2FuaXplciBpbiB0aGUgU3R1ZFNjaUNvbSB0ZWFtLCBpbnRyb2R1Y2VkIHVzIHRvIHRoZSB0aGVvcmllcyBhbmQgIHByYWN0aWNlIFxuICAgICAgICAgICAgICAgICAgICAgICAgb2YgZGlmZmVyZW50IHR5cGVzIG9mIHNjaWVuY2UgY29tbXVuaWNhdGlvbiBhbmQgaG93IHRvIGRldmVsb3AgYSBjb21tdW5pY2F0aW9uIHN0cmF0ZWd5LiBcbiAgICAgICAgICAgICAgICAgICAgICAgIEluIGRldGFpbCwgd2Ugd2VyZSB0YXVnaHQgdG8gYXNrIG91cnNlbHZlcyBzZXZlcmFsIHF1ZXN0aW9ucyB0byBkZWZpbmUgb3VyIHRvcGljLCB0aGUgbWVkaXVtIG9mIFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbXVuaWNhdGlvbiwgYXMgd2VsbCBhcyB0aGUgY2hhcmFjdGVyaXphdGlvbiBvZiBvdXIgdGFyZ2V0IGdyb3VwIGFuZCB0aGUgcGxhbm5lZCBhY2hpZXZlbWVudCB3aXRoIG91ciBcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjaWVuY2UgY29tbXVuaWNhdGlvbi4gXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9vdGhlci92b3J0cmFnLXNjaWNvbS1iZmgtc2NyZWVuc2hvdC5qcGdcIj48L2ltZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRoZSBrZXkgbWVzc2FnZSBmb3IgdXMgd2FzIHRvIHBsYW4gdGhlIHNjaWVuY2UgY29tbXVuaWNhdGlvbiBiZWZvcmUgd2UgZGl2ZSBpbiBhbmQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCBhdWRpZW5jZSBnZXRzIHRoZSBtZXNzYWdlIHdlIHdhbnQgdG8gc2VuZC4gIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNj5JbXBsZW1lbnRhdGlvbjwvaDY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyd2FyZHMsIHRoZSBhdHRlbmRpbmcgaUdFTSB0ZWFtcyB0YWxrZWQgYWJvdXQgdGhlaXIgc2NpZW5jZSBjb21tdW5pY2F0aW9uIHBsYW5zIGFuZCBob3cgdGhleSBjb3VsZCBpbXByb3ZlIHRoZW0gXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgc2tpbGxzIGxlYXJuZWQgaW4gdGhpcyB3b3Jrc2hvcC4gT3VyIHRlYW0gcmV2aXNlZCB0aGVpciBwbGFucyBmb3IgZXhwbGFpbmluZyBnZW5lIGVkaXRpbmcgdG8gXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiBhbmQgc3RhcnRlZCBkZXZlbG9waW5nIGV4cGVyaW1lbnRzIHRvIGhlbHAgdGhlbSBiZXR0ZXIgdW5kZXJzdGFuZCBjeXN0aWMgZmlicm9zaXMsIHdoaWNoIHdlIFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudGVkIGxhdGVyIG9udG8gdGhlIHB1YmxpYyBhdCBcdTIwMUNEZXIgVGV1dG8gcnVmdCFcdTIwMUQgW0xpbmtdLCBhbiBldmVudCBpbiBCaWVsZWZlbGQgdG8gY29ubmVjdCB0aGUgbG9jYWwgXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1bGF0aW9uIHdpdGggcmVnaW9uYWwgY29tcGFuaWVzIGFuZCBpbnN0aXR1dGVzIHRvIGluZm9ybSB0aGVtIGFib3V0IHRoZWlyIHdvcmsgLSBpbmNsdWRpbmcgb3VyIGlHRU0gdGVhbSEgXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgXG4gICAgICAgICAgICAgICAgPC9UaW1lbGluZUl0ZW0+XG4gICAgICAgICAgICAgICAgPFRpbWVsaW5lSXRlbVxuICAgICAgICAgICAgICAgIGRhdGU9J0hvdyB0byBQaXRjaCBZb3VyIFByb2plY3QnXG4gICAgICAgICAgICAgICAgdGFnPSdXb3Jrc2hvcCBTZXNzaW9uIElJLidcbiAgICAgICAgICAgICAgICBjb2xvcj0ndmFyKC0tdGV4dC1wcmltYXJ5KSdcbiAgICAgICAgICAgICAgICBjc3N0YWc9XCJwaXRjaFwiXG4gICAgICAgICAgICAgICAgPiBcbiAgICAgICAgICAgICAgICA8c3Bhbj5JbWFnZSB5b3UgaGF2ZSBvbmx5IHRocmVlIG1pbnV0ZXMgd2l0aCB5b3VyIGJvc3MgdG8gc2VsbCB5b3VyIGlkZWEuLi4gXG4gICAgICAgICAgICAgICAgQWZ0ZXIgb3VyIHdvcmtzaG9wIHlvdSBsZWFybmVkIHRlY2huaXF1ZXMgdG8gc2VsbCBldmVyeSBwZW4gYW5kIGV2ZW4gbW9yZSB0byBldmVyeSBib3NzIG9uIHRoZSBwbGFuZXQuICAgICAgIFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwicGl0Y2hcIiBzdHlsZT17e2Rpc3BsYXk6IFwibm9uZVwifX0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTbyBtdWNoIG1vcmVcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICBcbiAgICAgICAgICAgICAgICA8L1RpbWVsaW5lSXRlbT5cbiAgICAgICAgICAgICAgICA8VGltZWxpbmVJdGVtXG4gICAgICAgICAgICAgICAgZGF0ZT0nSG93IHRvIE11bHRpIE1lZGlhJ1xuICAgICAgICAgICAgICAgIHRhZz0nV29ya3Nob3AgU2Vzc2lvbiBJSS4nXG4gICAgICAgICAgICAgICAgY29sb3I9J3ZhcigtLXRleHQtcHJpbWFyeSknXG4gICAgICAgICAgICAgICAgY3NzdGFnPVwibXVsdGltZWRpYVwiXG4gICAgICAgICAgICAgICAgPiBcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8c3Bhbj5MZWFybiB0aGUgYmFzaWNzIG9mIGZpbG1tYWtpbmcgYW5kIHZpZGVvIHByb2R1Y3Rpb24uIFxuICAgICAgICAgICAgICAgIExvb2sgYmVoaW5kIHRoZSBzY2VuZXMgYW5kIGdldCBpbiB0b3VjaCB3aXRoIHByb2Zlc3Npb25hbHMuIFxuICAgICAgICAgICAgICAgIFRyYWluIHlvdXIgc2tpbGxzIHRvIGRpcmVjdCBpR0VNLXJlbGF0ZWQgdmlkZW9zIGFuZCBtb3ZpZXMuPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJtdWx0aW1lZGlhXCIgc3R5bGU9e3tkaXNwbGF5OiBcIm5vbmVcIn19PlxuICAgICAgICAgICAgICAgICAgICAgICAgU28gbXVjaCBtb3JlXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgXG4gICAgICAgICAgICAgICAgPC9UaW1lbGluZUl0ZW0+XG4gICAgICAgICAgICAgICAgPFRpbWVsaW5lSXRlbVxuICAgICAgICAgICAgICAgIGRhdGU9J1BhbmVsIERpc2N1c3Npb24nXG4gICAgICAgICAgICAgICAgdGFnPSAnVGFsa3MnXG4gICAgICAgICAgICAgICAgY29sb3I9J3ZhcigtLWxpZ2h0Ymx1ZSknXG4gICAgICAgICAgICAgICAgY3NzdGFnPVwicGFuZWxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+UGFuZWwgRGlzY3Vzc2lvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInBhbmVsXCIgc3R5bGU9e3tkaXNwbGF5OiBcIm5vbmVcIn19PlxuICAgICAgICAgICAgICAgICAgICAgICAgU28gbXVjaCBtb3JlXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgXG4gICAgICAgICAgICAgICAgPC9UaW1lbGluZUl0ZW0+XG4gICAgICAgICAgICAgICAgPFRpbWVsaW5lSXRlbVxuICAgICAgICAgICAgICAgIGRhdGU9J2lHRU1lciBUZWQgVGFsa3MnXG4gICAgICAgICAgICAgICAgdGFnPSAnVGFsa3MnXG4gICAgICAgICAgICAgICAgY29sb3I9J3ZhcigtLWxpZ2h0Ymx1ZSknXG4gICAgICAgICAgICAgICAgY3NzdGFnPVwidGVkdGFsa1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5pR0VNZXIgVGVkIFRhbGtzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidGVkdGFsa1wiIHN0eWxlPXt7ZGlzcGxheTogXCJub25lXCJ9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvIG11Y2ggbW9yZVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gIFxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdTY2llbmNlIFNsYW0gU2Vzc2lvbidcbiAgICAgICAgICAgICAgICB0YWc9ICdUYWxrcydcbiAgICAgICAgICAgICAgICBjb2xvcj0ndmFyKC0tbGlnaHRibHVlKSdcbiAgICAgICAgICAgICAgICBjc3N0YWc9XCJzbGFtXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlNjaWVuY2UgU2xhbSBTZXNzaW9uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwic2xhbVwiIHN0eWxlPXt7ZGlzcGxheTogXCJub25lXCJ9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvIG11Y2ggbW9yZVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gIFxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSd0aW1lbGluZS1lbmQnPlxuICAgICAgICAgICAgICAgICAgICBBd2FyZCBDZXJlbW9ueVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDwvPlxuICAgICAgICApXG4gICAgXG59XG4iLCAiLyogICovXG5cbmNvbnN0IGltYWdlcyA9IFtcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvYmFkZ2VzLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9qb2Vybi5qcGVnXCIsICB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL2NoZWtpbi5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvc2luYW4uanBlZ1wiLCAgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9wYXJ0eS5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvb3JnYXRlYW0uanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL2hhbGwuanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL2J5ZTEuanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL3VuaS5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvdGFsa2luZy5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAva3Jpc3RpYW4uanBlZ1wiLCAgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9hZmZlLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9tYXJnYnVyZy5qcGVnXCIsICB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL2RpZXR6LmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC93YWdlbmluZ2VuLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9hYWNoZW4uanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL29yZ2F0ZWFtLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9vcmdhdGVhbS5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvYmFkZ2VzLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9qb2Vybi5qcGVnXCIsICB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL2NoZWtpbi5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvc2luYW4uanBlZ1wiLCAgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9wYXJ0eS5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyfSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvb3JnYXRlYW0uanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL29yZ2F0ZWFtLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9vcmdhdGVhbS5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyfSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvb3JnYXRlYW0uanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL29yZ2F0ZWFtLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTJ9LFxuXVxuXG5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCRkhHYWxsZXJ5KCl7XG4gIGxldCByb3dzID0gW11cbiAgZm9yICggbGV0IGkgPSAwOyAgaSA8IGltYWdlcy5sZW5ndGg7IGkrKyApe1xuICAgIHJvd3MucHVzaCg8ZGl2PjxpbWcgc3JjPXtpbWFnZXNbaV0uc3JjfS8+PC9kaXY+KSBcbiAgfVxuICAgIHJldHVybiggXG4gICAgICAgIDxkaXYgaWQ9XCJnYWxsZXJ5XCI+XG4gICAgICAgICAge3Jvd3N9XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn1cblxuIiwgImltcG9ydCB7IERvd25sb2FkTGluayB9IGZyb20gXCIuL0J1dHRvbnNcIlxuXG5cbmV4cG9ydCBmdW5jdGlvbiBQREYoe2xpbmssIG5hbWV9OiB7bGluazogc3RyaW5nLCBuYW1lOnN0cmluZ30pe1xuICAgIHJldHVybihcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J3JvdyBhbGlnbi1pdGVtcy1jZW50ZXInPlxuICAgICAgICAgICAgICAgIDxpZnJhbWUgc3JjPXtsaW5rfSB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI1MzB2d1wiIHRpdGxlPVwidGl0bGVcIiBjbGFzc05hbWU9J3NtYWxsLWknPlxuICAgICAgICAgICAgICAgIDwvaWZyYW1lPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdyb3cgZG93bmxvYWQtY29sJz5cbiAgICAgICAgICAgICAgICA8RG93bmxvYWRMaW5rIHVybD17bGlua30gZmlsZU5hbWU9e25hbWV9ID48L0Rvd25sb2FkTGluaz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgIClcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJGSHBkZigpe1xuICAgIHJldHVybihcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J3JvdyBhbGlnbi1pdGVtcy1jZW50ZXInPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2NvbCc+XG4gICAgICAgICAgICA8UERGIGxpbms9J2h0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BkZnMvYmZoLWZseWVyLWV1cm9wZWFuLW1lZXR1cC5wZGYnIG5hbWU9XCJiZmgtZmx5ZXItZXVyb3BlYW4tbWVldHVwLnBkZlwiLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2NvbC0yJz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2NvbCc+XG4gICAgICAgICAgICA8UERGIGxpbms9J2h0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BkZnMvYmZoLW1lZXQtdXAtZ3VpZGVsaW5lLnBkZicgbmFtZT1cImJmaC1tZWV0LXVwLWd1aWRlbGluZS5wZGZcIi8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgIClcbn0iLCAiaW1wb3J0IHsgTXlUaW1lbGluZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL015LVRpbWVsaW5lXCI7XG5pbXBvcnQgQkZIR2FsbGVyeSBmcm9tIFwiLi4vY29tcG9uZW50cy9waG90by1ncmlkXCI7XG5pbXBvcnQgQkZIcGRmIGZyb20gXCIuLi9jb21wb25lbnRzL3BkZnNcIjtcbmltcG9ydCB7IEgyfSBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkaW5nc1wiO1xuaW1wb3J0IHsgQkZIU3R5bGVUYWJzIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGFic1wiO1xubGV0IHRhYmJ5cyA9IFtcbiAge1xuICAgIG5vZGU6IDxCRkhwZGY+PC9CRkhwZGY+LCBcbiAgICBjc3NuYW1lOiBcInBkZlwiLFxuICAgIGJ1dHRvbm5hbWU6IFwiUERGc1wiXG4gIH0sXG4gIHtcbiAgICBub2RlOiA8TXlUaW1lbGluZT48L015VGltZWxpbmU+LCBcbiAgICBjc3NuYW1lOiBcInRpbWVsaW5lXCIsXG4gICAgYnV0dG9ubmFtZTogXCJUaW1lbGluZVwiXG4gIH0sXG4gIHtcbiAgICBub2RlOiA8QkZIR2FsbGVyeS8+LFxuICAgIGNzc25hbWU6IFwiZ2FsbFwiLFxuICAgIGJ1dHRvbm5hbWU6IFwiR2FsbGVyeVwiXG4gIH0sXG4gIHtcbiAgICBub2RlOiA8QWJvdXQvPiwgXG4gICAgY3NzbmFtZTogXCJhYm91dFwiLFxuICAgIGJ1dHRvbm5hbWU6IFwiQWJvdXRcIlxuICB9XG5dXG5leHBvcnQgZnVuY3Rpb24gQmZoKCkge1xuICBcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJcIiAvKiBzdHlsZT17eyBwYWRkaW5nVG9wOiBcIjV2d1wifX0gKi8+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiIHN0eWxlPXt7cG9zaXRpb246IFwicmVsYXRpdmVcIn19PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleHBsb3JlXCI+XG4gICAgICAgICAgICA8YiBjbGFzc05hbWU9XCJmYW5jeVwiPkV4cGxvcmUhPC9iPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ2FsbC1hXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJnYWxsLWJcIiB0eXBlb2Y9XCJidXR0b25cIiBvbkNsaWNrPXtvcGVuQ2l0eSh7Y2l0eU5hbWU6IFwiYWJvdXRcIn0pfT5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9kZXNpZ24vaWNvbnMvdW5pdGVkLnBuZ1wiIGFsdD1cImEgaG91c2Ugb24gYSBtb3VudGFpblwiLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJnYWxsLWJcIiB0eXBlb2Y9XCJidXR0b25cIiAgb25DbGljaz17b3BlbkNpdHkoe2NpdHlOYW1lOiBcImdhbGxcIn0pfT5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9kZXNpZ24vaWNvbnMvZ2FsbGVyeS5wbmdcIiBhbHQ9XCJhIGhvdXNlIG9uIGEgbW91bnRhaW5cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZ2FsbC1iXCIgdHlwZW9mPVwiYnV0dG9uXCIgb25DbGljaz17b3BlbkNpdHkoe2NpdHlOYW1lOiBcInRpbWVsaW5lXCJ9KX0gPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2Rlc2lnbi9pY29ucy90aW1lbGluZS5wbmdcIiBhbHQ9XCJhIGhvdXNlIG9uIGEgbW91bnRhaW5cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZ2FsbC1iXCIgdHlwZW9mPVwiYnV0dG9uXCIgb25DbGljaz17b3BlbkNpdHkoe2NpdHlOYW1lOiBcInBkZlwifSl9PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9kZXNpZ24vaWNvbnMvZmlsZS5wbmdcIiBhbHQ9XCJhIGhvdXNlIG9uIGEgbW91bnRhaW5cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnVmZmVyXCI+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgPEJGSFN0eWxlVGFicyBkYXRhPXt0YWJieXN9IGNsYT1cInRhYmNvbnRlbnRcIj48L0JGSFN0eWxlVGFicz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG5cblxuXG5leHBvcnQgZnVuY3Rpb24gQWJvdXQoKXtcbiAgcmV0dXJuKFxuICAgIDxkaXY+XG4gICAgICA8SDIgdGV4dD1cIkFib3V0IE91ciBDb29wZXJhdGlvblwiLz5cbiAgICAgIDxwPk92ZXIgdGhlIHBhc3QgeWVhcnMsIHdlIGhhdmUgYWxsIG1hZGUgbWFueSBmcmllbmRzIGFuZCBleHBhbmRlZCBvdXIgc2NpZW50aWZpYyBuZXR3b3JrIGR1cmluZyB0aGUgaUdFTSBjb21wZXRpdGlvbiBhbmQgYWZ0ZXJ3YXJkcy4gVGhlIGlkZWEgYmVoaW5kIHRoZSBjb29wZXJhdGlvbiBiZXR3ZWVuIEJpZWxlZmVsZCwgRnJhbmtmdXJ0IGFuZCBIYW1idXJnIGlzIGJhc2VkIG9uIHRoZSBmcmllbmRzaGlwIHRoYXQgZm9ybWVyIHBhcnRpY2lwYW50cyBoYXZlIGdhaW5lZCBhbG9uZ3NpZGUgdGhlIGlHRU0gY29tcGV0aXRpb24uIE91ciBtaXNzaW9uIGlzIHRvIHByb21vdGUgZnV0dXJlIHByb2plY3RzIGFuZCBicmluZyB0ZWFtcyB0b2dldGhlci4gVGhlIGxvY2F0aW9uIG9mIHRoZSBCRkggRXVyb3BlYW4gTWVldC1VcCAyMDI0IHdpbGwgYWx0ZXJuYXRlIGJldHdlZW4gdGhlIHVuaXZlcnNpdGllcyBvZiBCaWVsZWZlbGQsIEZyYW5rZnVydCwgYW5kIEhhbWJ1cmcuIFdlIHdpc2ggeW91IGxvdHMgb2YgZnVuIGFuZCBob3BlIHRoYXQgdGhlIGlHRU0gY29tcGV0aXRpb24gZnVsZmlsbHMgeW91IGFzIG11Y2ggYXMgaXQgaGFzIGZ1bGZpbGxlZCB1cy48L3A+XG4gICAgICA8SDIgdGV4dD1cIkFib3V0IE5ldHdvcmtpbmdcIi8+IFxuICAgICAgPHA+V2Ugd2FudCB0byBjb25uZWN0IHdpdGggZWFjaCBvdGhlciEgQW5kIGluIHRoZSBsYXN0IHllYXJzLCBpR0VNIHRlYW1zIGFsbCBhcm91bmQgdGhlIHdvcmxkIGFyZSBnZXR0aW5nIHRvZ2V0aGVyIGFuZCBleGNoYW5nZSBmdW5ueSBtZW1lcyBvciBjb250YWN0IGRhdGEgdmlhIHN0aWNrZXJzLiBUaGVyZWZvcmUgd2UgZXN0YWJsaXNoIHRoZSBmaXJzdCBpR0VNIFRlYW1zIFN0aWNrZXIgQWxidW0gZXZlciBjcmVhdGVkLiBZb3Ugd2FudCB0byBwYXJ0aWNpcGF0ZSBpbnRvIHRoZSBiaWdnZXN0IHNvY2lhbCBuZXR3b3JraW5nIGV2ZW50LCBjb2xsZWN0IGFsbCBzdGlja2VycyBhbmQgd2luIHNwZWNpYWwgcHJpemVzPyBTaWduIHVwIGFuZCBnb3R0YSBjYXRjaCAnZW0gYWxsIVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICApXG59XG5cblxuZnVuY3Rpb24gb3BlbkNpdHkoe2NpdHlOYW1lfTp7Y2l0eU5hbWU6IHN0cmluZ30pIHtcbiAgY29uc3Qgb3BlbmNpdHkgPSAgKGV2ZW50IDogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudCwgTW91c2VFdmVudD4pID0+e1xuICAgIHZhciBpLCB0YWJjb250ZW50LCB0YWJsaW5rcztcbiAgdGFiY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ0YWJjb250ZW50XCIpO1xuICBmb3IgKGkgPSAwOyBpIDwgdGFiY29udGVudC5sZW5ndGg7IGkrKykge1xuICAgICh0YWJjb250ZW50W2ldIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gIH1cbiAgdGFibGlua3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZ2FsbC1iXCIpO1xuICBmb3IgKGkgPSAwOyBpIDwgdGFibGlua3MubGVuZ3RoOyBpKyspIHtcbiAgICB0YWJsaW5rc1tpXS5jbGFzc05hbWUgPSB0YWJsaW5rc1tpXS5jbGFzc05hbWUucmVwbGFjZShcIiBiZy1hY3RcIiwgXCJcIik7XG4gIH1cblxuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjaXR5TmFtZSkhLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQuY2xhc3NOYW1lICs9IFwiIGJnLWFjdFwiO1xuICB9XG4gIHJldHVybiBvcGVuY2l0eTsgXG59XG5cblxuXG4gICAgIiwgImltcG9ydCB7IEJveCwgVGFiIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7VGFiQ29udGV4dCwgVGFiTGlzdCwgVGFiUGFuZWx9IGZyb20gJ0BtdWkvbGFiJztcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBDb2xsYXBzaWJsZSBmcm9tIFwiLi4vY29tcG9uZW50cy9Db2xsYXBzaWJsZVwiOyBcblxuZXhwb3J0IGZ1bmN0aW9uIFdpa2kgICgpIHtcblxuICByZXR1cm4gKFxuICAgICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICA8V2lraVRhYnM+PC9XaWtpVGFicz4gXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuXG5cbiBleHBvcnQgZnVuY3Rpb24gV2lraVRhYnMoKSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoJzEnKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoX2V2ZW50OiBSZWFjdC5TeW50aGV0aWNFdmVudCwgbmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggc3g9e3sgd2lkdGg6ICcxMDAlJywgdHlwb2dyYXBoeTogJ2JvZHkxJyB9fT5cbiAgICAgIDxUYWJDb250ZXh0IHZhbHVlPXt2YWx1ZX0+XG4gICAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQm90dG9tOiAxLCBib3JkZXJDb2xvcjogJ2RpdmlkZXInIH19PlxuICAgICAgICAgIDxUYWJMaXN0IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9IGFyaWEtbGFiZWw9XCJsYWIgQVBJIHRhYnMgZXhhbXBsZVwiPlxuICAgICAgICAgICAgPFRhYiBsYWJlbD1cIkFib3V0XCIgdmFsdWU9XCIxXCIgLz5cbiAgICAgICAgICAgIDxUYWIgbGFiZWw9XCJHZXR0aW5nIHN0YXJ0ZWRcIiB2YWx1ZT1cIjZcIiAvPlxuICAgICAgICAgICAgPFRhYiBsYWJlbD1cIlRyb3VibGVzaG9vdGluZ1wiIHZhbHVlPVwiMlwiIC8+XG4gICAgICAgICAgICA8VGFiIGxhYmVsPVwiQ29tcG9uZW50c1wiIHZhbHVlPVwiM1wiIC8+XG4gICAgICAgICAgICA8VGFiIGxhYmVsPVwiRG93bmxvYWRzXCIgdmFsdWU9XCI0XCIgLz5cbiAgICAgICAgICAgIDxUYWIgbGFiZWw9XCJSZXNvdXJjZXNcIiB2YWx1ZT1cIjVcIiAvPlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9UYWJMaXN0PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPFRhYlBhbmVsIHZhbHVlPVwiMVwiPiAgIDwvVGFiUGFuZWw+XG4gICAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjZcIj4gPFN0YXJ0ZWQvPiAgPC9UYWJQYW5lbD5cbiAgICAgICAgPFRhYlBhbmVsIHZhbHVlPVwiMlwiPiA8VHJvdWJsZXNob290aW5nLz4gPC9UYWJQYW5lbD5cbiAgICAgICAgPFRhYlBhbmVsIHZhbHVlPVwiM1wiPiAgPC9UYWJQYW5lbD5cbiAgICAgICAgPFRhYlBhbmVsIHZhbHVlPVwiNFwiPiAgIDwvVGFiUGFuZWw+XG4gICAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjVcIj4gIDxTb3VyY2VzLz4gPC9UYWJQYW5lbD5cbiAgICAgIDwvVGFiQ29udGV4dD5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuZnVuY3Rpb24gU3RhcnRlZCgpe1xuXG4gIHJldHVybihcbiAgICA8PlxuICAgIDxoMz5EaWZmZXJlbmNlcyBiZXR3ZWVuIFJlYWN0IGFuZCBwbGFpbiBIVE1MPC9oMz5cbiAgICA8cD5UaGVyZSBhcmUgc29tZSBkaWZmZXJlbmNlcyBpbiB0aGUgc3ludGF4IHRoYXQgY2FuIGxlYWQgdG8gZXJyb3JzLjwvcD5cbiAgICA8dGFibGU+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aD48L3RoPlxuICAgICAgICA8dGg+UGxhaW4gSFRNTDwvdGg+XG4gICAgICAgIDx0aD5Vc2luZyBSZWFjdDwvdGg+XG4gICAgICA8L3RyPlxuICAgICAgPHRyPlxuICAgICAgICA8dGg+IDxjb2RlPiZsdDt0YWdzJmd0OyA8L2NvZGU+IDwvdGg+XG4gICAgICAgIDx0aD4gXG4gICAgICAgICAgPHA+IE1vc3QgdGFncyBoYXZlIHRvIGJlIG9wZW5lZCBhbmQgY2xvc2VkLCBidXQgc29tZSBjYW4gYmUgb25seSBvcGVuZWQuIDwvcD4gXG4gICAgICAgICAgPHA+IGUuZy4gaW1nLCBiciwgLi4uIDxjb2RlPiAmbHQ7aW1nIHNyYzpcInNvbWVzb3VyY2VcIiBhbHQ9XCJhbHRcIiZndDsgIDwvY29kZT4gPC9wPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGg+XG4gICAgICAgICAgPHA+IEV2ZXJ5IHRhZyBoYXMgdG8gYmUgY2xvc2VkLiAgPC9wPlxuICAgICAgICAgIDxwPiBlLmcuIGltZywgYnIsIC4uLiBcbiAgICAgICAgICAgIDxjb2RlPiAmbHQ7aW1nIHNyYzpcInNvbWVzb3VyY2VcIiBhbHQ9XCJhbHRcIi8mZ3Q7PC9jb2RlPiBvciBcbiAgICAgICAgICAgIDxjb2RlPiAmbHQ7aW1nIHNyYzpcInNvbWVzb3VyY2VcIiBhbHQ9XCJhbHRcIiZndDsgJmx0Oy9pbWcmZ3Q7IDwvY29kZT4gIDwvcD5cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aD5BdHRyaWJ1dGUgTmFtZXM8L3RoPlxuICAgICAgICA8dGg+XG4gICAgICAgICAgPHA+IEdsb2JhbCBhdHRyaWJ1dGUgbmFtZXMgYXJlIGFsd2F5cyB3cml0dGVuIGluIGxvd2VyY2FzZSBhbmQgdHdvIHdvcmRzIGFyZSBmdXNlZCBpbnRvIG9uZSBieSBcIi1cIi4gPC9wPlxuICAgICAgICAgIDxwPiBFLmcuIFwiY2xhc3NcIiwgXCJjaGFyc2V0XCIsIC4uLjwvcD5cbiAgICAgICAgICA8cD4gVGhpcyBpcyBhbHNvIHRoZSBjYXNlIHdoZW4gdXNpbmcgdGhlIHN5bGUtYXR0cmlidXRlLiA8L3A+XG4gICAgICAgICAgPHA+IEUuZy4gPGNvZGU+c3R5bGU9XCJjb2xvcjpibHVlOyB0ZXh0LWFsaWduOmNlbnRlclwiPC9jb2RlPjwvcD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoPiBcbiAgICAgICAgICA8cD5HbG9iYWwgYXR0cmlidXRlIG5hbWVzIGFyZSBnZW5lcmFsbHkgd3JpdHRlbiBpbiBsb3dlcmNhc2UgYnV0IHVzZSB0aGUgY2FtZWwgY2FzZSBpZiB0d28gd29yZHMgaGF2ZSB0byBiZSBmdXNlZC4gU29tZSBhdHRydWJ1dGVzIGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IG5hbWVzLjwvcD5cbiAgICAgICAgICA8cD5FLmcuIFwiY2xhc3NOYW1lXCIsIFwiY2hhclNldFwiLCAuLi48L3A+XG4gICAgICAgICAgPHA+IFRoaXMgaXMgYWxzbyB0aGUgY2FzZSB3aGVuIHVzaW5nIHRoZSBzdHlsZS1hdHRyaWJ1dGUuPC9wPlxuICAgICAgICAgIDxwPiBFLmcuIDxjb2RlPnN0eWxlPSYjMTIzOyYjMTIzO3ZlY3RvckVmZmVjdDogJnF1b3Q7bm9uLXNjYWxpbmctc3Ryb2tlJnF1b3Q7JiMxMjU7JiMxMjU7PC9jb2RlPjwvcD5cbiAgICAgICAgICA8cD5UaGlzIGRvZXMgbm90IGFwcGx5IHRvIHRoZSBjc3MgZmlsZSE8L3A+XG4gICAgICAgIDwvdGg+XG4gICAgICA8L3RyPlxuICAgICAgPHRyPlxuICAgICAgICA8dGg+U3R5bGUgYXR0cmlidXRlPC90aD5cbiAgICAgICAgPHRoPlxuICAgICAgICAgIDxwPiBzdHlsZT1cIjx2YXI+YXR0cmlidXRlPC92YXI+OiA8dmFyPnZhbHVlPC92YXI+OyA8dmFyPmF0dHJpYnV0ZTwvdmFyPjogPHZhcj52YWx1ZTwvdmFyPlwiIDwvcD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoPlxuICAgICAgICAgIDxwPiBzdHlsZT0mIzEyMzsmIzEyMzs8dmFyPmF0dHJpYnV0ZTwvdmFyPjogXCI8dmFyPnZhbHVlPC92YXI+XCIsIDx2YXI+YXR0cmlidXRlPC92YXI+OiBcIjx2YXI+dmFsdWU8L3Zhcj5cIiAmIzEyNTsmIzEyNTs8L3A+XG4gICAgICAgIDwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvdGFibGU+XG4gICAgPC8+XG4gIClcbn1cblxuXG4gZnVuY3Rpb24gU291cmNlcygpe1xuICByZXR1cm4oXG4gICAgPGRpdj5cbiAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIkltYWdlcyBhbmQgSWNvbnNcIiA+XG4gICAgICBNb3N0IHRlYW1zIG5lZWQgYSBsb3Qgb2YgcGljdHVyZXMsIGNvbXBvbmVudHMsIGljb25zIGFuZCBhbGlrZS4gVGhleSBjYW4gYmUgZGlmZmljdWx0IHRvIGZpbmQsIGVzcGVjaWFsbHkgZnJlZSBhbmQgb3BlbiBzb3VyY2Ugb25lcy5cbiAgICAgIFxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpPiA8YSBocmVmPVwiaHR0cHM6Ly9iaW9pY29ucy5jb20vXCI+IGh0dHBzOi8vYmlvaWNvbnMuY29tLzwvYT4gPC9saT5cbiAgICAgICAgICA8bGk+IDxhIGhyZWY9XCJodHRwczovL3RvZ290di5kYmNscy5qcC9lbi9waWNzLmh0bWxcIiA+IGh0dHBzOi8vdG9nb3R2LmRiY2xzLmpwL2VuL3BpY3MuaHRtbCA8L2E+IDwvbGk+XG4gICAgICAgICAgPGxpPiA8YSBocmVmPVwiaHR0cHM6Ly9zbWFydC5zZXJ2aWVyLmNvbS9cIiA+aHR0cHM6Ly9zbWFydC5zZXJ2aWVyLmNvbS88L2E+IDwvbGk+XG4gICAgICAgICAgPGxpPiA8YSBocmVmPVwiaHR0cHM6Ly9vcGVuY2xpcGFydC5vcmcvXCIgPiBodHRwczovL29wZW5jbGlwYXJ0Lm9yZy88L2E+IDwvbGk+XG4gICAgICAgICAgPGxpPiA8YSBocmVmPVwiaHR0cHM6Ly9jb21tb25zLndpa2ltZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpTVkdfZmlsZXNcIiA+aHR0cHM6Ly9jb21tb25zLndpa2ltZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpTVkdfZmlsZXM8L2E+IDwvbGk+XG4gICAgICAgICAgPGxpPiA8YSBocmVmPVwiaHR0cHM6Ly93d3cuZmxhdGljb24uY29tL1wiPmh0dHBzOi8vd3d3LmZsYXRpY29uLmNvbS88L2E+IDwvbGk+XG4gICAgICAgICAgPGxpPiA8YSBocmVmPVwiaHR0cHM6Ly9iaW9sb2dpY2FsaWNvbnMuY29tL2VuXCI+aHR0cHM6Ly9iaW9sb2dpY2FsaWNvbnMuY29tL2VuPC9hPiA8L2xpPlxuICAgICAgICAgIDxsaT4gPGEgaHJlZj1cImh0dHBzOi8vd3d3LnN2Z3JlcG8uY29tL1wiPmh0dHBzOi8vd3d3LnN2Z3JlcG8uY29tLzwvYT4gPC9saT5cbiAgICAgICAgICA8bGk+IDxhIGhyZWY9XCJodHRwczovL3d3dy5odW1hbmJpb21lZGlhLm9yZy9cIj5odHRwczovL3d3dy5odW1hbmJpb21lZGlhLm9yZy88L2E+IDwvbGk+XG4gICAgICAgIDwvdWw+XG5cbiAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICA8Q29sbGFwc2libGUgdGl0bGU9XCJDb2xvdXJzXCIgPlxuICAgICAgICBOZWVkIGEgc2xpZ2h0bHkgbGlnaHRlciB2ZXJzaW9uIG9mIG9uZSBvZiB5b3VyIGNvbG91cnMgb3IgYSBtaXggb2YgdHdvIGNvbG91cnM/IFxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpPjxhIGhyZWY9XCJodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2NvbG9ycy9jb2xvcnNfbWl4ZXIuYXNwXCI+IGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vY29sb3JzL2NvbG9yc19taXhlci5hc3A8L2E+PC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICA8Q29sbGFwc2libGUgdGl0bGU9XCJDb2RpbmcgVG9vbHNcIj5cbiAgICAgICAgR2VuZXJhdG9yc1xuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpPjxhIGhyZWY9XCJodHRwczovL3d3dy5jc3Nwb3J0YWwuY29tL1wiPmh0dHBzOi8vd3d3LmNzc3BvcnRhbC5jb20vPC9hPjwvbGk+XG4gICAgICAgICAgPGxpPjxhIGhyZWY9XCJodHRwczovL2h0bWxjc3MudG9vbHMvXCI+aHR0cHM6Ly9odG1sY3NzLnRvb2xzLzwvYT48L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9Db2xsYXBzaWJsZT5cblxuICAgICAgPENvbGxhcHNpYmxlIHRpdGxlPVwiUGxhY2Vob2xkZXJzXCI+XG4gICAgICAgIDx1bD5cbiAgICAgICAgICA8bGk+PGEgaHJlZj1cImh0dHBzOi8vd3d3LmxvcmVtaXBzdW0uZGUvXCI+aHR0cHM6Ly93d3cubG9yZW1pcHN1bS5kZS88L2E+PC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvQ29sbGFwc2libGU+XG5cbiAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIlNWR3NcIj5cbiAgICAgICAgPHVsPlxuICAgICAgICAgIDxsaT48YSBocmVmPVwiaHR0cHM6Ly9zdXBlcmRlc2lnbmVyLmNvL3Rvb2xzL3N2Zy1iYWNrZ3JvdW5kc1wiPmh0dHBzOi8vc3VwZXJkZXNpZ25lci5jby90b29scy9zdmctYmFja2dyb3VuZHM8L2E+PC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvQ29sbGFwc2libGU+XG5cbiAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIkFjY2Vzc2liaWxpdHlcIj5cbiAgICAgIDx1bD5cbiAgICAgICAgPGxpPjxhIGhyZWY9XCJodHRwczovL3NjaGVtYS5vcmdcIj5odHRwczovL3NjaGVtYS5vcmc8L2E+PC9saT5cbiAgICAgIDwvdWw+XG4gICAgICA8L0NvbGxhcHNpYmxlPlxuICAgIDwvZGl2PlxuXG4gIClcbn0gXG5cblxuXG5pbXBvcnQgeyBXaWtpU2VsZWN0b3IgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9GaWx0ZXJcIjtcbmltcG9ydCB7IENvZGUgfSBmcm9tIFwiLi9jb2RlXCI7XG5mdW5jdGlvbiBUcm91Ymxlc2hvb3RpbmcoKXtcbiAgXG4gIHJldHVybihcbiAgICA8ZGl2PlxuICAgICAgUGxlYXNlIHNlbGVjdCB3aGF0IHlvdSB3YW50IHRvIHRyb3VibGVzaG9vdCBmb3IuIFxuICAgICAgPFdpa2lTZWxlY3Rvcj48L1dpa2lTZWxlY3Rvcj5cbiAgICAgIDxkaXYgaWQ9XCJub25vXCIgY2xhc3NOYW1lPVwibm9zaG93XCI+XG4gICAgICAgIFRoaXMgY29tYmluYXRpb24gcmV0dXJucyBubyBpbnN0YW5jZXMuIFxuICAgICAgPC9kaXY+XG4gICAgICB7LyogPGRpdiBjbGFzc05hbWU9XCJmaWx0ZXJhYmxlIGFsbCByZWFjdCB0eXBlIHByb3BlcnR5XCI+XG4gICAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIkFyZ3VtZW50IG9mIHR5cGUgWCBpcyBub3QgYXNzaWduYWJsZSB0byBwYXJhbWV0ZXIgb2YgdHlwZSBZLlwiPlxuICAgICAgICA8aDY+RXhhbXBsZTwvaDY+XG4gICAgICAgIDxoNj5Tb2x1dGlvbnM8L2g2PlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlcmFibGUgYWxsIHJlYWN0IHR5cGVcIj4gXG4gICAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIlR5cGUgWCBpcyBub3QgYXNzaWduYWJsZSB0byB0eXBlIFkuXCI+XG4gICAgICAgIDxoNj5FeGFtcGxlPC9oNj5cbiAgICAgICAgPGg2PlNvbHV0aW9uczwvaDY+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsdGVyYWJsZSBhbGwgIHJlYWN0IHR5cGUgcHJvcGVydHlcIj5cbiAgICAgICAgPENvbGxhcHNpYmxlIHRpdGxlPVwiUHJvcGVydHkgeCBpcyBtaXNzaW5nIGluIHR5cGUgeSBidXQgcmVxdWlyZWQgaW4gdHlwZSB6LlwiPlxuICAgICAgICA8aDY+RXhhbXBsZTwvaDY+XG4gICAgICAgIDxoNj5Tb2x1dGlvbnM8L2g2PlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlcmFibGUgYWxsIHJlYWN0IHR5cGUgcHJvcGVydHlcIj5cbiAgICAgICAgPENvbGxhcHNpYmxlIHRpdGxlPVwiUHJvcGVydHkgeCBkb2VzIG5vdCBleGlzdCBvbiB0eXBlIFkuXCI+XG4gICAgICAgIDxoNj5FeGFtcGxlPC9oNj5cbiAgICAgICAgPGg2PlNvbHV0aW9uczwvaDY+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsdGVyYWJsZSBhbGwgcmVhY3QgdHlwZSBwcm9wZXJ0eVwiPlxuICAgICAgICA8Q29sbGFwc2libGUgdGl0bGU9XCJUeXBlIFggaXMgbWlzc2luZyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgZnJvbSB0eXBlIFk6IGEsIGIsIGNcIj5cbiAgICAgICAgPGg2PkV4YW1wbGU8L2g2PlxuICAgICAgICA8aDY+U29sdXRpb25zPC9oNj5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWx0ZXJhYmxlIGFsbCByZWFjdCB0eXBlXCI+XG4gICAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIlR5cGUgJ3ggfCB1bmRlZmluZWQnIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHR5cGUgJ3gnLlwiPlxuICAgICAgICA8aDY+RXhhbXBsZTwvaDY+XG4gICAgICAgIDxoNj5Tb2x1dGlvbnM8L2g2PlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlcmFibGUgYWxsIHJlYWN0IHR5cGVcIj5cbiAgICAgICAgPENvbGxhcHNpYmxlIHRpdGxlPVwiVHlwZSAndW5kZWZpbmVkJyBjYW5ub3QgYmUgdXNlZCBhcyBhbiBpbmRleCB0eXBlXCI+XG4gICAgICAgIDxoNj5FeGFtcGxlPC9oNj5cbiAgICAgICAgPGg2PlNvbHV0aW9uczwvaDY+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsdGVyYWJsZSBhbGwgcmVhY3Qgb3ZlcmxvYWRcIj5cbiAgICAgICAgPENvbGxhcHNpYmxlIHRpdGxlPVwiTm8gb3ZlcmxvYWQgbWF0Y2hlcyB0aGlzIGNhbGwuXCI+XG4gICAgICAgIDxoNj5FeGFtcGxlPC9oNj5cbiAgICAgICAgPGg2PlNvbHV0aW9uczwvaDY+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICA8L2Rpdj4gKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlcmFibGUgYWxsIHJlYWN0IG1vZHVsZVwiPlxuICAgICAgICA8Q29sbGFwc2libGUgdGl0bGU9XCJNb2R1bGUgWiBoYXMgYWxyZWFkeSBleHBvcnRlZCBhIG1lbWJlciBuYW1lZCBBLiBDb25zaWRlciBleHBsaWNpdGx5IHJlLWV4cG9ydGluZyB0byByZXNvbHZlIHRoZSBhbWJpZ3VpdHkuXCI+XG4gICAgICAgIDxoNj5FeGFtcGxlPC9oNj5cbiAgICAgICAgaW5kZXgudHN4OiBcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwicHJvYmxlbS1lcnJvclwiPiBNb2R1bGUgXCIuL0JmaC50c3hcIiBoYXMgYWxyZWFkeSBleHBvcnRlZCBhIG1lbWJlciBuYW1lZCAnTGFiVGFicycuIENvbnNpZGVyIGV4cGxpY2l0bHkgcmUtZXhwb3J0aW5nIHRvIHJlc29sdmUgdGhlIGFtYmlndWl0eS48L3A+XG4gICAgICAgIDxoNj5Tb2x1dGlvbnM8L2g2PlxuICAgICAgICBTaW1wbHkgcmVuYW1lIHRoZSBmdW5jdGlvbiBpbiBvbmUgb2YgdGhlIG1vZHVsZXMgb3IgY29uc2lkZXIgbWFraW5nIGl0IGEgY29tcG9uZW50IGlmIHlvdSBwbGFuIG9uIHVzaW5nIGl0IGZyZXF1ZW50bHkuICBcbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWx0ZXJhYmxlIGFsbCBwaXBlbGluZVwiPlxuICAgICAgICA8Q29sbGFwc2libGUgdGl0bGU9XCJlcnJvciBUUzYxMzM6ICdldmVudCcgaXMgZGVjbGFyZWQgYnV0IGl0cyB2YWx1ZSBpcyBuZXZlciByZWFkLlwiPlxuICAgICAgICAgIDxoNj5FeGFtcGxlPC9oNj5cbiAgICAgICAgICBIb3Jpem9udGFsVGltZWxpbmUudHN4OiBcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRlcm1pbmFsLWJveFwiPlxuICAgICAgICAgICAgJCB5YXJuIGJ1aWxkXG4gICAgICAgICAgICA8cD55YXJuIHJ1biB2MS4yMi4xOTwvcD5cbiAgICAgICAgICAgIDxwPiQgdHNjICYmIHZpdGUgYnVpbGQ8L3A+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXJtaW5hbC1lcnJvclwiPnNyYy9jb21wb25lbnRzL0hvcml6b250YWxUaW1lbGluZS50c3goNjcsMjMpOiBlcnJvciBUUzYxMzM6ICdldmVudCcgaXMgZGVjbGFyZWQgYnV0IGl0cyB2YWx1ZSBpcyBuZXZlciByZWFkLlxuICAgICAgICAgICAgZXJyb3IgQ29tbWFuZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgMi48L3A+XG4gICAgICAgICAgICA8cD5pbmZvIFZpc2l0IGh0dHBzOi8veWFybnBrZy5jb20vZW4vZG9jcy9jbGkvcnVuIGZvciBkb2N1bWVudGF0aW9uIGFib3V0IHRoaXMgY29tbWFuZC48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cD5pbjwvcD5cbiAgICAgICAgICA8Q29kZT5cbiAgICAgICAgICBjb25zdCBvcGVuUG9wID0gIChldmVudCA6IFJlYWN0Lk1vdXNlRXZlbnQmbHQ7SFRNTEJ1dHRvbkVsZW1lbnQsIE1vdXNlRXZlbnQmZ3Q7KSA9Jmd0OyB7fVxuICAgICAgICAgIDwvQ29kZT5cbiAgICAgICAgICA8aDY+U29sdXRpb25zPC9oNj5cbiAgICAgICAgICA8cD5DaGFuZ2UgdG86IDwvcD5cbiAgICAgICAgICA8Q29kZT5cbiAgICAgICAgICBjb25zdCBvcGVuUG9wID0gIChfZXZlbnQgOiBSZWFjdC5Nb3VzZUV2ZW50Jmx0O0hUTUxCdXR0b25FbGVtZW50LCBNb3VzZUV2ZW50Jmd0OykgPSZndDsge31cbiAgICAgICAgICA8L0NvZGU+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufSBcblxuXG4iLCAiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIG9wZW4/OiBib29sZWFuO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlOyBcbiAgfVxuXG5cbiAgXG4gIGV4cG9ydCBjb25zdCBDb2xsYXBzaWJsZTogUmVhY3QuRkM8SVByb3BzPiA9ICh7IG9wZW4sIGNoaWxkcmVuLCB0aXRsZSB9KSA9PiB7XG4gICAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKG9wZW4pO1xuICBcbiAgICBjb25zdCBoYW5kbGVGaWx0ZXJPcGVuaW5nID0gKCkgPT4ge1xuICAgICAgc2V0SXNPcGVuKChwcmV2KSA9PiAhcHJldik7XG4gICAgfTtcbiAgXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sbGFwc2UtY2FyZFwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtMyBib3JkZXItYm90dG9tIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgICA8aDYgY2xhc3NOYW1lPVwiZm9udC13ZWlnaHQtYm9sZFwiPnt0aXRsZX08L2g2PlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG5cIiBvbkNsaWNrPXtoYW5kbGVGaWx0ZXJPcGVuaW5nfT5cbiAgICAgICAgICAgICAgICB7IWlzT3BlbiA/IChcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT0ndXBkb3duJyBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9kZXNpZ24vaWNvbnMvYW5nbGUtc21hbGwtZG93bi5wbmdcIiAvPlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9J3VwZG93bicgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvZGVzaWduL2ljb25zL2FuZ2xlLXNtYWxsLXVwMzJweC5wbmdcIiAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gIFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLWJvdHRvbVwiPlxuICAgICAgICAgICAgPGRpdj57aXNPcGVuICYmIDxkaXYgY2xhc3NOYW1lPVwicC0zXCI+e2NoaWxkcmVufTwvZGl2Pn08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9O1xuICBcbiAgXG4gIGV4cG9ydCBkZWZhdWx0IENvbGxhcHNpYmxlOyIsICJcbmltcG9ydCBTZWxlY3QgZnJvbSAncmVhY3Qtc2VsZWN0JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cblxuXG5pbnRlcmZhY2UgUHJvcHMge1xuICB2YWx1ZTogc3RyaW5nLFxuICBsYWJlbDogc3RyaW5nXG59XG5jb25zdCB3aWtpb3B0aW9ucyA9W1xuICB7dmFsdWU6IFwiYWxsXCIsIGxhYmVsOiBcIlNob3cgYWxsXCJ9LFxuICB7dmFsdWU6IFwicmVhY3RcIiwgbGFiZWw6IFwiUmVhY3RcIn0sXG4gIHt2YWx1ZTogXCJ0eXBlXCIsIGxhYmVsOiBcIlR5cGVzXCJ9LFxuICB7dmFsdWU6IFwicHJvcGVydHlcIiwgbGFiZWw6IFwiUHJvcGVydGllc1wifSxcbiAge3ZhbHVlOiBcInBpcGVsaW5lXCIsIGxhYmVsOiBcIkdpdExhYiBQaXBlbGluZVwifSxcbiAge3ZhbHVlOiBcImh0bWxcIiwgbGFiZWw6IFwiSFRNTFwifSxcbiAge3ZhbHVlOiBcImNzc1wiLCBsYWJlbDogXCJDU1NcIn0sXG4gIFxuXVxuXG5cbiAgICAgIGZ1bmN0aW9uIGZpbHRlck11bHRpU2VsZWN0aW9uKGFycjogQXJyYXk8UHJvcHM+KXtcbiAgICAgICAgbGV0IG5vbm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5vbm9cIik7XG4gICAgICAgIG5vbm8hLmNsYXNzTmFtZSA9IFwibm9zaG93XCI7IFxuICAgICAgICB2YXIgeDogc3RyaW5nIHwgYW55W10gfCBIVE1MQ29sbGVjdGlvbk9mPEVsZW1lbnQ+LCBpOiBudW1iZXI7XG4gICAgICAgIHggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZmlsdGVyYWJsZVwiKTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBsZXQgZWwgPSB4W2ldOyBcbiAgICAgICAgICB3M1JlbW92ZUNsYXNzKGVsLCBcInNob3dcIik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHNob3dudW0gPSAwOyBcbiAgICAgICAgbGV0IGJvbyA9IHRydWU7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgXG4gICAgICAgICAgYXJyLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgaWYgKHhbaV0uY2xhc3NOYW1lLmluZGV4T2YoZW50cnkudmFsdWUpIDw9IC0xKXtcbiAgICAgICAgICAgICAgYm9vID0gZmFsc2U7IFxuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIGlmICgheFtpXS5jbGFzc0xpc3QuY29udGFpbnMoZW50cnkudmFsdWUpKXtcbiAgICAgICAgICAgICAgICAgIGJvbyA9IGZhbHNlOyBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIFxuICAgICAgICAgIGlmIChib28pe1xuICAgICAgICAgICAgdzNBZGRDbGFzcyh4W2ldLCBcInNob3dcIik7XG4gICAgICAgICAgICBzaG93bnVtKys7IFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgeSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJzaG93XCIpLmxlbmd0aDtcbiAgICAgICAgaWYgKHkgPCAxKXtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHkpXG4gICAgICAgICAgICBub25vIS5jbGFzc05hbWUgPSBcInNob3dcIjsgXG4gICAgICAgIH1cbiAgICAgIH1cblxuLyogZnVuY3Rpb24gZmlsdGVyU2VsZWN0aW9uKGxhYmVsOiBzdHJpbmcpIHtcbiAgdmFyIHgsIGk7XG4gIHggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZmlsdGVyYWJsZVwiKTtcbiAgaWYgKGxhYmVsID09IFwiYWxsXCIpIGxhYmVsID0gXCJcIjtcbiAgZm9yIChpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgZWwgPSB4W2ldOyBcbiAgICB3M1JlbW92ZUNsYXNzKGVsLCBcInNob3dcIik7XG4gICAgaWYgKHhbaV0uY2xhc3NOYW1lLmluZGV4T2YobGFiZWwpID4gLTEpIHczQWRkQ2xhc3MoeFtpXSwgXCJzaG93XCIpO1xuICB9XG59ICovXG4gIFxuZnVuY3Rpb24gdzNBZGRDbGFzcyhlbGVtZW50OiBFbGVtZW50LCBuYW1lOiBzdHJpbmcpIHtcbiAgdmFyIGksIGFycjEsIGFycjI7XG4gIGFycjEgPSBlbGVtZW50LmNsYXNzTmFtZS5zcGxpdChcIiBcIik7XG4gIGFycjIgPSBuYW1lLnNwbGl0KFwiIFwiKTtcbiAgZm9yIChpID0gMDsgaSA8IGFycjIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYXJyMS5pbmRleE9mKGFycjJbaV0pID09IC0xKSB7ZWxlbWVudC5jbGFzc05hbWUgKz0gXCIgXCIgKyBhcnIyW2ldO31cbiAgfVxufVxuXG5mdW5jdGlvbiB3M1JlbW92ZUNsYXNzKGVsZW1lbnQ6IEVsZW1lbnQsIG5hbWU6IHN0cmluZykge1xuICB2YXIgaSwgYXJyMSwgYXJyMjtcbiAgYXJyMSA9IGVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KFwiIFwiKTtcbiAgYXJyMiA9IG5hbWUuc3BsaXQoXCIgXCIpO1xuICBmb3IgKGkgPSAwOyBpIDwgYXJyMi5sZW5ndGg7IGkrKykge1xuICAgIHdoaWxlIChhcnIxLmluZGV4T2YoYXJyMltpXSkgPiAtMSkge1xuICAgICAgYXJyMS5zcGxpY2UoYXJyMS5pbmRleE9mKGFycjJbaV0pLCAxKTsgICAgIFxuICAgIH1cbiAgfVxuICBlbGVtZW50LmNsYXNzTmFtZSA9IGFycjEuam9pbihcIiBcIik7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIFdpa2lTZWxlY3Rvcigpe1xuICByZXR1cm4oXG4gICAgPGRpdj5cbiAgICAgIDxXaWtpQWN0aW9uPjwvV2lraUFjdGlvbj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5jbGFzcyBXaWtpQWN0aW9uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGUgPSB7XG4gICAgc2VsZWN0ZWRPcHRpb246IG51bGwsXG4gIH07XG4gIGhhbmRsZUNoYW5nZSA9IChzZWxlY3RlZE9wdGlvbjogYW55KSA9PiB7XG4gIFx0XG4gIFx0dGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGVkT3B0aW9uIH0sICgpID0+XG4gIFx0Y29uc29sZS5sb2coYE9wdGlvbiBzZWxlY3RlZDpgLCB0aGlzLnN0YXRlLnNlbGVjdGVkT3B0aW9uKVxuICAgXHRcbiAgICApO1xuICAgIFx0ZmlsdGVyTXVsdGlTZWxlY3Rpb24oc2VsZWN0ZWRPcHRpb24pXG4gIH07XG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHNlbGVjdGVkT3B0aW9uIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTZWxlY3RcbiAgICAgICAgdmFsdWU9e3NlbGVjdGVkT3B0aW9ufVxuICAgICAgICBvbkNoYW5nZT17dGhpcy5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIGlzTXVsdGlcbiAgICAgICAgb3B0aW9ucz17d2lraW9wdGlvbnN9XG4gICAgICAgIGRlZmF1bHRWYWx1ZT17W3dpa2lvcHRpb25zWzBdXX1cbiAgICAgICAgY2xhc3NOYW1lPVwiYmFzaWMtbXVsdGktc2VsZWN0XCJcbiAgICAgICAgY2xhc3NOYW1lUHJlZml4PVwic2VsZWN0XCJcbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufVxuXG4vKiBUeXBlICcoc2VsZWN0ZWRPcHRpb246IFByb3BzIHwgbnVsbCkgPT4gdm9pZCcgaXMgbm90IGFzc2lnbmFibGUgdG8gdHlwZSAnKG5ld1ZhbHVlOiBNdWx0aVZhbHVlPHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgfSB8IG51bGw+LCBhY3Rpb25NZXRhOiBBY3Rpb25NZXRhPHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgfSB8IG51bGw+KSA9PiB2b2lkJy5cbiAgVHlwZXMgb2YgcGFyYW1ldGVycyAnc2VsZWN0ZWRPcHRpb24nIGFuZCAnbmV3VmFsdWUnIGFyZSBpbmNvbXBhdGlibGUuXG4gICAgVHlwZSAncmVhZG9ubHkgKHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgfSB8IG51bGwpW10nIGlzIG1pc3NpbmcgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGZyb20gdHlwZSAnUHJvcHMnOiB2YWx1ZSwgbGFiZWwgKi9cbiAgICAvKiBjb25zdCBocG9wdGlvbnMgPVtcbiAgICAgIHt2YWx1ZTogXCJhbGxcIiwgbGFiZWw6IFwiQWxsXCJ9LFxuICAgICAge3ZhbHVlOiBcIkFjYWRlbWlhXCIsIGxhYmVsOiBcIkFjYWRlbWlhXCJ9LFxuICAgICAge3ZhbHVlOiBcIlBhdGllbnRQYXRpZW50XCIsIGxhYmVsOiBcIlBhdGllbnRcIn0sXG4gICAgICB7dmFsdWU6IFwiTWVkaWNhbFwiLCBsYWJlbDogXCJNZWRpY2FsIFByb2Zlc3Npb25hbFwifSxcbiAgICAgIHt2YWx1ZTogXCJwcm9wZXJ0eVwiLCBsYWJlbDogXCJQcm9wZXJ0aWVzXCJ9LFxuICAgICAge3ZhbHVlOiBcInBpcGVsaW5lXCIsIGxhYmVsOiBcIkdpdExhYiBQaXBlbGluZVwifSxcbiAgICAgIHt2YWx1ZTogXCJodG1sXCIsIGxhYmVsOiBcIkhUTUxcIn0sXG4gICAgICB7dmFsdWU6IFwiY3NzXCIsIGxhYmVsOiBcIkNTU1wifSxcbiAgICAgIFxuICAgIF1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBIUFNlbGVjdG9yKCl7XG4gICAgICByZXR1cm4oXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPEhQQWN0aW9uPjwvSFBBY3Rpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKVxuICAgIH1cblxuXG5cbiAgICBjbGFzcyBIUEFjdGlvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgICBzdGF0ZSA9IHtcbiAgICAgICAgc2VsZWN0ZWRPcHRpb246IG51bGwsXG4gICAgICB9O1xuICAgICAgaGFuZGxlQ2hhbmdlID0gKHNlbGVjdGVkT3B0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzZWxlY3RlZE9wdGlvbiB9LCAoKSA9PlxuICAgICAgICBjb25zb2xlLmxvZyhgT3B0aW9uIHNlbGVjdGVkOmAsIHRoaXMuc3RhdGUuc2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICBcbiAgICAgICAgKTtcbiAgICAgICAgICBmaWx0ZXJNdWx0aVNlbGVjdGlvbihzZWxlY3RlZE9wdGlvbilcbiAgICAgIH07XG4gICAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0ZWRPcHRpb24gfSA9IHRoaXMuc3RhdGU7XG4gICAgXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgdmFsdWU9e3NlbGVjdGVkT3B0aW9ufVxuICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgaXNNdWx0aVxuICAgICAgICAgICAgb3B0aW9ucz17aHBvcHRpb25zfVxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtbaHBvcHRpb25zWzBdXX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJhc2ljLW11bHRpLXNlbGVjdFwiXG4gICAgICAgICAgICBjbGFzc05hbWVQcmVmaXg9XCJzZWxlY3RcIlxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSAqLyIsICJleHBvcnQgZnVuY3Rpb24gQ29kZSh7Y2hpbGRyZW59OntjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlfSApe1xuXG4gICAgcmV0dXJuKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvZGVzbmlwcGV0XCI+XG4gICAgICAgICAgICA8Y29kZT5cbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L2NvZGU+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn0iLCAiXG5leHBvcnQgZnVuY3Rpb24gRHJ5bGFiKCkge1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgIDxoMj5XaWtpIHVuZGVyIGNvbnN0cnVjdGlvbiE8L2gyPlxuICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4gICIsICIvL2ltcG9ydCB7IEluc3BpcmF0aW9ucywgSW5zcGlyYXRpb25MaW5rIH0gZnJvbSBcIi4uL2NvbXBvbmVudHNcIjtcbi8qIGltcG9ydCB7IFNpZGViYXIgfSBmcm9tIFwicmVhY3QtcHJvLXNpZGViYXJcIjsgKi9cblxuZXhwb3J0IGZ1bmN0aW9uIEltcHJlc3N1bSgpIHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICA8aDI+SW1wcmVzc3VtPC9oMj5cbiAgICAgICAgICA8aHIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICA8aDM+PGI+aUdFTSBUZWFtIEJpZWxlZmVsZCBDZUJpVGVjIDIwMjQ8L2I+PC9oMz5cbiAgICAgICAgICAgIDxiPlJlc3BvbnNpYmxlIGZvciB0aGUgY29udGVudCBhY2NvcmRpbmcgdG8gXHUwMEE3IDUgVE1HIGFuZCBhY2NvcmRpbmcgdG8gXHUwMEE3IDU1IEFicy4gMiBSU3RWIEdlcm1hbnk6PC9iPjxiciAvPlxuICAgICAgICAgICAgSlx1MDBGNnJuIEthbGlub3dza2k8YnIgLz5cbiAgICAgICAgICAgIFVuaXZlcnNpdFx1MDBFNHRzc3RyYVx1MDBERmUgMjU8YnIgLz5cbiAgICAgICAgICAgIDMzNjE1IEJpZWxlZmVsZDxiciAvPlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICA8Yj5Db250YWN0PC9iPjxiciAvPlxuICAgICAgICAgICAgRS1tYWlsOiB0ZWFtMjAyNEBpZ2VtLWJpZWxlZmVsZC5kZTxiciAvPlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICA8Yj5TdXBlcnZpc29yeSBBdXRob3JpdHk8L2I+PGJyIC8+XG4gICAgICAgICAgICBCaWVsZWZlbGQgVW5pdmVyc2l0eSAtIENlbnRlciBmb3IgQmlvdGVjaG5vbG9neSAoQ2VCaVRlYylcbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PiAgXG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cbiAgIiwgIlxuZXhwb3J0IGZ1bmN0aW9uIE1lYXN1cmVtZW50KCkge1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgIDxoMj5XaWtpIHVuZGVyIGNvbnN0cnVjdGlvbiE8L2gyPlxuICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4gICIsICJcbmV4cG9ydCBmdW5jdGlvbiBQYXJ0bmVycygpIHtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgPGRpdiBpZD1cInNpZGViYXJib3hcIiBjbGFzc05hbWU9XCJjb2wtMSBkLW5vbmUgZC1sZy1ibG9ja1wiPiA8L2Rpdj5cbiAgICAgICAgPGJyLz4gXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgaWQ9XCJ6ZWlzcy1wb3J0cmFpdFwiIGNsYXNzTmFtZT1cImNvbC01IHNwb25zb3ItcG9ydHJhaXRcIj5cbiAgICAgICAgICA8YSBocmVmPVwiaHR0cDovL3d3dy56ZWlzcy5kZS9uYXR1cndpc3NlbnNjaGFmdGVuXCI+XG4gICAgICAgICAgICA8aW1nIGlkPVwiemVpc3MtcG9ydHJhaXQtbG9nb1wiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL3plaXNzLnBuZ1wiPjwvaW1nPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGlkPVwiemVpc3MtdGV4dFwiIGNsYXNzTmFtZT1cImNvbCBzcG9uc29yLXRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgIDxoND5aRUlTUyBpc3QgVGVjaG5vbG9naWUuIFpFSVNTIGlzdCBPcHRpayB1bmQgSW5ub3ZhdGlvbi48L2g0PlxuICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgIDxwPiBXaXIgZW50d2lja2VsbiwgZmVydGlnZW4gdW5kIHZlcnRyZWliZW4gZlx1MDBGQ3IgdW5zZXJlIEt1bmRlbiBpbiBlaW5lciBWaWVsemFobCB2b24gR2VzY2hcdTAwRTRmdHNmZWxkZXJuIGhvY2hpbm5vdmF0aXZlIFByb2R1a3RlIHVuZCBMXHUwMEY2c3VuZ2VuIFx1MjAxMyB1bmQgbG90ZW4gZGFiZWkgZGllIEdyZW56ZW4gZGVzIE1hY2hiYXJlbiBhdXMuIEFscyB3ZWx0d2VpdCBmXHUwMEZDaHJlbmRlcyBUZWNobm9sb2dpZXVudGVybmVobWVuLCBtaXQgZWluZXIgc3RhcmtlbiBNYXJrZSB1bmQgbWl0IGVpbmVtIFBvcnRmb2xpbywgZGFzIGF1ZiBXYWNoc3R1bXNmZWxkZXIgZGVyIFp1a3VuZnQgd2llIERpZ2l0YWxpc2llcnVuZywgR2VzdW5kaGVpdCB1bmQgSW5kdXN0cmllIDQuMCBhdXNnZXJpY2h0ZXQgaXN0LCBnZXN0YWx0ZW4gd2lyIGRpZSBadWt1bmZ0IHdlaXQgXHUwMEZDYmVyIGRpZSBvcHRpc2NoZSB1bmQgb3B0b2VsZWt0cm9uaXNjaGUgQnJhbmNoZSBoaW5hdXMuIEdydW5kbGFnZSBmXHUwMEZDciBkZW4gRXJmb2xnIHVuZCBkZW4gd2VpdGVyZW4ga29udGludWllcmxpY2hlbiBBdXNiYXUgZGVyIFRlY2hub2xvZ2llIHVuZCBNYXJrdGZcdTAwRkNocmVyc2NoYWZ0IHZvbiBaRUlTUyBzaW5kIGRpZSBuYWNoaGFsdGlnIGhvaGVuIEF1ZndlbmR1bmdlbiBmXHUwMEZDciBGb3JzY2h1bmcgdW5kIEVudHdpY2tsdW5nLiBIYXVwdHN0YW5kb3J0IGRlcyAxODQ2IGluIEplbmEgZ2Vnclx1MDBGQ25kZXRlbiBVbnRlcm5laG1lbnMgaXN0IE9iZXJrb2NoZW4sIERldXRzY2hsYW5kLiBBbGxlaW5pZ2UgRWlnZW50XHUwMEZDbWVyaW4gZGVyIERhY2hnZXNlbGxzY2hhZnQsIGRlciBDYXJsIFplaXNzIEFHLCBpc3QgZGllIENhcmwtWmVpc3MtU3RpZnR1bmcsIGVpbmUgZGVyIGdyXHUwMEY2XHUwMERGdGVuIGRldXRzY2hlbiBTdGlmdHVuZ2VuIHp1ciBGXHUwMEY2cmRlcnVuZyBkZXIgV2lzc2Vuc2NoYWZ0LjwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxici8+IDxici8+IFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGlkPVwiaWR0LXRleHRcIiBjbGFzc05hbWU9XCJjb2wgc3BvbnNvci10ZXh0LWxlZnRcIj5cbiAgICAgICAgICAgICAgPGg0PkFjY2VsZXJhdGUgdGhlIHBhY2Ugb2YgZ2Vub21pY3MuIFdlJ2xsIGhlbHAuPC9oND5cbiAgICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgICAgPHA+IEZvciBtb3JlIHRoYW4gMzUgeWVhcnMsIEludGVncmF0ZWQgRE5BIFRlY2hub2xvZ2llcyAoSURUKSAgaGFzIGVtcG93ZXJlZCBnZW5vbWljcyBsYWJvcmF0b3JpZXMgd2l0aCBhbiBvbGlnb251Y2xlb3RpZGUgbWFudWZhY3R1cmluZyBwcm9jZXNzIHVubGlrZSBhbnlvbmUgZWxzZSBpbiB0aGUgaW5kdXN0cnksIGZlYXR1cmluZyB0aGUgbW9zdCBhZHZhbmNlZCBzeW50aGVzaXMsIG1vZGlmaWNhdGlvbiwgcHVyaWZpY2F0aW9uLCBhbmQgcXVhbGl0eSBjb250cm9sIGNhcGFiaWxpdGllcyBhdmFpbGFibGUuIElEVCBoYXMgc3VwcG9ydGVkIGlHRU0gdGVhbSBmb3Igb3ZlciBhIGRlY2FkZSB3aXRoIDIwa2Igb2YgZnJlZSBETkEgdG8gaGVscCBhY2NlbGVyYXRlIHRoZWlyIGluc3BpcmluZyBwcm9qZWN0cyBmb3IgdGhlIEdyYW5kIEphbWJvcmVlLiBTaW5jZSBpdHMgZm91bmRpbmcgaW4gMTk4NywgSURUIGhhcyBwcm9ncmVzc2VkIGZyb20gYSBsZWFkaW5nIG9saWdvIG1hbnVmYWN0dXJlciB0byBhIGdlbm9taWNzIHNvbHV0aW9ucyBwcm92aWRlciBzdXBwb3J0aW5nIGtleSBhcHBsaWNhdGlvbiBhcmVhcyBzdWNoIGFzIG5leHQgZ2VuZXJhdGlvbiBzZXF1ZW5jaW5nLCBDUklTUFIgZ2Vub21lIGVkaXRpbmcsIHN5bnRoZXRpYyBiaW9sb2d5LCBkaWdpdGFsIFBDUiwgYW5kIFJOQSBpbnRlcmZlcmVuY2UuIElEVCBtYW51ZmFjdHVyZXMgcHJvZHVjdHMgdXNlZCBieSBzY2llbnRpc3RzIHJlc2VhcmNoaW5nIHRoZSB0b3VnaGVzdCBjaGFsbGVuZ2VzIGZhY2luZyBvdXIgcGxhbmV0IHRvZGF5IGFzIHdlbGwgYXMgbWFueSBmb3JtcyBvZiBjYW5jZXIgYW5kIG1vc3QgaW5oZXJpdGVkIGFuZCBpbmZlY3Rpb3VzIGRpc2Vhc2VzLiA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBpZD1cImlkdC1wb3J0cmFpdFwiIGNsYXNzTmFtZT1cImNvbC01IHNwb25zb3ItcG9ydHJhaXRcIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJ3d3cuaWR0ZG5hLmNvbVwiPlxuICAgICAgICAgICAgICA8aW1nIGlkPVwiaWR0LXBvcnRyYWl0LWxvZ29cIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9pZHQtbG9nby5wbmdcIj48L2ltZz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxici8+IDxici8+IFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGlkPVwiaW50ZWdyYS1wb3J0cmFpdFwiIGNsYXNzTmFtZT1cImNvbC01IHNwb25zb3ItcG9ydHJhaXRcIj5cbiAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuaW50ZWdyYS1iaW9zY2llbmNlcy5jb21cIj5cbiAgICAgICAgICAgIDxpbWcgaWQ9XCJpbnRlZ3JhLXBvcnRyYWl0LWxvZ29cIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9pbnRlZ3JhLWhpbnRlcmxlZ3QuanBlZ1wiPjwvaW1nPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGlkPVwiaW50ZWdyYS10ZXh0XCIgY2xhc3NOYW1lPVwiY29sIHNwb25zb3ItdGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgPGg0PiBZb3VyIFJlbGlhYmxlIFBhcnRuZXIgRm9yIFByb2R1Y3RpdmUgUGlwZXR0ZXMgPC9oND5cbiAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgIElOVEVHUkEgQmlvc2NpZW5jZXMgaXMgYVxuICAgICAgICAgICAgbGVhZGluZyBwcm92aWRlciBvZiBoaWdoLXF1YWxpdHkgbGFib3JhdG9yeSB0b29scyBhbmQgY29uc3VtYWJsZXMgZm9yXG4gICAgICAgICAgICBsaXF1aWQgaGFuZGxpbmcuIFRoZSBjb21wYW55IGlzIGNvbW1pdHRlZCB0byBjcmVhdGluZyBpbm5vdmF0aXZlXG4gICAgICAgICAgICBzb2x1dGlvbnMgd2hpY2ggZnVsZmlsIHRoZSBuZWVkcyBvZiBpdHMgY3VzdG9tZXJzIGluIHJlc2VhcmNoLCBkaWFnbm9zdGljc1xuICAgICAgICAgICAgYW5kIHF1YWxpdHkgY29udHJvbCB3aXRoaW4gdGhlIGxpZmUgc2NpZW5jZXMgbWFya2V0cyBhbmQgbWVkaWNhbCBzZWN0b3IuXG4gICAgICAgICAgICBJTlRFR1JBXHUyMDE5cyBlbmdpbmVlcmluZyBhbmQgcHJvZHVjdGlvbiB0ZWFtcyBpbiBaaXplcnMsIFN3aXR6ZXJsYW5kIGFuZFxuICAgICAgICAgICAgSHVkc29uLCBOSCwgVVNBLCBzdHJpdmUgdG8gZGV2ZWxvcCBhbmQgbWFudWZhY3R1cmUgaW5zdHJ1bWVudHMgYW5kXG4gICAgICAgICAgICBjb25zdW1hYmxlcyBvZiBvdXRzdGFuZGluZyBxdWFsaXR5LiBUb2RheSwgSU5URUdSQVx1MjAxOXMgaW5ub3ZhdGl2ZVxuICAgICAgICAgICAgbGFib3JhdG9yeSBwcm9kdWN0cyBhcmUgd2lkZWx5IHVzZWQgYWxsIGFyb3VuZCB0aGUgd29ybGQgd2hlcmUgdGhleSBoZWxwXG4gICAgICAgICAgICBzY2llbnRpc3RzIGFjY2VsZXJhdGUgc2NpZW50aWZpYyBkaXNjb3ZlcnkuIE91ciByZXZvbHV0aW9uYXJ5IGNvbmNlcHRcbiAgICAgICAgICAgIGNvbWJpbmVzIGlubm92YXRpdmUgcGlwZXR0aW5nIHdpdGggdGhlIG1vc3QgbW9kZXJuIHJvYm90aWNzLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJyLz4gPGJyLz4gXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCIgc3R5bGU9e3t0ZXh0QWxpZ246IFwiY2VudGVyXCJ9fT5cbiAgICAgICAgICA8aDQ+QW5kIGEgYmlnIHRoYW5rIHlvdSB0byAuLi48L2g0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJyLz4gPGJyLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBpZD1cInByb2plY3QtdGV4dFwiIGNsYXNzTmFtZT1cImNvbCBzcG9uc29yLXRleHQtbGVmdFwiPlxuICAgICAgICAgICAgICA8aDQ+Li4uIG91ciBvdGhlciBwcm9qZWN0IHNwb25zb3JzITwvaDQ+XG4gICAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICAgIDxwPjwvcD4gXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBpZD1cInByb2plY3QtcG9ydHJhaXRcIiBjbGFzc05hbWU9XCJjb2wtNiBzcG9uc29yLXBvcnRyYWl0XCIgc3R5bGU9e3twYWRkaW5nOiBcIjIwcHhcIn19PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIHsvKiA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInNwb25zb3ItY29udGFpbmVyXCIgaHJlZj1cImh0dHBzOi8vd3d3LmNhcmxyb3RoLmRlL1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yLXBhcnRuZXItcGFnZVwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL3JvdGguanBnXCIvPlxuICAgICAgICAgICAgICAgIDwvYT4gXG4gICAgICAgICAgICAgIDwvZGl2PiAqL31cbiAgICAgICAgICAgICAgey8qIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwiaHR0cHM6Ly93d3cudW5pLWJpZWxlZmVsZC5kZS9mYWt1bHRhZXRlbi90ZWNobmlzY2hlLWZha3VsdGFldC9cIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3ItcGFydG5lci1wYWdlXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvdGVjaGZhay5qcGdcIi8+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj4gICAqL31cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInNwb25zb3ItY29udGFpbmVyXCIgaHJlZj1cInd3dy5zbmFwZ2VuZS5jb21cIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3ItcGFydG5lci1wYWdlXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvc25hcGdlbmUucG5nXCIvPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwiaHR0cHM6Ly93d3cuamVuYWJpb3NjaWVuY2UuY29tL1wiPlxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctc3BvbnNvci1wYXJ0bmVyLXBhZ2VcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9qYnMtZHVua2VsZ3J1ZW4tdGV4dC5wbmdcIi8+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwiaHR0cHM6Ly93d3cudW5pLWJpZWxlZmVsZC5kZS9cIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3ItcGFydG5lci1wYWdlXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvbG9nb3MtdGVhbS91bmktYmllbGVmZWxkLWR1bmtlbC5wbmdcIi8+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJodHRwczovL3d3dy5jZWJpdGVjLnVuaS1iaWVsZWZlbGQuZGUvXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yLXBhcnRuZXItcGFnZVwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL2NlYml0ZWMtZmFyYmUucG5nXCIvPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxici8+IDxici8+IFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGlkPVwibWVldHVwLXBvcnRyYWl0XCIgY2xhc3NOYW1lPVwiY29sLTUgc3BvbnNvci1wb3J0cmFpdFwiIHN0eWxlPXt7cGFkZGluZzogXCIyMHB4XCJ9fT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJcIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3ItcGFydG5lci1wYWdlXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvYXNpbW92LWNvbG9yZnVsLnBuZ1wiLz5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJodHRwczovL3d3dy51bmktYmllbGVmZWxkLmRlL2Zha3VsdGFldGVuL3RlY2huaXNjaGUtZmFrdWx0YWV0L2FyYmVpdHNncnVwcGVuL211bHRpc2NhbGUtYmlvZW5naW5lZXJpbmcvY2FtcHVzYnJhdWVyZWkvXCI+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctc3BvbnNvci1wYXJ0bmVyLXBhZ2VcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9jYW1wdXMtYnJhdWVyZWktaGludGVybGVndC5qcGVnXCIvPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInNwb25zb3ItY29udGFpbmVyXCIgaHJlZj1cIlwiPlxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctc3BvbnNvci1wYXJ0bmVyLXBhZ2VcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9hbGdlbml1bS5wbmdcIi8+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwid3d3LnByb21lZ2EuY29tXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yLXBhcnRuZXItcGFnZVwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL3Byb21lZ2EtZ2VsYi5wbmdcIi8+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJodHRwczovL3d3dy5wbGFzbWlkZmFjdG9yeS5jb20vXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yLXBhcnRuZXItcGFnZVwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL3BsYXNtaWRmYWN0b3J5LnBuZ1wiLz5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInNwb25zb3ItY29udGFpbmVyXCIgaHJlZj1cImh0dHBzOi8vd3d3LmdpcC5jb20vaG9tZS9cIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3ItcGFydG5lci1wYWdlXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvZ2lwLnBuZ1wiIC8+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICAgIDxkaXYgaWQ9XCJtZWV0dXAtdGV4dFwiIGNsYXNzTmFtZT1cImNvbCBzcG9uc29yLXRleHQtcmlnaHRcIiBzdHlsZT17e3RleHRBbGlnbjogXCJyaWdodFwifX0+XG4gICAgICAgICAgICA8aDQ+IC4uLiBvdXIgTWVldFVwIHNwb25zb3JzISA8L2g0PlxuICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxici8+IDxici8+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgaWQ9XCJwYXJ0bmVyLXRleHRcIiBjbGFzc05hbWU9XCJjb2wgc3BvbnNvci10ZXh0LWxlZnRcIj5cbiAgICAgICAgICAgICAgPGg0Pi4uLiBvdXIgcGFydG5lcnMhPC9oND5cbiAgICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgICAgPHA+PC9wPiBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGlkPVwicGFydG5lci1wb3J0cmFpdFwiIGNsYXNzTmFtZT1cImNvbC02IHNwb25zb3ItcG9ydHJhaXRcIiBzdHlsZT17e3BhZGRpbmc6IFwiMjBweFwifX0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJcIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3ItcGFydG5lci1wYWdlXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvbG9nb3MtdGVhbS9vdGhlci10ZWFtcy9ndS1mcmFua2Z1cnQtbG9nby5wbmdcIi8+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJodHRwczovL2J0cy1ldi5kZS9cIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3JcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9idHMucG5nXCIvPlxuICAgICAgICAgICAgICAgIDwvYT4gXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInNwb25zb3ItY29udGFpbmVyXCIgaHJlZj1cIlwiPlxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctc3BvbnNvci1wYXJ0bmVyLXBhZ2VcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9sb2dvcy10ZWFtL290aGVyLXRlYW1zL2lnZW0taGFtYnVyZy1sb2dvLnBuZ1wiLz5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJcIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3ItcGFydG5lci1wYWdlXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvc3R1ZHNjaWNvbS1sb2dvLnBuZ1wiLz5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuICAiLCAiXG5leHBvcnQgZnVuY3Rpb24gU3VwcGxlbWVudGFyeSgpIHtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8aDI+V2lraSB1bmRlciBjb25zdHJ1Y3Rpb24hPC9oMj5cbiAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuICAiLCAiXG5leHBvcnQgZnVuY3Rpb24gSW50cygpIHtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICBcbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbiAgICAiLCAiXG5leHBvcnQgZnVuY3Rpb24gQkZISCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctdmlkZW8tY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aWZyYW1lIHRpdGxlPVwiQmllbGVmZWxkLUNlQmlUZWM6IE1lZXRVcCAoMjAyNCkgW0VuZ2xpc2hdXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiNzAwXCIgc3JjPVwiaHR0cHM6Ly92aWRlby5pZ2VtLm9yZy92aWRlb3MvZW1iZWQvMzBiOGE2ZTAtMmI0YS00NjE4LTg4NjctNGViOGU2YTUyOTM2P3N0YXJ0PTI3cyZhbXA7bG9vcD0xJmFtcDthdXRvcGxheT0xJmFtcDttdXRlZD0xJmFtcDt0aXRsZT0wJmFtcDt3YXJuaW5nVGl0bGU9MCZhbXA7Y29udHJvbEJhcj0wJmFtcDtwZWVydHViZUxpbms9MCZhbXA7cDJwPTBcIiBmcmFtZUJvcmRlcj1cIjBcIiBzYW5kYm94PVwiYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyBhbGxvdy1wb3B1cHMgYWxsb3ctZm9ybXNcIj48L2lmcmFtZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBcblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGVcIj5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbiAgIiwgImludGVyZmFjZSBQcm9wc3tcbiAgICB0aXRsZT86IHN0cmluZyxcbiAgICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSGVhZGVyQm94KHtjaGlsZHJlbiwgdGl0bGV9OiBQcm9wcyApe1xuICAgIHJldHVybihcbiAgICAgICAgPD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbCBoZWFkZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICB7dGl0bGV9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJhc2VcIj5cbiAgICAgICAgICAgIFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgIClcbn0iLCAiaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBBVFRIKCkge1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxIZWFkZXJCb3ggdGl0bGU9XCJBdHRyaWJ1dGlvbnNcIj5cbiAgICAgIDwvSGVhZGVyQm94PlxuICAgICk7XG4gIH0iLCAiaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBDT05USCgpIHtcblxuICAgIHJldHVybiAoXG4gICAgICA8SGVhZGVyQm94IHRpdGxlPVwiQ29udHJpYnV0aW9uXCI+XG4gICAgICAgIFxuICAgICAgPC9IZWFkZXJCb3g+XG4gICAgKTtcbiAgfSIsICJleHBvcnQgZnVuY3Rpb24gREVTQ0goKSB7XG5cbiAgcmV0dXJuIChcbiAgICA8SGVhZGVyQm94IHRpdGxlPVwiRGVzY3JpcHRpb25cIj5cbiAgICAgIFxuICAgIDwvSGVhZGVyQm94PlxuICApO1xufVxuXG5pbXBvcnQgSGVhZGVyQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRlci1ib3hcIjsiLCAiZXhwb3J0IGZ1bmN0aW9uIEhPTUVIKCkge1xuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3g+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBFWFBIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIkV4cGVyaW1lbnRzXCI+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBIUEgoKSB7XG5cbiAgcmV0dXJuIChcbiAgICA8SGVhZGVyQm94IHRpdGxlPVwiSHVtYW4gUHJhY3RpY2VzXCI+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBJTVBIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveD5cbiAgICAgIFxuICAgIDwvSGVhZGVyQm94PlxuICApO1xufVxuXG5pbXBvcnQgSGVhZGVyQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRlci1ib3hcIjsiLCAiZXhwb3J0IGZ1bmN0aW9uIE5PVEVIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIk5vdGVib29rXCI+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBSRVNIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIlJlc3VsdHNcIj5cbiAgICAgIFxuICAgIDwvSGVhZGVyQm94PlxuICApO1xufVxuXG5pbXBvcnQgSGVhZGVyQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRlci1ib3hcIjsiLCAiZXhwb3J0IGZ1bmN0aW9uIFNBRkVIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIlNhZmV0eVwiPlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJleHBvcnQgZnVuY3Rpb24gVEVBTUgoKSB7XG5cbiAgcmV0dXJuIChcbiAgICA8SGVhZGVyQm94IHRpdGxlPVwiT3VyIFRlYW1cIj5cbiAgICAgIFxuICAgIDwvSGVhZGVyQm94PlxuICApO1xufVxuXG5pbXBvcnQgSGVhZGVyQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRlci1ib3hcIjsiLCAiZXhwb3J0IGZ1bmN0aW9uIFdJS0lIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIldpa2kgRG9jdW1lbnRhdGlvblwiPlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJleHBvcnQgZnVuY3Rpb24gSU5UU0goKSB7XG5cbiAgcmV0dXJuIChcbiAgICA8SGVhZGVyQm94IHRpdGxlPVwiSW50ZXJ2aWV3c1wiPlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJleHBvcnQgZnVuY3Rpb24gU1BPTkgoKSB7XG5cbiAgcmV0dXJuIChcbiAgICA8SGVhZGVyQm94IHRpdGxlPVwiU3BvbnNvcnMgYW5kIFBhcnRuZXJzXCI+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBEUllIKCkge1xuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3g+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBFTkdIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIkVuZ2luZWVyaW5nXCI+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBTVVBIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIlN1cHBsZW1lbnRhcnkgRGF0YVwiPlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJleHBvcnQgZnVuY3Rpb24gTUVTSCgpIHtcblxuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3ggdGl0bGU9XCJNZWFzdXJlbWVudFwiPlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJcbmV4cG9ydCBmdW5jdGlvbiBQYXJ0cygpIHtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8aDI+V2lraSB1bmRlciBjb25zdHJ1Y3Rpb24hPC9oMj5cbiAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuICAiLCAiZXhwb3J0IGZ1bmN0aW9uIFBBUlRIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIlBhcnRzXCI+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBQcm9vZigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgbXQtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4gICIsICJleHBvcnQgZnVuY3Rpb24gUFJPT0ZIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIlByb29mIG9mIENvbmNlcHRcIj5cbiAgICAgIFxuICAgIDwvSGVhZGVyQm94PlxuICApO1xufVxuXG5pbXBvcnQgSGVhZGVyQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRlci1ib3hcIjsiLCAiXG5cbmV4cG9ydCBmdW5jdGlvbiBEZXNpZ24oKSB7XG4gXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IG10LTRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1sZy04XCI+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuICAiLCAiZXhwb3J0IGZ1bmN0aW9uIERFU0goKSB7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEhlYWRlckJveCB0aXRsZT1cIkRlc2lnblwiPlxuICAgICAgICBcbiAgICAgIDwvSGVhZGVyQm94PlxuICAgICk7XG4gIH1cblxuICBpbXBvcnQgSGVhZGVyQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRlci1ib3hcIjsiLCAiXG5leHBvcnQgZnVuY3Rpb24gSnVkZ2luZygpIHtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8aDI+V2lraSB1bmRlciBjb25zdHJ1Y3Rpb24hPC9oMj5cbiAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuICAiLCAiaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBKVURHRUgoKSB7XG5cbiAgICByZXR1cm4gKFxuICAgICAgXG4gICAgICA8SGVhZGVyQm94IHRpdGxlPVwiSnVkZ2luZ1wiPlxuICAgICAgICBcbiAgICAgIDwvSGVhZGVyQm94PlxuICAgICk7XG4gIH0iLCAiXG5cbmV4cG9ydCBmdW5jdGlvbiBFdGhpY3MoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IG10LTRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1sZy04XCI+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuICAiLCAiZXhwb3J0IGZ1bmN0aW9uIEVUSEgoKSB7XG5cbiAgcmV0dXJuIChcbiAgICA8SGVhZGVyQm94IHRpdGxlPVwiRXRoaWNzXCI+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTbGlkZXIgZnJvbSBcInJlYWN0LXNsaWNrXCI7XG5cbmludGVyZmFjZSBTbGlkZXJQcm9wcyB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7IFxufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2ltcGxlU2xpZGVyKHtjaGlsZHJlbn06IFNsaWRlclByb3BzKSB7XG4gIHZhciBzZXR0aW5ncyA9IHtcbiAgICBkb3RzOiB0cnVlLFxuICAgIGluZmluaXRlOiB0cnVlLFxuICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICBhdXRvcGxheTogdHJ1ZSxcbiAgICBzcGVlZDogMjAwMCxcbiAgICBhdXRvcGxheVNwZWVkOiAyMDAwLFxuICAgIGNzc0Vhc2U6IFwibGluZWFyXCIsXG4gICAgcGF1c2VPbkhvdmVyOiB0cnVlLFxuICAgIG5leHRBcnJvdzogPD48Lz4sXG4gICAgcHJldkFycm93OiA8PjwvPlxuICB9O1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwic2xpZGVyLWNvbnRhaW5lclwiPlxuICAgICAgIDxTbGlkZXIgey4uLnNldHRpbmdzfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9TbGlkZXI+XG4gICAgPC9kaXY+XG4gICBcbiAgKTtcbn0iLCAiaW1wb3J0IGdzYXAgZnJvbSBcImdzYXBcIjsgXG5pbXBvcnQgeyB1c2VHU0FQIH0gZnJvbSBcIkBnc2FwL3JlYWN0XCI7XG5pbXBvcnQgeyBTY3JvbGxUcmlnZ2VyIH0gZnJvbSBcImdzYXAvZGlzdC9TY3JvbGxUcmlnZ2VyXCI7XG5pbXBvcnQgeyB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBNb3Rpb25QYXRoUGx1Z2luIH0gZnJvbSBcImdzYXAvZGlzdC9Nb3Rpb25QYXRoUGx1Z2luXCI7XG5cblxuXG5mdW5jdGlvbiBUZXN0U1ZHKCkge1xuICBnc2FwLnJlZ2lzdGVyUGx1Z2luKHVzZUdTQVApO1xuICBnc2FwLnJlZ2lzdGVyUGx1Z2luKE1vdGlvblBhdGhQbHVnaW4pO1xuICBnc2FwLnJlZ2lzdGVyUGx1Z2luKFNjcm9sbFRyaWdnZXIpO1xuICBcbmNvbnNvbGUubG9nKFwiU3RhcnRlZCBUZXN0U1ZHXCIpXG4gIGNvbnN0IHZlY3RvclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgcGF5bG9hZFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaW5oYWxhdG9yUmVmID0gdXNlUmVmKG51bGwpO1xuXG4gIHVzZUdTQVAoXG4gICAgKCkgPT4ge1xuICAgIGdzYXAucmVnaXN0ZXJQbHVnaW4oU2Nyb2xsVHJpZ2dlcik7XG4gICAgZ3NhcC5yZWdpc3RlclBsdWdpbih1c2VHU0FQKTtcbiAgICBnc2FwLnJlZ2lzdGVyUGx1Z2luKE1vdGlvblBhdGhQbHVnaW4pO1xuICAgIFxuICAgIGdzYXAuZGVmYXVsdHMoe2Vhc2U6IFwibm9uZVwifSk7XG5cbiAgICBjb25zdCBtYWluID0gZ3NhcC50aW1lbGluZSh7XG4gICAgICBzY3JvbGxUcmlnZ2VyOiB7XG4gICAgICAgIHRyaWdnZXI6IFwic3ZnXCIsXG4gICAgICAgIHNjcnViOiB0cnVlLFxuICAgICAgICBzdGFydDpcInRvcCBtaWRkbGVcIixcbiAgICAgICAgZW5kOiBcImJvdHRvbSBtaWRkbGVcIlxuICAgICAgfVxuICAgIH0pXG4gICAgXG4gICAgLmZyb20oXCIudGhlTGluZVwiLCB7ZHJhd1NWRzogMH0sIDApXG4gICAgLnRvKHBheWxvYWRSZWYuY3VycmVudCwge21vdGlvblBhdGg6e1xuICAgICAgcGF0aDpcIi50aGVMaW5lXCIsXG4gICAgICBhbGlnbjpcIi50aGVMaW5lXCIsXG4gICAgICBhbGlnbk9yaWdpbjpbMC41LCAwLjVdLFxuICAgIH19LCAwKVxuICAgIC5mcm9tKFwiLnRoZUxpbmUyXCIsIHtkcmF3U1ZHOiAwfSwgMClcbiAgICAudG8odmVjdG9yUmVmLmN1cnJlbnQsIHttb3Rpb25QYXRoOntcbiAgICAgIHBhdGg6XCIudGhlTGluZTJcIixcbiAgICAgIGFsaWduOlwiLnRoZUxpbmUyXCIsXG4gICAgICBhbGlnbk9yaWdpbjpbMC41LCAwLjVdLFxuICAgIH19LCAwKS5mcm9tKFwiLnRoZUxpbmUzXCIsIHtkcmF3U1ZHOiAwfSwgMClcbiAgICAudG8oaW5oYWxhdG9yUmVmLmN1cnJlbnQsIHttb3Rpb25QYXRoOntcbiAgICAgIHBhdGg6XCIudGhlTGluZTNcIixcbiAgICAgIGFsaWduOlwiLnRoZUxpbmUzXCIsXG4gICAgICBhbGlnbk9yaWdpbjpbMC41LCAwLjVdLFxuICAgIH19LCAwKVxuICAgIGNvbnNvbGUubG9nKG1haW4pXG4gIH0sXG4gICk7XG5cbiBcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC04XCI+XG4gICAgICBcbiAgICAgIDxzdmcgaWQ9XCJzdmdcIiB4bWxucz1cIlwiIHZpZXdCb3g9XCIwIDAgMTk4MCA0NDAwXCI+XG4gICAgICAgIFxuICAgICAgICA8cGF0aCBjbGFzc05hbWU9XCJ0aGVMaW5lXCIgZD1cIlxuICAgICAgICBNIDUwIDUwIFMgNTQwIDIwMCA1NDAgMTAwMCBTIC0zMDAgMTIwMCA1NDAgMjAwMCBTIC02MDAgMjIwMCA1NDAgMzAwMCBTIDAgNDAwMCA1NDAgNDAwMCBMIDU0MCA0NTAwXCJcbiAgICAgICAgLyogZmlsZT1cIm5vbmVcIiAqLyBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZVdpZHRoPVwiMTBweFwiPjwvcGF0aD5cblxuICAgICAgICBcblxuICAgICAgICA8cGF0aCBjbGFzc05hbWU9XCJ0aGVMaW5lMlwiIGQ9XCJcbiAgICAgICAgTSAxMDMwIDUwIFMgNTQwIDIwMCA1NDAgMTAwMCBTIC0zMDAgMTIwMCA1NDAgMjAwMCBTIC02MDAgMjIwMCA1NDAgMzAwMCBTIDU0MCA0MDAwIDU0MCA0MDAwIEwgNTQwIDM1MDBcIlxuICAgICAgICAvKiBmaWxlPVwibm9uZVwiICovIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlV2lkdGg9XCIxMHB4XCI+PC9wYXRoPlxuXG5cblxuICAgICAgICA8cGF0aCBjbGFzc05hbWU9XCJ0aGVMaW5lM1wiIGQ9XCJcbiAgICAgICAgTSAyMDAwIDYwMCBTIC0zMDAgMTIwMCA1NDAgMjAwMCBTIC02MDAgMjIwMCA1NDAgMzAwMCBTIDU0MCA0MDAwIC0xMDAgNDAwMCBMIC0xMDAgNDIwMFwiXG4gICAgICAgIC8qIGZpbGU9XCJub25lXCIgKi8gc3Ryb2tlPVwid2hpdGVcIiBzdHJva2VXaWR0aD1cIjEwcHhcIj48L3BhdGg+XG5cbiAgICAgIDwvc3ZnPlxuICAgICAgPGltZyByZWY9e3ZlY3RvclJlZn0gc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc2NpZW50aWZpYy1maWd1cmVzL2FudGliaW90aWNzLWNhcHN1bGUuc3ZnXCIgYWx0PVwidmVjdG9ySW1nXCIvPlxuICAgICAgPGltZyByZWY9e3BheWxvYWRSZWZ9IHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3NjaWVudGlmaWMtZmlndXJlcy9hbnRpYmlvdGljcy1pbmhhbGVyLnN2Z1wiIGFsdD1cInBheWxvYWRJbWdcIi8+XG4gICAgICA8aW1nIHJlZj17aW5oYWxhdG9yUmVmfSBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zY2llbnRpZmljLWZpZ3VyZXMvYWxidXRlcm9sLnN2Z1wiIGFsdD1cImluaGFsYXRvckltZ1wiLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVGVzdFNWRztcblxuIiwgImltcG9ydCB7IFRpbWVsaW5lSXRlbSB9IGZyb20gXCIuLi9jb21wb25lbnRzL015LVRpbWVsaW5lXCI7XG5pbXBvcnQgU2ltcGxlU2xpZGVyIGZyb20gXCIuLi9jb21wb25lbnRzL3NsaWRlclwiO1xuaW1wb3J0IFRlc3RTVkcgZnJvbSBcIi4uL2NvbXBvbmVudHMvdGVzdHN2Z2FuaW1hdGlvblwiO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgPFRlc3RTVkc+PC9UZXN0U1ZHPlxuICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cImV4YW1wbGVcIj5FeGVyY2lzZXM8L2gzPlxuICAgICAgICAgICAgPGk+PGg2PkJ5IFlvdXIgbmFtZTwvaDY+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWV4ZXJjaXNlXCI+XG4gICAgICAgICAgICAgICAgPHA+IEFsbCBjb21wb25lbnRzIHNob3VsZCBiZSBpbiB0aGlzIGZpbGUuIFRoZSBleHRyYSBjc3MgaGFzIHRvIGJlIHB1dCBpbnRvIGV4YXBtbGUuY3NzLiBUdXJuIHRvIExpbGlhbmEgaWYgeW91IG5lZWQgb3Igd2FudCBhIHNjc3MgZmlsZSwgdG9vLjwvcD5cbiAgICAgICAgICAgICAgICA8cD5UaGUgY29kZSB5b3UgY3JlYXRlIHNob3VsZCBiZSBpbiB0aGUgcmVzcGVjdGl2ZSBjb2x1bW5zIHdoZXJlIHRoZSBhc3NpZ25tZW50cyBhcmUsIGlmIG5vdCBzdGF0ZWQgb3RoZXJ3aXNlLiA8L3A+XG4gICAgICAgICAgICAgICAgPHA+V3JpdGUgZG93biBob3cgeW91IGRpZCBpdCBpbiB0aGUgZG9jdW1lbnRhdGlvbi1ib3ggYXMgYSBkb2N1bWVudGF0aW9uIGZvciB0aGUgb3RoZXJzLiBVc2UgdGhlIERvY3UtQm9jIGNvbXBvbmVudCBmb3IgdGhhdC5Zb3UgaGF2ZSB0byBhZGQgaXQgdG8geW91ciBheGVyY2lzZSBibG9jayBtYW51YWxseS4gPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8RG9jdUJveD5cbiAgICAgICAgICAgICAgICA8cD5JIHdyb3RlIGEgdGV4dC48L3A+XG4gICAgICAgICAgICA8L0RvY3VCb3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPjxoND5MaXN0czwvaDQ+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMVwiPiA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZWFzeS10YWdcIj5FYXN5PC9kaXY+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpPjxoNj5CeSA8L2g2PjwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1leGVyY2lzZVwiPlxuICAgICAgICAgICAgICAgIDxwPmEuIENyZWF0ZSBhIG51bWJlcmVkIGxpc3Qgb2YgZnJ1aXRzLiBGaXZlIGl0ZW1zIGFyZSBlbm91Z2guIFVzZSB0aGUgSFRNTCBsaXN0IGVsZW1lbnQuPC9wPiBcbiAgICAgICAgICAgICAgICA8cD5iLiBDcmVhdGUgYSBzZWNvbmQgY29sdW1uIG5leHQgdG8gdGhlIG9uZSB3aXRoIHRoZSBmcnVpdCBsaXN0IHRoYXQgY29udGFpbnMgYSBidXR0b24uIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj48aDQ+UGljdHVyZTwvaDQ+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMVwiPjxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1lYXN5LXRhZ1wiPkVhc3k8L2Rpdj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGk+PGg2PkJ5IDwvaDY+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWV4ZXJjaXNlXCI+XG4gICAgICAgICAgICAgICAgPHA+YS4gSW5zZXJ0IGEgY2VudGVyZWQgcGljdHVyZSBvZiBTaW5hbiBoZXJlLiBJdCBzaG91bGQgYmUgaGFsZiBhcyB3aWRlIGFzIHRoZSBjb2x1bW4gYW5kIGhhdmUgYSBkb3R0ZXQgZnJhbWUgaW4gb3VyIHB1cnBsZS48L3A+XG4gICAgICAgICAgICAgICAgPHA+Yi4gV2hlbiBob3ZlcmluZyBvdmVyIHRoZSBwaWN0dXJlLCBpdCBzaG91bGQgdHVybiBibGFjayBhbmQgd2hpdGUuIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wgZXhlcmNpc2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+PGg0PlRpbWVsaW5lIEJGSDwvaDQ+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMSBcIj48ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZWFzeS10YWdcIj5FYXN5PC9kaXY+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpPjxoNj5CeSA8L2g2PjwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1leGVyY2lzZVwiPlxuICAgICAgICAgICAgPHA+IEFkZCBhIGR1bW15IHRpbWVsaW5lIGl0ZW08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPFRpbWVsaW5lSXRlbVxuICAgICAgICAgICAgICAgIGRhdGU9J0hvdyB0byBTeW5CaW8nXG4gICAgICAgICAgICAgICAgdGFnPSdXb3Jrc2hvcCBTZXNzaW9uIEkuJ1xuICAgICAgICAgICAgICAgIGNvbG9yPSd2YXIoLS10ZXh0LXByaW1hcnkpJ1xuICAgICAgICAgICAgICAgIGNzc3RhZz1cIldvcmtzaG9wXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgRGVzaWduIGdlbmV0aWMgY29uc3RydWN0cyBhbmQgcmUtd3JpdGUgdGhlIGdlbm9taWMgY29kZSwgYW5kIHBsYW4gZXhwZXJpbWVudHMgdXNpbmcgQUkuIExlYXJuIGhvdyB0byBlZmZlY3RpdmVseSBidWlsZCBnZW5ldGljIGNpcmN1aXQgc3lzdGVtcyBmb3IgaW1wbGVtZW50YXRpb24gaW4geW91ciBpR0VNIHByb2plY3QuXG4gICAgICAgICAgICAgICAgPC9UaW1lbGluZUl0ZW0+XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj48aDQ+UGljdHVyZSBTbGlkZXI8L2g0PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTFcIj48ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZWFzeS10YWdcIj5FYXN5PC9kaXY+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpPjxoNj5CeSA8L2g2PjwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1leGVyY2lzZVwiPjwvZGl2PlxuICAgICAgICAgICAgPHA+IEFkZCBhIGR1bW15IHNwb25zb3IgdG8gdGhpcyBzbGlkZXIuPC9wPlxuICAgICAgICAgICAgPFNpbXBsZVNsaWRlcj5cbiAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInNwb25zb3ItY29udGFpbmVyXCIgaHJlZj1cImh0dHBzOi8vYnRzLWV2LmRlL1wiPlxuICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvYnRzLnBuZ1wiLz5cbiAgICAgICAgICAgIDwvYT4gXG4gICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJodHRwczovL3d3dy51bmktYmllbGVmZWxkLmRlL2Zha3VsdGFldGVuL3RlY2huaXNjaGUtZmFrdWx0YWV0L2FyYmVpdHNncnVwcGVuL211bHRpc2NhbGUtYmlvZW5naW5lZXJpbmcvY2FtcHVzYnJhdWVyZWkvXCI+XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3JcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9jYW1wdXMtYnJhdWVyZWktaGludGVybGVndC5qcGVnXCIvPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwid3d3LmlkdGRuYS5jb21cIj5cbiAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctc3BvbnNvclwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL2lkdC1sb2dvLnBuZ1wiPjwvaW1nPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwiaHR0cHM6Ly93d3cuY2ViaXRlYy51bmktYmllbGVmZWxkLmRlL1wiPlxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctc3BvbnNvclwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL2NlYml0ZWMtZmFyYmUucG5nXCIvPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvU2ltcGxlU2xpZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj48aDQ+RXhlcmNpc2UgYm94PC9oND48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0xXCI+PGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLW1lZGl1bS10YWdcIj5NZWRpdW08L2Rpdj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGk+PGg2PkJ5IDwvaDY+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWV4ZXJjaXNlXCI+XG4gICAgICAgICAgICAgICAgPHA+Q3JlYXRlIGEgYm94IHRoYXQgZGlmZmVycyBpbiBsb29rcyBmcm9tIHRoZSByZXN0IG9mIHRoZSBzaXRlIGFuZCBlbXBoYXppc2VzIGl0IGNvbnRhaW5zIGFuIGFzc2lnbm1lbnQuIDwvcD5cbiAgICAgICAgICAgICAgICA8cD5BcmNoaWV2ZSB0aGlzIGVmZmVjdCBieSB1c2luZyBiYWNrZ3JvdW5kLCBzaGFkb3csIGJvcmRlciBhbmQvb3Igb3RoZXIgY3NzIGVmZmVjdHMgb24gdGhlIGNsYXNzIFwiZXhhbXBsZS1leGVyY2lzZVwiLiBUaGUgYm94IHNob3VsZCBiZSBhZXN0ZXRpY2FsbHkgcGxlYXNpbmcgdW5saWtlIHRoZSBkb2N1bWVudGF0aW9uIGJveC4gPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPjxoND5QREY8L2g0PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTFcIj48ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtbWVkaXVtLXRhZ1wiPk1lZGl1bTwvZGl2PjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aT48aDY+QnkgPC9oNj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZXhlcmNpc2VcIj48L2Rpdj5cbiAgICAgICAgICAgIDxwPmEuIEluc2VydCBhIHBkZiB1c2luZyBvdXIgUERGIGNvbXBvbmVudC48L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbCBleGVyY2lzZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj48aDQ+IFNtYXJ0cGhvbmUgY29tcGF0aWJpbGl0eTwvaDQ+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMSBcIj48ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtbWVkaXVtLXRhZ1wiPk1lZGl1bTwvZGl2PjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aT48aDY+QnkgPC9oNj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZXhlcmNpc2VcIj5cbiAgICAgICAgICAgIDxwPiBDcmVhdGUgYSBzaW1wbGUgYm94IHRoYXQgaGFzIGEgZGlmZmVyZW50IGJhY2tncm91bmQgY29sb3Igd2hlbiB0aGUgd2Vic2l0ZSBpcyB1c2VkIG9uIGEgc21hcnRwaG9uZSAoc2NyZWVuIHdpZHRoIDc2OHB4IG9yIHNtYWxsZXIpLiAgPC9wPlxuICAgICAgICAgICAgPHA+IFVzZSBAbWVkaWEgcnVsZXMgZm9yIHRoYXQuPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPiBcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wgZXhlcmNpc2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+PGg0PkNvbGxhcHNpYmxlPC9oND48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0xIFwiPjxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1tZWRpdW0tdGFnXCI+TWVkaXVtPC9kaXY+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpPjxoNj5CeSA8L2g2PjwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1leGVyY2lzZVwiPlxuICAgICAgICAgICAgPHA+IGEuIFVzZSBvdXIgQ29sbGFwc2libGUgY29tcG9uZW50IHRvIGNyZWF0ZSBhIGNvbGxhcHNpYmxlLjwvcD5cbiAgICAgICAgICAgIDxwPiBiLiBUaGUgY29sbGFwc2libGUgc2hvdWxkIGNvbnRhaW4gdGhyZWUgY2lyY2xlcyB3aXRoIGEgZmV3IHdvcmRzIGluIGEgcm93IChvdXIgQ2lyY2xlIGNvbXBvbmVudCkgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPiBcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+PGg0PkhlYWRlcjwvaDQ+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMVwiPjxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1hZHZhbmNlZC10YWdcIj5BZHZhbmNlZDwvZGl2PjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aT48aDY+QnkgPC9oNj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZXhlcmNpc2VcIj5cbiAgICAgICAgICAgIDxwPmEuIENyZWF0ZSBhIGhlYWRlciBmaWxlIGZvciB0aGlzIHBhZ2UuIEl0IGhhcyB0byBiZSB2aXNpYmxlIGFuZCB0aGVyZWZvcmUgYmUgYWRkZWQgdG8gcGFnZXMudHM8L3A+XG4gICAgICAgICAgICA8cD5iLiBBZGQgdGhpcyBwYWdlIHRvIHRoZSBuYXZiYXIgdW5kZXIgXCJDb250cnVidXRpb25cIi4gPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbCBleGVyY2lzZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj48aDQ+Q2hhcnQgd2l0aCBWaWN0b3J5PC9oND48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0xIFwiPjxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1hZHZhbmNlZC10YWdcIj5BZHZhbmNlZDwvZGl2PjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aT48aDY+QnkgPC9oNj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZXhlcmNpc2VcIj5cbiAgICAgICAgICAgIDxwPkNyZWF0ZSBhIHNpbXBsZSBiYXIgQ2hhcnQgd2l0aCBSZWFjdC1DaGFydHMsIHVzaW5nIHRoZWlyIDxhIGhyZWY9XCJodHRwczovL211aS5jb20veC9yZWFjdC1jaGFydHMvXCI+IGRvY3VtZW50YXRpb248L2E+ICBhbmQgZHVtbXkgZGF0YSBvZiB5b3VyIGNob2ljZS4gPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbCBleGVyY2lzZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj48aDQ+IFNpbXBsZSBSZWFjdCBDb21wb25lbnQ8L2g0PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTEgXCI+PGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWFkdmFuY2VkLXRhZ1wiPkFkdmFuY2VkPC9kaXY+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpPjxoNj5CeSA8L2g2PjwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1leGVyY2lzZVwiPlxuICAgICAgICAgICAgPHA+IENyZWF0ZSBhIHJlYWN0IGNvbXBvbmVudCB0aGF0IHRha2VzIEhUTUwsIGEgbGluayB0byBhIHBpY3R1cmUsIGEgbnVtYmVyIGFuZCBhIHdvcmQgYXMgaW5wdXQgYW5kIHJldHVybiB0aGUgY29kZSBpbiBhIGJveCB3aXRoIHRoZSB3b3JkIGFzIGEgaGVhZGVyLiBUaGUgcGljdHVyZSBhbmQgb3RoZXIgY29kZSBzaG91bGQgYmUgaW4gdHdvIGNvbHVtbnMgbmV4dCB0byBlYWNoIG90aGVyLCB1bmRlciB0aGUgaGVhZGVyLiBUaGUgbnVtYmVyIHNob3VsZCBiZSBtdWx0aXBsaWVkIGJ5IDIgYW5kIHRoZW4gc2hvd24gc29tZXdoZXJlIHdpdGggdGhlIG90aGVyIHBhcnRzLjwvcD5cbiAgICAgICAgICAgIDxwPiBTZWUgRG9jdUJveCBjb21wb25lbnQuICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxoci8+IFxuey8qICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wgZXhlcmNpc2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+PGg0PiA8L2g0PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTEgXCI+PGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWVhc3ktdGFnXCI+PC9kaXY+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpPjxoNj5CeSA8L2g2PjwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1leGVyY2lzZVwiPlxuICAgICAgICAgICAgPHA+IDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz4gKi99XG5cbiAgICAgICAgXG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG5cblxuICBmdW5jdGlvbiBEb2N1Qm94KHtjaGlsZHJlbn06IHtjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlfSl7XG4gICAgcmV0dXJuKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWRvY3VcIj5cbiAgICAgICAgICAgIDxoNT5Eb2N1bWVudGF0aW9uOiA8L2g1PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8Lz5cbiAgICApXG4gIH1cbiAgIiwgImltcG9ydCB7IEJ1dHRvbk9uZX0gZnJvbSBcIi4uL2NvbXBvbmVudHMvQnV0dG9uc1wiO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBFZHVjYXRpb24oKSB7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9e3ttYXJnaW5Ub3A6IFwiNXZoXCIsIG1hcmdpbkJvdHRvbTogXCI1dmhcIn19PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgPEJ1dHRvbk9uZSB0ZXh0PVwiT3ZlcnZpZXdcIiBvcGVuPVwib3ZlcnZpZXdcIj48L0J1dHRvbk9uZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgPEJ1dHRvbk9uZSB0ZXh0PVwiTXVrb01vdmVcIiBvcGVuPVwibXVrb21vdmVcIj48L0J1dHRvbk9uZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgPEJ1dHRvbk9uZSB0ZXh0PVwiVGV1dG8gcnVmdCFcIiBvcGVuPVwidGV1dG9ydWZ0XCI+PC9CdXR0b25PbmU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgIDxCdXR0b25PbmUgdGV4dD1cIlNjaFx1MDBGQ2xlcippbm5lbiBBa2FkZW1pZVwiIG9wZW49XCJha2FkZW1pZVwiPjwvQnV0dG9uT25lPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIm92ZXJ2aWV3XCIgY2xhc3NOYW1lPVwiY3ljbGV0YWJcIiBzdHlsZT17e2Rpc3BsYXk6IFwiYmxvY2tcIn19PlxuICAgICAgICAgIDxoMj5PdXIgZWR1Y2F0aW9uIGFuZCBvdXRyZWFjaDwvaDI+XG5cbiAgICAgICAgICA8aDI+SWYgbm90IGFzIGEgc3BlY2lhbCBwcml6ZSAtIHRoZW4gd2h5PzwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiYWthZGVtaWVcIiBjbGFzc05hbWU9XCJjeWNsZXRhYlwiIHN0eWxlPXt7ZGlzcGxheTogXCJub25lXCJ9fT5cbiAgICAgICAgICA8aDI+U3R1ZGVudCBhY2FkZW15IG9uIHRoZSB0b3BpYyBvZiBzeW50aGV0aWMgYmlvbG9neTwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwidGV1dG9ydWZ0XCIgY2xhc3NOYW1lPVwiY3ljbGV0YWJcIiBzdHlsZT17e2Rpc3BsYXk6IFwibm9uZVwifX0+XG4gICAgICAgICAgPGgyPkVkdWNhdGlvbmFsIGNpdHkgdG91ciBmb3IgeW91bmcgYW5kIG9sZDwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwibXVrb21vdmVcIiBjbGFzc05hbWU9XCJjeWNsZXRhYlwiIHN0eWxlPXt7ZGlzcGxheTogXCJub25lXCJ9fT5cbiAgICAgICAgICA8aDI+Q3lzdGljIGZpYnJvc2lzIGF3YXJlbmVzcyBtb250aDwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4gICIsICJleHBvcnQgZnVuY3Rpb24gRURVSCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEhlYWRlckJveCB0aXRsZT1cIkVkdWNhdGlvbiBhbmQgT3V0cmVhY2hcIj5cbiAgICAgICAgXG4gICAgICA8L0hlYWRlckJveD5cbiAgICApO1xuICB9XG4gIFxuICBpbXBvcnQgSGVhZGVyQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRlci1ib3hcIjsiLCAiZXhwb3J0IGZ1bmN0aW9uIEVuZ1NpZGUoKXtcbiAgICByZXR1cm4oXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTEgZC1ub25lIGQtbGctYmxvY2tcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufSIsICJleHBvcnQgZnVuY3Rpb24gTm9TaWRlYmFyKCl7XG4gICAgcmV0dXJuKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0xIGQtbm9uZSBkLWxnLWJsb2NrXCI+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn0iLCAiZXhwb3J0IGZ1bmN0aW9uIFN1cnZleSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgbXQtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4gICIsICJleHBvcnQgZnVuY3Rpb24gU1VSSCgpIHtcblxuICAgIHJldHVybiAoXG4gICAgICA8SGVhZGVyQm94IHRpdGxlPVwiU3VydmV5XCI+XG4gICAgICAgIFxuICAgICAgPC9IZWFkZXJCb3g+XG4gICAgKTtcbiAgfVxuICBcbiAgaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBDb2xsYWJvcmF0aW9ucygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgbXQtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4gICIsICJleHBvcnQgZnVuY3Rpb24gQ09MTEgoKSB7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEhlYWRlckJveCB0aXRsZT1cIkNvbGxhYm9yYXRpb25zXCI+XG4gICAgICAgIFxuICAgICAgPC9IZWFkZXJCb3g+XG4gICAgKTtcbiAgfVxuICBcbiAgaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvc2FoYW1pYXNhZC93aWtpLmNzcy9iaWVsZWZlbGQtY2ViaXRlYy9zcmMvdXRpbHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9zYWhhbWlhc2FkL3dpa2kuY3NzL2JpZWxlZmVsZC1jZWJpdGVjL3NyYy91dGlscy9zdHJpbmdUb1NsdWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL3NhaGFtaWFzYWQvd2lraS5jc3MvYmllbGVmZWxkLWNlYml0ZWMvc3JjL3V0aWxzL3N0cmluZ1RvU2x1Zy50c1wiO2V4cG9ydCBmdW5jdGlvbiBzdHJpbmdUb1NsdWcoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgc2x1ZyA9IFN0cmluZyhzdHJpbmcpLnRvTG93ZXJDYXNlKCk7XG4gIHNsdWcgPSBzbHVnLnJlcGxhY2UoL1teYS16MC05LV0vZywgXCItXCIpO1xuICBzbHVnID0gc2x1Zy5yZXBsYWNlKC8tKy9nLCBcIi1cIik7XG4gIC8vIHJlbW92ZSBkYXNoZXMgYXQgc3RhcnQgYW5kIGVuZFxuICBjb25zdCBzdGFydCA9IHNsdWcuc2VhcmNoKC9bXi1dLyk7IC8vIGZpbmQgaW5kZXggb2YgZmlyc3Qgbm9uLWRhc2hcbiAgY29uc3QgZW5kID0gc2x1Zy5zZWFyY2goLy0rJC8pOyAvLyBmaW5kIGluZGV4IG9mIGZpcnN0IGVuZCBkYXNoXG4gIHJldHVybiBzbHVnLnN1YnN0cmluZyhzdGFydCwgZW5kID09PSAtMSA/IHVuZGVmaW5lZCA6IGVuZCk7XG59XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9Vc2Vycy9zYWhhbWlhc2FkL3dpa2kuY3NzL2JpZWxlZmVsZC1jZWJpdGVjL3NyYy91dGlsc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL3NhaGFtaWFzYWQvd2lraS5jc3MvYmllbGVmZWxkLWNlYml0ZWMvc3JjL3V0aWxzL3VzZVNjcmlwdC50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vVXNlcnMvc2FoYW1pYXNhZC93aWtpLmNzcy9iaWVsZWZlbGQtY2ViaXRlYy9zcmMvdXRpbHMvdXNlU2NyaXB0LnRzXCI7aW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2NyaXB0KHt1cmx9Ont1cmw6IHN0cmluZ30pIHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcblxuICAgIHNjcmlwdC5zcmMgPSB1cmw7XG4gICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgfVxuICB9LCBbdXJsXSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VTY3JpcHQ7XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQXNULFNBQVMsY0FBYyxlQUFlO0FBQzVWLE9BQU8sV0FBVzs7O0FDR2QsbUJBR00sS0FERixZQUZKOzs7QUNFQSxxQkFBQUEsV0FDRSxPQUFBQyxNQUVBLFFBQUFDLGFBSEY7OztBQ05KLFNBQVMsaUJBQWlCO0FBd0J0QixxQkFBQUMsV0FFSSxPQUFBQyxNQUZKLFFBQUFDLGFBQUE7OztBQ3RCQSxxQkFBQUMsV0FFSSxPQUFBQyxZQUZKOzs7QUNHYSxnQkFBQUMsTUE0Q1QsUUFBQUMsYUE1Q1M7OztBQ0FMLGdCQUFBQyxZQUFBOzs7QUNMWixTQUFTLFlBQVk7QUFHZixxQkFBQUMsV0FRSixPQUFBQyxNQTRDQSxRQUFBQyxhQXBESTs7O0FDRk4sU0FBUyxXQUFXO0FBQ3BCLFNBQVMsU0FBUyxTQUFTLFlBQVksU0FBUyxjQUFjO0FBNkN4RCxnQkFBQUMsWUFBQTtBQTFDTixRQUFRLFNBQVMsWUFBWSxTQUFTLE1BQU07OztBQ1k1QixnQkFBQUMsTUFDQSxRQUFBQyxhQURBOzs7QUNmaEIsU0FBUyxhQUFBQyxrQkFBaUI7QUFRVixTQW1FSixZQUFBQyxXQW5FSSxPQUFBQyxPQW1FSixRQUFBQyxhQW5FSTs7O0FDSkEsZ0JBQUFDLGFBQUE7OztBQ05oQixTQUFTLFFBQUFDLGFBQVk7OztBQ1FULGdCQUFBQyxPQU1FLFFBQUFDLGFBTkY7OztBREdSLFNBaUdBLFlBQUFDLFdBaEdFLE9BQUFDLE9BREYsUUFBQUMsYUFBQTs7O0FFTEUscUJBQUFDLFdBR00sT0FBQUMsT0FRQyxRQUFBQyxjQVhQOzs7QUNERixxQkFBQUMsV0FFSSxPQUFBQyxhQUZKOzs7QUNBQSxxQkFBQUMsWUFFSSxPQUFBQyxhQUZKOzs7QUNDQSxxQkFBQUMsWUFFSSxPQUFBQyxPQUZKLFFBQUFDLGNBQUE7OztBQ0pBLHFCQUFBQyxZQUVJLE9BQUFDLE9BWUYsUUFBQUMsY0FkRjs7O0FDR0ksZ0JBQUFDLGFBQUE7OztBQ0FJLFNBQ0ksT0FBQUMsT0FESixRQUFBQyxjQUFBOzs7QUNtRFosU0FBUyxLQUFLLFdBQVc7QUFDekIsU0FBUSxZQUFZLFNBQVMsZ0JBQWU7QUFDNUMsT0FBTyxXQUFXO0FBTVIsU0EyQkEsWUFBQUMsWUEzQkEsT0FBQUMsT0FnQ0UsUUFBQUMsY0FoQ0Y7QUEwckJWO0FBT0k7OztBQzN2QlksZ0JBQUFDLGFBQUE7OztBQ2FSLFNBaUJBLFlBQUFDLFlBaEJJLE9BQUFDLE9BREosUUFBQUMsY0FBQTs7O0FDb0JXLGdCQUFBQyxhQUFBOzs7QUNsQ1gsU0FDUSxPQUFBQyxPQURSLFFBQUFDLGNBQUE7OztBQ0VFLFNBdUJOLFlBQUFDLFlBdkJNLE9BQUFDLE9BZ0NFLFFBQUFDLGNBaENGOzs7QUNQVixTQUFTLE9BQUFDLE1BQUssT0FBQUMsWUFBVztBQUN6QixTQUFRLGNBQUFDLGFBQVksV0FBQUMsVUFBUyxZQUFBQyxpQkFBZTtBQUM1QyxPQUFPQyxZQUFXOzs7QUNGbEIsU0FBUyxnQkFBZ0I7QUFrQm5CLHFCQUFBQyxZQUlRLE9BQUFDLE9BREYsUUFBQUMsY0FITjs7O0FDakJOLE9BQU8sWUFBWTtBQUNuQixPQUFPQyxZQUFXO0FBMkZaLGdCQUFBQyxhQUFBO0FBbkZOLElBQU0sY0FBYTtBQUFBLEVBQ2pCLEVBQUMsT0FBTyxPQUFPLE9BQU8sV0FBVTtBQUFBLEVBQ2hDLEVBQUMsT0FBTyxTQUFTLE9BQU8sUUFBTztBQUFBLEVBQy9CLEVBQUMsT0FBTyxRQUFRLE9BQU8sUUFBTztBQUFBLEVBQzlCLEVBQUMsT0FBTyxZQUFZLE9BQU8sYUFBWTtBQUFBLEVBQ3ZDLEVBQUMsT0FBTyxZQUFZLE9BQU8sa0JBQWlCO0FBQUEsRUFDNUMsRUFBQyxPQUFPLFFBQVEsT0FBTyxPQUFNO0FBQUEsRUFDN0IsRUFBQyxPQUFPLE9BQU8sT0FBTyxNQUFLO0FBRTdCO0FBR00sU0FBUyxxQkFBcUIsS0FBa0I7QUFDOUMsTUFBSSxPQUFPLFNBQVMsZUFBZSxNQUFNO0FBQ3pDLE9BQU0sWUFBWTtBQUNsQixNQUFJLEdBQStDO0FBQ25ELE1BQUksU0FBUyx1QkFBdUIsWUFBWTtBQUNoRCxPQUFLLElBQUksR0FBRyxJQUFJLEVBQUUsUUFBUSxLQUFLO0FBQzdCLFFBQUksS0FBSyxFQUFFLENBQUM7QUFDWixrQkFBYyxJQUFJLE1BQU07QUFBQSxFQUMxQjtBQUNBLE1BQUksVUFBVTtBQUNkLE1BQUksTUFBTTtBQUNWLE9BQUssSUFBSSxHQUFHLElBQUksRUFBRSxRQUFRLEtBQUs7QUFFN0IsUUFBSSxRQUFRLENBQUMsVUFBVTtBQUNwQixVQUFJLEVBQUUsQ0FBQyxFQUFFLFVBQVUsUUFBUSxNQUFNLEtBQUssS0FBSyxJQUFHO0FBQzdDLGNBQU07QUFBQSxNQUNQLE9BQ0k7QUFDRCxZQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxTQUFTLE1BQU0sS0FBSyxHQUFFO0FBQ3hDLGdCQUFNO0FBQUEsUUFDUjtBQUFBLE1BQ0g7QUFBQSxJQUNILENBQUM7QUFDRCxRQUFJLEtBQUk7QUFDTixpQkFBVyxFQUFFLENBQUMsR0FBRyxNQUFNO0FBQ3ZCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxNQUFJLElBQUksU0FBUyx1QkFBdUIsTUFBTSxFQUFFO0FBQ2hELE1BQUksSUFBSSxHQUFFO0FBQ04sWUFBUSxJQUFJLENBQUM7QUFDYixTQUFNLFlBQVk7QUFBQSxFQUN0QjtBQUNGO0FBYU4sU0FBUyxXQUFXLFNBQWtCLE1BQWM7QUFDbEQsTUFBSSxHQUFHLE1BQU07QUFDYixTQUFPLFFBQVEsVUFBVSxNQUFNLEdBQUc7QUFDbEMsU0FBTyxLQUFLLE1BQU0sR0FBRztBQUNyQixPQUFLLElBQUksR0FBRyxJQUFJLEtBQUssUUFBUSxLQUFLO0FBQ2hDLFFBQUksS0FBSyxRQUFRLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSTtBQUFDLGNBQVEsYUFBYSxNQUFNLEtBQUssQ0FBQztBQUFBLElBQUU7QUFBQSxFQUN2RTtBQUNGO0FBRUEsU0FBUyxjQUFjLFNBQWtCLE1BQWM7QUFDckQsTUFBSSxHQUFHLE1BQU07QUFDYixTQUFPLFFBQVEsVUFBVSxNQUFNLEdBQUc7QUFDbEMsU0FBTyxLQUFLLE1BQU0sR0FBRztBQUNyQixPQUFLLElBQUksR0FBRyxJQUFJLEtBQUssUUFBUSxLQUFLO0FBQ2hDLFdBQU8sS0FBSyxRQUFRLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSTtBQUNqQyxXQUFLLE9BQU8sS0FBSyxRQUFRLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUFBLElBQ3RDO0FBQUEsRUFDRjtBQUNBLFVBQVEsWUFBWSxLQUFLLEtBQUssR0FBRztBQUNuQztBQVdBLElBQU0sYUFBTixjQUF5QkMsT0FBTSxVQUFVO0FBQUEsRUFDdkMsUUFBUTtBQUFBLElBQ04sZ0JBQWdCO0FBQUEsRUFDbEI7QUFBQSxFQUNBLGVBQWUsQ0FBQyxtQkFBd0I7QUFFdkMsU0FBSztBQUFBLE1BQVMsRUFBRSxlQUFlO0FBQUEsTUFBRyxNQUNsQyxRQUFRLElBQUksb0JBQW9CLEtBQUssTUFBTSxjQUFjO0FBQUEsSUFFeEQ7QUFDQyx5QkFBcUIsY0FBYztBQUFBLEVBQ3RDO0FBQUEsRUFDQSxTQUFTO0FBQ1AsVUFBTSxFQUFFLGVBQWUsSUFBSSxLQUFLO0FBRWhDLFdBQ0UsZ0JBQUFDO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxPQUFPO0FBQUEsUUFDUCxVQUFVLEtBQUs7QUFBQSxRQUNmLFNBQU87QUFBQSxRQUNQLFNBQVM7QUFBQSxRQUNULGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUFBLFFBQzdCLFdBQVU7QUFBQSxRQUNWLGlCQUFnQjtBQUFBO0FBQUEsSUFDbEI7QUFBQSxFQUVKO0FBQ0Y7OztBQ3pIWSxnQkFBQUMsYUFBQTs7O0FISUwscUJBQUFDLFlBR0ksT0FBQUMsT0FISixRQUFBQyxjQUFBOzs7QUlKRCxxQkFBQUMsWUFHTSxPQUFBQyxPQURGLFFBQUFDLGNBRko7OztBQ0NGLHFCQUFBQyxZQUdNLE9BQUFDLE9BREYsUUFBQUMsY0FGSjs7O0FDREUscUJBQUFDLFlBR00sT0FBQUMsT0FERixRQUFBQyxjQUZKOzs7QUNBQSxxQkFBQUMsWUFDQSxPQUFBQyxPQVFJLFFBQUFDLGNBVEo7OztBQ0FBLHFCQUFBQyxZQUdNLE9BQUFDLE9BREYsUUFBQUMsY0FGSjs7O0FDQUEscUJBQUFDLFlBQUEsT0FBQUMsYUFBQTs7O0FDREEscUJBQUFDLFlBSU0sT0FBQUMsT0FGRixRQUFBQyxjQUZKOzs7QUNJRSxxQkFBQUMsWUFHSSxPQUFBQyxPQURGLFFBQUFDLGNBRkY7OztBQ0ZGLGdCQUFBQyxhQUFBOzs7QUNBQSxnQkFBQUMsYUFBQTs7O0FDRkYsZ0JBQUFDLGFBQUE7OztBQ0RBLGdCQUFBQyxhQUFBOzs7QUNDQSxnQkFBQUMsYUFBQTs7O0FDQUEsZ0JBQUFDLGFBQUE7OztBQ0FBLGdCQUFBQyxhQUFBOzs7QUNBQSxnQkFBQUMsYUFBQTs7O0FDQUEsZ0JBQUFDLGFBQUE7OztBQ0FBLGdCQUFBQyxhQUFBOzs7QUNBQSxnQkFBQUMsYUFBQTs7O0FDQUEsZ0JBQUFDLGFBQUE7OztBQ0FBLGdCQUFBQyxhQUFBOzs7QUNBQSxnQkFBQUMsYUFBQTs7O0FDREEsZ0JBQUFDLGFBQUE7OztBQ0NBLGdCQUFBQyxhQUFBOzs7QUNBQSxnQkFBQUMsYUFBQTs7O0FDQUEsZ0JBQUFDLGFBQUE7OztBQ0NFLHFCQUFBQyxZQUdNLE9BQUFDLE9BREYsUUFBQUMsY0FGSjs7O0FDREYsZ0JBQUFDLGFBQUE7OztBQ0RFLHFCQUFBQyxZQUVJLE9BQUFDLGFBRko7OztBQ0NGLGdCQUFBQyxhQUFBOzs7QUNFRSxxQkFBQUMsWUFFSSxPQUFBQyxhQUZKOzs7QUNGQSxnQkFBQUMsYUFBQTs7O0FDQ0EscUJBQUFDLFlBR00sT0FBQUMsT0FERixRQUFBQyxjQUZKOzs7QUNFQSxnQkFBQUMsYUFBQTs7O0FDRkEscUJBQUFDLFlBRUksT0FBQUMsYUFGSjs7O0FDREYsZ0JBQUFDLGFBQUE7OztBQ0ZKLE9BQU8sWUFBWTtBQWdCSixxQkFBQUMsWUFBQSxPQUFBQyxhQUFBOzs7QUNqQmYsT0FBTyxVQUFVO0FBQ2pCLFNBQVMsZUFBZTtBQUN4QixTQUFTLHFCQUFxQjtBQUM5QixTQUFTLGNBQWM7QUFDdkIsU0FBUyx3QkFBd0I7QUF3RDNCLFNBRUUsT0FBQUMsT0FGRixRQUFBQyxjQUFBOzs7QUNyREEscUJBQUFDLFlBR0UsT0FBQUMsT0FHSSxRQUFBQyxjQU5OOzs7QUNEQSxxQkFBQUMsWUFHTSxPQUFBQyxPQUZKLFFBQUFDLGNBREY7OztBQ0pBLGdCQUFBQyxhQUFBOzs7QUNBRSxnQkFBQUMsYUFBQTs7O0FDQUEsZ0JBQUFDLGFBQUE7OztBQ0FGLHFCQUFBQyxZQUVJLE9BQUFDLGFBRko7OztBQ0NBLGdCQUFBQyxhQUFBOzs7QUNEQSxxQkFBQUMsWUFFSSxPQUFBQyxhQUZKOzs7QUNDQSxnQkFBQUMsYUFBQTs7O0FDSHVWLFNBQVMsYUFBYSxRQUF3QjtBQUN6WSxNQUFJLE9BQU8sT0FBTyxNQUFNLEVBQUUsWUFBWTtBQUN0QyxTQUFPLEtBQUssUUFBUSxlQUFlLEdBQUc7QUFDdEMsU0FBTyxLQUFLLFFBQVEsT0FBTyxHQUFHO0FBRTlCLFFBQU0sUUFBUSxLQUFLLE9BQU8sTUFBTTtBQUNoQyxRQUFNLE1BQU0sS0FBSyxPQUFPLEtBQUs7QUFDN0IsU0FBTyxLQUFLLFVBQVUsT0FBTyxRQUFRLEtBQUssU0FBWSxHQUFHO0FBQzNEOzs7QUNSZ1YsU0FBUyxhQUFBQyxrQkFBaUI7OztBL0VHMVcsT0FBTyxVQUFVO0FBSGpCLElBQU0sbUNBQW1DO0FBTXpDLElBQU8sc0JBQVEsTUFBTTtBQUNuQixRQUFNLE1BQU0sUUFBUSxPQUFPLFFBQVEsSUFBSSxDQUFDO0FBQ3hDLE1BQUksQ0FBQyxJQUFJLGdCQUFnQjtBQUN2QixVQUFNLElBQUksTUFBTSxvREFBb0Q7QUFBQSxFQUN0RTtBQUVBLFFBQU0sV0FBVyxhQUFhLElBQUksY0FBYztBQUNoRCxVQUFRLElBQUksY0FBYyxRQUFRLEdBQUc7QUFDckMsVUFBUSxJQUFJLHFCQUFxQixLQUFLLFFBQVEsa0NBQVcsTUFBTSxDQUFDLEVBQUU7QUFJbEUsU0FBTyxhQUFhO0FBQUEsSUFDbEIsTUFBTTtBQUFBLElBQ04sU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUFBLElBQ2pCLFNBQVM7QUFBQSxNQUNQLE9BQU87QUFBQSxRQUNMLEtBQUssS0FBSyxRQUFRLGtDQUFXLE9BQU87QUFBQTtBQUFBLE1BQ3RDO0FBQUEsSUFDRjtBQUFBLElBQ0EsS0FBSztBQUFBLE1BQ0gscUJBQXFCO0FBQUEsUUFDbkIsS0FBSztBQUFBO0FBQUEsUUFFTDtBQUFBLE1BQ0Y7QUFBQSxJQUFLO0FBQUEsSUFDUCxPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsTUFDUixlQUFlO0FBQUEsUUFDYixRQUFRO0FBQUEsVUFDTixnQkFBZ0I7QUFBQSxRQUNoQjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDRixXQUFXO0FBQUEsRUFDYixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3giLCAianN4cyIsICJqc3giLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAianN4IiwgImpzeCIsICJqc3hzIiwgInVzZUVmZmVjdCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJqc3giLCAiTGluayIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAiRnJhZ21lbnQiLCAianN4IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgImpzeCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJqc3giLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAianN4IiwgImpzeCIsICJqc3hzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkJveCIsICJUYWIiLCAiVGFiQ29udGV4dCIsICJUYWJMaXN0IiwgIlRhYlBhbmVsIiwgIlJlYWN0IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIlJlYWN0IiwgImpzeCIsICJSZWFjdCIsICJqc3giLCAianN4IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkZyYWdtZW50IiwgImpzeCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJqc3giLCAianN4IiwgImpzeCIsICJqc3giLCAianN4IiwgImpzeCIsICJqc3giLCAianN4IiwgImpzeCIsICJqc3giLCAianN4IiwgImpzeCIsICJqc3giLCAianN4IiwgImpzeCIsICJqc3giLCAianN4IiwgImpzeCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJqc3giLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeCIsICJGcmFnbWVudCIsICJqc3giLCAianN4IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgImpzeCIsICJGcmFnbWVudCIsICJqc3giLCAianN4IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJqc3giLCAianN4IiwgImpzeCIsICJGcmFnbWVudCIsICJqc3giLCAianN4IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3giLCAidXNlRWZmZWN0Il0KfQo=
diff --git a/yarn.lock b/yarn.lock
index 963b80481b75c82ad6b143e1c5f7f4b60bddba2d..d6dbffb93f8da531a5124286f0aa0ef9ac8a32a2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -23,7 +23,7 @@
   resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz"
   integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==
 
-"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.24.5":
+"@babel/core@^7.24.5":
   version "7.25.2"
   resolved "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz"
   integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==
@@ -221,7 +221,7 @@
   resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz"
   integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==
 
-"@emotion/is-prop-valid@*", "@emotion/is-prop-valid@^1.3.0":
+"@emotion/is-prop-valid@^1.3.0":
   version "1.3.0"
   resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz"
   integrity sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ==
@@ -233,7 +233,7 @@
   resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz"
   integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==
 
-"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.13.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.8.1", "@emotion/react@^11.9.0":
+"@emotion/react@^11.13.0", "@emotion/react@^11.8.1":
   version "11.13.0"
   resolved "https://registry.npmjs.org/@emotion/react/-/react-11.13.0.tgz"
   integrity sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ==
@@ -263,7 +263,7 @@
   resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz"
   integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==
 
-"@emotion/styled@^11.13.0", "@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1":
+"@emotion/styled@^11.13.0":
   version "11.13.0"
   resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz"
   integrity sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==
@@ -295,6 +295,11 @@
   resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz"
   integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==
 
+"@esbuild/linux-x64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz"
+  integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
+
 "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
   version "4.4.0"
   resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
@@ -463,7 +468,7 @@
     clsx "^2.1.0"
     prop-types "^15.8.1"
 
-"@mui/material@^5.0.0", "@mui/material@^5.15.14", "@mui/material@^5.16.5", "@mui/material@>=5.15.0":
+"@mui/material@^5.16.5":
   version "5.16.7"
   resolved "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz"
   integrity sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==
@@ -574,7 +579,7 @@
     "@nodelib/fs.stat" "2.0.5"
     run-parallel "^1.1.9"
 
-"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
   version "2.0.5"
   resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
   integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -671,6 +676,16 @@
     uncontrollable "^8.0.1"
     warning "^4.0.3"
 
+"@rollup/rollup-linux-x64-gnu@4.20.0":
+  version "4.20.0"
+  resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz"
+  integrity sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==
+
+"@rollup/rollup-linux-x64-musl@4.20.0":
+  version "4.20.0"
+  resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz"
+  integrity sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==
+
 "@swc/helpers@^0.5.0":
   version "0.5.12"
   resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.12.tgz"
@@ -943,6 +958,13 @@
   resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz"
   integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
 
+"@types/faker@^6.6.9":
+  version "6.6.9"
+  resolved "https://registry.npmjs.org/@types/faker/-/faker-6.6.9.tgz"
+  integrity sha512-Y9YYm5L//8ooiiknO++4Gr539zzdI0j3aXnOBjo1Vk+kTvffY10GuE2wn78AFPECwZ5MYGTjiDVw1naLLdDimw==
+  dependencies:
+    faker "*"
+
 "@types/geojson@*":
   version "7946.0.14"
   resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz"
@@ -955,7 +977,7 @@
   dependencies:
     "@types/sizzle" "*"
 
-"@types/node@^18.0.0 || >=20.0.0", "@types/node@^20.12.10":
+"@types/node@^20.12.10":
   version "20.14.15"
   resolved "https://registry.npmjs.org/@types/node/-/node-20.14.15.tgz"
   integrity sha512-Fz1xDMCF/B00/tYSVMlmK7hVeLh7jE5f3B7X1/hmV0MJBwE27KlS7EvD/Yp+z1lm8mVhwV5w+n8jOZG8AfTlKw==
@@ -1000,7 +1022,7 @@
   dependencies:
     "@types/react" "*"
 
-"@types/react@*", "@types/react@^17.0.0 || ^18.0.0", "@types/react@^18.2.66", "@types/react@>=16.14.8", "@types/react@>=16.9.11":
+"@types/react@*", "@types/react@>=16.9.11", "@types/react@^18.2.66":
   version "18.3.3"
   resolved "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz"
   integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==
@@ -1060,7 +1082,7 @@
     natural-compare "^1.4.0"
     ts-api-utils "^1.3.0"
 
-"@typescript-eslint/parser@^7.0.0", "@typescript-eslint/parser@^7.2.0":
+"@typescript-eslint/parser@^7.2.0":
   version "7.18.0"
   resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz"
   integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==
@@ -1152,7 +1174,7 @@ acorn-jsx@^5.3.2:
   resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
   integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
 
-"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.9.0:
+acorn@^8.9.0:
   version "8.12.1"
   resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz"
   integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
@@ -1310,7 +1332,7 @@ braces@^3.0.3, braces@~3.0.2:
   dependencies:
     fill-range "^7.1.1"
 
-browserslist@^4.23.1, "browserslist@>= 4.21.0":
+browserslist@^4.23.1:
   version "4.23.3"
   resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz"
   integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==
@@ -1347,7 +1369,7 @@ chalk@^4.0.0:
     ansi-styles "^4.1.0"
     supports-color "^7.1.0"
 
-chart.js@^4.1.1, chart.js@^4.4.4:
+chart.js@^4.4.4:
   version "4.4.4"
   resolved "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz"
   integrity sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==
@@ -1423,26 +1445,26 @@ color-convert@^2.0.1:
   dependencies:
     color-name "~1.1.4"
 
-color-name@~1.1.4:
-  version "1.1.4"
-  resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
-  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
 color-name@1.1.3:
   version "1.1.3"
   resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
   integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
 
-commander@^8.3.0:
-  version "8.3.0"
-  resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz"
-  integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+color-name@~1.1.4:
+  version "1.1.4"
+  resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
+  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
 
 commander@7:
   version "7.2.0"
   resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz"
   integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
 
+commander@^8.3.0:
+  version "8.3.0"
+  resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz"
+  integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+
 concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
@@ -1524,7 +1546,7 @@ csstype@^3.0.2, csstype@^3.1.3:
   resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
   integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
 
-d3-array@^3.1.6, d3-array@^3.2.0, "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3:
+"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.1.6, d3-array@^3.2.0:
   version "3.2.4"
   resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz"
   integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==
@@ -1554,7 +1576,7 @@ d3-chord@3:
   dependencies:
     d3-path "1 - 3"
 
-d3-color@^3.1.0, "d3-color@1 - 3", d3-color@3:
+"d3-color@1 - 3", d3-color@3, d3-color@^3.1.0:
   version "3.1.0"
   resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz"
   integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==
@@ -1566,7 +1588,7 @@ d3-contour@4:
   dependencies:
     d3-array "^3.2.0"
 
-d3-delaunay@^6.0.4, d3-delaunay@6:
+d3-delaunay@6, d3-delaunay@^6.0.4:
   version "6.0.4"
   resolved "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz"
   integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==
@@ -1595,7 +1617,7 @@ d3-delaunay@^6.0.4, d3-delaunay@6:
     iconv-lite "0.6"
     rw "1"
 
-d3-ease@^3.0.1, "d3-ease@1 - 3", d3-ease@3:
+"d3-ease@1 - 3", d3-ease@3, d3-ease@^3.0.1:
   version "3.0.1"
   resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz"
   integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==
@@ -1635,24 +1657,24 @@ d3-geo@3:
   dependencies:
     d3-array "2.5.0 - 3"
 
-d3-hierarchy@^1.1.5:
-  version "1.1.9"
-  resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz"
-  integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==
-
 d3-hierarchy@3:
   version "3.1.2"
   resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz"
   integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==
 
-d3-interpolate@^3.0.1, "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3:
+d3-hierarchy@^1.1.5:
+  version "1.1.9"
+  resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz"
+  integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==
+
+"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3, d3-interpolate@^3.0.1:
   version "3.0.1"
   resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz"
   integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==
   dependencies:
     d3-color "1 - 3"
 
-d3-path@^3.1.0, "d3-path@1 - 3", d3-path@3:
+"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0:
   version "3.1.0"
   resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz"
   integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==
@@ -1680,7 +1702,7 @@ d3-scale-chromatic@3:
     d3-color "1 - 3"
     d3-interpolate "1 - 3"
 
-d3-scale@^4.0.2, d3-scale@4:
+d3-scale@4, d3-scale@^4.0.2:
   version "4.0.2"
   resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz"
   integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==
@@ -1696,7 +1718,7 @@ d3-scale@^4.0.2, d3-scale@4:
   resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz"
   integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==
 
-d3-shape@^3.1.0, d3-shape@^3.2.0, d3-shape@3:
+d3-shape@3, d3-shape@^3.1.0, d3-shape@^3.2.0:
   version "3.2.0"
   resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz"
   integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==
@@ -1710,14 +1732,14 @@ d3-shape@^3.1.0, d3-shape@^3.2.0, d3-shape@3:
   dependencies:
     d3-time "1 - 3"
 
-d3-time@^3.0.0, d3-time@^3.1.0, "d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3:
+"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3, d3-time@^3.0.0, d3-time@^3.1.0:
   version "3.1.0"
   resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz"
   integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==
   dependencies:
     d3-array "2 - 3"
 
-d3-timer@^3.0.1, "d3-timer@1 - 3", d3-timer@3:
+"d3-timer@1 - 3", d3-timer@3, d3-timer@^3.0.1:
   version "3.0.1"
   resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz"
   integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==
@@ -1749,6 +1771,11 @@ d3-zoom@3:
     d3-selection "2 - 3"
     d3-transition "2 - 3"
 
+d3@3.5.6:
+  version "3.5.6"
+  resolved "https://registry.npmjs.org/d3/-/d3-3.5.6.tgz"
+  integrity sha512-i1x8Q3lGerBazuvWsImnUKrjfCdBnRnk8aq7hqOK/5+CAWJTt/zr9CaR1mlJf17oH8l/v4mOaDLU+F/l2dq1Vg==
+
 d3@^7.8.5:
   version "7.9.0"
   resolved "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz"
@@ -1785,11 +1812,6 @@ d3@^7.8.5:
     d3-transition "3"
     d3-zoom "3"
 
-d3@3.5.6:
-  version "3.5.6"
-  resolved "https://registry.npmjs.org/d3/-/d3-3.5.6.tgz"
-  integrity sha512-i1x8Q3lGerBazuvWsImnUKrjfCdBnRnk8aq7hqOK/5+CAWJTt/zr9CaR1mlJf17oH8l/v4mOaDLU+F/l2dq1Vg==
-
 dangerously-set-html-content@^1.1.0:
   version "1.1.0"
   resolved "https://registry.npmjs.org/dangerously-set-html-content/-/dangerously-set-html-content-1.1.0.tgz"
@@ -1807,18 +1829,18 @@ deep-is@^0.1.3:
   resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
   integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
 
-delaunator@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz"
-  integrity sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==
-
-delaunator@^5.0.1, delaunator@5:
+delaunator@5, delaunator@^5.0.1:
   version "5.0.1"
   resolved "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz"
   integrity sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==
   dependencies:
     robust-predicates "^3.0.2"
 
+delaunator@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz"
+  integrity sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==
+
 delaunay-find@0.0.6:
   version "0.0.6"
   resolved "https://registry.npmjs.org/delaunay-find/-/delaunay-find-0.0.6.tgz"
@@ -1984,7 +2006,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4
   resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
   integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
 
-"eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@^8.56.0, eslint@^8.57.0, eslint@>=7:
+eslint@^8.57.0:
   version "8.57.0"
   resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz"
   integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
@@ -2061,6 +2083,11 @@ esutils@^2.0.2:
   resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
   integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
 
+faker@*:
+  version "5.5.3"
+  resolved "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz"
+  integrity sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==
+
 fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
   version "3.1.3"
   resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
@@ -2165,6 +2192,11 @@ fs.realpath@^1.0.0:
   resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
   integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
 
+fsevents@~2.3.2, fsevents@~2.3.3:
+  version "2.3.3"
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+  integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
 function-bind@^1.1.2:
   version "1.1.2"
   resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@@ -2321,7 +2353,7 @@ inflight@^1.0.4:
     once "^1.3.0"
     wrappy "1"
 
-inherits@~2.0.3, inherits@2:
+inherits@2, inherits@~2.0.3:
   version "2.0.4"
   resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -2535,12 +2567,17 @@ lodash.throttle@^4.0.1, lodash.throttle@^4.1.1:
   resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz"
   integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
 
-lodash@^4.13.1, lodash@^4.17.19, lodash@^4.17.21:
+lodash@^4.17.19, lodash@^4.17.21:
   version "4.17.21"
   resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
   integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
 
-loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
+lodash@4.17.4:
+  version "4.17.4"
+  resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz"
+  integrity sha512-6X37Sq9KCpLSXEh8uM12AKYlviHPNNk4RxiGBn4cmKGJinbXBneWIV7iE/nXkM928O7ytHcHb6+X6Svl0f4hXg==
+
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
   version "1.4.0"
   resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
   integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -2554,6 +2591,38 @@ lru-cache@^5.1.1:
   dependencies:
     yallist "^3.0.2"
 
+markdown-it-ins@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/markdown-it-ins/-/markdown-it-ins-4.0.0.tgz"
+  integrity sha512-sWbjK2DprrkINE4oYDhHdCijGT+MIDhEupjSHLXe5UXeVr5qmVxs/nTUVtgi0Oh/qtF+QKV0tNWDhQBEPxiMew==
+
+markdown-it-mark@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/markdown-it-mark/-/markdown-it-mark-4.0.0.tgz"
+  integrity sha512-YLhzaOsU9THO/cal0lUjfMjrqSMPjjyjChYM7oyj4DnyaXEzA8gnW6cVJeyCrCVeyesrY2PlEdUYJSPFYL4Nkg==
+
+markdown-it-sub@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/markdown-it-sub/-/markdown-it-sub-2.0.0.tgz"
+  integrity sha512-iCBKgwCkfQBRg2vApy9vx1C1Tu6D8XYo8NvevI3OlwzBRmiMtsJ2sXupBgEA7PPxiDwNni3qIUkhZ6j5wofDUA==
+
+markdown-it-sup@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/markdown-it-sup/-/markdown-it-sup-2.0.0.tgz"
+  integrity sha512-5VgmdKlkBd8sgXuoDoxMpiU+BiEt3I49GItBzzw7Mxq9CxvnhE/k09HFli09zgfFDRixDQDfDxi0mgBCXtaTvA==
+
+markdown-it@^14.1.0:
+  version "14.1.0"
+  resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz"
+  integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==
+  dependencies:
+    argparse "^2.0.1"
+    entities "^4.4.0"
+    linkify-it "^5.0.0"
+    mdurl "^2.0.0"
+    punycode.js "^2.3.1"
+    uc.micro "^2.1.0"
+
 markmap-common@*, markmap-common@^0.17.0:
   version "0.17.0"
   resolved "https://registry.npmjs.org/markmap-common/-/markmap-common-0.17.0.tgz"
@@ -2893,7 +2962,7 @@ react-collapsed@^4.1.2:
   dependencies:
     tiny-warning "^1.0.3"
 
-"react-dom@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.9.0 || ^17 || ^18", "react-dom@^17.0.0 || ^18.0.0", react-dom@^18.0.0, react-dom@^18.2.0, react-dom@>=16.12.0, react-dom@>=16.14.0, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0, react-dom@>=17.0.1:
+react-dom@^18.2.0:
   version "18.3.1"
   resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz"
   integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
@@ -2990,7 +3059,7 @@ react-transition-group@^4.3.0, react-transition-group@^4.4.5:
     loose-envify "^1.4.0"
     prop-types "^15.6.2"
 
-"react@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", "react@^16.9.0 || ^17 || ^18", "react@^17.0.0 || ^18.0.0", react@^18.0.0, react@^18.2.0, react@^18.3.1, react@>=0.14.0, react@>=15.0.0, react@>=16, react@>=16.14.0, react@>=16.6.0, react@>=16.8, react@>=16.8.0, react@>=17.0.1:
+react@>=16, react@^18.2.0:
   version "18.3.1"
   resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz"
   integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
@@ -3137,7 +3206,7 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
   resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
 
-sass@*, sass@^1.77.6:
+sass@^1.77.6:
   version "1.77.8"
   resolved "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz"
   integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==
@@ -3185,10 +3254,10 @@ slash@^3.0.0:
   resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
   integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
 
-source-map-js@^1.2.1, "source-map-js@>=0.6.2 <2.0.0":
-  version "1.2.1"
-  resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz"
-  integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
+source-map-js@^1.2.0, "source-map-js@>=0.6.2 <2.0.0":
+  version "1.2.0"
+  resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz"
+  integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
 
 source-map@^0.5.7:
   version "0.5.7"
@@ -3205,6 +3274,11 @@ sprintf-js@~1.0.2:
   resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
   integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
 
+string-convert@^0.2.0:
+  version "0.2.1"
+  resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz"
+  integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==
+
 string_decoder@~1.1.1:
   version "1.1.1"
   resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
@@ -3212,11 +3286,6 @@ string_decoder@~1.1.1:
   dependencies:
     safe-buffer "~5.1.0"
 
-string-convert@^0.2.0:
-  version "0.2.1"
-  resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz"
-  integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==
-
 strip-ansi@^6.0.1:
   version "6.0.1"
   resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
@@ -3310,7 +3379,7 @@ type-fest@^0.20.2:
   resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
   integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
 
-typescript@^5.2.2, typescript@>=4.2.0:
+typescript@^5.2.2:
   version "5.5.4"
   resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz"
   integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==
@@ -3666,9 +3735,9 @@ victory@^37.0.2:
     victory-zoom-container "^37.0.2"
 
 "vite@^4.2.0 || ^5.0.0", vite@^5.2.0:
-  version "5.4.6"
-  resolved "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz"
-  integrity sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==
+  version "5.4.0"
+  resolved "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz"
+  integrity sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==
   dependencies:
     esbuild "^0.21.3"
     postcss "^8.4.43"