{"id":1550,"date":"2023-12-08T07:06:38","date_gmt":"2023-12-07T23:06:38","guid":{"rendered":"https:\/\/knowledgegut.com\/?page_id=1550"},"modified":"2026-10-13T10:36:49","modified_gmt":"2026-10-13T02:36:49","slug":"about","status":"publish","type":"page","link":"https:\/\/knowledgegut.com\/en\/about\/","title":{"rendered":"About Xiaochang"},"content":{"rendered":"\n<style>@font-face{font-family:'kg-jx';src:url('https:\/\/knowledgegut.com\/wp-content\/uploads\/fonts\/kg-jinxuan-body.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}\n@font-face{font-family:'kg-jx';src:url('https:\/\/knowledgegut.com\/wp-content\/uploads\/fonts\/kg-jinxuan-heavy.woff2') format('woff2');font-weight:700 900;font-style:normal;font-display:swap}\n@font-face{font-family:'\u7c92\u7dda\u9ad4';src:local('LiXianTi'),local('lihsianti'),local('\u7c92\u7dda\u9ad4');font-display:swap}\n.kg-page{\n  --rose:#D14B63; --plum:#4C458A; --honey:#EBE79D; --honey-soft:#FBF6DC;\n  --ink:#3A3227; --ink-soft:#5a4e3f; --warm:#7c6f5c;\n  --paper:#F6EFE1; --card:#FFFDF6; --kraft:#EFE6D2; --deep:#E4D5B7; --line:#E0D5BE;\n  --sh:0 24px 50px -26px rgba(58,50,39,.3),0 3px 10px -6px rgba(58,50,39,.18);\n  --mono:ui-monospace,\"SF Mono\",Menlo,monospace;\n  --sans:'kg-jx','jf\u91d1\u8431\u90a3\u63d02.0','jf-jinxuanlatte4','\u91d1\u8431\u90a3\u63d0',\"PingFang TC\",\"Noto Sans TC\",sans-serif;\n  --hand:'lihsianti','\u7c92\u7dda\u9ad4','kg-jx','jf\u91d1\u8431\u90a3\u63d02.0',\"Noto Serif TC\",serif;\n  --ease:cubic-bezier(.2,.7,.2,1);\n}\n.kg-page,.kg-page *{box-sizing:border-box;margin:0;padding:0;font-family:var(--sans)!important}\n.kg-page{color:var(--ink);line-height:1.9;background-color:var(--paper);background-image:url('https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-paper.webp');background-repeat:repeat;background-size:520px;-webkit-font-smoothing:antialiased;overflow-x:clip}\n.kg-page a{text-decoration:none;color:inherit}\n.kg-page img,.kg-page video{max-width:100%;display:block}\n.kg-page ul,.kg-page ol{list-style:none}\n.kg-page h2::before,.kg-page h3::before{content:none!important;display:none!important}\n.kg-page .hand,.kg-page .hand *{font-family:var(--hand)!important;font-weight:400}\n.kg-page .kick,.kg-page .st-label .en,.kg-page .st-label .yr,.kg-page .bsub,.kg-page .fcard .lnk,.kg-page .stamp,.kg-page .fine,.kg-page .yr{font-family:var(--mono)!important}\n.kg-page .glow{color:var(--rose)}\n.kg-page .topbar{background:var(--plum);color:#fff;text-align:center;font-size:13px;padding:8px 16px}\n.kg-page .nav .in{display:flex;align-items:center;justify-content:space-between;padding:10px 0}\n.kg-page .nav .brand img{height:40px;width:auto}\n.kg-page .nav ul{display:flex;gap:22px;font-size:15px}\n.kg-page footer{text-align:center;padding:24px 16px;font-size:13px;color:var(--warm);background:var(--deep)}\n.kg-page .hl{position:relative;display:inline;z-index:0;white-space:nowrap}\n.kg-page .hl::after{content:'';position:absolute;left:-6px;right:-6px;top:34%;bottom:-10%;background:url('https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/10\/kgweb-about-brush.webp') center\/100% 100% no-repeat;z-index:-1;clip-path:inset(0 100% 0 0);transition:clip-path .75s cubic-bezier(.65,0,.35,1)}\n.kg-page .hl.on::after{clip-path:inset(0 0 0 0)}\n.kg-page .sec-paper{background-color:var(--paper);background-image:url('https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-paper.webp');background-repeat:repeat;background-size:520px}\n.kg-page .sec-kraft{background-color:var(--kraft);background-image:url('https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-paper.webp');background-repeat:repeat;background-size:520px;background-blend-mode:multiply}\n.kg-page .in{width:min(1060px,90vw);margin-inline:auto}\n.kg-page .in.wide{width:min(1140px,91vw)}\n.kg-page section,.kg-page header{position:relative}\n.kg-page [id]{scroll-margin-top:72px}\n.kg-page .kick{font-size:12px;letter-spacing:.3em;color:var(--rose);margin-bottom:14px}\n.kg-page .head{text-align:center;margin-bottom:clamp(36px,5vw,58px)}\n.kg-page .head h2{font-size:clamp(28px,3.8vw,40px);color:var(--plum);line-height:1.4;letter-spacing:.02em}\n.kg-page .head .sub{margin:14px auto 0;font-size:clamp(15px,1.8vw,17px);color:var(--ink-soft);max-width:620px;line-height:1.9}\n.kg-page .polaroid{background:#fffdf8;padding:11px 11px 40px;box-shadow:var(--sh);border-radius:3px;position:relative}\n.kg-page .polaroid.tight{padding:9px}\n.kg-page .polaroid img,.kg-page .polaroid video{width:100%;height:auto;border-radius:1px;background:#efe7d6}\n.kg-page .polaroid .cap{position:absolute;left:0;right:0;bottom:10px;text-align:center;font-size:15px;color:var(--warm);line-height:1.4}\n.kg-page .polaroid .wipe{position:absolute;left:11px;right:11px;top:11px;bottom:40px;background:#efe7d6;transform-origin:50% 100%;transform:scaleY(0);pointer-events:none}\n.kg-page .tape{position:absolute;width:78px;height:20px;background:rgba(235,231,157,.92);top:-9px;left:22px;transform:rotate(-4deg);box-shadow:0 1px 3px rgba(0,0,0,.08);z-index:2}\n.kg-page .tape.cool{background:rgba(76,69,138,.42)}\n.kg-page .tape.pink,.kg-page .tape.mint{background:rgba(209,75,99,.48)}\n.kg-page .chips{display:flex;flex-wrap:wrap;gap:8px}\n.kg-page .chips li{display:inline-flex;align-items:center;font-size:13.5px;color:var(--ink);background:rgba(235,231,157,.5);border-radius:999px;padding:4px 14px;white-space:nowrap;line-height:1.7}\n.kg-page .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;color:#fff;font-size:16px;font-weight:900;padding:15px 32px;min-height:48px;border-radius:999px;letter-spacing:.06em;box-shadow:0 12px 26px -12px rgba(209,75,99,.55);transition:filter .2s;\n  background-color:var(--rose);background-image:linear-gradient(to right,#D14B63,#FF7C99,#F4B79C,#EBE79D,#FF7C99,#D14B63);background-size:600% auto;background-position:right center;animation:btnGrad 6s linear infinite,btnPulse 2.5s ease-in-out infinite}\n.kg-page .btn:hover{filter:brightness(1.15)}\n.kg-page .btn.ghost{background:rgba(255,253,246,.7);background-image:none;animation:none;color:var(--plum);border:1.5px solid rgba(76,69,138,.4);box-shadow:none;font-weight:400;transition:transform .2s var(--ease)}\n.kg-page .btn.ghost:hover{filter:none;transform:translateY(-2px)}\n@keyframes btnGrad{0%,100%{background-position:100% center}50%{background-position:0% center}}\n@keyframes btnPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.03)}}\n.kg-page .btnrow{display:flex;flex-wrap:wrap;gap:13px}\n.kg-page .fine{margin-top:16px;font-size:12.5px;letter-spacing:.06em;color:var(--warm)}\n.kg-page .hero{padding:clamp(28px,4vw,56px) 0 clamp(56px,7vw,90px)}\n.kg-page .hero .in{display:grid;grid-template-columns:1.08fr .92fr;gap:clamp(24px,5vw,64px);align-items:center}\n.kg-page .hero h1{font-size:clamp(34px,4.5vw,56px);line-height:1.26;letter-spacing:.02em;color:var(--ink);margin-bottom:20px}\n.kg-page .hero h1 .ln{display:block}\n.kg-page .hero .lead{font-size:clamp(15.5px,1.8vw,18px);line-height:1.95;color:var(--ink-soft);max-width:480px}\n.kg-page .hero .lead2{font-size:clamp(16px,1.9vw,19px);line-height:1.95;color:var(--ink);max-width:490px;margin-top:10px}\n.kg-page .hero .chips{margin-top:18px}\n.kg-page .facts{display:grid;grid-template-columns:repeat(4,auto);justify-content:start;gap:clamp(18px,3vw,38px);margin:22px 0 26px}\n.kg-page .facts b{display:block;font-family:var(--hand)!important;font-weight:400;font-size:clamp(32px,4.4vw,46px);color:var(--rose);line-height:1.05;font-variant-numeric:tabular-nums}\n.kg-page .facts span{display:block;font-size:13.5px;color:var(--warm);margin-top:6px;letter-spacing:.04em}\n.kg-page .hero .fig{position:relative;justify-self:center;width:clamp(250px,24vw,330px)}\n.kg-page .hero .frame{position:relative;background:#fffdf8;padding:16px 16px 54px;border-radius:3px;box-shadow:var(--sh);transform:rotate(-2deg);z-index:2}\n.kg-page .hero .frame .tape{width:118px;height:26px;left:50%;margin-left:-59px;top:-13px;transform:rotate(-3deg)}\n.kg-page .hero .frame img{width:100%;height:auto;aspect-ratio:379\/800;object-fit:cover;object-position:center top;background:transparent;border-radius:0}\n.kg-page .deck{position:absolute;right:-92px;bottom:18px;width:150px;height:118px;z-index:3}\n.kg-page .deck .tilt{position:absolute;inset:0}\n.kg-page .dk{position:absolute;left:0;top:0;width:150px;background:#fffdf8;padding:7px 7px 20px;box-shadow:var(--sh);border-radius:2px}\n.kg-page .dk img{width:100%;height:auto;aspect-ratio:400\/247;object-fit:cover}\n.kg-page .dk:nth-child(1){transform:rotate(-6deg)}\n.kg-page .dk:nth-child(2){transform:translate(22px,-14px) rotate(3deg)}\n.kg-page .dk:nth-child(3){transform:translate(44px,-28px) rotate(12deg)}\n.kg-page .journey{padding:clamp(64px,9vw,120px) 0}\n.kg-page .tl{position:relative;max-width:940px;margin:0 auto;--ln:1}\n.kg-page .tl::before{content:'';position:absolute;left:190px;top:8px;bottom:8px;width:2px;background:rgba(76,69,138,.28);transform-origin:top center;transform:scaleY(var(--ln))}\n.kg-page .node{position:relative;display:grid;grid-template-columns:190px 170px 1fr;gap:0 26px;padding:24px 0;align-items:start}\n.kg-page .node::before{content:'';position:absolute;left:184px;top:33px;width:14px;height:14px;border-radius:50%;background:var(--rose);box-shadow:0 0 0 4px var(--kraft);z-index:1;transition:transform .35s cubic-bezier(.34,1.56,.64,1)}\n.kg-page .node:nth-child(even)::before{background:var(--plum)}\n.kg-page .node .yr{text-align:right;padding-right:30px;font-size:12px;letter-spacing:.1em;white-space:nowrap;color:var(--rose);line-height:1.7;padding-top:6px}\n.kg-page .node:nth-child(even) .yr{color:var(--plum)}\n.kg-page .mini{position:relative;display:block;background:#fffdf8;padding:7px 7px 16px;box-shadow:var(--sh);border-radius:2px;margin-left:26px;width:140px;transition:transform .2s var(--ease)}\n.kg-page .mini::after{content:'';position:absolute;top:-7px;left:50%;width:46px;height:14px;margin-left:-23px;background:rgba(235,231,157,.92);transform:rotate(-3deg)}\n.kg-page .mini img{width:100%;height:auto;aspect-ratio:400\/247;object-fit:cover;border-radius:1px}\n.kg-page .node:nth-child(1) .mini{transform:rotate(-1.5deg)}\n.kg-page .node:nth-child(2) .mini{transform:rotate(1.5deg)}\n.kg-page .node:nth-child(3) .mini{transform:rotate(-1deg)}\n.kg-page .node:nth-child(4) .mini{transform:rotate(1.2deg)}\n.kg-page .node:nth-child(5) .mini{transform:rotate(-1.3deg)}\n.kg-page .mini:hover{transform:translateY(-4px) rotate(0)!important}\n.kg-page .node h3{font-size:clamp(20px,2.3vw,23px);color:var(--plum);line-height:1.45;margin-bottom:6px}\n.kg-page .node p{font-size:clamp(15px,1.8vw,16.5px);line-height:1.9;color:var(--ink-soft);max-width:560px}\n.kg-page .node .chips{margin-top:10px}\n.kg-page .album{padding:clamp(56px,8vw,104px) 0 clamp(72px,9vw,120px);background-color:var(--deep);background-image:url('https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-paper.webp');background-repeat:repeat;background-size:520px;background-blend-mode:multiply}\n.kg-page .pg{position:sticky;top:0;width:min(1080px,92vw);margin:0 auto}\n.kg-page .mk{height:30vh}\n.kg-page .mk.mk0{height:0}\n.kg-page .sheet{position:relative;background:var(--card);border-radius:18px;box-shadow:0 40px 80px -44px rgba(58,50,39,.4),0 2px 10px rgba(58,50,39,.06);padding:clamp(34px,4.4vw,56px) clamp(24px,4.6vw,60px);display:grid;grid-template-columns:.92fr 1.08fr;gap:clamp(26px,4.4vw,56px);align-items:center}\n.kg-page .sheet::before{content:attr(data-yr);position:absolute;right:clamp(16px,3vw,40px);top:clamp(2px,1vw,10px);font-family:var(--hand)!important;font-weight:400;font-size:clamp(64px,10vw,128px);line-height:1;color:var(--plum);opacity:.08;pointer-events:none}\n.kg-page .sheet .dim{position:absolute;inset:0;border-radius:inherit;background:#2b2118;opacity:0;pointer-events:none;z-index:6}\n.kg-page .figcol{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:36px}\n.kg-page .bigpol{width:min(380px,100%);transform:rotate(-2.2deg)}\n.kg-page .pg:nth-of-type(even) .bigpol{transform:rotate(2deg)}\n.kg-page .bigpol.portrait{width:min(320px,100%)}\n.kg-page .txtcol{position:relative;z-index:1}\n.kg-page .st-label{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}\n.kg-page .st-label .no{width:38px;height:38px;border-radius:50%;background:var(--rose);color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 14px -6px rgba(209,75,99,.5);flex:0 0 auto;font-family:var(--mono)!important}\n.kg-page .st-label .en{font-size:11px;letter-spacing:.3em;color:var(--warm)}\n.kg-page .st-label .yr{font-size:11px;letter-spacing:.2em;color:var(--rose)}\n.kg-page .ch-title{font-size:clamp(26px,3.1vw,34px);color:var(--plum);line-height:1.4;margin-bottom:18px}\n.kg-page .ch-scene{font-size:clamp(25px,3vw,33px);color:var(--plum);line-height:1.42;margin-bottom:8px}\n.kg-page .ch-sub{font-size:14.5px;color:var(--warm);letter-spacing:.02em;margin-bottom:20px}\n.kg-page .bcard .bout{font-size:16px;color:var(--plum);line-height:1.75;padding:0 4px;margin-bottom:12px}\n.kg-page .txtcol p{font-size:clamp(15.5px,1.6vw,17px);line-height:1.95;color:var(--ink-soft);margin-bottom:14px;max-width:560px}\n.kg-page .txtcol p b{color:var(--ink)}\n.kg-page .kq{position:relative;background-color:var(--kraft);background-image:url('https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-paper.webp');background-size:520px;background-blend-mode:multiply;border-radius:8px;box-shadow:var(--sh);padding:30px 26px 22px;width:min(420px,100%)}\n.kg-page .kq p{font-size:16.5px;line-height:1.85;color:var(--ink);margin:0}\n.kg-page .kq p b{color:var(--ink)}\n.kg-page .stamp{position:absolute;top:-13px;left:20px;background:var(--rose);color:#fff;font-size:11.5px;letter-spacing:.12em;padding:5px 12px;border-radius:3px;transform:rotate(-2deg);box-shadow:0 4px 10px -6px rgba(209,75,99,.55);line-height:1.5}\n.kg-page .kq.inline{margin:24px 0 26px;width:100%;max-width:560px}\n.kg-page .kq.inline p{font-size:18px;color:var(--plum);line-height:1.8}\n.kg-page .stack{position:relative;width:min(360px,100%);padding:26px 26px 0 0}\n.kg-page .stack .back{position:absolute;top:0;right:0;width:78%;transform:rotate(6deg);z-index:0;transition:transform .2s var(--ease)}\n.kg-page .stack .front{position:relative;z-index:1;width:88%;transform:rotate(-2deg)}\n.kg-page .stack:hover .back{transform:translate(14px,-10px) rotate(8deg)}\n.kg-page .boardfan{position:relative;width:min(380px,100%);padding:34px 0 10px}\n.kg-page .boardfan .bigpol{position:relative;z-index:2;width:100%}\n.kg-page .boardfan .bf{position:absolute;left:50%;top:0;width:66%;margin-left:-33%;padding:6px 6px 14px;z-index:1}\n.kg-page .boardfan .bf img{aspect-ratio:560\/360;object-fit:cover;object-position:left top}\n.kg-page .boardfan .bf:nth-child(1){transform:translate(-44%,4px) rotate(-11deg)}\n.kg-page .boardfan .bf:nth-child(2){transform:translate(0,-18px) rotate(2deg)}\n.kg-page .boardfan .bf:nth-child(3){transform:translate(44%,6px) rotate(12deg)}\n.kg-page .dots{position:fixed;right:22px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:12px;z-index:20;opacity:0;pointer-events:none;transition:opacity .3s}\n.kg-page .dots.on{opacity:1}\n.kg-page .dots i{width:9px;height:9px;border-radius:50%;background:rgba(76,69,138,.28);transition:transform .3s,background .3s}\n.kg-page .dots i.on{background:var(--rose);transform:scale(1.5)}\n.kg-page .teach{padding:clamp(64px,9vw,120px) 0}\n.kg-page .bgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}\n.kg-page .bcard{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px 18px 26px;box-shadow:0 2px 8px rgba(58,50,39,.06);transition:transform .2s var(--ease)}\n.kg-page .bcard:hover{transform:translateY(-3px)}\n.kg-page .bcard .pic{position:relative;margin-bottom:28px}\n.kg-page .bcard .polaroid img,.kg-page .bcard .polaroid video{aspect-ratio:16\/10;object-fit:cover;object-position:center top}\n.kg-page .bcard .brain{position:absolute;right:-10px;bottom:-24px;width:72px;height:auto;z-index:3;filter:drop-shadow(0 6px 8px rgba(43,33,24,.16))}\n.kg-page .bcard h3{font-size:24px;color:var(--plum);line-height:1.4;padding:0 4px}\n.kg-page .bsub{font-size:12px;letter-spacing:.2em;color:var(--warm);margin:4px 0 12px;padding:0 4px}\n.kg-page .bcard p{font-size:15.5px;line-height:1.9;color:var(--ink-soft);padding:0 4px}\n.kg-page .bcard p b{color:var(--ink)}\n.kg-page .teachcta{text-align:center;margin-top:clamp(34px,5vw,48px)}\n.kg-page .inlink{color:var(--rose);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}\n.kg-page .inlink:hover{color:var(--plum)}\n.kg-page .find{padding:clamp(64px,9vw,120px) 0}\n.kg-page .fgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:34px 22px}\n.kg-page .fcard{position:relative;display:block;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:26px 22px 20px;margin-top:12px;box-shadow:0 2px 8px rgba(58,50,39,.06);transition:transform .2s var(--ease)}\n.kg-page .fcard:hover{transform:translateY(-3px)}\n.kg-page .fcard .tape{left:22px;top:-9px}\n.kg-page .fcard .nm{display:block;font-size:17px;font-weight:900;color:var(--plum);margin-bottom:6px;line-height:1.45}\n.kg-page .fcard .ds{display:block;font-size:15px;line-height:1.8;color:var(--ink-soft);margin-bottom:12px}\n.kg-page .fcard .lnk{font-size:13px;letter-spacing:.04em;color:var(--rose);word-break:break-all}\n.kg-page .fcard:hover .lnk{text-decoration:underline;text-underline-offset:3px}\n.kg-page .cta{padding:clamp(64px,9vw,110px) 0 clamp(70px,9vw,110px)}\n.kg-page .subcta{position:relative;max-width:1000px;margin:0 auto;background:var(--honey-soft);border-radius:10px;box-shadow:var(--sh);padding:clamp(36px,5vw,58px) clamp(22px,4vw,56px);text-align:center}\n.kg-page .subcta .tape{left:50%;margin-left:-39px}\n.kg-page .subcta h2{font-size:clamp(26px,3.4vw,36px);color:var(--plum);line-height:1.5;margin-bottom:14px}\n.kg-page .hand .dash{font-family:var(--sans)!important;font-weight:400}\n.kg-page .subcta p{font-size:15.5px;line-height:1.9;color:var(--ink-soft);max-width:560px;margin:0 auto 24px}\n.kg-page .subcta .btnrow{justify-content:center}\n.kg-page .note{position:relative;max-width:720px;margin:clamp(54px,7vw,76px) auto 0;background-color:var(--kraft);background-image:url('https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-paper.webp');background-size:520px;background-blend-mode:multiply;border-radius:8px;box-shadow:var(--sh);padding:40px clamp(22px,4vw,40px) 30px;transform:rotate(-.6deg)}\n.kg-page .note .tape{left:auto;right:40px;transform:rotate(5deg)}\n.kg-page .note .stamp{font-size:12px}\n.kg-page .note dl{display:grid;grid-template-columns:72px 1fr;gap:10px 18px;margin-top:6px}\n.kg-page .note dt{font-size:13px;font-weight:900;color:var(--rose);letter-spacing:.08em;line-height:1.9}\n.kg-page .note dd{font-size:15px;line-height:1.85;color:var(--ink-soft)}\n.kg-page .note .sig{text-align:right;margin-top:22px;font-size:19px;line-height:1.6;color:var(--warm)}\n.kg-page .sec-deep{background-color:var(--deep);background-image:url('https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-paper.webp');background-repeat:repeat;background-size:520px;background-blend-mode:multiply}\n.kg-page .voices{padding:clamp(64px,9vw,120px) 0}\n.kg-page .vwall{columns:3 280px;column-gap:30px}\n.kg-page .vwall > *{break-inside:avoid;display:block;margin:0 0 34px;transform:rotate(-1.2deg)}\n.kg-page .vwall > *:nth-child(3n+2){transform:rotate(1.4deg)}\n.kg-page .vwall > *:nth-child(3n){transform:rotate(-.5deg)}\n.kg-page .vp{padding:10px 10px 12px}\n.kg-page .vp img{background:#fff}\n.kg-page .vnote{position:relative;background-color:var(--kraft);background-image:url('https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-paper.webp');background-size:520px;background-blend-mode:multiply;border-radius:8px;box-shadow:var(--sh);padding:36px 26px 24px}\n.kg-page .vnote p{font-size:clamp(17px,1.9vw,20px);line-height:1.75;color:var(--ink)}\n.kg-page .vnote .stamp{max-width:calc(100% - 30px);white-space:normal}\n.kg-page .vwall .tape{top:5px}\n.kg-page .vwall .vnote{padding-top:52px}\n.kg-page .vwall .vnote .stamp{top:14px}\n.kg-page .hosts{margin-top:clamp(36px,5vw,60px);text-align:center}\n.kg-page .hosts h3{font-size:clamp(22px,2.6vw,28px);color:var(--plum);margin-bottom:22px}\n.kg-page .tix{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 12px;max-width:1000px;margin:0 auto}\n.kg-page .tix li{display:inline-flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:7px 16px;font-size:14.5px;color:var(--ink);line-height:1.5;box-shadow:0 2px 6px rgba(58,50,39,.05)}\n.kg-page .tix li span{font-family:var(--mono)!important;font-size:11px;letter-spacing:.14em;color:var(--rose);white-space:nowrap}\n.kg-page .vcta{text-align:center;margin-top:clamp(30px,4vw,44px)}\n.kg-page .guide{margin-top:18px;font-size:14.5px;color:var(--warm);line-height:1.9}\n.kg-page .soft{margin-top:18px;font-size:15px;color:var(--ink-soft)}\n.kg-page .about:not(.js) .hero .copy > *,.kg-page .about:not(.js) .hero .fig{opacity:0;animation:kgShow .01s 2.5s forwards}\n@keyframes kgShow{to{opacity:1}}\n.kg-page .about.go .node::before{transform:scale(0)}\n.kg-page .about.go .node.on::before{transform:scale(1)}\n@media (max-width:900px){.kg-page .hero .in{grid-template-columns:1fr;gap:44px}\n.kg-page .hero .fig{width:min(250px,66vw)}\n.kg-page .deck{display:none}\n.kg-page .facts{grid-template-columns:repeat(2,auto);gap:18px 44px}\n.kg-page .pg{width:auto;margin:0 14px}\n.kg-page .mk{height:20vh}\n.kg-page .sheet{grid-template-columns:1fr;gap:30px}\n.kg-page .bgrid{grid-template-columns:1fr;max-width:460px;margin-inline:auto}\n.kg-page .fgrid{grid-template-columns:1fr 1fr}\n.kg-page .dots{display:none}\n\n}\n@media (max-width:640px){.kg-page .in,.kg-page .in.wide{width:auto;margin-inline:20px}\n.kg-page .tl::before{left:18px}\n.kg-page .node{grid-template-columns:1fr;padding:18px 0 18px 46px;gap:10px}\n.kg-page .node::before{left:12px;top:25px}\n.kg-page .node .yr{text-align:left;padding:0}\n.kg-page .mini{margin-left:0;width:140px}\n.kg-page .pg{margin:0 10px}\n.kg-page .mk{height:16vh}\n.kg-page .sheet{padding:30px 20px 26px;border-radius:14px}\n.kg-page .bigpol,.kg-page .stack{width:min(300px,78vw)}\n.kg-page .bigpol.portrait{width:min(270px,72vw)}\n.kg-page .kq{width:100%}\n.kg-page .fgrid{grid-template-columns:1fr}\n.kg-page .btnrow .btn{width:100%}\n.kg-page .note{transform:none}\n.kg-page .note dl{grid-template-columns:1fr;gap:2px}\n.kg-page .note dd{margin-bottom:10px}\n.kg-page .vwall{columns:1}\n.kg-page .vwall > *{max-width:420px;margin-inline:auto}\n.kg-page .tix li{font-size:13.5px}\n\n}\n@media (prefers-reduced-motion:reduce){.kg-page .hl::after{clip-path:none!important;transition:none!important}\n.kg-page .btn{animation:none!important}\n.kg-page .pg{position:relative!important;top:auto!important}\n\n}\n\n\n.kg-page{position:relative;display:block}\nbody:has(.kg-page) #content > .ast-container{max-width:none;padding-left:0;padding-right:0}\n<\/style>\n<div class=\"kg-page\">\n\n\n\n<main class=\"about\" id=\"about\">\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"ProfilePage\",\n  \"mainEntity\": {\n    \"@type\": \"Person\",\n    \"name\": \"\u77e5\u8b58\u5305\u5c0f\u8178\",\n    \"alternateName\": [\"knowledgegut\", \"\u694a\u5a77\u96c5\", \"Phoebe Yang\"],\n    \"jobTitle\": [\"AI \u7b2c\u4e8c\u5927\u8166\u30fb\u77e5\u8b58\u7ba1\u7406\u8001\u5e2b\", \"\u5169\u5cb8\u8b1b\u5e2b\", \"\u77e5\u8b58\u7ba1\u7406\u9867\u554f\", \"Heptabase \u4e2d\u6587\u6559\u5b78\u8005\"],\n    \"description\": \"AI \u7b2c\u4e8c\u5927\u8166\u30fb\u77e5\u8b58\u7ba1\u7406\u8001\u5e2b\u3001\u5169\u5cb8\u8b1b\u5e2b\uff0c\u5354\u52a9\u5c08\u696d\u5de5\u4f5c\u8005\u6253\u9020\u80fd\u9577\u671f\u7d2f\u7a4d\u3001\u53ef\u96a8\u6642\u53d6\u7528\u7684\u6578\u4f4d\u7b2c\u4e8c\u5927\u8166\u3002\u5f69\u6258\u90a6\u6709\u9650\u516c\u53f8\u5275\u8fa6\u4eba\uff0c\u300cAI \u982d\u8166\u5347\u7d1a 321\u300d\u4e3b\u7406\u4eba\u3002\",\n    \"url\": \"https:\/\/knowledgegut.com\/about\/\",\n    \"image\": \"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-kg-portrait-side-smile-v6-checked.webp\",\n    \"sameAs\": [\n      \"https:\/\/www.instagram.com\/knowledgegut\/\",\n      \"https:\/\/www.threads.net\/@knowledgegut\",\n      \"https:\/\/join.knowledgegut.com\/join-newsletter\",\n      \"https:\/\/school.knowledgegut.com\/\"\n    ],\n    \"knowsAbout\": [\n      \"\u500b\u4eba\u77e5\u8b58\u7ba1\u7406 PKM\",\n      \"\u7b2c\u4e8c\u5927\u8166\",\n      \"Heptabase\",\n      \"Obsidian\",\n      \"Notion\",\n      \"\u77e5\u8b58\u7ba1\u7406\u6559\u7df4\",\n      \"\u77e5\u8b58\u7ba1\u7406\u9867\u554f\"\n    ],\n    \"worksFor\": {\n      \"@type\": \"Organization\",\n      \"name\": \"\u5f69\u6258\u90a6\u6709\u9650\u516c\u53f8\",\n      \"url\": \"https:\/\/knowledgegut.com\/\"\n    },\n    \"offers\": [\n      { \"@type\": \"Service\", \"name\": \"AI \u982d\u8166\u5347\u7d1a 321\", \"description\": \"\u4e09\u500b\u5927\u8166\u4e00\u8d77\u990a\u7684\u7dda\u4e0a\u6559\u7df4\u8ab2\uff1a\u7b2c\u4e00\u5927\u8166\u7df4\u601d\u8003\u3001\u7b2c\u4e8c\u5927\u8166\u990a\u77e5\u8b58\u5eab\u3001\u7b2c\u4e09\u5927\u8166\u5e36 AI \u54e1\u5de5\", \"url\": \"https:\/\/brain123.knowledgegut.com\/\" },\n      {\n        \"@type\": \"Service\",\n        \"name\": \"1:1 PKM \u9867\u554f\u8aee\u8a62\",\n        \"description\": \"\u4e00\u5c0d\u4e00\u500b\u4eba\u77e5\u8b58\u7ba1\u7406\u9867\u554f\u8aee\u8a62\"\n      }\n    ]\n  }\n}\n<\/script>\n\n<header class=\"hero sec-paper\" id=\"top\"><div class=\"in\">\n  <div class=\"copy\">\n    <div class=\"kick\">\u95dc\u65bc\u5c0f\u8178 \u00b7 ABOUT \u00b7 2026<\/div>\n    <h1 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E5%BE%9E%E4%B8%8D%E6%84%9B%E8%AE%80%E6%9B%B8%EF%BC%8C%E5%88%B0%E9%99%AA%E4%B8%80%E7%BE%A4%E4%BA%BA%E6%8A%8A%E7%AC%AC%E4%BA%8C%E5%A4%A7%E8%85%A6%E7%9C%9F%E7%9A%84%E8%B7%91%E8%B5%B7%E4%BE%86%E3%80%82\"><\/span><span class=\"ln\">\u5f9e\u4e0d\u611b\u8b80\u66f8\uff0c<\/span><span class=\"ln\">\u5230\u966a\u4e00\u7fa4\u4eba\u628a<\/span><span class=\"ln glow\">\u7b2c\u4e8c\u5927\u8166\u771f\u7684\u8dd1\u8d77\u4f86\u3002<\/span><span class=\"ez-toc-section-end\"><\/span><\/h1>\n    <p class=\"lead\">\u672c\u540d\u694a\u5a77\u96c5\uff08Phoebe Yang\uff09\u3002\u5f9e\u5be6\u9ad4\u6d3b\u52d5\u5275\u696d\u5931\u6557\uff0c\u5230\u966a\u4e00\u7fa4\u4eba\u628a\u7b2c\u4e8c\u5927\u8166\u5f9e\u300c\u6982\u5ff5\u300d\u8b8a\u6210\u300c\u6bcf\u5929\u5728\u7528\u300d\u3002<\/p>\n    <p class=\"lead2\">\u628a\u4f60\u7684\u77e5\u8b58\u8b8a\u6210<span class=\"hl\">\u300c\u6703\u8907\u5229\u7684\u500b\u4eba\u8cc7\u7522\u300d<\/span>\u2014\u2014<br>\u935b\u934a\u7b2c\u4e00\u5927\u8166\u3001\u6253\u9020\u7b2c\u4e8c\u5927\u8166\u3001\u99d5\u99ad AI \u7b2c\u4e09\u5927\u8166\u3002<\/p>\n    <ul class=\"chips\"><li>AI \u7b2c\u4e8c\u5927\u8166\u30fb\u77e5\u8b58\u7ba1\u7406\u8001\u5e2b<\/li><li>\u5169\u5cb8\u8b1b\u5e2b<\/li><\/ul>\n    <div class=\"facts lihsianti\">\n      <div><b>25+<\/b><span>\u5834\u5169\u5cb8\u6f14\u8b1b<\/span><\/div>\n      <div><b>2,000+<\/b><span>\u4f4d\u5b78\u54e1<\/span><\/div>\n      <div><b>8<\/b><span>\u57ce\u5e02\u8db3\u8de1<\/span><\/div>\n      <div><b>2,600+<\/b><span>\u96fb\u5b50\u5831\u8a02\u95b1<\/span><\/div>\n    <\/div>\n    <div class=\"btnrow\">\n      <a class=\"btn\" href=\"https:\/\/join.knowledgegut.com\/join-newsletter\" target=\"_blank\" rel=\"noopener\">\u8a02\u95b1\u96fb\u5b50\u5831 \u2192<\/a>\n      <a class=\"btn ghost\" href=\"#timeline\">\u5148\u770b\u6642\u9593\u7dda<\/a>\n    <\/div>\n    <p class=\"guide\">\u7b2c\u4e00\u6b21\u4f86\uff1f\u5148\u770b<a class=\"inlink\" href=\"\/start-here\/\">\u5f9e\u9019\u88e1\u958b\u59cb<\/a>\u3000\u00b7\u3000\u60f3\u9080\u8acb\u6f14\u8b1b\u6216\u5408\u4f5c\uff1f<a class=\"inlink\" href=\"mailto:hi@knowledgegut.com?subject=\u6f14\u8b1b\u5408\u4f5c\u9080\u7d04\">\u5beb\u4fe1\u7d66\u6211<\/a><\/p>\n  <\/div>\n  <div class=\"fig\">\n    <div class=\"frame\"><span class=\"tape\"><\/span><img fetchpriority=\"high\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-kg-portrait-side-smile-v6-checked.webp\" width=\"379\" height=\"1000\" fetchpriority=\"high\" decoding=\"async\" alt=\"\u77e5\u8b58\u5305\u5c0f\u8178\uff08\u694a\u5a77\u96c5 Phoebe Yang\uff09\u5f62\u8c61\u7167\u2014\u2014AI \u7b2c\u4e8c\u5927\u8166\u30fb\u77e5\u8b58\u7ba1\u7406\u8001\u5e2b\u3001\u5169\u5cb8\u8b1b\u5e2b\"><\/div>\n    <div class=\"deck\" aria-hidden=\"true\"><div class=\"tilt\">\n      <figure class=\"dk\"><img src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-tl-1.webp\" width=\"400\" height=\"247\" decoding=\"async\" alt=\"\"><\/figure>\n      <figure class=\"dk\"><img src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-tl-3.webp\" width=\"400\" height=\"247\" decoding=\"async\" alt=\"\"><\/figure>\n      <figure class=\"dk\"><img src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-tl-5.webp\" width=\"400\" height=\"247\" decoding=\"async\" alt=\"\"><\/figure>\n    <\/div><\/div>\n  <\/div>\n<\/div><\/header>\n\n<section class=\"journey sec-kraft\" id=\"timeline\"><div class=\"in\">\n  <div class=\"head\">\n    <div class=\"kick\">JOURNEY \u00b7 2018 \u2192 2026<\/div>\n    <h2 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E9%80%99%E6%A2%9D%E8%B7%AF%EF%BC%8C%E6%88%91%E7%94%A8%E4%BA%86_8_%E5%B9%B4\"><\/span>\u9019\u689d\u8def\uff0c\u6211\u7528\u4e86 8 \u5e74<span class=\"ez-toc-section-end\"><\/span><\/h2>\n    <p class=\"sub\">\u5f9e\u5be6\u9ad4\u6d3b\u52d5\u5275\u696d\u5931\u6557\uff0c\u5230\u966a 30 \u4f4d\u5b78\u54e1\u628a PKM \u8dd1\u8d77\u4f86\u3002\u4e94\u500b\u95dc\u9375\u7bc0\u9ede\u3002<\/p>\n  <\/div>\n  <ol class=\"tl\">\n    <li class=\"node\">\n      <div class=\"yr\">2018 \u00b7 \u8d77\u9ede<\/div>\n      <a class=\"mini\" href=\"#ch1\" aria-label=\"\u770b\u7b2c 01 \u7ae0\"><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-tl-1.webp\" width=\"400\" height=\"247\" loading=\"lazy\" decoding=\"async\" alt=\"\"><\/a>\n      <div class=\"txt\"><h3 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E5%AF%A6%E9%AB%94%E6%B4%BB%E5%8B%95%E5%89%B5%E6%A5%AD%E5%A4%B1%E6%95%97\"><\/span>\u5be6\u9ad4\u6d3b\u52d5\u5275\u696d\u5931\u6557<span class=\"ez-toc-section-end\"><\/span><\/h3><p>30 \u6b72\u524d\u6c92\u8b80\u5b8c\u4e00\u672c\u8ab2\u5916\u66f8\uff0c\u6708\u85aa 35K \u540c\u5b78\u88e1\u588a\u5e95\u3002\u7b2c\u4e00\u6b21\u8a8d\u771f\u53bb\u60f3\u2014\u2014\u300c\u6211\u6c92\u8b80\u904e\u7684\u66f8\uff0c\u539f\u4f86\u6703\u4ee5\u9019\u7a2e\u65b9\u5f0f\u56de\u4f86\u627e\u6211\u3002\u300d<\/p><\/div>\n    <\/li>\n    <li class=\"node\">\n      <div class=\"yr\">2019\u20132022 \u00b7 \u8f49\u6298<\/div>\n      <a class=\"mini\" href=\"#ch2\" aria-label=\"\u770b\u7b2c 02 \u7ae0\"><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-tl-2.webp\" width=\"400\" height=\"247\" loading=\"lazy\" decoding=\"async\" alt=\"\"><\/a>\n      <div class=\"txt\"><h3 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E8%B7%8C%E9%80%B2%E5%95%86%E6%A5%AD%E5%AD%B8%E7%BF%92%E5%85%94%E5%AD%90%E6%B4%9E\"><\/span>\u8dcc\u9032\u5546\u696d\u5b78\u7fd2\u5154\u5b50\u6d1e<span class=\"ez-toc-section-end\"><\/span><\/h3><p>\u9047\u5230\u4e00\u4f4d\u5f88\u53b2\u5bb3\u4f46\u6703 PUA \u7684\u4eba\u751f\u5c0e\u5e2b\u3002\u4e09\u500b\u6708\u66b4\u80d6 15 \u516c\u65a4\u3001\u4e0b\u8dea\u3001\u5beb\u6094\u904e\u66f8\u3002\u96e2\u958b\u4e4b\u5f8c\u554f\u81ea\u5df1\u2014\u2014\u300c\u51e1\u4e8b\uff0c\u7686\u70ba\u81ea\u5df1\u800c\u5b78\u3002\u300d<\/p><ul class=\"chips\"><li>\u4e0b\u8dea+15kg\u89ba\u9192<\/li><\/ul><\/div>\n    <\/li>\n    <li class=\"node\">\n      <div class=\"yr\">2024 \u00b7 \u767c\u73fe<\/div>\n      <a class=\"mini\" href=\"#ch3\" aria-label=\"\u770b\u7b2c 03 \u7ae0\"><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-tl-3.webp\" width=\"400\" height=\"247\" loading=\"lazy\" decoding=\"async\" alt=\"\"><\/a>\n      <div class=\"txt\"><h3 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%B8%80%E6%AC%A1%E6%89%93%E9%96%8B_Heptabase\"><\/span>\u7b2c\u4e00\u6b21\u6253\u958b Heptabase<span class=\"ez-toc-section-end\"><\/span><\/h3><p>\u5b78\u5546\u696d\u5b78\u4e86\u5169\u5e74\uff0c\u767c\u73fe\u300c\u6211\u8b8a\u5f97\u5f88\u6703\u6536\u96c6\u77e5\u8b58\uff0c\u4f46\u5b8c\u5168\u4e0d\u6703\u4f7f\u7528\u300d\u3002\u76f4\u5230\u6253\u958b Heptabase\u2014\u2014\u300c\u554a\uff0c\u539f\u4f86\u6211\u7684\u8166\u5b50\u53ef\u4ee5\u9577\u9019\u6a23\u3002\u300d<\/p><ul class=\"chips\"><li>8,800+ \u5361\u7247<\/li><li>670+ \u767d\u677f<\/li><\/ul><\/div>\n    <\/li>\n    <li class=\"node\">\n      <div class=\"yr\">2025 \u00b7 \u555f\u7a0b<\/div>\n      <a class=\"mini\" href=\"#ch4\" aria-label=\"\u770b\u7b2c 04 \u7ae0\"><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-tl-4.webp\" width=\"400\" height=\"247\" loading=\"lazy\" decoding=\"async\" alt=\"\"><\/a>\n      <div class=\"txt\"><h3 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E5%BE%9E%E3%80%8C%E8%87%AA%E5%B7%B1%E7%94%A8%E3%80%8D%E5%88%B0%E3%80%8C%E6%95%99%E5%88%A5%E4%BA%BA%E7%94%A8%E3%80%8D\"><\/span>\u5f9e\u300c\u81ea\u5df1\u7528\u300d\u5230\u300c\u6559\u5225\u4eba\u7528\u300d<span class=\"ez-toc-section-end\"><\/span><\/h3><p>\u8eab\u908a\u670b\u53cb\u8cb7\u4e86\u597d\u5e7e\u5802 PKM \u8ab2\u9084\u662f\u6c92\u8dd1\u8d77\u4f86\u3002\u958b\u59cb\u505a 1:1 \u8aee\u8a62\uff0c\u770b vault\u3001\u6539\u6d41\u7a0b\u3001\u8ffd\u9032\u5ea6\u3002\u6210\u7acb\u5f69\u6258\u90a6\u6709\u9650\u516c\u53f8\uff0c\u6708\u6536\u7ffb 6 \u500d\u3002\u5169\u5cb8\u8b1b\u6f14 25 \u5834\u3002<\/p><ul class=\"chips\"><li>25 \u5834\u6f14\u8b1b<\/li><li>\u516b\u57ce<\/li><li>2,600+ \u8a02\u95b1<\/li><\/ul><\/div>\n    <\/li>\n    <li class=\"node\">\n      <div class=\"yr\">2026 \u00b7 \u7576\u4e0b<\/div>\n      <a class=\"mini\" href=\"#ch5\" aria-label=\"\u770b\u7b2c 05 \u7ae0\"><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-tl-5.webp\" width=\"400\" height=\"247\" loading=\"lazy\" decoding=\"async\" alt=\"\"><\/a>\n      <div class=\"txt\"><h3 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%B8%80%E6%9C%9F_SHAPE_PKM_%E8%AA%B2%E7%A8%8B%EF%BC%8C%E5%8D%87%E7%B4%9A%E6%88%90_AI_%E9%A0%AD%E8%85%A6%E5%8D%87%E7%B4%9A_321\"><\/span>\u7b2c\u4e00\u671f SHAPE PKM \u8ab2\u7a0b\uff0c\u5347\u7d1a\u6210 AI \u982d\u8166\u5347\u7d1a 321<span class=\"ez-toc-section-end\"><\/span><\/h3><p>30 \u4eba\u96d9\u6708\u5236\uff0c\u89aa\u81ea\u5e36\uff1a\u7522\u54c1\u7d93\u7406\u3001\u81ea\u7531\u9867\u554f\u3001\u5b78\u8005\u3001\u5275\u4f5c\u8005\u3001\u5fc3\u7406\u6cbb\u7642\u5e2b\u90fd\u6709\u3002\u5b78\u54e1\u771f\u5be6\u898b\u8b49 5 \u6708\u4e2d\u5f8c\u9678\u7e8c\u9577\u51fa\u4f86\u3002\u7b2c\u4e8c\u671f\u5347\u7d1a\u6210\u300cAI \u982d\u8166\u5347\u7d1a 321\u300d\uff0c\u4e09\u500b\u5927\u8166\u4e00\u8d77\u990a\u3002<\/p><ul class=\"chips\"><li>30 \u5b78\u54e1<\/li><li>\u96d9\u6708\u5236<\/li><li>1:1 + \u5c0f\u73ed<\/li><\/ul><\/div>\n    <\/li>\n  <\/ol>\n<\/div><\/section>\n\n<section class=\"album\" id=\"album\">\n  <div class=\"dots\" aria-hidden=\"true\"><i class=\"on\"><\/i><i><\/i><i><\/i><i><\/i><i><\/i><\/div>\n\n  <div class=\"mk mk0\"><\/div>\n  <div class=\"pg\" id=\"ch1\"><div class=\"sheet\" data-yr=\"2018\">\n    <div class=\"figcol\">\n      <figure class=\"polaroid bigpol portrait\"><span class=\"tape\"><\/span><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-ch1.webp\" width=\"453\" height=\"604\" loading=\"lazy\" decoding=\"async\" alt=\"\u77e5\u8b58\u5305\u5c0f\u8178 18 \u6b72\u5c11\u5973\u6642\u4ee3\u2014\u201430 \u6b72\u524d\u4e0d\u611b\u8b80\u66f8\u3001\u81ea\u5351\u3001\u500b\u4eba\u77e5\u8b58\u7ba1\u7406 PKM \u6545\u4e8b\u8d77\u9ede\"><span class=\"wipe\"><\/span><figcaption class=\"cap hand lihsianti\">2018 \u00b7 \u5931\u6557\u5f97\u5f88\u5fb9\u5e95<\/figcaption><\/figure>\n      <div class=\"kq\"><span class=\"stamp\">\u2b50 \u8d77\u5fc3\u52d5\u5ff5<\/span><p>\u6211\u7d42\u65bc\u4f4e\u982d\uff0c\u6c7a\u5b9a\u53bb\u5b78\u5546\u696d\u3002\u4e0d\u662f\u70ba\u4e86\u8b49\u660e\u4ec0\u9ebc\uff0c\u5c31\u662f\u60f3\u77e5\u9053\u2014\u2014\u4e0a\u6b21\u54ea\u88e1\u8f38\u7684\u3002<\/p><\/div>\n    <\/div>\n    <div class=\"txtcol\">\n      <div class=\"st-label\"><span class=\"no\">01<\/span><span class=\"en\">CHAPTER ONE \u00b7 \u8d77\u9ede<\/span><span class=\"yr\">2018<\/span><\/div>\n      <h3 class=\"ch-scene hand lihsianti\"><span class=\"ez-toc-section\" id=\"30_%E6%AD%B2%EF%BC%8C%E9%8C%A2%E3%80%81%E6%99%82%E9%96%93%E3%80%81%E4%BF%A1%E5%BF%83%E4%B8%80%E8%B5%B7%E7%87%92%E4%B9%BE\"><\/span>30 \u6b72\uff0c\u9322\u3001\u6642\u9593\u3001\u4fe1\u5fc3\u4e00\u8d77\u71d2\u4e7e<span class=\"ez-toc-section-end\"><\/span><\/h3>\n      <div class=\"ch-sub\">\u5be6\u9ad4\u6d3b\u52d5\u5275\u696d\u5931\u6557\u90a3\u4e00\u5e74<\/div>\n      <p>\u5f9e\u5c0f\u6211\u5c31\u4e0d\u559c\u6b61\u8b80\u66f8\u3002\u4e0d\u662f\u5b78\u4e0d\u4f86\uff0c\u662f\u4e0d\u559c\u6b61\u88ab\u544a\u8a34\u300c\u4f60\u61c9\u8a72\u5b78\u4ec0\u9ebc\u300d\u3002\u570b\u9ad8\u4e2d\u6253\u7fa4\u67b6\u3001\u7ff9\u8ab2\u3001\u8dd1\u7db2\u5496\u3001\u73a9\u6a02\u5718\uff0c\u5bb6\u88e1\u4eba\u5c0d\u6211\u7684\u8a55\u8a9e\u56db\u500b\u5b57\u2014\u2014\u300c\u6210\u4e0d\u4e86\u6750\u300d\u3002<\/p>\n      <p>30 \u6b72\u90a3\u5e74\uff0c\u6211\u505a\u4e86\u4eba\u751f\u7b2c\u4e00\u500b\u91cd\u5927\u6c7a\u5b9a\u2014\u2014\u53bb\u5275\u696d\u3002\u5be6\u9ad4\u6d3b\u52d5\u90a3\u7a2e\u3002\u7d50\u679c\u5931\u6557\u5f97\u5f88\u5fb9\u5e95\u2014\u2014\u9322\u3001\u6642\u9593\u3001\u4fe1\u5fc3\u3001\u4eba\u969b\u5168\u90e8\u4e00\u8d77\u71d2\u4e7e\u3002<\/p>\n      <p>\u90a3\u662f\u6211\u7b2c\u4e00\u6b21\u8a8d\u771f\u53bb\u60f3\uff1a\u539f\u4f86\u300c\u60f3\u505a\u300d\u8ddf\u300c\u80fd\u505a\u6210\u300d\u4e4b\u9593\uff0c\u5dee\u7684\u4e0d\u662f\u71b1\u60c5\uff0c\u662f<span class=\"hl\">\u90a3\u4e9b\u6211\u6c92\u8b80\u904e\u7684\u66f8<\/span>\u300230 \u6b72\u524d\u6211\u9084\u6c92\u8b80\u5b8c\u4e00\u672c\u8ab2\u5916\u66f8\uff0c\u6708\u85aa 35K \u5728\u540c\u5b78\u88e1\u588a\u5e95\u3002<\/p>\n    <\/div>\n    <i class=\"dim\"><\/i>\n  <\/div><\/div>\n\n  <div class=\"mk\"><\/div>\n  <div class=\"pg\" id=\"ch2\"><div class=\"sheet\" data-yr=\"2019\">\n    <div class=\"figcol\">\n      <figure class=\"polaroid bigpol\"><span class=\"tape cool\"><\/span><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-ch2.webp\" width=\"840\" height=\"493\" loading=\"lazy\" decoding=\"async\" alt=\"\u77e5\u8b58\u5305\u5c0f\u8178 Heptabase \u7b2c\u4e8c\u5927\u8166\u767d\u677f\u2014\u2014\u62dc\u66f8\u6d77\u70ba\u5e2b\u3001\u500b\u4eba\u77e5\u8b58\u7ba1\u7406 PKM \u89ba\u9192\"><span class=\"wipe\"><\/span><figcaption class=\"cap hand lihsianti\">2019\u20132022 \u00b7 \u5154\u5b50\u6d1e<\/figcaption><\/figure>\n    <\/div>\n    <div class=\"txtcol\">\n      <div class=\"st-label\"><span class=\"no\">02<\/span><span class=\"en\">CHAPTER TWO \u00b7 \u8f49\u6298<\/span><span class=\"yr\">2019\u20132022<\/span><\/div>\n      <h3 class=\"ch-scene hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E6%9A%B4%E8%83%96_15_%E5%85%AC%E6%96%A4%E5%BE%8C%EF%BC%8C%E6%88%91%E5%95%8F%E4%BA%86%E8%87%AA%E5%B7%B1%E4%B8%80%E5%80%8B%E5%95%8F%E9%A1%8C\"><\/span>\u66b4\u80d6 15 \u516c\u65a4\u5f8c\uff0c\u6211\u554f\u4e86\u81ea\u5df1\u4e00\u500b\u554f\u984c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n      <div class=\"ch-sub\">\u8dcc\u9032\u5546\u696d\u5b78\u7fd2\u5154\u5b50\u6d1e<\/div>\n      <p>\u5931\u6557\u90a3\u4e00\u5e74\u4e4b\u5f8c\u6211\u8a8d\u771f\u53bb\u5b78\u5546\u696d\u3002\u6bcf\u5929\u8b80\u66f8\u3001\u4e0a\u8ab2\u3001\u505a\u7b46\u8a18\uff0c\u4e00\u5e74\u534a\u5e7e\u4e4e\u4e0d\u51fa\u9580\u3002\u671f\u9593\u9047\u5230\u4e00\u4f4d\u4eba\u751f\u5c0e\u5e2b\u2014\u2014\u4ed6\u771f\u7684\u5f88\u53b2\u5bb3\uff0c\u6211\u5f9e\u4ed6\u8eab\u4e0a\u5b78\u5230\u7684\u6771\u897f\u8b93\u6211\u5f9e\u300c\u4e0d\u6703\u505a\u4e8b\u7684\u4eba\u300d\u8b8a\u6210\u300c\u80fd\u505a\u4e8b\u7684\u4eba\u300d\u3002<\/p>\n      <p>\u4f46\u4ee3\u50f9\u4e5f\u5f88\u771f\u5be6\uff1a\u4e0b\u8dea\u3001\u5beb\u6094\u904e\u66f8\u3001\u66b4\u80d6 15 \u516c\u65a4\u3001\u6389\u9aee\u3002\u96e2\u958b\u90a3\u6bb5\u95dc\u4fc2\u4e4b\u5f8c\uff0c\u6211\u554f\u4e86\u81ea\u5df1\u4e00\u500b\u554f\u984c\uff1a<\/p>\n      <div class=\"kq inline\"><span class=\"stamp\">\u2b50 \u95dc\u9375\u554f\u53e5<\/span><p>\u300c\u5982\u679c\u6211\u80fd\u5920\u56e0\u70ba\u4e00\u4f4d\u5c0e\u5e2b\u800c\u6539\u8b8a\uff0c<br>\u90a3\u70ba\u4ec0\u9ebc\u4e0d\u80fd\u53bb\u66f8\u6d77\u88e1\uff0c\u8a62\u554f\u66f4\u591a\u8001\u5e2b\uff1f\u300d<\/p><\/div>\n      <p>\u9019\u500b\u554f\u984c\u6539\u8b8a\u4e86\u6211\u7684\u4eba\u751f\u3002\u5f9e\u90a3\u4e00\u523b\u8d77\uff0c\u6211\u958b\u59cb<span class=\"hl\">\u70ba\u81ea\u5df1\u800c\u5b78<\/span>\u2014\u2014\u4e0d\u662f\u70ba\u4e86\u53d6\u6085\u8ab0\u3001\u4e0d\u662f\u70ba\u4e86\u8b49\u660e\u4ec0\u9ebc\uff0c\u5c31\u662f\u56e0\u70ba\u5b78\u7fd2\u672c\u8eab\u8b93\u6211\u5feb\u6a02\u3002<\/p>\n    <\/div>\n    <i class=\"dim\"><\/i>\n  <\/div><\/div>\n\n  <div class=\"mk\"><\/div>\n  <div class=\"pg\" id=\"ch3\"><div class=\"sheet\" data-yr=\"2024\">\n    <div class=\"figcol\">\n      <div class=\"boardfan\">\n      <figure class=\"polaroid bf\"><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/10\/kgweb-about-boards-b2.webp\" width=\"560\" height=\"314\" loading=\"lazy\" decoding=\"async\" alt=\"\u5c0f\u8178\u7684 Heptabase \u771f\u5be6\u767d\u677f\uff1a\u62c6\u89e3\u7206\u6b3e\u77ed\u5f71\u97f3\u5c01\u9762\"><\/figure>\n      <figure class=\"polaroid bf\"><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/10\/kgweb-about-boards-b4.webp\" width=\"560\" height=\"423\" loading=\"lazy\" decoding=\"async\" alt=\"\u5c0f\u8178\u7684 Heptabase \u771f\u5be6\u767d\u677f\uff1a\u751f\u6d3b\u8207\u65c5\u904a\u7b46\u8a18\"><\/figure>\n      <figure class=\"polaroid bf\"><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/10\/kgweb-about-boards-b9.webp\" width=\"560\" height=\"400\" loading=\"lazy\" decoding=\"async\" alt=\"\u5c0f\u8178\u7684 Heptabase \u771f\u5be6\u767d\u677f\uff1a\u6d3b\u52d5\u4f01\u5283\u5de5\u4f5c\u6d41\"><\/figure>\n      <figure class=\"polaroid bigpol\"><span class=\"tape pink\"><\/span><video class=\"loop\" muted loop playsinline preload=\"none\" width=\"960\" height=\"600\" poster=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-loop-tree-poster.webp\" aria-label=\"Heptabase \u767d\u677f\u2014\u2014\u6253\u9020\u6578\u4f4d\u7b2c\u4e8c\u5927\u8166\u7684\u8996\u89ba\u5316\u7b46\u8a18\u7cfb\u7d71\uff0c\u5c0f\u8178\u7684 8,800+ \u5361\u7247\u5eab\u8d77\u9ede\"><source src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-loop-tree.mp4\" type=\"video\/mp4\"><\/video><span class=\"wipe\"><\/span><figcaption class=\"cap hand lihsianti\">2024 \u00b7 \u7b2c\u4e00\u6b21\u6253\u958b Hpt<\/figcaption><\/figure>\n      <\/div>\n      <div class=\"kq\"><span class=\"stamp\">\u2b50 \u4e09\u5e74\u5f8c<\/span><p>\u6211\u7684 Heptabase \u88e1\u6709 <b>8,800+ \u5f35\u5361\u7247\u3001670+ \u500b\u767d\u677f<\/b>\u3002\u9019\u5957\u7cfb\u7d71\u990a\u51fa\u4e86\u6211\u7684\u90e8\u843d\u683c\u3001\u96fb\u5b50\u5831\u3001Threads\u3001\u8ab2\u7a0b\u2014\u2014\u6240\u6709\u5167\u5bb9\u7522\u51fa\uff0c\u90fd\u5f9e\u540c\u4e00\u500b\u7b2c\u4e8c\u5927\u8166\u9577\u51fa\u4f86\u3002<\/p><\/div>\n    <\/div>\n    <div class=\"txtcol\">\n      <div class=\"st-label\"><span class=\"no\">03<\/span><span class=\"en\">CHAPTER THREE \u00b7 \u767c\u73fe<\/span><span class=\"yr\">2024<\/span><\/div>\n      <h3 class=\"ch-scene hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E5%BE%88%E6%9C%83%E6%94%B6%E9%9B%86%EF%BC%8C%E5%8D%BB%E5%AE%8C%E5%85%A8%E4%B8%8D%E6%9C%83%E7%94%A8\"><\/span>\u5f88\u6703\u6536\u96c6\uff0c\u537b\u5b8c\u5168\u4e0d\u6703\u7528<span class=\"ez-toc-section-end\"><\/span><\/h3>\n      <div class=\"ch-sub\">\u7b2c\u4e8c\u5927\u8166\u6551\u4e86\u6211<\/div>\n      <p>\u5b78\u5546\u696d\u5b78\u4e86\u5169\u5e74\uff0c\u6211\u767c\u73fe\u4e00\u500b\u554f\u984c\u2014\u2014\u6211\u6bcf\u5929\u8b80\u90a3\u9ebc\u591a\u6771\u897f\u3001\u505a\u90a3\u9ebc\u591a\u7b46\u8a18\uff0c\u4f46\u5b8c\u5168\u60f3\u4e0d\u8d77\u91cd\u9ede\u653e\u5728\u54ea\u88e1\u3002\u6211\u8b8a\u5f97\u5f88\u6703\u300c\u6536\u96c6\u77e5\u8b58\u300d\uff0c\u4f46\u5b8c\u5168\u4e0d\u6703\u300c\u4f7f\u7528\u77e5\u8b58\u300d\u3002<\/p>\n      <p>\u5c31\u5728\u90a3\u500b\u7126\u8e81\u671f\uff0c\u6211\u9047\u5230\u4e86 Heptabase\u2014\u2014\u4e00\u500b\u7528\u767d\u677f\u52a0\u5361\u7247\u7d44\u7e54\u601d\u8003\u7684\u5de5\u5177\u3002\u7b2c\u4e00\u6b21\u6253\u958b\u7684\u90a3\u5929\uff0c\u6211\u6709\u4e00\u7a2e\u300c\u554a\uff0c<span class=\"hl\">\u539f\u4f86\u6211\u7684\u8166\u5b50\u53ef\u4ee5\u9577\u9019\u6a23<\/span>\u300d\u7684\u611f\u89ba\u3002<\/p>\n    <\/div>\n    <i class=\"dim\"><\/i>\n  <\/div><\/div>\n\n  <div class=\"mk\"><\/div>\n  <div class=\"pg\" id=\"ch4\"><div class=\"sheet\" data-yr=\"2025\">\n    <div class=\"figcol\">\n      <figure class=\"polaroid bigpol\"><span class=\"tape mint\"><\/span><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-ch4.webp\" width=\"840\" height=\"472\" loading=\"lazy\" decoding=\"async\" alt=\"PKM \u9867\u554f\u73fe\u5834\u2014\u2014\u77e5\u8b58\u7ba1\u7406\u6559\u7df4 1:1 \u8aee\u8a62\u5be6\u6230\uff0c\u770b\u5b78\u54e1 vault\u3001\u6539\u6d41\u7a0b\u3001\u8ffd\u9032\u5ea6\uff08\u793a\u610f\uff09\"><span class=\"wipe\"><\/span><figcaption class=\"cap hand lihsianti\">2025 \u00b7 \u958b\u59cb\u624b\u628a\u624b\u5e36<\/figcaption><\/figure>\n      <div class=\"kq\"><span class=\"stamp\">\u2b50 \u70ba\u4ec0\u9ebc\u662f\u9019\u689d\u8def<\/span><p>\u4e0d\u662f\u56e0\u70ba\u5b83\u6700\u8cfa\u9322\u2014\u2014\u7dda\u4e0a\u8ab2\u8cfa\u5f97\u6bd4\u8f03\u591a\u3002\u662f\u56e0\u70ba\u5b83\u771f\u7684\u6709\u6548\u3002<\/p><\/div>\n    <\/div>\n    <div class=\"txtcol\">\n      <div class=\"st-label\"><span class=\"no\">04<\/span><span class=\"en\">CHAPTER FOUR \u00b7 \u555f\u7a0b<\/span><span class=\"yr\">2025<\/span><\/div>\n      <h3 class=\"ch-scene hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E7%9C%8B%E4%B8%80%E7%99%BE%E5%A0%82%E8%AA%B2%E4%B9%9F%E5%AD%B8%E4%B8%8D%E6%9C%83%E7%9A%84%E4%BA%8B\"><\/span>\u770b\u4e00\u767e\u5802\u8ab2\u4e5f\u5b78\u4e0d\u6703\u7684\u4e8b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n      <div class=\"ch-sub\">\u5f9e\u300c\u81ea\u5df1\u7528\u300d\u5230\u300c\u6559\u5225\u4eba\u7528\u300d<\/div>\n      <p>2024 \u5e74\u4e0b\u534a\u5e74\uff0c\u6211\u767c\u73fe\u4e00\u4ef6\u5f88\u6709\u8da3\u7684\u4e8b\u2014\u2014\u6211\u8eab\u908a\u8cb7\u904e\u597d\u5e7e\u5802 PKM \u8ab2\u7684\u670b\u53cb\u3001\u5b78\u54e1\uff0c\u6c92\u6709\u4eba\u771f\u7684\u628a\u7b2c\u4e8c\u5927\u8166\u8dd1\u8d77\u4f86\u3002<\/p>\n      <p>\u6211\u53bb\u7ffb\u4ed6\u5011\u7684 vault\uff1a\u5361\u7247\u7c92\u5ea6\u592a\u5927\u3001tag \u6563\u4e82\u3001inbox \u8655\u7406\u4e0d\u5b8c\u3001\u5beb\u6587\u7ae0\u5f9e\u96f6\u958b\u59cb\u800c\u4e0d\u662f\u5f9e\u5361\u7247\u9577\u51fa\u4f86\u2014\u2014\u9019\u4e9b\u554f\u984c\uff0c\u770b\u4e00\u767e\u5802\u7dda\u4e0a\u8ab2\u4e5f\u5b78\u4e0d\u6703\u3002\u8981\u88ab\u4e00\u500b<span class=\"hl\">\u80fd\u770b\u8457\u4f60\u7684\u4eba<\/span>\u6307\u51fa\u4f86\uff0c\u624d\u6703\u8b8a\u3002<\/p>\n      <p>\u6240\u4ee5\u6211\u958b\u59cb\u505a 1:1 PKM \u8aee\u8a62\u3002\u4e00\u500b\u4e00\u500b\u966a\u3001\u770b vault\u3001\u6539\u6d41\u7a0b\u3001\u8ffd\u9032\u5ea6\u3002\u6211\u6210\u7acb\u4e86\u5f69\u6258\u90a6\u6709\u9650\u516c\u53f8\uff0c\u6708\u6536\u5f9e 35K \u7ffb\u5230 300K\uff0c\u5169\u5cb8\u8b1b\u6f14 25 \u5834\uff0c\u5f9e\u53f0\u5317\u3001\u4e0a\u6d77\u3001\u676d\u5dde\u4e00\u8def\u5230\u8607\u5dde\u3001\u6c5f\u8607\u3002<\/p>\n    <\/div>\n    <i class=\"dim\"><\/i>\n  <\/div><\/div>\n\n  <div class=\"mk\"><\/div>\n  <div class=\"pg\" id=\"ch5\"><div class=\"sheet\" data-yr=\"2026\">\n    <div class=\"figcol\">\n      <div class=\"stack\">\n        <figure class=\"polaroid back\"><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-ch5b.webp\" width=\"640\" height=\"360\" loading=\"lazy\" decoding=\"async\" alt=\"\"><\/figure>\n        <figure class=\"polaroid front\"><span class=\"tape\"><\/span><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-ch5a.webp\" width=\"640\" height=\"758\" loading=\"lazy\" decoding=\"async\" alt=\"SHAPE \u77e5\u8b58\u7ba1\u7406 PKM \u8ab2\u7a0b\u5b78\u54e1\u6797\u6e24\u6d5a Threads \u516c\u958b\u898b\u8b49\u2014\u2014\u900f\u904e\u77e5\u8b58\u5305\u5c0f\u8178 SHAPE PKM \u8ab2\u7a0b\u6559\u5b78\u555f\u767c\uff0c\u5275\u7acb\u81ea\u5df1\u7684 AI agent \u516c\u53f8\uff086 \u4f4d CXO \u914d\u7f6e + Obsidian + Claude Code\uff09\"><span class=\"wipe\"><\/span><figcaption class=\"cap hand lihsianti\">2026 \u00b7 \u5b78\u54e1\u6797\u6e24\u6d5a\uff5cAI agent \u516c\u53f8<\/figcaption><\/figure>\n      <\/div>\n      <div class=\"kq\"><span class=\"stamp\">\u2b50 \u6211\u627f\u8afe\u7684\u4e8b<\/span><p>\u8001\u5e2b\u771f\u6b63\u8a8d\u8b58\u6bcf\u4e00\u500b\u5b78\u54e1\uff0c\u7528\u6211\u7684\u5927\u8166\u3001\u7121\u4fdd\u7559\u966a\u4f60\u4e00\u6bb5\u3002\u4e0d\u627f\u8afe\u6708\u5165\u591a\u5c11\u3001\u5e7e\u500b\u6708\u4e00\u5b9a\u5efa\u597d\u7cfb\u7d71\u2014\u2014\u7d50\u679c\u627f\u8afe\u662f offer \u8a71\u8853\uff0c\u4e0d\u662f\u6211\u7684\u54c1\u724c\u3002<\/p><\/div>\n    <\/div>\n    <div class=\"txtcol\">\n      <div class=\"st-label\"><span class=\"no\">05<\/span><span class=\"en\">CHAPTER FIVE \u00b7 \u7576\u4e0b<\/span><span class=\"yr\">2026<\/span><\/div>\n      <h3 class=\"ch-scene hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E9%AB%94%E6%BA%AB%E5%84%AA%E5%85%88%E6%96%BC%E8%A6%8F%E6%A8%A1\"><\/span>\u9ad4\u6eab\u512a\u5148\u65bc\u898f\u6a21<span class=\"ez-toc-section-end\"><\/span><\/h3>\n      <div class=\"ch-sub\">\u5f9e SHAPE \u77e5\u8b58\u7ba1\u7406 PKM \u8ab2\u7a0b\u5230 AI \u982d\u8166\u5347\u7d1a 321<\/div>\n      <p>2026 \u5e74 3 \u6708\uff0c\u6211\u958b\u4e86\u7b2c\u4e00\u671f SHAPE \u77e5\u8b58\u7ba1\u7406 PKM \u8ab2\u7a0b\uff0c\u6536\u4e86 30 \u4f4d\u5b78\u54e1\u3002\u96d9\u6708\u5236\uff0c\u5f9e\u5de5\u5177\u9078\u578b\u5230\u5de5\u4f5c\u6d41\u843d\u5730\uff0c\u6211\u89aa\u81ea\u5e36\u2014\u2014\u7522\u54c1\u7d93\u7406\u3001\u81ea\u7531\u9867\u554f\u3001\u5b78\u8005\u3001\u5275\u4f5c\u8005\u3001\u5fc3\u7406\u6cbb\u7642\u5e2b\u90fd\u6709\u3002<\/p>\n      <p>\u7b2c\u4e00\u671f\u7684\u5b78\u54e1\u771f\u5be6\u898b\u8b49\uff0c5 \u6708\u4e2d\u5f8c\u9678\u7e8c\u51fa\u73fe\u3002\u7b2c\u4e8c\u671f\u6211\u628a\u5b83\u5347\u7d1a\u6210<a class=\"inlink\" href=\"https:\/\/brain123.knowledgegut.com\/\" target=\"_blank\" rel=\"noopener\">\u300cAI \u982d\u8166\u5347\u7d1a 321\u300d<\/a>\uff1a\u7b2c\u4e00\u5927\u8166\u7df4\u601d\u8003\u3001\u7b2c\u4e8c\u5927\u8166\u990a\u77e5\u8b58\u5eab\u3001\u7b2c\u4e09\u5927\u8166\u5e36 AI \u54e1\u5de5\uff0c\u4e09\u500b\u5927\u8166\u4e00\u8d77\u990a\u300210\/22 \u958b\u8ab2\uff0c\u6bcf\u9031\u56db\u665a\u4e0a 8 \u9ede\u76f4\u64ad\u966a\u4f60\u3002<\/p>\n      <p>\u9019\u689d\u8def\u6162\u3001\u6df1\u3001\u8cb4\uff0c\u4e0d\u80fd\u898f\u6a21\u5316\u2014\u2014\u4f46\u9019\u5c31\u662f\u6211\u9078\u64c7\u7684\u5f62\u5f0f\u3002<span class=\"hl\">\u9ad4\u6eab\u512a\u5148\u65bc\u898f\u6a21<\/span>\u3002<\/p>\n    <\/div>\n    <i class=\"dim\"><\/i>\n  <\/div><\/div>\n<\/section>\n\n<section class=\"voices sec-paper\" id=\"voices\"><div class=\"in wide\">\n  <div class=\"head\">\n    <div class=\"kick\">VOICES \u00b7 \u5b78\u54e1\u600e\u9ebc\u8aaa<\/div>\n    <h2 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E4%BB%96%E5%80%91%E5%AF%AB%E7%B5%A6%E6%88%91%E7%9A%84%E8%A9%B1\"><\/span>\u4ed6\u5011\u5beb\u7d66\u6211\u7684\u8a71<span class=\"ez-toc-section-end\"><\/span><\/h2>\n    <p class=\"sub\">\u8ab2\u7a0b\u8a55\u50f9\u3001\u8b1b\u5ea7\u56de\u994b\u3001\u96fb\u5b50\u5831\u56de\u4fe1\u88e1\u7684\u771f\u5be6\u7559\u8a00\u3002<\/p>\n  <\/div>\n  <div class=\"vwall\">\n    <figure class=\"polaroid vp\"><span class=\"tape\"><\/span><img loading=\"lazy\" src=\"https:\/\/student.knowledgegut.com\/wp-content\/uploads\/2026\/05\/snimg5OHt50.webp\" width=\"1200\" height=\"1500\" loading=\"lazy\" decoding=\"async\" alt=\"\u77e5\u8b58\u5305\u5c0f\u8178\u5b78\u54e1 5 \u661f\u597d\u8a55 \u2014 \u6c88\u6735\u6735\uff1a\u9019\u662f\u6703\u8b93\u6211\u4e00\u76f4\u56de\u53bb\u770b\u7684\u8ab2\u7a0b\uff0c\u5e6b\u52a9\u8df3\u75db\u767c\u6563\u7684\u4eba\u91cd\u65b0\u5c0d\u7126\u7b46\u8a18\u60f3\u6cd5\uff0cHeptabase \u8b93\u6355\u6349\u7684\u7b46\u8a18\u4e0d\u53ea\u662f\u8a18\u9304\uff0c\u800c\u662f\u5927\u8166\u4e2d\u6709\u8a18\u61b6\u7684\u3002\"><\/figure>\n    <div class=\"vnote\"><span class=\"stamp\">\u7fd4\u592a\uff5c\u300a\u6709\u6548\u8f38\u5165 \u221e \u5feb\u901f\u8f38\u51fa\u300b\u5b78\u54e1<\/span><p>\u300c\u4e0a\u9019\u5802\u8ab2\uff0c\u4f60\u7d55\u5c0d\u4e0d\u6703\u611f\u5230\u7121\u804a\u300d<\/p><\/div>\n    <figure class=\"polaroid vp\"><span class=\"tape pink\"><\/span><img loading=\"lazy\" src=\"https:\/\/student.knowledgegut.com\/wp-content\/uploads\/2026\/04\/snimgDFOQ9R.webp\" width=\"922\" height=\"370\" loading=\"lazy\" decoding=\"async\" alt=\"\u77e5\u8b58\u5305\u5c0f\u8178\u5b78\u54e1\u597d\u8a55 \u2014 \u5b78\u54e1\u611f\u8b1d\u5c0f\u8178\u7121\u79c1\u88fd\u8ab2\u3001\u5f88\u5e78\u904b\u6210\u70ba\u300c\u8178\u7c89\u300d\uff1b\u5be6\u9ad4\u8b1b\u5ea7\u770b\u5230\u4e00\u8def\u88ab\u8a73\u7d30\u8a18\u9304\u7684\u9ede\u6ef4\uff0c\u63d0\u9192\u81ea\u5df1\u89aa\u81ea\u8d70\u904e\u7684\u8def\u90fd\u80fd\u6210\u70ba\u4ed6\u4eba\u7684\u5e6b\u52a9\u3002\"><\/figure>\n    <div class=\"vnote\"><span class=\"stamp\">\u5b89\u8fea\uff5c\u7b2c\u4e00\u671f\u5b78\u54e1<\/span><p>AI \u7126\u616e\uff0c\u6709\u597d\u5f88\u591a<\/p><\/div>\n    <figure class=\"polaroid vp\"><span class=\"tape cool\"><\/span><img loading=\"lazy\" src=\"https:\/\/student.knowledgegut.com\/wp-content\/uploads\/2026\/04\/snimg4FH9st.webp\" width=\"704\" height=\"292\" loading=\"lazy\" decoding=\"async\" alt=\"\u77e5\u8b58\u5305\u5c0f\u8178\u5b78\u54e1\u597d\u8a55 \u2014 \u8b80\u8005\u56de\u4fe1\uff1a\u300c\u8b1d\u8b1d\u59b3\u7684\u5206\u4eab\uff01\u5f88\u6709\u57f7\u884c\u529b\u53c8\u6709\u71b1\u60c5\uff5e\u5f88\u671f\u5f85\u80fd\u6210\u70ba\u59b3\u7684 1\/500\uff5e\u300d\"><\/figure>\n    <figure class=\"polaroid vp\"><span class=\"tape\"><\/span><img loading=\"lazy\" src=\"https:\/\/student.knowledgegut.com\/wp-content\/uploads\/2026\/04\/snimggx8Jkd.webp\" width=\"612\" height=\"263\" loading=\"lazy\" decoding=\"async\" alt=\"\u77e5\u8b58\u5305\u5c0f\u8178\u5b78\u54e1\u597d\u8a55 \u2014 \u5b78\u54e1\u8a0a\u606f\uff1a\u300c\u5c0f\u8178\u8001\u5e2b\uff0c\u8b1d\u8b1d\u60a8 \u4eca\u65e5\u5357\u4e0b\u70ba\u6211\u5011\u8b1b\u8ab2\uff0c\u5167\u5bb9\u975e\u5e38\u5145\u8db3\u4e14\u5c08\u696d \u975e\u5e38\u8b1d\u8b1d\u60a8\uff01\u300d\"><\/figure>\n    <div class=\"vnote\"><span class=\"stamp\">\u7b2c\u4e00\u671f\u5b78\u54e1<\/span><p>\u89c0\u5ff5\u6709\u6253\u901a\uff0c\u5c31\u662f\u611f\u89ba\u4e0d\u7528\u4fb7\u9650\u5e73\u53f0<\/p><\/div>\n  <\/div>\n  <div class=\"hosts\">\n    <h3 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E9%82%80%E8%AB%8B%E6%88%91%E5%8E%BB%E5%88%86%E4%BA%AB%E9%81%8E%E7%9A%84%E7%A4%BE%E7%BE%A4%E8%88%87%E8%AC%9B%E5%A0%82\"><\/span>\u9080\u8acb\u6211\u53bb\u5206\u4eab\u904e\u7684\u793e\u7fa4\u8207\u8b1b\u5802<span class=\"ez-toc-section-end\"><\/span><\/h3>\n    <ul class=\"tix\">\n      <li><span>\u53f0\u5317<\/span>Heptabase \u975e\u5b98\u65b9 LINE \u793e\u7fa4<\/li>\n      <li><span>\u53f0\u5317<\/span>WordPress \u53f0\u5317\u5c0f\u805a<\/li>\n      <li><span>\u53f0\u5317<\/span>WordPress \u5f69\u8679\u5c0f\u805a<\/li>\n      <li><span>\u7dda\u4e0a<\/span>Co-Working-Online \u793e\u7fa4<\/li>\n      <li><span>\u53f0\u5317<\/span>\u6578\u4f4d\u904a\u7267\u8005\u5354\u6703 \u00d7 \u7db2\u8def\u904a\u6c11\u793e\u7fa4<\/li>\n      <li><span>\u7dda\u4e0a<\/span>\u4e94\u5409\u90ce Podcast \u8b80\u66f8\u6703<\/li>\n      <li><span>\u7dda\u4e0a<\/span>Zac Phua\uff5cFunnel Mastery \u92b7\u552e\u6f0f\u6597\u8b8a\u73fe\u5be6\u6230\u73ed<\/li>\n      <li><span>\u53f0\u5317<\/span>\u674e\u6155\u7d04\uff5c365 AI \u8a02\u95b1\u8a08\u5283<\/li>\n      <li><span>\u4e0a\u6d77\u30fb\u6c5f\u8607<\/span>BTU \u6578\u5b57\u6e38\u6c11\u5c31\u696d\u5275\u696d\u793e\u5340<\/li>\n      <li><span>\u7dda\u4e0a<\/span>T planner \u4eba\u751f\u9032\u5316\u6240<\/li>\n      <li><span>\u676d\u5dde<\/span>\u826f\u6e1a\u6578\u5b57\u6e38\u6c11\u793e\u5340<\/li>\n      <li><span>\u7dda\u4e0a<\/span>\u6642\u9593\u7ba1\u7406\u5927\u5e2b \u5f35\u6c38\u932b \u8001\u5e2b<\/li>\n      <li><span>\u8607\u5dde<\/span>\u7136\u5189 \u00d7 \u661f\u83ef IP \u5b78\u82d1<\/li>\n      <li><span>\u676d\u5dde<\/span>\u6e05\u5275 OPC \u793e\u7fa4<\/li>\n    <\/ul>\n  <\/div>\n  <div class=\"vcta\"><a class=\"btn ghost\" href=\"https:\/\/student.knowledgegut.com\/wall-of-love\/\" target=\"_blank\" rel=\"noopener\">\u770b\u5168\u90e8\u5b78\u54e1\u597d\u8a55 \u2192<\/a><\/div>\n<\/div><\/section>\n\n<section class=\"teach sec-kraft\" id=\"teach\"><div class=\"in wide\">\n  <div class=\"head\">\n    <div class=\"kick\">WHAT I TEACH \u00b7 \u6211\u6559\u4ec0\u9ebc<\/div>\n    <h2 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E6%8A%8A%E4%BD%A0%E7%9A%84%E7%9F%A5%E8%AD%98%E8%AE%8A%E6%88%90%E3%80%8C%E6%9C%83%E8%A4%87%E5%88%A9%E7%9A%84%E5%80%8B%E4%BA%BA%E8%B3%87%E7%94%A2%E3%80%8D\"><\/span>\u628a\u4f60\u7684\u77e5\u8b58\u8b8a\u6210<span class=\"glow\">\u300c\u6703\u8907\u5229\u7684\u500b\u4eba\u8cc7\u7522\u300d<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n    <p class=\"sub\">\u935b\u934a\u7b2c\u4e00\u5927\u8166\u3001\u6253\u9020\u7b2c\u4e8c\u5927\u8166\u3001\u99d5\u99ad AI \u7b2c\u4e09\u5927\u8166\u2014\u2014\u4e09\u5c64\u4e00\u8d77\u8dd1\uff0c\u77e5\u8b58\u624d\u6703\u8907\u5229\u3002<\/p>\n  <\/div>\n  <div class=\"bgrid\">\n    <article class=\"bcard\">\n      <div class=\"pic\"><figure class=\"polaroid tight\"><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-teach1.webp\" width=\"497\" height=\"621\" loading=\"lazy\" decoding=\"async\" alt=\"\"><\/figure><img loading=\"lazy\" decoding=\"async\" class=\"brain\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-brain_b1.webp\" width=\"160\" height=\"125\" loading=\"lazy\" alt=\"\"><\/div>\n      <h3 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%B8%80%E5%A4%A7%E8%85%A6\"><\/span>\u7b2c\u4e00\u5927\u8166<span class=\"ez-toc-section-end\"><\/span><\/h3><div class=\"bsub\">\u935b\u934a\u4eba\u8166\u80fd\u529b<\/div>\n      <p class=\"bout\">AI \u662f\u5e6b\u4f60\u60f3\uff0c\u4e0d\u662f\u66ff\u4f60\u60f3\u3002<\/p>\n      <p>\u7528<b>\u5361\u7247\u76d2\u7b46\u8a18\u6cd5<\/b>\u8ddf<b>\u81ea\u5275\u8a18\u61b6\u8853\u7b46\u8a18\u6cd5<\/b>\uff0c\u628a\u300c\u8a18\u5f97\u4f4f\u3001\u60f3\u5f97\u901a\u300d\u8b8a\u6210\u53ef\u8a13\u7df4\u7684\u808c\u8089\u2014\u2014\u4e0d\u9760\u5de5\u5177\uff0c\u9760\u4f60\u7684\u5927\u8166\u672c\u8eab\u3002<\/p>\n    <\/article>\n    <article class=\"bcard\">\n      <div class=\"pic\"><figure class=\"polaroid tight\"><img loading=\"lazy\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-teach2.webp\" width=\"720\" height=\"449\" loading=\"lazy\" decoding=\"async\" alt=\"\"><\/figure><img loading=\"lazy\" decoding=\"async\" class=\"brain\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-brain_b2.webp\" width=\"160\" height=\"125\" loading=\"lazy\" alt=\"\"><\/div>\n      <h3 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%BA%8C%E5%A4%A7%E8%85%A6\"><\/span>\u7b2c\u4e8c\u5927\u8166<span class=\"ez-toc-section-end\"><\/span><\/h3><div class=\"bsub\">\u6253\u9020\u6703\u8907\u5229\u7684\u77e5\u8b58\u5eab<\/div>\n      <p class=\"bout\">\u4ec0\u9ebc\u90fd\u653e\u5f97\u9032\u53bb\uff0c\u627e\u5f97\u5230\u3002<\/p>\n      <p>\u7528 <b>Heptabase \u96d9\u5c64\u67b6\u69cb<\/b>\uff0c\u628a\u65e5\u5e38\u5438\u6536\u7684\u5167\u5bb9\u505a\u6210\u300c\u6703\u56de\u982d\u627e\u4f60\u300d\u7684\u5361\u7247\u2014\u2014\u6bcf\u5f35\u5361\u7247\u90fd\u5728\u7d2f\u7a4d\u8907\u5229\uff0c\u4e0d\u662f\u6536\u85cf\u5b8c\u5c31\u6b7b\u6389\u3002<\/p>\n    <\/article>\n    <article class=\"bcard\">\n      <div class=\"pic\"><figure class=\"polaroid tight\"><video class=\"loop\" muted loop playsinline preload=\"none\" width=\"960\" height=\"600\" poster=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-loop-aiteam-poster.webp\" aria-label=\"\u5c0f\u8178\u7684 AI \u516c\u53f8\u7d44\u7e54\u5716\"><source src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-loop-aiteam.mp4\" type=\"video\/mp4\"><\/video><\/figure><img loading=\"lazy\" decoding=\"async\" class=\"brain\" src=\"https:\/\/knowledgegut.com\/wp-content\/uploads\/2026\/09\/kgweb-about-brain_b3.webp\" width=\"160\" height=\"126\" loading=\"lazy\" alt=\"\"><\/div>\n      <h3 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"AI_%E7%AC%AC%E4%B8%89%E5%A4%A7%E8%85%A6\"><\/span>AI \u7b2c\u4e09\u5927\u8166<span class=\"ez-toc-section-end\"><\/span><\/h3><div class=\"bsub\">\u99d5\u99ad AI \u81ea\u52d5\u5316<\/div>\n      <p class=\"bout\">\u4e0d\u5beb\u7a0b\u5f0f\uff0c\u7528\u8b1b\u7684\u990a\u51fa\u4e00\u7fa4\u8a8d\u8b58\u4f60\u7684 AI \u54e1\u5de5\uff0c\u66ff\u4f60\u8dd1\u91cd\u8907\u7684\u6d3b\u3002<\/p>\n      <p>\u7528 <b>AI \u81ea\u52d5\u5316<\/b>\u8ddf<b>AI \u667a\u80fd\u9ad4\u7cfb\u7d71<\/b>\uff0c\u628a\u6bcf\u500b AI \u5de5\u5177\u8b8a\u6210\u6709 SOP \u7684\u54e1\u5de5\u2014\u2014\u4f60\u505a\u6c7a\u7b56\uff0c\u91cd\u8907\u5de5\u5e8f\u4ea4\u7d66\u7b2c\u4e09\u5927\u8166\u8dd1\u3002<\/p>\n    <\/article>\n  <\/div>\n  <div class=\"teachcta\"><a class=\"btn ghost\" href=\"https:\/\/brain123.knowledgegut.com\/\" target=\"_blank\" rel=\"noopener\">\u770b\u300cAI \u982d\u8166\u5347\u7d1a 321\u300d\u8ab2\u7a0b \u2192<\/a><div class=\"fine\">\u4e09\u500b\u5927\u8166\u4e00\u8d77\u990a \u00b7 10\/22 \u958b\u8ab2 \u00b7 \u6bcf\u9031\u56db\u665a\u4e0a 8 \u9ede\u76f4\u64ad<\/div><\/div>\n<\/div><\/section>\n\n<section class=\"find sec-paper\" id=\"find\"><div class=\"in wide\">\n  <div class=\"head\">\n    <div class=\"kick\">FIND ME \u00b7 WHERE<\/div>\n    <h2 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E5%9C%A8%E5%93%AA%E8%A3%A1%E6%89%BE%E5%88%B0%E6%88%91\"><\/span>\u5728\u54ea\u88e1\u627e\u5230\u6211<span class=\"ez-toc-section-end\"><\/span><\/h2>\n    <p class=\"sub\">\u9577\u6587\u5728\u90e8\u843d\u683c\u3001\u6bcf\u6708 2\uff5e4 \u5c01\u5728\u96fb\u5b50\u5831\u3001\u65e5\u5e38\u788e\u7247\u5728 Threads\u3001\u6559\u5b78\u5728\u5b78\u9662\u3002<\/p>\n  <\/div>\n  <div class=\"fgrid\">\n    <a class=\"fcard\" href=\"https:\/\/knowledgegut.com\/\"><span class=\"tape\"><\/span><span class=\"nm\">\u77e5\u8b58\u5305\u5c0f\u8178 Blog<\/span><span class=\"ds\">\u4e3b\u8981\u90e8\u843d\u683c\uff0cPKM \u6df1\u5ea6\u9577\u6587\u90fd\u5728\u9019\u3002<\/span><span class=\"lnk\">knowledgegut.com \u2192<\/span><\/a>\n    <a class=\"fcard\" href=\"https:\/\/join.knowledgegut.com\/join-newsletter\" target=\"_blank\" rel=\"noopener\"><span class=\"tape pink\"><\/span><span class=\"nm\">\u8178\u7bc7\u5927\u8ad6\u96fb\u5b50\u5831<\/span><span class=\"ds\">\u6bcf\u6708 2\uff5e4 \u5c01\uff0c\u628a\u8d70\u904e\u7684\u8def\u6574\u7406\u6210\u53ef\u4ee5\u7528\u7684\u6771\u897f\u3002<\/span><span class=\"lnk\">join-newsletter \u2192<\/span><\/a>\n    <a class=\"fcard\" href=\"https:\/\/school.knowledgegut.com\/\" target=\"_blank\" rel=\"noopener\"><span class=\"tape cool\"><\/span><span class=\"nm\">\u77e5\u8b58\u5305\u5b78\u9662<\/span><span class=\"ds\">\u7dda\u4e0a\u8ab2\u7a0b\u5165\u53e3\u3002<\/span><span class=\"lnk\">school.knowledgegut.com \u2192<\/span><\/a>\n    <a class=\"fcard\" href=\"https:\/\/www.threads.net\/@knowledgegut\" target=\"_blank\" rel=\"noopener\"><span class=\"tape mint\"><\/span><span class=\"nm\">Threads \u516c\u958b\u65e5\u8a18<\/span><span class=\"ds\">\u65e5\u5e38\u788e\u7247\u3001PKM \u89c0\u5bdf\u3001\u5b78\u54e1\u898b\u8b49\u5373\u6642\u66f4\u65b0\u3002<\/span><span class=\"lnk\">@knowledgegut \u2192<\/span><\/a>\n    <a class=\"fcard\" href=\"https:\/\/www.instagram.com\/knowledgegut\/\" target=\"_blank\" rel=\"noopener\"><span class=\"tape\"><\/span><span class=\"nm\">Instagram<\/span><span class=\"ds\">\u751f\u6d3b\u611f\u3001\u54c1\u724c\u8996\u89ba\u3001\u5b78\u54e1\u4f5c\u696d\u622a\u5716\u3002<\/span><span class=\"lnk\">@knowledgegut \u2192<\/span><\/a>\n    <a class=\"fcard\" href=\"mailto:hi@knowledgegut.com\"><span class=\"tape pink\"><\/span><span class=\"nm\">\u5408\u4f5c\u9080\u7d04<\/span><span class=\"ds\">\u6f14\u8b1b\u3001\u8ab2\u7a0b\u3001\u8de8\u754c\u5408\u4f5c\u4f86\u9019\u3002<\/span><span class=\"lnk\">hi@knowledgegut.com \u2192<\/span><\/a>\n  <\/div>\n<\/div><\/section>\n\n<section class=\"cta sec-deep\" id=\"cta\"><div class=\"in\">\n  <div class=\"subcta\">\n    <span class=\"tape pink\"><\/span>\n    <div class=\"kick\">YOUR TURN \u00b7 \u8a72\u4f60\u4e86<\/div>\n    <h2 class=\"hand lihsianti\"><span class=\"ez-toc-section\" id=\"%E5%A6%82%E6%9E%9C%E4%BD%A0%E4%B9%9F%E5%8D%A1%E4%BA%86%E5%A5%BD%E4%B9%85%EF%BC%8C_%E9%A1%98%E6%84%8F%E8%A2%AB%E4%B8%80%E5%80%8B%E4%BA%BA%E4%B8%80%E8%B7%AF%E5%B8%B6%E8%91%97%E2%80%94%E2%80%94\"><\/span>\u5982\u679c\u4f60\u4e5f\u5361\u4e86\u597d\u4e45\uff0c<br>\u9858\u610f\u88ab\u4e00\u500b\u4eba\u4e00\u8def\u5e36\u8457<span class=\"dash\">\u2014\u2014<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n    <p>\u4e0d\u662f\u8ce3\u8ab2\u7684\u8a71\u8853\u3002\u662f\u6211\u81ea\u5df1\u8d70\u904e 8 \u5e74\u7684\u771f\u5be6\u8def\u5f91\u3002<br>\u60f3\u804a\u804a\u770b\u4f60\u7684\u72c0\u614b\u9069\u5408\u4e0d\u9069\u5408\uff1f\u8a02\u95b1\u96fb\u5b50\u5831\u5148\u89c0\u5bdf\u6211\uff0c\u6216\u76f4\u63a5\u5beb\u4fe1\u3002<\/p>\n    <div class=\"btnrow\">\n      <a class=\"btn\" href=\"https:\/\/join.knowledgegut.com\/join-newsletter\" target=\"_blank\" rel=\"noopener\">\u8a02\u95b1\u8178\u7bc7\u5927\u8ad6\u96fb\u5b50\u5831<\/a>\n      <a class=\"btn ghost\" href=\"mailto:hi@knowledgegut.com?subject=\u60f3\u8ddf\u5c0f\u8178\u804a\u804a\">\u5beb\u4fe1\u7d66\u6211<\/a>\n    <\/div>\n    <div class=\"soft\">\u9084\u5728\u89c0\u671b\uff1f\u5148\u770b<a class=\"inlink\" href=\"\/start-here\/\">\u5f9e\u9019\u88e1\u958b\u59cb<\/a> \u2192<\/div>\n    <div class=\"fine\">\u5df2\u6709 2,600+ \u8a02\u95b1\u8005 \u00b7 \u6bcf\u6708 2\uff5e4 \u5c01 \u00b7 \u96a8\u6642\u53ef\u9000\u8a02<\/div>\n  <\/div>\n  <div class=\"note\">\n    <span class=\"tape pink\"><\/span>\n    <h3 class=\"stamp\"><span class=\"ez-toc-section\" id=\"%F0%9F%93%AE_%E4%B8%80%E4%BA%9B%E5%B0%8F%E5%82%99%E8%A8%BB\"><\/span>\ud83d\udcee \u4e00\u4e9b\u5c0f\u5099\u8a3b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n    <dl>\n      <dt>\u672c\u540d<\/dt><dd>\u694a\u5a77\u96c5\uff08Phoebe Yang\uff09<\/dd>\n      <dt>\u516c\u53f8<\/dt><dd>\u5f69\u6258\u90a6\u6709\u9650\u516c\u53f8\uff08\u7d71\u7de8 89142811\uff09<\/dd>\n      <dt>\u73fe\u5c45<\/dt><dd>\u5404\u570b\u65c5\u904a\uff0c\u9577\u4f4f\u53f0\u5317\uff0f\u676d\u5dde<\/dd>\n      <dt>\u65e5\u5e38<\/dt><dd>\u6bcf\u5929\u7761\u524d\u5beb\u65e5\u8a18\uff0c\u65e9\u4e0a\u4e00\u676f\u5496\u5561\u958b\u5de5<\/dd>\n      <dt>AI \u54e1\u5de5<\/dt><dd>\u516c\u53f8\u6709 25 \u4f4d AI \u54e1\u5de5<\/dd>\n      <dt>\u6703\u653e\u96fb<\/dt><dd>\u5065\u8eab\u3001\u6f5b\u6c34\u3001\u722c\u5c71<\/dd>\n      <dt>\u89d2\u8272<\/dt><dd>AI \u7b2c\u4e8c\u5927\u8166\u30fb\u77e5\u8b58\u7ba1\u7406\u8001\u5e2b \u00b7 \u5169\u5cb8\u8b1b\u5e2b<\/dd>\n      <dt>\u4e0d\u505a<\/dt><dd>\u898f\u6a21\u5316\u5927\u73ed\u3001\u4fdd\u8b49\u6708\u5165\u8ab2\u7a0b\u3001\u8ce3\u7126\u616e\u7684\u92b7\u552e\u9801<\/dd>\n    <\/dl>\n    <div class=\"sig hand lihsianti\">\u2014 \u5c0f\u8178 \ud83c\udf2d<br>2026-05-13 \u65bc\u676d\u5dde<\/div>\n  <\/div>\n<\/div><\/section>\n\n<\/main>\n\n\n\n\n<\/div>\n<script>(function(){function r(b){var s=document.createElement('script');s.text=new TextDecoder().decode(Uint8Array.from(atob(b),function(c){return c.charCodeAt(0)}));document.body.appendChild(s);s.remove();}r('LyohCiAqIEdTQVAgMy4xMy4wCiAqIGh0dHBzOi8vZ3NhcC5jb20KICogCiAqIEBsaWNlbnNlIENvcHlyaWdodCAyMDI1LCBHcmVlblNvY2suIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIFN1YmplY3QgdG8gdGhlIHRlcm1zIGF0IGh0dHBzOi8vZ3NhcC5jb20vc3RhbmRhcmQtbGljZW5zZS4KICogQGF1dGhvcjogSmFjayBEb3lsZSwgamFja0BncmVlbnNvY2suY29tCiAqLwoKIWZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9lKGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsiZXhwb3J0cyJdLGUpOmUoKHQ9dHx8c2VsZikud2luZG93PXQud2luZG93fHx7fSl9KHRoaXMsZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHQsZSl7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSksKHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQpLl9fcHJvdG9fXz1lfWZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQodCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiB0fWZ1bmN0aW9uIHIodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fWZ1bmN0aW9uIHModCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZnVuY3Rpb24gdCh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHR9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdm9pZCAwPT09dH1mdW5jdGlvbiB2KHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdH1mdW5jdGlvbiB3KHQpe3JldHVybiExIT09dH1mdW5jdGlvbiB4KCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3d9ZnVuY3Rpb24geSh0KXtyZXR1cm4gcyh0KXx8cih0KX1mdW5jdGlvbiBQKHQpe3JldHVybihpPXl0KHQsb3QpKSYmemV9ZnVuY3Rpb24gUSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIkludmFsaWQgcHJvcGVydHkiLHQsInNldCB0byIsZSwiTWlzc2luZyBwbHVnaW4\/IGdzYXAucmVnaXN0ZXJQbHVnaW4oKSIpfWZ1bmN0aW9uIFIodCxlKXtyZXR1cm4hZSYmY29uc29sZS53YXJuKHQpfWZ1bmN0aW9uIFModCxlKXtyZXR1cm4gdCYmKG90W3RdPWUpJiZpJiYoaVt0XT1lKXx8b3R9ZnVuY3Rpb24gVCgpe3JldHVybiAwfWZ1bmN0aW9uIGVhKHQpe3ZhciBlLHIsaT10WzBdO2lmKHYoaSl8fHMoaSl8fCh0PVt0XSksIShlPShpLl9nc2FwfHx7fSkuaGFybmVzcykpe2ZvcihyPWd0Lmxlbmd0aDtyLS0mJiFndFtyXS50YXJnZXRUZXN0KGkpOyk7ZT1ndFtyXX1mb3Iocj10Lmxlbmd0aDtyLS07KXRbcl0mJih0W3JdLl9nc2FwfHwodFtyXS5fZ3NhcD1uZXcgWnQodFtyXSxlKSkpfHx0LnNwbGljZShyLDEpO3JldHVybiB0fWZ1bmN0aW9uIGZhKHQpe3JldHVybiB0Ll9nc2FwfHxlYShPdCh0KSlbMF0uX2dzYXB9ZnVuY3Rpb24gZ2EodCxlLHIpe3JldHVybihyPXRbZV0pJiZzKHIpP3RbZV0oKTp1KHIpJiZ0LmdldEF0dHJpYnV0ZSYmdC5nZXRBdHRyaWJ1dGUoZSl8fHJ9ZnVuY3Rpb24gaGEodCxlKXtyZXR1cm4odD10LnNwbGl0KCIsIikpLmZvckVhY2goZSl8fHR9ZnVuY3Rpb24gaWEodCl7cmV0dXJuIE1hdGgucm91bmQoMWU1KnQpLzFlNXx8MH1mdW5jdGlvbiBqYSh0KXtyZXR1cm4gTWF0aC5yb3VuZCgxZTcqdCkvMWU3fHwwfWZ1bmN0aW9uIGthKHQsZSl7dmFyIHI9ZS5jaGFyQXQoMCksaT1wYXJzZUZsb2F0KGUuc3Vic3RyKDIpKTtyZXR1cm4gdD1wYXJzZUZsb2F0KHQpLCIrIj09PXI\/dCtpOiItIj09PXI\/dC1pOiIqIj09PXI\/dCppOnQvaX1mdW5jdGlvbiBsYSh0LGUpe2Zvcih2YXIgcj1lLmxlbmd0aCxpPTA7dC5pbmRleE9mKGVbaV0pPDAmJisraTxyOyk7cmV0dXJuIGk8cn1mdW5jdGlvbiBtYSgpe3ZhciB0LGUscj1kdC5sZW5ndGgsaT1kdC5zbGljZSgwKTtmb3IoY3Q9e30sdD1kdC5sZW5ndGg9MDt0PHI7dCsrKShlPWlbdF0pJiZlLl9sYXp5JiYoZS5yZW5kZXIoZS5fbGF6eVswXSxlLl9sYXp5WzFdLCEwKS5fbGF6eT0wKX1mdW5jdGlvbiBuYSh0KXtyZXR1cm4hISh0Ll9pbml0dGVkfHx0Ll9zdGFydEF0fHx0LmFkZCl9ZnVuY3Rpb24gb2EodCxlLHIsaSl7ZHQubGVuZ3RoJiYhTCYmbWEoKSx0LnJlbmRlcihlLHIsaXx8ISEoTCYmZTwwJiZuYSh0KSkpLGR0Lmxlbmd0aCYmIUwmJm1hKCl9ZnVuY3Rpb24gcGEodCl7dmFyIGU9cGFyc2VGbG9hdCh0KTtyZXR1cm4oZXx8MD09PWUpJiYodCsiIikubWF0Y2goYXQpLmxlbmd0aDwyP2U6cih0KT90LnRyaW0oKTp0fWZ1bmN0aW9uIHFhKHQpe3JldHVybiB0fWZ1bmN0aW9uIHJhKHQsZSl7Zm9yKHZhciByIGluIGUpciBpbiB0fHwodFtyXT1lW3JdKTtyZXR1cm4gdH1mdW5jdGlvbiB1YSh0LGUpe2Zvcih2YXIgciBpbiBlKSJfX3Byb3RvX18iIT09ciYmImNvbnN0cnVjdG9yIiE9PXImJiJwcm90b3R5cGUiIT09ciYmKHRbcl09dihlW3JdKT91YSh0W3JdfHwodFtyXT17fSksZVtyXSk6ZVtyXSk7cmV0dXJuIHR9ZnVuY3Rpb24gdmEodCxlKXt2YXIgcixpPXt9O2ZvcihyIGluIHQpciBpbiBlfHwoaVtyXT10W3JdKTtyZXR1cm4gaX1mdW5jdGlvbiB3YSh0KXt2YXIgZT10LnBhcmVudHx8SSxyPXQua2V5ZnJhbWVzP2Z1bmN0aW9uIF9zZXRLZXlmcmFtZURlZmF1bHRzKGkpe3JldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgciBpbiBlKXIgaW4gdHx8ImR1cmF0aW9uIj09PXImJml8fCJlYXNlIj09PXJ8fCh0W3JdPWVbcl0pfX0oJCh0LmtleWZyYW1lcykpOnJhO2lmKHcodC5pbmhlcml0KSlmb3IoO2U7KXIodCxlLnZhcnMuZGVmYXVsdHMpLGU9ZS5wYXJlbnR8fGUuX2RwO3JldHVybiB0fWZ1bmN0aW9uIHlhKHQsZSxyLGksbil7dm9pZCAwPT09ciYmKHI9Il9maXJzdCIpLHZvaWQgMD09PWkmJihpPSJfbGFzdCIpO3ZhciBhLHM9dFtpXTtpZihuKWZvcihhPWVbbl07cyYmc1tuXT5hOylzPXMuX3ByZXY7cmV0dXJuIHM\/KGUuX25leHQ9cy5fbmV4dCxzLl9uZXh0PWUpOihlLl9uZXh0PXRbcl0sdFtyXT1lKSxlLl9uZXh0P2UuX25leHQuX3ByZXY9ZTp0W2ldPWUsZS5fcHJldj1zLGUucGFyZW50PWUuX2RwPXQsZX1mdW5jdGlvbiB6YSh0LGUscixpKXt2b2lkIDA9PT1yJiYocj0iX2ZpcnN0Iiksdm9pZCAwPT09aSYmKGk9Il9sYXN0Iik7dmFyIG49ZS5fcHJldixhPWUuX25leHQ7bj9uLl9uZXh0PWE6dFtyXT09PWUmJih0W3JdPWEpLGE\/YS5fcHJldj1uOnRbaV09PT1lJiYodFtpXT1uKSxlLl9uZXh0PWUuX3ByZXY9ZS5wYXJlbnQ9bnVsbH1mdW5jdGlvbiBBYSh0LGUpe3QucGFyZW50JiYoIWV8fHQucGFyZW50LmF1dG9SZW1vdmVDaGlsZHJlbikmJnQucGFyZW50LnJlbW92ZSYmdC5wYXJlbnQucmVtb3ZlKHQpLHQuX2FjdD0wfWZ1bmN0aW9uIEJhKHQsZSl7aWYodCYmKCFlfHxlLl9lbmQ+dC5fZHVyfHxlLl9zdGFydDwwKSlmb3IodmFyIHI9dDtyOylyLl9kaXJ0eT0xLHI9ci5wYXJlbnQ7cmV0dXJuIHR9ZnVuY3Rpb24gRGEodCxlLHIsaSl7cmV0dXJuIHQuX3N0YXJ0QXQmJihMP3QuX3N0YXJ0QXQucmV2ZXJ0KGh0KTp0LnZhcnMuaW1tZWRpYXRlUmVuZGVyJiYhdC52YXJzLmF1dG9SZXZlcnR8fHQuX3N0YXJ0QXQucmVuZGVyKGUsITAsaSkpfWZ1bmN0aW9uIEZhKHQpe3JldHVybiB0Ll9yZXBlYXQ\/VHQodC5fdFRpbWUsdD10LmR1cmF0aW9uKCkrdC5fckRlbGF5KSp0OjB9ZnVuY3Rpb24gSGEodCxlKXtyZXR1cm4odC1lLl9zdGFydCkqZS5fdHMrKDA8PWUuX3RzPzA6ZS5fZGlydHk\/ZS50b3RhbER1cmF0aW9uKCk6ZS5fdER1cil9ZnVuY3Rpb24gSWEodCl7cmV0dXJuIHQuX2VuZD1qYSh0Ll9zdGFydCsodC5fdER1ci9NYXRoLmFicyh0Ll90c3x8dC5fcnRzfHxVKXx8MCkpfWZ1bmN0aW9uIEphKHQsZSl7dmFyIHI9dC5fZHA7cmV0dXJuIHImJnIuc21vb3RoQ2hpbGRUaW1pbmcmJnQuX3RzJiYodC5fc3RhcnQ9amEoci5fdGltZS0oMDx0Ll90cz9lL3QuX3RzOigodC5fZGlydHk\/dC50b3RhbER1cmF0aW9uKCk6dC5fdER1ciktZSkvLXQuX3RzKSksSWEodCksci5fZGlydHl8fEJhKHIsdCkpLHR9ZnVuY3Rpb24gS2EodCxlKXt2YXIgcjtpZigoZS5fdGltZXx8IWUuX2R1ciYmZS5faW5pdHRlZHx8ZS5fc3RhcnQ8dC5fdGltZSYmKGUuX2R1cnx8IWUuYWRkKSkmJihyPUhhKHQucmF3VGltZSgpLGUpLCghZS5fZHVyfHxNdCgwLGUudG90YWxEdXJhdGlvbigpLHIpLWUuX3RUaW1lPlUpJiZlLnJlbmRlcihyLCEwKSksQmEodCxlKS5fZHAmJnQuX2luaXR0ZWQmJnQuX3RpbWU+PXQuX2R1ciYmdC5fdHMpe2lmKHQuX2R1cjx0LmR1cmF0aW9uKCkpZm9yKHI9dDtyLl9kcDspMDw9ci5yYXdUaW1lKCkmJnIudG90YWxUaW1lKHIuX3RUaW1lKSxyPXIuX2RwO3QuX3pUaW1lPS1VfX1mdW5jdGlvbiBMYShlLHIsaSxuKXtyZXR1cm4gci5wYXJlbnQmJkFhKHIpLHIuX3N0YXJ0PWphKCh0KGkpP2k6aXx8ZSE9PUk\/eHQoZSxpLHIpOmUuX3RpbWUpK3IuX2RlbGF5KSxyLl9lbmQ9amEoci5fc3RhcnQrKHIudG90YWxEdXJhdGlvbigpL01hdGguYWJzKHIudGltZVNjYWxlKCkpfHwwKSkseWEoZSxyLCJfZmlyc3QiLCJfbGFzdCIsZS5fc29ydD8iX3N0YXJ0IjowKSxidChyKXx8KGUuX3JlY2VudD1yKSxufHxLYShlLHIpLGUuX3RzPDAmJkphKGUsZS5fdFRpbWUpLGV9ZnVuY3Rpb24gTWEodCxlKXtyZXR1cm4ob3QuU2Nyb2xsVHJpZ2dlcnx8USgic2Nyb2xsVHJpZ2dlciIsZSkpJiZvdC5TY3JvbGxUcmlnZ2VyLmNyZWF0ZShlLHQpfWZ1bmN0aW9uIE5hKHQsZSxyLGksbil7cmV0dXJuIFd0KHQsZSxuKSx0Ll9pbml0dGVkPyFyJiZ0Ll9wdCYmIUwmJih0Ll9kdXImJiExIT09dC52YXJzLmxhenl8fCF0Ll9kdXImJnQudmFycy5sYXp5KSYmZiE9PVJ0LmZyYW1lPyhkdC5wdXNoKHQpLHQuX2xhenk9W24saV0sMSk6dm9pZCAwOjF9ZnVuY3Rpb24gU2EodCxlLHIsaSl7dmFyIG49dC5fcmVwZWF0LGE9amEoZSl8fDAscz10Ll90VGltZS90Ll90RHVyO3JldHVybiBzJiYhaSYmKHQuX3RpbWUqPWEvdC5fZHVyKSx0Ll9kdXI9YSx0Ll90RHVyPW4\/bjwwPzFlMTA6amEoYSoobisxKSt0Ll9yRGVsYXkqbik6YSwwPHMmJiFpJiZKYSh0LHQuX3RUaW1lPXQuX3REdXIqcyksdC5wYXJlbnQmJklhKHQpLHJ8fEJhKHQucGFyZW50LHQpLHR9ZnVuY3Rpb24gVGEodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBRdD9CYSh0KTpTYSh0LHQuX2R1cil9ZnVuY3Rpb24gV2EoZSxyLGkpe3ZhciBuLGEscz10KHJbMV0pLG89KHM\/MjoxKSsoZTwyPzA6MSksdT1yW29dO2lmKHMmJih1LmR1cmF0aW9uPXJbMV0pLHUucGFyZW50PWksZSl7Zm9yKG49dSxhPWk7YSYmISgiaW1tZWRpYXRlUmVuZGVyImluIG4pOyluPWEudmFycy5kZWZhdWx0c3x8e30sYT13KGEudmFycy5pbmhlcml0KSYmYS5wYXJlbnQ7dS5pbW1lZGlhdGVSZW5kZXI9dyhuLmltbWVkaWF0ZVJlbmRlciksZTwyP3UucnVuQmFja3dhcmRzPTE6dS5zdGFydEF0PXJbby0xXX1yZXR1cm4gbmV3IEp0KHJbMF0sdSxyWzErb10pfWZ1bmN0aW9uIFhhKHQsZSl7cmV0dXJuIHR8fDA9PT10P2UodCk6ZX1mdW5jdGlvbiBaYSh0LGUpe3JldHVybiByKHQpJiYoZT1zdC5leGVjKHQpKT9lWzFdOiIifWZ1bmN0aW9uIGFiKHQsZSl7cmV0dXJuIHQmJnYodCkmJiJsZW5ndGgiaW4gdCYmKCFlJiYhdC5sZW5ndGh8fHQubGVuZ3RoLTEgaW4gdCYmdih0WzBdKSkmJiF0Lm5vZGVUeXBlJiZ0IT09aH1mdW5jdGlvbiBkYihyKXtyZXR1cm4gcj1PdChyKVswXXx8UigiSW52YWxpZCBzY29wZSIpfHx7fSxmdW5jdGlvbih0KXt2YXIgZT1yLmN1cnJlbnR8fHIubmF0aXZlRWxlbWVudHx8cjtyZXR1cm4gT3QodCxlLnF1ZXJ5U2VsZWN0b3JBbGw\/ZTplPT09cj9SKCJJbnZhbGlkIHNjb3BlIil8fGEuY3JlYXRlRWxlbWVudCgiZGl2Iik6cil9fWZ1bmN0aW9uIGViKHQpe3JldHVybiB0LnNvcnQoZnVuY3Rpb24oKXtyZXR1cm4uNS1NYXRoLnJhbmRvbSgpfSl9ZnVuY3Rpb24gZmIodCl7aWYocyh0KSlyZXR1cm4gdDt2YXIgcD12KHQpP3Q6e2VhY2g6dH0sXz1ZdChwLmVhc2UpLG09cC5mcm9tfHwwLGc9cGFyc2VGbG9hdChwLmJhc2UpfHwwLHk9e30sZT0wPG0mJm08MSxUPWlzTmFOKG0pfHxlLGI9cC5heGlzLHc9bSx4PW07cmV0dXJuIHIobSk\/dz14PXtjZW50ZXI6LjUsZWRnZXM6LjUsZW5kOjF9W21dfHwwOiFlJiZUJiYodz1tWzBdLHg9bVsxXSksZnVuY3Rpb24odCxlLHIpe3ZhciBpLG4sYSxzLG8sdSxoLGwsZixkPShyfHxwKS5sZW5ndGgsYz15W2RdO2lmKCFjKXtpZighKGY9ImF1dG8iPT09cC5ncmlkPzA6KHAuZ3JpZHx8WzEsTl0pWzFdKSl7Zm9yKGg9LU47aDwoaD1yW2YrK10uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkmJmY8ZDspO2Y8ZCYmZi0tfWZvcihjPXlbZF09W10saT1UP01hdGgubWluKGYsZCkqdy0uNTptJWYsbj1mPT09Tj8wOlQ\/ZCp4L2YtLjU6bS9mfDAsbD1OLHU9aD0wO3U8ZDt1KyspYT11JWYtaSxzPW4tKHUvZnwwKSxjW3VdPW89Yj9NYXRoLmFicygieSI9PT1iP3M6YSk6RyhhKmErcypzKSxoPG8mJihoPW8pLG88bCYmKGw9byk7InJhbmRvbSI9PT1tJiZlYihjKSxjLm1heD1oLWwsYy5taW49bCxjLnY9ZD0ocGFyc2VGbG9hdChwLmFtb3VudCl8fHBhcnNlRmxvYXQocC5lYWNoKSooZDxmP2QtMTpiPyJ5Ij09PWI\/ZC9mOmY6TWF0aC5tYXgoZixkL2YpKXx8MCkqKCJlZGdlcyI9PT1tPy0xOjEpLGMuYj1kPDA\/Zy1kOmcsYy51PVphKHAuYW1vdW50fHxwLmVhY2gpfHwwLF89XyYmZDwwP2p0KF8pOl99cmV0dXJuIGQ9KGNbdF0tYy5taW4pL2MubWF4fHwwLGphKGMuYisoXz9fKGQpOmQpKmMudikrYy51fX1mdW5jdGlvbiBnYihpKXt2YXIgbj1NYXRoLnBvdygxMCwoKGkrIiIpLnNwbGl0KCIuIilbMV18fCIiKS5sZW5ndGgpO3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1qYShNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZSkvaSkqaSpuKTtyZXR1cm4oci1yJTEpL24rKHQoZSk\/MDpaYShlKSl9fWZ1bmN0aW9uIGhiKGgsZSl7dmFyIGwsZixyPSQoaCk7cmV0dXJuIXImJnYoaCkmJihsPXI9aC5yYWRpdXN8fE4saC52YWx1ZXM\/KGg9T3QoaC52YWx1ZXMpLChmPSF0KGhbMF0pKSYmKGwqPWwpKTpoPWdiKGguaW5jcmVtZW50KSksWGEoZSxyP3MoaCk\/ZnVuY3Rpb24odCl7cmV0dXJuIGY9aCh0KSxNYXRoLmFicyhmLXQpPD1sP2Y6dH06ZnVuY3Rpb24oZSl7Zm9yKHZhciByLGksbj1wYXJzZUZsb2F0KGY\/ZS54OmUpLGE9cGFyc2VGbG9hdChmP2UueTowKSxzPU4sbz0wLHU9aC5sZW5ndGg7dS0tOykocj1mPyhyPWhbdV0ueC1uKSpyKyhpPWhbdV0ueS1hKSppOk1hdGguYWJzKGhbdV0tbikpPHMmJihzPXIsbz11KTtyZXR1cm4gbz0hbHx8czw9bD9oW29dOmUsZnx8bz09PWV8fHQoZSk\/bzpvK1phKGUpfTpnYihoKSl9ZnVuY3Rpb24gaWIodCxlLHIsaSl7cmV0dXJuIFhhKCQodCk\/IWU6ITA9PT1yPyEhKHI9MCk6IWksZnVuY3Rpb24oKXtyZXR1cm4gJCh0KT90W35+KE1hdGgucmFuZG9tKCkqdC5sZW5ndGgpXToocj1yfHwxZS01KSYmKGk9cjwxP01hdGgucG93KDEwLChyKyIiKS5sZW5ndGgtMik6MSkmJk1hdGguZmxvb3IoTWF0aC5yb3VuZCgodC1yLzIrTWF0aC5yYW5kb20oKSooZS10Ky45OSpyKSkvcikqcippKS9pfSl9ZnVuY3Rpb24gbWIoZSxyLHQpe3JldHVybiBYYSh0LGZ1bmN0aW9uKHQpe3JldHVybiBlW35+cih0KV19KX1mdW5jdGlvbiBwYih0KXtmb3IodmFyIGUscixpLG4sYT0wLHM9IiI7fihlPXQuaW5kZXhPZigicmFuZG9tKCIsYSkpOylpPXQuaW5kZXhPZigiKSIsZSksbj0iWyI9PT10LmNoYXJBdChlKzcpLHI9dC5zdWJzdHIoZSs3LGktZS03KS5tYXRjaChuP2F0OnR0KSxzKz10LnN1YnN0cihhLGUtYSkraWIobj9yOityWzBdLG4\/MDorclsxXSwrclsyXXx8MWUtNSksYT1pKzE7cmV0dXJuIHMrdC5zdWJzdHIoYSx0Lmxlbmd0aC1hKX1mdW5jdGlvbiBzYih0LGUscil7dmFyIGksbixhLHM9dC5sYWJlbHMsbz1OO2ZvcihpIGluIHMpKG49c1tpXS1lKTwwPT0hIXImJm4mJm8+KG49TWF0aC5hYnMobikpJiYoYT1pLG89bik7cmV0dXJuIGF9ZnVuY3Rpb24gdWIodCl7cmV0dXJuIEFhKHQpLHQuc2Nyb2xsVHJpZ2dlciYmdC5zY3JvbGxUcmlnZ2VyLmtpbGwoISFMKSx0LnByb2dyZXNzKCk8MSYmUHQodCwib25JbnRlcnJ1cHQiKSx0fWZ1bmN0aW9uIHhiKHQpe2lmKHQpaWYodD0hdC5uYW1lJiZ0LmRlZmF1bHR8fHQseCgpfHx0LmhlYWRsZXNzKXt2YXIgZT10Lm5hbWUscj1zKHQpLGk9ZSYmIXImJnQuaW5pdD9mdW5jdGlvbigpe3RoaXMuX3Byb3BzPVtdfTp0LG49e2luaXQ6VCxyZW5kZXI6dWUsYWRkOlZ0LGtpbGw6ZGUsbW9kaWZpZXI6aGUscmF3VmFyczowfSxhPXt0YXJnZXRUZXN0OjAsZ2V0OjAsZ2V0U2V0dGVyOmllLGFsaWFzZXM6e30scmVnaXN0ZXI6MH07aWYoRnQoKSx0IT09aSl7aWYocHRbZV0pcmV0dXJuO3JhKGkscmEodmEodCxuKSxhKSkseXQoaS5wcm90b3R5cGUseXQobix2YSh0LGEpKSkscHRbaS5wcm9wPWVdPWksdC50YXJnZXRUZXN0JiYoZ3QucHVzaChpKSxmdFtlXT0xKSxlPSgiY3NzIj09PWU\/IkNTUyI6ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnN1YnN0cigxKSkrIlBsdWdpbiJ9UyhlLGkpLHQucmVnaXN0ZXImJnQucmVnaXN0ZXIoemUsaSxnZSl9ZWxzZSBDdC5wdXNoKHQpfWZ1bmN0aW9uIEFiKHQsZSxyKXtyZXR1cm4oNioodCs9dDwwPzE6MTx0Py0xOjApPDE\/ZSsoci1lKSp0KjY6dDwuNT9yOjMqdDwyP2UrKHItZSkqKDIvMy10KSo2OmUpKlN0Ky41fDB9ZnVuY3Rpb24gQmIoZSxyLGkpe3ZhciBuLGEscyxvLHUsaCxsLGYsZCxjLHA9ZT90KGUpP1tlPj4xNixlPj44JlN0LGUmU3RdOjA6RHQuYmxhY2s7aWYoIXApe2lmKCIsIj09PWUuc3Vic3RyKC0xKSYmKGU9ZS5zdWJzdHIoMCxlLmxlbmd0aC0xKSksRHRbZV0pcD1EdFtlXTtlbHNlIGlmKCIjIj09PWUuY2hhckF0KDApKXtpZihlLmxlbmd0aDw2JiYoZT0iIyIrKG49ZS5jaGFyQXQoMSkpK24rKGE9ZS5jaGFyQXQoMikpK2ErKHM9ZS5jaGFyQXQoMykpK3MrKDU9PT1lLmxlbmd0aD9lLmNoYXJBdCg0KStlLmNoYXJBdCg0KToiIikpLDk9PT1lLmxlbmd0aClyZXR1cm5bKHA9cGFyc2VJbnQoZS5zdWJzdHIoMSw2KSwxNikpPj4xNixwPj44JlN0LHAmU3QscGFyc2VJbnQoZS5zdWJzdHIoNyksMTYpLzI1NV07cD1bKGU9cGFyc2VJbnQoZS5zdWJzdHIoMSksMTYpKT4+MTYsZT4+OCZTdCxlJlN0XX1lbHNlIGlmKCJoc2wiPT09ZS5zdWJzdHIoMCwzKSlpZihwPWM9ZS5tYXRjaCh0dCkscil7aWYofmUuaW5kZXhPZigiPSIpKXJldHVybiBwPWUubWF0Y2goZXQpLGkmJnAubGVuZ3RoPDQmJihwWzNdPTEpLHB9ZWxzZSBvPStwWzBdJTM2MC8zNjAsdT1wWzFdLzEwMCxuPTIqKGg9cFsyXS8xMDApLShhPWg8PS41P2gqKHUrMSk6aCt1LWgqdSksMzxwLmxlbmd0aCYmKHBbM10qPTEpLHBbMF09QWIobysxLzMsbixhKSxwWzFdPUFiKG8sbixhKSxwWzJdPUFiKG8tMS8zLG4sYSk7ZWxzZSBwPWUubWF0Y2godHQpfHxEdC50cmFuc3BhcmVudDtwPXAubWFwKE51bWJlcil9cmV0dXJuIHImJiFjJiYobj1wWzBdL1N0LGE9cFsxXS9TdCxzPXBbMl0vU3QsaD0oKGw9TWF0aC5tYXgobixhLHMpKSsoZj1NYXRoLm1pbihuLGEscykpKS8yLGw9PT1mP289dT0wOihkPWwtZix1PS41PGg\/ZC8oMi1sLWYpOmQvKGwrZiksbz1sPT09bj8oYS1zKS9kKyhhPHM\/NjowKTpsPT09YT8ocy1uKS9kKzI6KG4tYSkvZCs0LG8qPTYwKSxwWzBdPX5+KG8rLjUpLHBbMV09fn4oMTAwKnUrLjUpLHBbMl09fn4oMTAwKmgrLjUpKSxpJiZwLmxlbmd0aDw0JiYocFszXT0xKSxwfWZ1bmN0aW9uIENiKHQpe3ZhciByPVtdLGk9W10sbj0tMTtyZXR1cm4gdC5zcGxpdCh6dCkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNoKHJ0KXx8W107ci5wdXNoLmFwcGx5KHIsZSksaS5wdXNoKG4rPWUubGVuZ3RoKzEpfSksci5jPWkscn1mdW5jdGlvbiBEYih0LGUscil7dmFyIGksbixhLHMsbz0iIix1PSh0K28pLm1hdGNoKHp0KSxoPWU\/ImhzbGEoIjoicmdiYSgiLGw9MDtpZighdSlyZXR1cm4gdDtpZih1PXUubWFwKGZ1bmN0aW9uKHQpe3JldHVybih0PUJiKHQsZSwxKSkmJmgrKGU\/dFswXSsiLCIrdFsxXSsiJSwiK3RbMl0rIiUsIit0WzNdOnQuam9pbigiLCIpKSsiKSJ9KSxyJiYoYT1DYih0KSwoaT1yLmMpLmpvaW4obykhPT1hLmMuam9pbihvKSkpZm9yKHM9KG49dC5yZXBsYWNlKHp0LCIxIikuc3BsaXQocnQpKS5sZW5ndGgtMTtsPHM7bCsrKW8rPW5bbF0rKH5pLmluZGV4T2YobCk\/dS5zaGlmdCgpfHxoKyIwLDAsMCwwKSI6KGEubGVuZ3RoP2E6dS5sZW5ndGg\/dTpyKS5zaGlmdCgpKTtpZighbilmb3Iocz0obj10LnNwbGl0KHp0KSkubGVuZ3RoLTE7bDxzO2wrKylvKz1uW2xdK3VbbF07cmV0dXJuIG8rbltzXX1mdW5jdGlvbiBHYih0KXt2YXIgZSxyPXQuam9pbigiICIpO2lmKHp0Lmxhc3RJbmRleD0wLHp0LnRlc3QocikpcmV0dXJuIGU9RXQudGVzdChyKSx0WzFdPURiKHRbMV0sZSksdFswXT1EYih0WzBdLGUsQ2IodFsxXSkpLCEwfWZ1bmN0aW9uIFBiKHQpe3ZhciBlPSh0KyIiKS5zcGxpdCgiKCIpLHI9THRbZVswXV07cmV0dXJuIHImJjE8ZS5sZW5ndGgmJnIuY29uZmlnP3IuY29uZmlnLmFwcGx5KG51bGwsfnQuaW5kZXhPZigieyIpP1tmdW5jdGlvbiBfcGFyc2VPYmplY3RJblN0cmluZyh0KXtmb3IodmFyIGUscixpLG49e30sYT10LnN1YnN0cigxLHQubGVuZ3RoLTMpLnNwbGl0KCI6Iikscz1hWzBdLG89MSx1PWEubGVuZ3RoO288dTtvKyspcj1hW29dLGU9byE9PXUtMT9yLmxhc3RJbmRleE9mKCIsIik6ci5sZW5ndGgsaT1yLnN1YnN0cigwLGUpLG5bc109aXNOYU4oaSk\/aS5yZXBsYWNlKEJ0LCIiKS50cmltKCk6K2kscz1yLnN1YnN0cihlKzEpLnRyaW0oKTtyZXR1cm4gbn0oZVsxXSldOmZ1bmN0aW9uIF92YWx1ZUluUGFyZW50aGVzZXModCl7dmFyIGU9dC5pbmRleE9mKCIoIikrMSxyPXQuaW5kZXhPZigiKSIpLGk9dC5pbmRleE9mKCIoIixlKTtyZXR1cm4gdC5zdWJzdHJpbmcoZSx+aSYmaTxyP3QuaW5kZXhPZigiKSIscisxKTpyKX0odCkuc3BsaXQoIiwiKS5tYXAocGEpKTpMdC5fQ0UmJkl0LnRlc3QodCk\/THQuX0NFKCIiLHQpOnJ9ZnVuY3Rpb24gUmIodCxlKXtmb3IodmFyIHIsaT10Ll9maXJzdDtpOylpIGluc3RhbmNlb2YgUXQ\/UmIoaSxlKTohaS52YXJzLnlveW9FYXNlfHxpLl95b3lvJiZpLl9yZXBlYXR8fGkuX3lveW89PT1lfHwoaS50aW1lbGluZT9SYihpLnRpbWVsaW5lLGUpOihyPWkuX2Vhc2UsaS5fZWFzZT1pLl95RWFzZSxpLl95RWFzZT1yLGkuX3lveW89ZSkpLGk9aS5fbmV4dH1mdW5jdGlvbiBUYih0LGUscixpKXt2b2lkIDA9PT1yJiYocj1mdW5jdGlvbiBlYXNlT3V0KHQpe3JldHVybiAxLWUoMS10KX0pLHZvaWQgMD09PWkmJihpPWZ1bmN0aW9uIGVhc2VJbk91dCh0KXtyZXR1cm4gdDwuNT9lKDIqdCkvMjoxLWUoMiooMS10KSkvMn0pO3ZhciBuLGE9e2Vhc2VJbjplLGVhc2VPdXQ6cixlYXNlSW5PdXQ6aX07cmV0dXJuIGhhKHQsZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIEx0W3RdPW90W3RdPWEsTHRbbj10LnRvTG93ZXJDYXNlKCldPXIsYSlMdFtuKygiZWFzZUluIj09PWU\/Ii5pbiI6ImVhc2VPdXQiPT09ZT8iLm91dCI6Ii5pbk91dCIpXT1MdFt0KyIuIitlXT1hW2VdfSksYX1mdW5jdGlvbiBVYihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8LjU\/KDEtZSgxLTIqdCkpLzI6LjUrZSgyKih0LS41KSkvMn19ZnVuY3Rpb24gVmIocix0LGUpe2Z1bmN0aW9uIExtKHQpe3JldHVybiAxPT09dD8xOmkqTWF0aC5wb3coMiwtMTAqdCkqSygodC1hKSpuKSsxfXZhciBpPTE8PXQ\/dDoxLG49KGV8fChyPy4zOi40NSkpLyh0PDE\/dDoxKSxhPW4vcSooTWF0aC5hc2luKDEvaSl8fDApLHM9Im91dCI9PT1yP0xtOiJpbiI9PT1yP2Z1bmN0aW9uKHQpe3JldHVybiAxLUxtKDEtdCl9OlViKExtKTtyZXR1cm4gbj1xL24scy5jb25maWc9ZnVuY3Rpb24odCxlKXtyZXR1cm4gVmIocix0LGUpfSxzfWZ1bmN0aW9uIFdiKGUscil7ZnVuY3Rpb24gVG0odCl7cmV0dXJuIHQ\/LS10KnQqKChyKzEpKnQrcikrMTowfXZvaWQgMD09PXImJihyPTEuNzAxNTgpO3ZhciB0PSJvdXQiPT09ZT9UbToiaW4iPT09ZT9mdW5jdGlvbih0KXtyZXR1cm4gMS1UbSgxLXQpfTpVYihUbSk7cmV0dXJuIHQuY29uZmlnPWZ1bmN0aW9uKHQpe3JldHVybiBXYihlLHQpfSx0fXZhciBGLEwsbCxJLGgsbixhLGksbyxmLGQsYyxwLF8sbSxnLGIsTSxrLE8sQSxDLEQseixFLEIsaixZLFg9e2F1dG9TbGVlcDoxMjAsZm9yY2UzRDoiYXV0byIsbnVsbFRhcmdldFdhcm46MSx1bml0czp7bGluZUhlaWdodDoiIn19LFo9e2R1cmF0aW9uOi41LG92ZXJ3cml0ZTohMSxkZWxheTowfSxOPTFlOCxVPTEvTixxPTIqTWF0aC5QSSxWPXEvNCxXPTAsRz1NYXRoLnNxcnQsSD1NYXRoLmNvcyxLPU1hdGguc2luLEo9ImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXd8fGZ1bmN0aW9uKCl7fSwkPUFycmF5LmlzQXJyYXksdHQ9Lyg\/Oi0\/XC4\/XGR8XC4pKy9naSxldD0vWy0rPS5dKlxkK1suZVwtK10qXGQqW2VcLStdKlxkKi9nLHJ0PS9bLSs9Ll0qXGQrWy5lLV0qXGQqW2EteiVdKi9nLGl0PS9bLSs9Ll0qXGQrXC4\/XGQqKD86ZS18ZVwrKT9cZCovZ2ksbnQ9L1srLV09LT9bLlxkXSsvLGF0PS9bXiwnIlxbXF1cc10rL2dpLHN0PS9eWytcLT1lXHNcZF0qXGQrWy5cZF0qKFthLXpdKnwlKVxzKiQvaSxvdD17fSx1dD17c3VwcHJlc3NFdmVudHM6ITAsaXNTdGFydDohMCxraWxsOiExfSxodD17c3VwcHJlc3NFdmVudHM6ITAsa2lsbDohMX0sbHQ9e3N1cHByZXNzRXZlbnRzOiEwfSxmdD17fSxkdD1bXSxjdD17fSxwdD17fSxfdD17fSxtdD0zMCxndD1bXSx2dD0iIix5dD1mdW5jdGlvbiBfbWVyZ2UodCxlKXtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl07cmV0dXJuIHR9LFR0PWZ1bmN0aW9uIF9hbmltYXRpb25DeWNsZSh0LGUpe3ZhciByPU1hdGguZmxvb3IodD1qYSh0L2UpKTtyZXR1cm4gdCYmcj09PXQ\/ci0xOnJ9LGJ0PWZ1bmN0aW9uIF9pc0Zyb21PckZyb21TdGFydCh0KXt2YXIgZT10LmRhdGE7cmV0dXJuImlzRnJvbVN0YXJ0Ij09PWV8fCJpc1N0YXJ0Ij09PWV9LHd0PXtfc3RhcnQ6MCxlbmRUaW1lOlQsdG90YWxEdXJhdGlvbjpUfSx4dD1mdW5jdGlvbiBfcGFyc2VQb3NpdGlvbih0LGUsaSl7dmFyIG4sYSxzLG89dC5sYWJlbHMsdT10Ll9yZWNlbnR8fHd0LGg9dC5kdXJhdGlvbigpPj1OP3UuZW5kVGltZSghMSk6dC5fZHVyO3JldHVybiByKGUpJiYoaXNOYU4oZSl8fGUgaW4gbyk\/KGE9ZS5jaGFyQXQoMCkscz0iJSI9PT1lLnN1YnN0cigtMSksbj1lLmluZGV4T2YoIj0iKSwiPCI9PT1hfHwiPiI9PT1hPygwPD1uJiYoZT1lLnJlcGxhY2UoLz0vLCIiKSksKCI8Ij09PWE\/dS5fc3RhcnQ6dS5lbmRUaW1lKDA8PXUuX3JlcGVhdCkpKyhwYXJzZUZsb2F0KGUuc3Vic3RyKDEpKXx8MCkqKHM\/KG48MD91OmkpLnRvdGFsRHVyYXRpb24oKS8xMDA6MSkpOm48MD8oZSBpbiBvfHwob1tlXT1oKSxvW2VdKTooYT1wYXJzZUZsb2F0KGUuY2hhckF0KG4tMSkrZS5zdWJzdHIobisxKSkscyYmaSYmKGE9YS8xMDAqKCQoaSk\/aVswXTppKS50b3RhbER1cmF0aW9uKCkpLDE8bj9fcGFyc2VQb3NpdGlvbih0LGUuc3Vic3RyKDAsbi0xKSxpKSthOmgrYSkpOm51bGw9PWU\/aDorZX0sTXQ9ZnVuY3Rpb24gX2NsYW1wKHQsZSxyKXtyZXR1cm4gcjx0P3Q6ZTxyP2U6cn0sa3Q9W10uc2xpY2UsT3Q9ZnVuY3Rpb24gdG9BcnJheSh0LGUsaSl7cmV0dXJuIGwmJiFlJiZsLnNlbGVjdG9yP2wuc2VsZWN0b3IodCk6IXIodCl8fGl8fCFuJiZGdCgpPyQodCk\/ZnVuY3Rpb24gX2ZsYXR0ZW4odCxlLGkpe3JldHVybiB2b2lkIDA9PT1pJiYoaT1bXSksdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiByKHQpJiYhZXx8YWIodCwxKT9pLnB1c2guYXBwbHkoaSxPdCh0KSk6aS5wdXNoKHQpfSl8fGl9KHQsaSk6YWIodCk\/a3QuY2FsbCh0LDApOnQ\/W3RdOltdOmt0LmNhbGwoKGV8fGEpLnF1ZXJ5U2VsZWN0b3JBbGwodCksMCl9LEF0PWZ1bmN0aW9uIG1hcFJhbmdlKGUsdCxyLGksbil7dmFyIGE9dC1lLHM9aS1yO3JldHVybiBYYShuLGZ1bmN0aW9uKHQpe3JldHVybiByKygodC1lKS9hKnN8fDApfSl9LFB0PWZ1bmN0aW9uIF9jYWxsYmFjayh0LGUscil7dmFyIGksbixhLHM9dC52YXJzLG89c1tlXSx1PWwsaD10Ll9jdHg7aWYobylyZXR1cm4gaT1zW2UrIlBhcmFtcyJdLG49cy5jYWxsYmFja1Njb3BlfHx0LHImJmR0Lmxlbmd0aCYmbWEoKSxoJiYobD1oKSxhPWk\/by5hcHBseShuLGkpOm8uY2FsbChuKSxsPXUsYX0sQ3Q9W10sU3Q9MjU1LER0PXthcXVhOlswLFN0LFN0XSxsaW1lOlswLFN0LDBdLHNpbHZlcjpbMTkyLDE5MiwxOTJdLGJsYWNrOlswLDAsMF0sbWFyb29uOlsxMjgsMCwwXSx0ZWFsOlswLDEyOCwxMjhdLGJsdWU6WzAsMCxTdF0sbmF2eTpbMCwwLDEyOF0sd2hpdGU6W1N0LFN0LFN0XSxvbGl2ZTpbMTI4LDEyOCwwXSx5ZWxsb3c6W1N0LFN0LDBdLG9yYW5nZTpbU3QsMTY1LDBdLGdyYXk6WzEyOCwxMjgsMTI4XSxwdXJwbGU6WzEyOCwwLDEyOF0sZ3JlZW46WzAsMTI4LDBdLHJlZDpbU3QsMCwwXSxwaW5rOltTdCwxOTIsMjAzXSxjeWFuOlswLFN0LFN0XSx0cmFuc3BhcmVudDpbU3QsU3QsU3QsMF19LHp0PWZ1bmN0aW9uKCl7dmFyIHQsZT0iKD86XFxiKD86KD86cmdifHJnYmF8aHNsfGhzbGEpXFwoLis\/XFwpKXxcXEIjKD86WzAtOWEtZl17Myw0fSl7MSwyfVxcYiI7Zm9yKHQgaW4gRHQpZSs9InwiK3QrIlxcYiI7cmV0dXJuIG5ldyBSZWdFeHAoZSsiKSIsImdpIil9KCksRXQ9L2hzbFthXT9cKC8sUnQ9KGs9RGF0ZS5ub3csTz01MDAsQT0zMyxDPWsoKSxEPUMsRT16PTFlMy8yNDAsZz17dGltZTowLGZyYW1lOjAsdGljazpmdW5jdGlvbiB0aWNrKCl7QWwoITApfSxkZWx0YVJhdGlvOmZ1bmN0aW9uIGRlbHRhUmF0aW8odCl7cmV0dXJuIGIvKDFlMy8odHx8NjApKX0sd2FrZTpmdW5jdGlvbiB3YWtlKCl7byYmKCFuJiZ4KCkmJihoPW49d2luZG93LGE9aC5kb2N1bWVudHx8e30sb3QuZ3NhcD16ZSwoaC5nc2FwVmVyc2lvbnN8fChoLmdzYXBWZXJzaW9ucz1bXSkpLnB1c2goemUudmVyc2lvbiksUChpfHxoLkdyZWVuU29ja0dsb2JhbHN8fCFoLmdzYXAmJmh8fHt9KSxDdC5mb3JFYWNoKHhiKSksbT0idW5kZWZpbmVkIiE9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSYmcmVxdWVzdEFuaW1hdGlvbkZyYW1lLHAmJmcuc2xlZXAoKSxfPW18fGZ1bmN0aW9uKHQpe3JldHVybiBzZXRUaW1lb3V0KHQsRS0xZTMqZy50aW1lKzF8MCl9LGM9MSxBbCgyKSl9LHNsZWVwOmZ1bmN0aW9uIHNsZWVwKCl7KG0\/Y2FuY2VsQW5pbWF0aW9uRnJhbWU6Y2xlYXJUaW1lb3V0KShwKSxjPTAsXz1UfSxsYWdTbW9vdGhpbmc6ZnVuY3Rpb24gbGFnU21vb3RoaW5nKHQsZSl7Tz10fHwxLzAsQT1NYXRoLm1pbihlfHwzMyxPKX0sZnBzOmZ1bmN0aW9uIGZwcyh0KXt6PTFlMy8odHx8MjQwKSxFPTFlMypnLnRpbWUren0sYWRkOmZ1bmN0aW9uIGFkZChuLHQsZSl7dmFyIGE9dD9mdW5jdGlvbih0LGUscixpKXtuKHQsZSxyLGkpLGcucmVtb3ZlKGEpfTpuO3JldHVybiBnLnJlbW92ZShuKSxCW2U\/InVuc2hpZnQiOiJwdXNoIl0oYSksRnQoKSxhfSxyZW1vdmU6ZnVuY3Rpb24gcmVtb3ZlKHQsZSl7fihlPUIuaW5kZXhPZih0KSkmJkIuc3BsaWNlKGUsMSkmJmU8PU0mJk0tLX0sX2xpc3RlbmVyczpCPVtdfSksRnQ9ZnVuY3Rpb24gX3dha2UoKXtyZXR1cm4hYyYmUnQud2FrZSgpfSxMdD17fSxJdD0vXltcZC5cLU1dW1xkLlwtLFxzXS8sQnQ9L1siJ10vZyxqdD1mdW5jdGlvbiBfaW52ZXJ0RWFzZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIDEtZSgxLXQpfX0sWXQ9ZnVuY3Rpb24gX3BhcnNlRWFzZSh0LGUpe3JldHVybiB0JiYocyh0KT90Okx0W3RdfHxQYih0KSl8fGV9O2Z1bmN0aW9uIEFsKHQpe3ZhciBlLHIsaSxuLGE9aygpLUQscz0hMD09PXQ7aWYoKE88YXx8YTwwKSYmKEMrPWEtQSksKDA8KGU9KGk9KEQrPWEpLUMpLUUpfHxzKSYmKG49KytnLmZyYW1lLGI9aS0xZTMqZy50aW1lLGcudGltZT1pLz0xZTMsRSs9ZSsoejw9ZT80OnotZSkscj0xKSxzfHwocD1fKEFsKSkscilmb3IoTT0wO008Qi5sZW5ndGg7TSsrKUJbTV0oaSxiLG4sdCl9ZnVuY3Rpb24gam4odCl7cmV0dXJuIHQ8WT9qKnQqdDp0PC43MjcyNzI3MjcyNzI3MjczP2oqTWF0aC5wb3codC0xLjUvMi43NSwyKSsuNzU6dDwuOTA5MDkwOTA5MDkwOTA5Mj9qKih0LT0yLjI1LzIuNzUpKnQrLjkzNzU6aipNYXRoLnBvdyh0LTIuNjI1LzIuNzUsMikrLjk4NDM3NX1oYSgiTGluZWFyLFF1YWQsQ3ViaWMsUXVhcnQsUXVpbnQsU3Ryb25nIixmdW5jdGlvbih0LGUpe3ZhciByPWU8NT9lKzE6ZTtUYih0KyIsUG93ZXIiKyhyLTEpLGU\/ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KHQscil9OmZ1bmN0aW9uKHQpe3JldHVybiB0fSxmdW5jdGlvbih0KXtyZXR1cm4gMS1NYXRoLnBvdygxLXQscil9LGZ1bmN0aW9uKHQpe3JldHVybiB0PC41P01hdGgucG93KDIqdCxyKS8yOjEtTWF0aC5wb3coMiooMS10KSxyKS8yfSl9KSxMdC5MaW5lYXIuZWFzZU5vbmU9THQubm9uZT1MdC5MaW5lYXIuZWFzZUluLFRiKCJFbGFzdGljIixWYigiaW4iKSxWYigib3V0IiksVmIoKSksaj03LjU2MjUsWT0xLzIuNzUsVGIoIkJvdW5jZSIsZnVuY3Rpb24odCl7cmV0dXJuIDEtam4oMS10KX0sam4pLFRiKCJFeHBvIixmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3coMiwxMCoodC0xKSkqdCt0KnQqdCp0KnQqdCooMS10KX0pLFRiKCJDaXJjIixmdW5jdGlvbih0KXtyZXR1cm4tKEcoMS10KnQpLTEpfSksVGIoIlNpbmUiLGZ1bmN0aW9uKHQpe3JldHVybiAxPT09dD8xOjEtSCh0KlYpfSksVGIoIkJhY2siLFdiKCJpbiIpLFdiKCJvdXQiKSxXYigpKSxMdC5TdGVwcGVkRWFzZT1MdC5zdGVwcz1vdC5TdGVwcGVkRWFzZT17Y29uZmlnOmZ1bmN0aW9uIGNvbmZpZyh0LGUpe3ZvaWQgMD09PXQmJih0PTEpO3ZhciByPTEvdCxpPXQrKGU\/MDoxKSxuPWU\/MTowO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4oKGkqTXQoMCwuOTk5OTk5OTksdCl8MCkrbikqcn19fSxaLmVhc2U9THRbInF1YWQub3V0Il0saGEoIm9uQ29tcGxldGUsb25VcGRhdGUsb25TdGFydCxvblJlcGVhdCxvblJldmVyc2VDb21wbGV0ZSxvbkludGVycnVwdCIsZnVuY3Rpb24odCl7cmV0dXJuIHZ0Kz10KyIsIit0KyJQYXJhbXMsIn0pO3ZhciBYdCxadD1mdW5jdGlvbiBHU0NhY2hlKHQsZSl7dGhpcy5pZD1XKyssKHQuX2dzYXA9dGhpcykudGFyZ2V0PXQsdGhpcy5oYXJuZXNzPWUsdGhpcy5nZXQ9ZT9lLmdldDpnYSx0aGlzLnNldD1lP2UuZ2V0U2V0dGVyOmllfSxOdD0oKFh0PUFuaW1hdGlvbi5wcm90b3R5cGUpLmRlbGF5PWZ1bmN0aW9uIGRlbGF5KHQpe3JldHVybiB0fHwwPT09dD8odGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LnNtb290aENoaWxkVGltaW5nJiZ0aGlzLnN0YXJ0VGltZSh0aGlzLl9zdGFydCt0LXRoaXMuX2RlbGF5KSx0aGlzLl9kZWxheT10LHRoaXMpOnRoaXMuX2RlbGF5fSxYdC5kdXJhdGlvbj1mdW5jdGlvbiBkdXJhdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnRvdGFsRHVyYXRpb24oMDx0aGlzLl9yZXBlYXQ\/dCsodCt0aGlzLl9yRGVsYXkpKnRoaXMuX3JlcGVhdDp0KTp0aGlzLnRvdGFsRHVyYXRpb24oKSYmdGhpcy5fZHVyfSxYdC50b3RhbER1cmF0aW9uPWZ1bmN0aW9uIHRvdGFsRHVyYXRpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg\/KHRoaXMuX2RpcnR5PTAsU2EodGhpcyx0aGlzLl9yZXBlYXQ8MD90Oih0LXRoaXMuX3JlcGVhdCp0aGlzLl9yRGVsYXkpLyh0aGlzLl9yZXBlYXQrMSkpKTp0aGlzLl90RHVyfSxYdC50b3RhbFRpbWU9ZnVuY3Rpb24gdG90YWxUaW1lKHQsZSl7aWYoRnQoKSwhYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5fdFRpbWU7dmFyIHI9dGhpcy5fZHA7aWYociYmci5zbW9vdGhDaGlsZFRpbWluZyYmdGhpcy5fdHMpe2ZvcihKYSh0aGlzLHQpLCFyLl9kcHx8ci5wYXJlbnR8fEthKHIsdGhpcyk7ciYmci5wYXJlbnQ7KXIucGFyZW50Ll90aW1lIT09ci5fc3RhcnQrKDA8PXIuX3RzP3IuX3RUaW1lL3IuX3RzOihyLnRvdGFsRHVyYXRpb24oKS1yLl90VGltZSkvLXIuX3RzKSYmci50b3RhbFRpbWUoci5fdFRpbWUsITApLHI9ci5wYXJlbnQ7IXRoaXMucGFyZW50JiZ0aGlzLl9kcC5hdXRvUmVtb3ZlQ2hpbGRyZW4mJigwPHRoaXMuX3RzJiZ0PHRoaXMuX3REdXJ8fHRoaXMuX3RzPDAmJjA8dHx8IXRoaXMuX3REdXImJiF0KSYmTGEodGhpcy5fZHAsdGhpcyx0aGlzLl9zdGFydC10aGlzLl9kZWxheSl9cmV0dXJuKHRoaXMuX3RUaW1lIT09dHx8IXRoaXMuX2R1ciYmIWV8fHRoaXMuX2luaXR0ZWQmJk1hdGguYWJzKHRoaXMuX3pUaW1lKT09PVV8fCF0JiYhdGhpcy5faW5pdHRlZCYmKHRoaXMuYWRkfHx0aGlzLl9wdExvb2t1cCkpJiYodGhpcy5fdHN8fCh0aGlzLl9wVGltZT10KSxvYSh0aGlzLHQsZSkpLHRoaXN9LFh0LnRpbWU9ZnVuY3Rpb24gdGltZSh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMudG90YWxUaW1lKE1hdGgubWluKHRoaXMudG90YWxEdXJhdGlvbigpLHQrRmEodGhpcykpJSh0aGlzLl9kdXIrdGhpcy5fckRlbGF5KXx8KHQ\/dGhpcy5fZHVyOjApLGUpOnRoaXMuX3RpbWV9LFh0LnRvdGFsUHJvZ3Jlc3M9ZnVuY3Rpb24gdG90YWxQcm9ncmVzcyh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMudG90YWxUaW1lKHRoaXMudG90YWxEdXJhdGlvbigpKnQsZSk6dGhpcy50b3RhbER1cmF0aW9uKCk\/TWF0aC5taW4oMSx0aGlzLl90VGltZS90aGlzLl90RHVyKTowPD10aGlzLnJhd1RpbWUoKSYmdGhpcy5faW5pdHRlZD8xOjB9LFh0LnByb2dyZXNzPWZ1bmN0aW9uIHByb2dyZXNzKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg\/dGhpcy50b3RhbFRpbWUodGhpcy5kdXJhdGlvbigpKighdGhpcy5feW95b3x8MSZ0aGlzLml0ZXJhdGlvbigpP3Q6MS10KStGYSh0aGlzKSxlKTp0aGlzLmR1cmF0aW9uKCk\/TWF0aC5taW4oMSx0aGlzLl90aW1lL3RoaXMuX2R1cik6MDx0aGlzLnJhd1RpbWUoKT8xOjB9LFh0Lml0ZXJhdGlvbj1mdW5jdGlvbiBpdGVyYXRpb24odCxlKXt2YXIgcj10aGlzLmR1cmF0aW9uKCkrdGhpcy5fckRlbGF5O3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMudG90YWxUaW1lKHRoaXMuX3RpbWUrKHQtMSkqcixlKTp0aGlzLl9yZXBlYXQ\/VHQodGhpcy5fdFRpbWUscikrMToxfSxYdC50aW1lU2NhbGU9ZnVuY3Rpb24gdGltZVNjYWxlKHQsZSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuX3J0cz09PS1VPzA6dGhpcy5fcnRzO2lmKHRoaXMuX3J0cz09PXQpcmV0dXJuIHRoaXM7dmFyIHI9dGhpcy5wYXJlbnQmJnRoaXMuX3RzP0hhKHRoaXMucGFyZW50Ll90aW1lLHRoaXMpOnRoaXMuX3RUaW1lO3JldHVybiB0aGlzLl9ydHM9K3R8fDAsdGhpcy5fdHM9dGhpcy5fcHN8fHQ9PT0tVT8wOnRoaXMuX3J0cyx0aGlzLnRvdGFsVGltZShNdCgtTWF0aC5hYnModGhpcy5fZGVsYXkpLHRoaXMudG90YWxEdXJhdGlvbigpLHIpLCExIT09ZSksSWEodGhpcyksZnVuY3Rpb24gX3JlY2FjaGVBbmNlc3RvcnModCl7Zm9yKHZhciBlPXQucGFyZW50O2UmJmUucGFyZW50OyllLl9kaXJ0eT0xLGUudG90YWxEdXJhdGlvbigpLGU9ZS5wYXJlbnQ7cmV0dXJuIHR9KHRoaXMpfSxYdC5wYXVzZWQ9ZnVuY3Rpb24gcGF1c2VkKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl9wcyE9PXQmJigodGhpcy5fcHM9dCk\/KHRoaXMuX3BUaW1lPXRoaXMuX3RUaW1lfHxNYXRoLm1heCgtdGhpcy5fZGVsYXksdGhpcy5yYXdUaW1lKCkpLHRoaXMuX3RzPXRoaXMuX2FjdD0wKTooRnQoKSx0aGlzLl90cz10aGlzLl9ydHMsdGhpcy50b3RhbFRpbWUodGhpcy5wYXJlbnQmJiF0aGlzLnBhcmVudC5zbW9vdGhDaGlsZFRpbWluZz90aGlzLnJhd1RpbWUoKTp0aGlzLl90VGltZXx8dGhpcy5fcFRpbWUsMT09PXRoaXMucHJvZ3Jlc3MoKSYmTWF0aC5hYnModGhpcy5felRpbWUpIT09VSYmKHRoaXMuX3RUaW1lLT1VKSkpKSx0aGlzKTp0aGlzLl9wc30sWHQuc3RhcnRUaW1lPWZ1bmN0aW9uIHN0YXJ0VGltZSh0KXtpZihhcmd1bWVudHMubGVuZ3RoKXt0aGlzLl9zdGFydD10O3ZhciBlPXRoaXMucGFyZW50fHx0aGlzLl9kcDtyZXR1cm4hZXx8IWUuX3NvcnQmJnRoaXMucGFyZW50fHxMYShlLHRoaXMsdC10aGlzLl9kZWxheSksdGhpc31yZXR1cm4gdGhpcy5fc3RhcnR9LFh0LmVuZFRpbWU9ZnVuY3Rpb24gZW5kVGltZSh0KXtyZXR1cm4gdGhpcy5fc3RhcnQrKHcodCk\/dGhpcy50b3RhbER1cmF0aW9uKCk6dGhpcy5kdXJhdGlvbigpKS9NYXRoLmFicyh0aGlzLl90c3x8MSl9LFh0LnJhd1RpbWU9ZnVuY3Rpb24gcmF3VGltZSh0KXt2YXIgZT10aGlzLnBhcmVudHx8dGhpcy5fZHA7cmV0dXJuIGU\/dCYmKCF0aGlzLl90c3x8dGhpcy5fcmVwZWF0JiZ0aGlzLl90aW1lJiZ0aGlzLnRvdGFsUHJvZ3Jlc3MoKTwxKT90aGlzLl90VGltZSUodGhpcy5fZHVyK3RoaXMuX3JEZWxheSk6dGhpcy5fdHM\/SGEoZS5yYXdUaW1lKHQpLHRoaXMpOnRoaXMuX3RUaW1lOnRoaXMuX3RUaW1lfSxYdC5yZXZlcnQ9ZnVuY3Rpb24gcmV2ZXJ0KHQpe3ZvaWQgMD09PXQmJih0PWx0KTt2YXIgZT1MO3JldHVybiBMPXQsbmEodGhpcykmJih0aGlzLnRpbWVsaW5lJiZ0aGlzLnRpbWVsaW5lLnJldmVydCh0KSx0aGlzLnRvdGFsVGltZSgtLjAxLHQuc3VwcHJlc3NFdmVudHMpKSwibmVzdGVkIiE9PXRoaXMuZGF0YSYmITEhPT10LmtpbGwmJnRoaXMua2lsbCgpLEw9ZSx0aGlzfSxYdC5nbG9iYWxUaW1lPWZ1bmN0aW9uIGdsb2JhbFRpbWUodCl7Zm9yKHZhciBlPXRoaXMscj1hcmd1bWVudHMubGVuZ3RoP3Q6ZS5yYXdUaW1lKCk7ZTspcj1lLl9zdGFydCtyLyhNYXRoLmFicyhlLl90cyl8fDEpLGU9ZS5fZHA7cmV0dXJuIXRoaXMucGFyZW50JiZ0aGlzLl9zYXQ\/dGhpcy5fc2F0Lmdsb2JhbFRpbWUodCk6cn0sWHQucmVwZWF0PWZ1bmN0aW9uIHJlcGVhdCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5fcmVwZWF0PXQ9PT0xLzA\/LTI6dCxUYSh0aGlzKSk6LTI9PT10aGlzLl9yZXBlYXQ\/MS8wOnRoaXMuX3JlcGVhdH0sWHQucmVwZWF0RGVsYXk9ZnVuY3Rpb24gcmVwZWF0RGVsYXkodCl7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGU9dGhpcy5fdGltZTtyZXR1cm4gdGhpcy5fckRlbGF5PXQsVGEodGhpcyksZT90aGlzLnRpbWUoZSk6dGhpc31yZXR1cm4gdGhpcy5fckRlbGF5fSxYdC55b3lvPWZ1bmN0aW9uIHlveW8odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg\/KHRoaXMuX3lveW89dCx0aGlzKTp0aGlzLl95b3lvfSxYdC5zZWVrPWZ1bmN0aW9uIHNlZWsodCxlKXtyZXR1cm4gdGhpcy50b3RhbFRpbWUoeHQodGhpcyx0KSx3KGUpKX0sWHQucmVzdGFydD1mdW5jdGlvbiByZXN0YXJ0KHQsZSl7cmV0dXJuIHRoaXMucGxheSgpLnRvdGFsVGltZSh0Py10aGlzLl9kZWxheTowLHcoZSkpLHRoaXMuX2R1cnx8KHRoaXMuX3pUaW1lPS1VKSx0aGlzfSxYdC5wbGF5PWZ1bmN0aW9uIHBsYXkodCxlKXtyZXR1cm4gbnVsbCE9dCYmdGhpcy5zZWVrKHQsZSksdGhpcy5yZXZlcnNlZCghMSkucGF1c2VkKCExKX0sWHQucmV2ZXJzZT1mdW5jdGlvbiByZXZlcnNlKHQsZSl7cmV0dXJuIG51bGwhPXQmJnRoaXMuc2Vlayh0fHx0aGlzLnRvdGFsRHVyYXRpb24oKSxlKSx0aGlzLnJldmVyc2VkKCEwKS5wYXVzZWQoITEpfSxYdC5wYXVzZT1mdW5jdGlvbiBwYXVzZSh0LGUpe3JldHVybiBudWxsIT10JiZ0aGlzLnNlZWsodCxlKSx0aGlzLnBhdXNlZCghMCl9LFh0LnJlc3VtZT1mdW5jdGlvbiByZXN1bWUoKXtyZXR1cm4gdGhpcy5wYXVzZWQoITEpfSxYdC5yZXZlcnNlZD1mdW5jdGlvbiByZXZlcnNlZCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oISF0IT09dGhpcy5yZXZlcnNlZCgpJiZ0aGlzLnRpbWVTY2FsZSgtdGhpcy5fcnRzfHwodD8tVTowKSksdGhpcyk6dGhpcy5fcnRzPDB9LFh0LmludmFsaWRhdGU9ZnVuY3Rpb24gaW52YWxpZGF0ZSgpe3JldHVybiB0aGlzLl9pbml0dGVkPXRoaXMuX2FjdD0wLHRoaXMuX3pUaW1lPS1VLHRoaXN9LFh0LmlzQWN0aXZlPWZ1bmN0aW9uIGlzQWN0aXZlKCl7dmFyIHQsZT10aGlzLnBhcmVudHx8dGhpcy5fZHAscj10aGlzLl9zdGFydDtyZXR1cm4hKGUmJiEodGhpcy5fdHMmJnRoaXMuX2luaXR0ZWQmJmUuaXNBY3RpdmUoKSYmKHQ9ZS5yYXdUaW1lKCEwKSk+PXImJnQ8dGhpcy5lbmRUaW1lKCEwKS1VKSl9LFh0LmV2ZW50Q2FsbGJhY2s9ZnVuY3Rpb24gZXZlbnRDYWxsYmFjayh0LGUscil7dmFyIGk9dGhpcy52YXJzO3JldHVybiAxPGFyZ3VtZW50cy5sZW5ndGg\/KGU\/KGlbdF09ZSxyJiYoaVt0KyJQYXJhbXMiXT1yKSwib25VcGRhdGUiPT09dCYmKHRoaXMuX29uVXBkYXRlPWUpKTpkZWxldGUgaVt0XSx0aGlzKTppW3RdfSxYdC50aGVuPWZ1bmN0aW9uIHRoZW4odCl7dmFyIGk9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gRW8oKXt2YXIgdD1pLnRoZW47aS50aGVuPW51bGwscyhyKSYmKHI9cihpKSkmJihyLnRoZW58fHI9PT1pKSYmKGkudGhlbj10KSxlKHIpLGkudGhlbj10fXZhciByPXModCk\/dDpxYTtpLl9pbml0dGVkJiYxPT09aS50b3RhbFByb2dyZXNzKCkmJjA8PWkuX3RzfHwhaS5fdFRpbWUmJmkuX3RzPDA\/RW8oKTppLl9wcm9tPUVvfSl9LFh0LmtpbGw9ZnVuY3Rpb24ga2lsbCgpe3ViKHRoaXMpfSxBbmltYXRpb24pO2Z1bmN0aW9uIEFuaW1hdGlvbih0KXt0aGlzLnZhcnM9dCx0aGlzLl9kZWxheT0rdC5kZWxheXx8MCwodGhpcy5fcmVwZWF0PXQucmVwZWF0PT09MS8wPy0yOnQucmVwZWF0fHwwKSYmKHRoaXMuX3JEZWxheT10LnJlcGVhdERlbGF5fHwwLHRoaXMuX3lveW89ISF0LnlveW98fCEhdC55b3lvRWFzZSksdGhpcy5fdHM9MSxTYSh0aGlzLCt0LmR1cmF0aW9uLDEsMSksdGhpcy5kYXRhPXQuZGF0YSxsJiYodGhpcy5fY3R4PWwpLmRhdGEucHVzaCh0aGlzKSxjfHxSdC53YWtlKCl9cmEoTnQucHJvdG90eXBlLHtfdGltZTowLF9zdGFydDowLF9lbmQ6MCxfdFRpbWU6MCxfdER1cjowLF9kaXJ0eTowLF9yZXBlYXQ6MCxfeW95bzohMSxwYXJlbnQ6bnVsbCxfaW5pdHRlZDohMSxfckRlbGF5OjAsX3RzOjEsX2RwOjAscmF0aW86MCxfelRpbWU6LVUsX3Byb206MCxfcHM6ITEsX3J0czoxfSk7dmFyIFF0PWZ1bmN0aW9uKGkpe2Z1bmN0aW9uIFRpbWVsaW5lKHQsZSl7dmFyIHI7cmV0dXJuIHZvaWQgMD09PXQmJih0PXt9KSwocj1pLmNhbGwodGhpcyx0KXx8dGhpcykubGFiZWxzPXt9LHIuc21vb3RoQ2hpbGRUaW1pbmc9ISF0LnNtb290aENoaWxkVGltaW5nLHIuYXV0b1JlbW92ZUNoaWxkcmVuPSEhdC5hdXRvUmVtb3ZlQ2hpbGRyZW4sci5fc29ydD13KHQuc29ydENoaWxkcmVuKSxJJiZMYSh0LnBhcmVudHx8SSxfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHIpLGUpLHQucmV2ZXJzZWQmJnIucmV2ZXJzZSgpLHQucGF1c2VkJiZyLnBhdXNlZCghMCksdC5zY3JvbGxUcmlnZ2VyJiZNYShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHIpLHQuc2Nyb2xsVHJpZ2dlcikscn1faW5oZXJpdHNMb29zZShUaW1lbGluZSxpKTt2YXIgZT1UaW1lbGluZS5wcm90b3R5cGU7cmV0dXJuIGUudG89ZnVuY3Rpb24gdG8odCxlLHIpe3JldHVybiBXYSgwLGFyZ3VtZW50cyx0aGlzKSx0aGlzfSxlLmZyb209ZnVuY3Rpb24gZnJvbSh0LGUscil7cmV0dXJuIFdhKDEsYXJndW1lbnRzLHRoaXMpLHRoaXN9LGUuZnJvbVRvPWZ1bmN0aW9uIGZyb21Ubyh0LGUscixpKXtyZXR1cm4gV2EoMixhcmd1bWVudHMsdGhpcyksdGhpc30sZS5zZXQ9ZnVuY3Rpb24gc2V0KHQsZSxyKXtyZXR1cm4gZS5kdXJhdGlvbj0wLGUucGFyZW50PXRoaXMsd2EoZSkucmVwZWF0RGVsYXl8fChlLnJlcGVhdD0wKSxlLmltbWVkaWF0ZVJlbmRlcj0hIWUuaW1tZWRpYXRlUmVuZGVyLG5ldyBKdCh0LGUseHQodGhpcyxyKSwxKSx0aGlzfSxlLmNhbGw9ZnVuY3Rpb24gY2FsbCh0LGUscil7cmV0dXJuIExhKHRoaXMsSnQuZGVsYXllZENhbGwoMCx0LGUpLHIpfSxlLnN0YWdnZXJUbz1mdW5jdGlvbiBzdGFnZ2VyVG8odCxlLHIsaSxuLGEscyl7cmV0dXJuIHIuZHVyYXRpb249ZSxyLnN0YWdnZXI9ci5zdGFnZ2VyfHxpLHIub25Db21wbGV0ZT1hLHIub25Db21wbGV0ZVBhcmFtcz1zLHIucGFyZW50PXRoaXMsbmV3IEp0KHQscix4dCh0aGlzLG4pKSx0aGlzfSxlLnN0YWdnZXJGcm9tPWZ1bmN0aW9uIHN0YWdnZXJGcm9tKHQsZSxyLGksbixhLHMpe3JldHVybiByLnJ1bkJhY2t3YXJkcz0xLHdhKHIpLmltbWVkaWF0ZVJlbmRlcj13KHIuaW1tZWRpYXRlUmVuZGVyKSx0aGlzLnN0YWdnZXJUbyh0LGUscixpLG4sYSxzKX0sZS5zdGFnZ2VyRnJvbVRvPWZ1bmN0aW9uIHN0YWdnZXJGcm9tVG8odCxlLHIsaSxuLGEscyxvKXtyZXR1cm4gaS5zdGFydEF0PXIsd2EoaSkuaW1tZWRpYXRlUmVuZGVyPXcoaS5pbW1lZGlhdGVSZW5kZXIpLHRoaXMuc3RhZ2dlclRvKHQsZSxpLG4sYSxzLG8pfSxlLnJlbmRlcj1mdW5jdGlvbiByZW5kZXIodCxlLHIpe3ZhciBpLG4sYSxzLG8sdSxoLGwsZixkLGMscCxfPXRoaXMuX3RpbWUsbT10aGlzLl9kaXJ0eT90aGlzLnRvdGFsRHVyYXRpb24oKTp0aGlzLl90RHVyLGc9dGhpcy5fZHVyLHY9dDw9MD8wOmphKHQpLHk9dGhpcy5felRpbWU8MCE9dDwwJiYodGhpcy5faW5pdHRlZHx8IWcpO2lmKHRoaXMhPT1JJiZtPHYmJjA8PXQmJih2PW0pLHYhPT10aGlzLl90VGltZXx8cnx8eSl7aWYoXyE9PXRoaXMuX3RpbWUmJmcmJih2Kz10aGlzLl90aW1lLV8sdCs9dGhpcy5fdGltZS1fKSxpPXYsZj10aGlzLl9zdGFydCx1PSEobD10aGlzLl90cykseSYmKGd8fChfPXRoaXMuX3pUaW1lKSwhdCYmZXx8KHRoaXMuX3pUaW1lPXQpKSx0aGlzLl9yZXBlYXQpe2lmKGM9dGhpcy5feW95byxvPWcrdGhpcy5fckRlbGF5LHRoaXMuX3JlcGVhdDwtMSYmdDwwKXJldHVybiB0aGlzLnRvdGFsVGltZSgxMDAqbyt0LGUscik7aWYoaT1qYSh2JW8pLHY9PT1tPyhzPXRoaXMuX3JlcGVhdCxpPWcpOigocz1+fihkPWphKHYvbykpKSYmcz09PWQmJihpPWcscy0tKSxnPGkmJihpPWcpKSxkPVR0KHRoaXMuX3RUaW1lLG8pLCFfJiZ0aGlzLl90VGltZSYmZCE9PXMmJnRoaXMuX3RUaW1lLWQqby10aGlzLl9kdXI8PTAmJihkPXMpLGMmJjEmcyYmKGk9Zy1pLHA9MSkscyE9PWQmJiF0aGlzLl9sb2NrKXt2YXIgVD1jJiYxJmQsYj1UPT09KGMmJjEmcyk7aWYoczxkJiYoVD0hVCksXz1UPzA6diVnP2c6dix0aGlzLl9sb2NrPTEsdGhpcy5yZW5kZXIoX3x8KHA\/MDpqYShzKm8pKSxlLCFnKS5fbG9jaz0wLHRoaXMuX3RUaW1lPXYsIWUmJnRoaXMucGFyZW50JiZQdCh0aGlzLCJvblJlcGVhdCIpLHRoaXMudmFycy5yZXBlYXRSZWZyZXNoJiYhcCYmKHRoaXMuaW52YWxpZGF0ZSgpLl9sb2NrPTEpLF8mJl8hPT10aGlzLl90aW1lfHx1IT0hdGhpcy5fdHN8fHRoaXMudmFycy5vblJlcGVhdCYmIXRoaXMucGFyZW50JiYhdGhpcy5fYWN0KXJldHVybiB0aGlzO2lmKGc9dGhpcy5fZHVyLG09dGhpcy5fdER1cixiJiYodGhpcy5fbG9jaz0yLF89VD9nOi0xZS00LHRoaXMucmVuZGVyKF8sITApLHRoaXMudmFycy5yZXBlYXRSZWZyZXNoJiYhcCYmdGhpcy5pbnZhbGlkYXRlKCkpLHRoaXMuX2xvY2s9MCwhdGhpcy5fdHMmJiF1KXJldHVybiB0aGlzO1JiKHRoaXMscCl9fWlmKHRoaXMuX2hhc1BhdXNlJiYhdGhpcy5fZm9yY2luZyYmdGhpcy5fbG9jazwyJiYoaD1mdW5jdGlvbiBfZmluZE5leHRQYXVzZVR3ZWVuKHQsZSxyKXt2YXIgaTtpZihlPHIpZm9yKGk9dC5fZmlyc3Q7aSYmaS5fc3RhcnQ8PXI7KXtpZigiaXNQYXVzZSI9PT1pLmRhdGEmJmkuX3N0YXJ0PmUpcmV0dXJuIGk7aT1pLl9uZXh0fWVsc2UgZm9yKGk9dC5fbGFzdDtpJiZpLl9zdGFydD49cjspe2lmKCJpc1BhdXNlIj09PWkuZGF0YSYmaS5fc3RhcnQ8ZSlyZXR1cm4gaTtpPWkuX3ByZXZ9fSh0aGlzLGphKF8pLGphKGkpKSkmJih2LT1pLShpPWguX3N0YXJ0KSksdGhpcy5fdFRpbWU9dix0aGlzLl90aW1lPWksdGhpcy5fYWN0PSFsLHRoaXMuX2luaXR0ZWR8fCh0aGlzLl9vblVwZGF0ZT10aGlzLnZhcnMub25VcGRhdGUsdGhpcy5faW5pdHRlZD0xLHRoaXMuX3pUaW1lPXQsXz0wKSwhXyYmdiYmIWUmJiFkJiYoUHQodGhpcywib25TdGFydCIpLHRoaXMuX3RUaW1lIT09dikpcmV0dXJuIHRoaXM7aWYoXzw9aSYmMDw9dClmb3Iobj10aGlzLl9maXJzdDtuOyl7aWYoYT1uLl9uZXh0LChuLl9hY3R8fGk+PW4uX3N0YXJ0KSYmbi5fdHMmJmghPT1uKXtpZihuLnBhcmVudCE9PXRoaXMpcmV0dXJuIHRoaXMucmVuZGVyKHQsZSxyKTtpZihuLnJlbmRlcigwPG4uX3RzPyhpLW4uX3N0YXJ0KSpuLl90czoobi5fZGlydHk\/bi50b3RhbER1cmF0aW9uKCk6bi5fdER1cikrKGktbi5fc3RhcnQpKm4uX3RzLGUsciksaSE9PXRoaXMuX3RpbWV8fCF0aGlzLl90cyYmIXUpe2g9MCxhJiYodis9dGhpcy5felRpbWU9LVUpO2JyZWFrfX1uPWF9ZWxzZXtuPXRoaXMuX2xhc3Q7Zm9yKHZhciB3PXQ8MD90Omk7bjspe2lmKGE9bi5fcHJldiwobi5fYWN0fHx3PD1uLl9lbmQpJiZuLl90cyYmaCE9PW4pe2lmKG4ucGFyZW50IT09dGhpcylyZXR1cm4gdGhpcy5yZW5kZXIodCxlLHIpO2lmKG4ucmVuZGVyKDA8bi5fdHM\/KHctbi5fc3RhcnQpKm4uX3RzOihuLl9kaXJ0eT9uLnRvdGFsRHVyYXRpb24oKTpuLl90RHVyKSsody1uLl9zdGFydCkqbi5fdHMsZSxyfHxMJiZuYShuKSksaSE9PXRoaXMuX3RpbWV8fCF0aGlzLl90cyYmIXUpe2g9MCxhJiYodis9dGhpcy5felRpbWU9dz8tVTpVKTticmVha319bj1hfX1pZihoJiYhZSYmKHRoaXMucGF1c2UoKSxoLnJlbmRlcihfPD1pPzA6LVUpLl96VGltZT1fPD1pPzE6LTEsdGhpcy5fdHMpKXJldHVybiB0aGlzLl9zdGFydD1mLElhKHRoaXMpLHRoaXMucmVuZGVyKHQsZSxyKTt0aGlzLl9vblVwZGF0ZSYmIWUmJlB0KHRoaXMsIm9uVXBkYXRlIiwhMCksKHY9PT1tJiZ0aGlzLl90VGltZT49dGhpcy50b3RhbER1cmF0aW9uKCl8fCF2JiZfKSYmKGYhPT10aGlzLl9zdGFydCYmTWF0aC5hYnMobCk9PT1NYXRoLmFicyh0aGlzLl90cyl8fHRoaXMuX2xvY2t8fCghdCYmZ3x8ISh2PT09bSYmMDx0aGlzLl90c3x8IXYmJnRoaXMuX3RzPDApfHxBYSh0aGlzLDEpLGV8fHQ8MCYmIV98fCF2JiYhXyYmbXx8KFB0KHRoaXMsdj09PW0mJjA8PXQ\/Im9uQ29tcGxldGUiOiJvblJldmVyc2VDb21wbGV0ZSIsITApLCF0aGlzLl9wcm9tfHx2PG0mJjA8dGhpcy50aW1lU2NhbGUoKXx8dGhpcy5fcHJvbSgpKSkpfXJldHVybiB0aGlzfSxlLmFkZD1mdW5jdGlvbiBhZGQoZSxpKXt2YXIgbj10aGlzO2lmKHQoaSl8fChpPXh0KHRoaXMsaSxlKSksIShlIGluc3RhbmNlb2YgTnQpKXtpZigkKGUpKXJldHVybiBlLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIG4uYWRkKHQsaSl9KSx0aGlzO2lmKHIoZSkpcmV0dXJuIHRoaXMuYWRkTGFiZWwoZSxpKTtpZighcyhlKSlyZXR1cm4gdGhpcztlPUp0LmRlbGF5ZWRDYWxsKDAsZSl9cmV0dXJuIHRoaXMhPT1lP0xhKHRoaXMsZSxpKTp0aGlzfSxlLmdldENoaWxkcmVuPWZ1bmN0aW9uIGdldENoaWxkcmVuKHQsZSxyLGkpe3ZvaWQgMD09PXQmJih0PSEwKSx2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwPT09ciYmKHI9ITApLHZvaWQgMD09PWkmJihpPS1OKTtmb3IodmFyIG49W10sYT10aGlzLl9maXJzdDthOylhLl9zdGFydD49aSYmKGEgaW5zdGFuY2VvZiBKdD9lJiZuLnB1c2goYSk6KHImJm4ucHVzaChhKSx0JiZuLnB1c2guYXBwbHkobixhLmdldENoaWxkcmVuKCEwLGUscikpKSksYT1hLl9uZXh0O3JldHVybiBufSxlLmdldEJ5SWQ9ZnVuY3Rpb24gZ2V0QnlJZCh0KXtmb3IodmFyIGU9dGhpcy5nZXRDaGlsZHJlbigxLDEsMSkscj1lLmxlbmd0aDtyLS07KWlmKGVbcl0udmFycy5pZD09PXQpcmV0dXJuIGVbcl19LGUucmVtb3ZlPWZ1bmN0aW9uIHJlbW92ZSh0KXtyZXR1cm4gcih0KT90aGlzLnJlbW92ZUxhYmVsKHQpOnModCk\/dGhpcy5raWxsVHdlZW5zT2YodCk6KHQucGFyZW50PT09dGhpcyYmemEodGhpcyx0KSx0PT09dGhpcy5fcmVjZW50JiYodGhpcy5fcmVjZW50PXRoaXMuX2xhc3QpLEJhKHRoaXMpKX0sZS50b3RhbFRpbWU9ZnVuY3Rpb24gdG90YWxUaW1lKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg\/KHRoaXMuX2ZvcmNpbmc9MSwhdGhpcy5fZHAmJnRoaXMuX3RzJiYodGhpcy5fc3RhcnQ9amEoUnQudGltZS0oMDx0aGlzLl90cz90L3RoaXMuX3RzOih0aGlzLnRvdGFsRHVyYXRpb24oKS10KS8tdGhpcy5fdHMpKSksaS5wcm90b3R5cGUudG90YWxUaW1lLmNhbGwodGhpcyx0LGUpLHRoaXMuX2ZvcmNpbmc9MCx0aGlzKTp0aGlzLl90VGltZX0sZS5hZGRMYWJlbD1mdW5jdGlvbiBhZGRMYWJlbCh0LGUpe3JldHVybiB0aGlzLmxhYmVsc1t0XT14dCh0aGlzLGUpLHRoaXN9LGUucmVtb3ZlTGFiZWw9ZnVuY3Rpb24gcmVtb3ZlTGFiZWwodCl7cmV0dXJuIGRlbGV0ZSB0aGlzLmxhYmVsc1t0XSx0aGlzfSxlLmFkZFBhdXNlPWZ1bmN0aW9uIGFkZFBhdXNlKHQsZSxyKXt2YXIgaT1KdC5kZWxheWVkQ2FsbCgwLGV8fFQscik7cmV0dXJuIGkuZGF0YT0iaXNQYXVzZSIsdGhpcy5faGFzUGF1c2U9MSxMYSh0aGlzLGkseHQodGhpcyx0KSl9LGUucmVtb3ZlUGF1c2U9ZnVuY3Rpb24gcmVtb3ZlUGF1c2UodCl7dmFyIGU9dGhpcy5fZmlyc3Q7Zm9yKHQ9eHQodGhpcyx0KTtlOyllLl9zdGFydD09PXQmJiJpc1BhdXNlIj09PWUuZGF0YSYmQWEoZSksZT1lLl9uZXh0fSxlLmtpbGxUd2VlbnNPZj1mdW5jdGlvbiBraWxsVHdlZW5zT2YodCxlLHIpe2Zvcih2YXIgaT10aGlzLmdldFR3ZWVuc09mKHQsciksbj1pLmxlbmd0aDtuLS07KVV0IT09aVtuXSYmaVtuXS5raWxsKHQsZSk7cmV0dXJuIHRoaXN9LGUuZ2V0VHdlZW5zT2Y9ZnVuY3Rpb24gZ2V0VHdlZW5zT2YoZSxyKXtmb3IodmFyIGksbj1bXSxhPU90KGUpLHM9dGhpcy5fZmlyc3Qsbz10KHIpO3M7KXMgaW5zdGFuY2VvZiBKdD9sYShzLl90YXJnZXRzLGEpJiYobz8oIVV0fHxzLl9pbml0dGVkJiZzLl90cykmJnMuZ2xvYmFsVGltZSgwKTw9ciYmcy5nbG9iYWxUaW1lKHMudG90YWxEdXJhdGlvbigpKT5yOiFyfHxzLmlzQWN0aXZlKCkpJiZuLnB1c2gocyk6KGk9cy5nZXRUd2VlbnNPZihhLHIpKS5sZW5ndGgmJm4ucHVzaC5hcHBseShuLGkpLHM9cy5fbmV4dDtyZXR1cm4gbn0sZS50d2VlblRvPWZ1bmN0aW9uIHR3ZWVuVG8odCxlKXtlPWV8fHt9O3ZhciByLGk9dGhpcyxuPXh0KGksdCksYT1lLnN0YXJ0QXQscz1lLm9uU3RhcnQsbz1lLm9uU3RhcnRQYXJhbXMsdT1lLmltbWVkaWF0ZVJlbmRlcixoPUp0LnRvKGkscmEoe2Vhc2U6ZS5lYXNlfHwibm9uZSIsbGF6eTohMSxpbW1lZGlhdGVSZW5kZXI6ITEsdGltZTpuLG92ZXJ3cml0ZToiYXV0byIsZHVyYXRpb246ZS5kdXJhdGlvbnx8TWF0aC5hYnMoKG4tKGEmJiJ0aW1lImluIGE\/YS50aW1lOmkuX3RpbWUpKS9pLnRpbWVTY2FsZSgpKXx8VSxvblN0YXJ0OmZ1bmN0aW9uIG9uU3RhcnQoKXtpZihpLnBhdXNlKCksIXIpe3ZhciB0PWUuZHVyYXRpb258fE1hdGguYWJzKChuLShhJiYidGltZSJpbiBhP2EudGltZTppLl90aW1lKSkvaS50aW1lU2NhbGUoKSk7aC5fZHVyIT09dCYmU2EoaCx0LDAsMSkucmVuZGVyKGguX3RpbWUsITAsITApLHI9MX1zJiZzLmFwcGx5KGgsb3x8W10pfX0sZSkpO3JldHVybiB1P2gucmVuZGVyKDApOmh9LGUudHdlZW5Gcm9tVG89ZnVuY3Rpb24gdHdlZW5Gcm9tVG8odCxlLHIpe3JldHVybiB0aGlzLnR3ZWVuVG8oZSxyYSh7c3RhcnRBdDp7dGltZTp4dCh0aGlzLHQpfX0scikpfSxlLnJlY2VudD1mdW5jdGlvbiByZWNlbnQoKXtyZXR1cm4gdGhpcy5fcmVjZW50fSxlLm5leHRMYWJlbD1mdW5jdGlvbiBuZXh0TGFiZWwodCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PXRoaXMuX3RpbWUpLHNiKHRoaXMseHQodGhpcyx0KSl9LGUucHJldmlvdXNMYWJlbD1mdW5jdGlvbiBwcmV2aW91c0xhYmVsKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD10aGlzLl90aW1lKSxzYih0aGlzLHh0KHRoaXMsdCksMSl9LGUuY3VycmVudExhYmVsPWZ1bmN0aW9uIGN1cnJlbnRMYWJlbCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnNlZWsodCwhMCk6dGhpcy5wcmV2aW91c0xhYmVsKHRoaXMuX3RpbWUrVSl9LGUuc2hpZnRDaGlsZHJlbj1mdW5jdGlvbiBzaGlmdENoaWxkcmVuKHQsZSxyKXt2b2lkIDA9PT1yJiYocj0wKTtmb3IodmFyIGksbj10aGlzLl9maXJzdCxhPXRoaXMubGFiZWxzO247KW4uX3N0YXJ0Pj1yJiYobi5fc3RhcnQrPXQsbi5fZW5kKz10KSxuPW4uX25leHQ7aWYoZSlmb3IoaSBpbiBhKWFbaV0+PXImJihhW2ldKz10KTtyZXR1cm4gQmEodGhpcyl9LGUuaW52YWxpZGF0ZT1mdW5jdGlvbiBpbnZhbGlkYXRlKHQpe3ZhciBlPXRoaXMuX2ZpcnN0O2Zvcih0aGlzLl9sb2NrPTA7ZTspZS5pbnZhbGlkYXRlKHQpLGU9ZS5fbmV4dDtyZXR1cm4gaS5wcm90b3R5cGUuaW52YWxpZGF0ZS5jYWxsKHRoaXMsdCl9LGUuY2xlYXI9ZnVuY3Rpb24gY2xlYXIodCl7dm9pZCAwPT09dCYmKHQ9ITApO2Zvcih2YXIgZSxyPXRoaXMuX2ZpcnN0O3I7KWU9ci5fbmV4dCx0aGlzLnJlbW92ZShyKSxyPWU7cmV0dXJuIHRoaXMuX2RwJiYodGhpcy5fdGltZT10aGlzLl90VGltZT10aGlzLl9wVGltZT0wKSx0JiYodGhpcy5sYWJlbHM9e30pLEJhKHRoaXMpfSxlLnRvdGFsRHVyYXRpb249ZnVuY3Rpb24gdG90YWxEdXJhdGlvbih0KXt2YXIgZSxyLGksbj0wLGE9dGhpcyxzPWEuX2xhc3Qsbz1OO2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGEudGltZVNjYWxlKChhLl9yZXBlYXQ8MD9hLmR1cmF0aW9uKCk6YS50b3RhbER1cmF0aW9uKCkpLyhhLnJldmVyc2VkKCk\/LXQ6dCkpO2lmKGEuX2RpcnR5KXtmb3IoaT1hLnBhcmVudDtzOyllPXMuX3ByZXYscy5fZGlydHkmJnMudG90YWxEdXJhdGlvbigpLG88KHI9cy5fc3RhcnQpJiZhLl9zb3J0JiZzLl90cyYmIWEuX2xvY2s\/KGEuX2xvY2s9MSxMYShhLHMsci1zLl9kZWxheSwxKS5fbG9jaz0wKTpvPXIscjwwJiZzLl90cyYmKG4tPXIsKCFpJiYhYS5fZHB8fGkmJmkuc21vb3RoQ2hpbGRUaW1pbmcpJiYoYS5fc3RhcnQrPXIvYS5fdHMsYS5fdGltZS09cixhLl90VGltZS09ciksYS5zaGlmdENoaWxkcmVuKC1yLCExLC1JbmZpbml0eSksbz0wKSxzLl9lbmQ+biYmcy5fdHMmJihuPXMuX2VuZCkscz1lO1NhKGEsYT09PUkmJmEuX3RpbWU+bj9hLl90aW1lOm4sMSwxKSxhLl9kaXJ0eT0wfXJldHVybiBhLl90RHVyfSxUaW1lbGluZS51cGRhdGVSb290PWZ1bmN0aW9uIHVwZGF0ZVJvb3QodCl7aWYoSS5fdHMmJihvYShJLEhhKHQsSSkpLGY9UnQuZnJhbWUpLFJ0LmZyYW1lPj1tdCl7bXQrPVguYXV0b1NsZWVwfHwxMjA7dmFyIGU9SS5fZmlyc3Q7aWYoKCFlfHwhZS5fdHMpJiZYLmF1dG9TbGVlcCYmUnQuX2xpc3RlbmVycy5sZW5ndGg8Mil7Zm9yKDtlJiYhZS5fdHM7KWU9ZS5fbmV4dDtlfHxSdC5zbGVlcCgpfX19LFRpbWVsaW5lfShOdCk7cmEoUXQucHJvdG90eXBlLHtfbG9jazowLF9oYXNQYXVzZTowLF9mb3JjaW5nOjB9KTtmdW5jdGlvbiBiYyh0LGUsaSxuLGEsbyl7dmFyIHUsaCxsLGY7aWYocHRbdF0mJiExIT09KHU9bmV3IHB0W3RdKS5pbml0KGEsdS5yYXdWYXJzP2VbdF06ZnVuY3Rpb24gX3Byb2Nlc3NWYXJzKHQsZSxpLG4sYSl7aWYocyh0KSYmKHQ9R3QodCxhLGUsaSxuKSksIXYodCl8fHQuc3R5bGUmJnQubm9kZVR5cGV8fCQodCl8fEoodCkpcmV0dXJuIHIodCk\/R3QodCxhLGUsaSxuKTp0O3ZhciBvLHU9e307Zm9yKG8gaW4gdCl1W29dPUd0KHRbb10sYSxlLGksbik7cmV0dXJuIHV9KGVbdF0sbixhLG8saSksaSxuLG8pJiYoaS5fcHQ9aD1uZXcgZ2UoaS5fcHQsYSx0LDAsMSx1LnJlbmRlcix1LDAsdS5wcmlvcml0eSksaSE9PWQpKWZvcihsPWkuX3B0TG9va3VwW2kuX3RhcmdldHMuaW5kZXhPZihhKV0sZj11Ll9wcm9wcy5sZW5ndGg7Zi0tOylsW3UuX3Byb3BzW2ZdXT1oO3JldHVybiB1fWZ1bmN0aW9uIGhjKHQscixlLGkpe3ZhciBuLGEscz1yLmVhc2V8fGl8fCJwb3dlcjEuaW5PdXQiO2lmKCQocikpYT1lW3RdfHwoZVt0XT1bXSksci5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEucHVzaCh7dDplLyhyLmxlbmd0aC0xKSoxMDAsdjp0LGU6c30pfSk7ZWxzZSBmb3IobiBpbiByKWE9ZVtuXXx8KGVbbl09W10pLCJlYXNlIj09PW58fGEucHVzaCh7dDpwYXJzZUZsb2F0KHQpLHY6cltuXSxlOnN9KX12YXIgVXQscXQsVnQ9ZnVuY3Rpb24gX2FkZFByb3BUd2Vlbih0LGUsaSxuLGEsbyx1LGgsbCxmKXtzKG4pJiYobj1uKGF8fDAsdCxvKSk7dmFyIGQsYz10W2VdLHA9ImdldCIhPT1pP2k6cyhjKT9sP3RbZS5pbmRleE9mKCJzZXQiKXx8IXModFsiZ2V0IitlLnN1YnN0cigzKV0pP2U6ImdldCIrZS5zdWJzdHIoMyldKGwpOnRbZV0oKTpjLF89cyhjKT9sP3JlOnRlOiR0O2lmKHIobikmJih+bi5pbmRleE9mKCJyYW5kb20oIikmJihuPXBiKG4pKSwiPSI9PT1uLmNoYXJBdCgxKSYmKCEoZD1rYShwLG4pKyhaYShwKXx8MCkpJiYwIT09ZHx8KG49ZCkpKSwhZnx8cCE9PW58fHF0KXJldHVybiBpc05hTihwKm4pfHwiIj09PW4\/KGN8fGUgaW4gdHx8UShlLG4pLGZ1bmN0aW9uIF9hZGRDb21wbGV4U3RyaW5nUHJvcFR3ZWVuKHQsZSxyLGksbixhLHMpe3ZhciBvLHUsaCxsLGYsZCxjLHAsXz1uZXcgZ2UodGhpcy5fcHQsdCxlLDAsMSxvZSxudWxsLG4pLG09MCxnPTA7Zm9yKF8uYj1yLF8uZT1pLHIrPSIiLChjPX4oaSs9IiIpLmluZGV4T2YoInJhbmRvbSgiKSkmJihpPXBiKGkpKSxhJiYoYShwPVtyLGldLHQsZSkscj1wWzBdLGk9cFsxXSksdT1yLm1hdGNoKGl0KXx8W107bz1pdC5leGVjKGkpOylsPW9bMF0sZj1pLnN1YnN0cmluZyhtLG8uaW5kZXgpLGg\/aD0oaCsxKSU1OiJyZ2JhKCI9PT1mLnN1YnN0cigtNSkmJihoPTEpLGwhPT11W2crK10mJihkPXBhcnNlRmxvYXQodVtnLTFdKXx8MCxfLl9wdD17X25leHQ6Xy5fcHQscDpmfHwxPT09Zz9mOiIsIixzOmQsYzoiPSI9PT1sLmNoYXJBdCgxKT9rYShkLGwpLWQ6cGFyc2VGbG9hdChsKS1kLG06aCYmaDw0P01hdGgucm91bmQ6MH0sbT1pdC5sYXN0SW5kZXgpO3JldHVybiBfLmM9bTxpLmxlbmd0aD9pLnN1YnN0cmluZyhtLGkubGVuZ3RoKToiIixfLmZwPXMsKG50LnRlc3QoaSl8fGMpJiYoXy5lPTApLHRoaXMuX3B0PV99LmNhbGwodGhpcyx0LGUscCxuLF8saHx8WC5zdHJpbmdGaWx0ZXIsbCkpOihkPW5ldyBnZSh0aGlzLl9wdCx0LGUsK3B8fDAsbi0ocHx8MCksImJvb2xlYW4iPT10eXBlb2YgYz9zZTpuZSwwLF8pLGwmJihkLmZwPWwpLHUmJmQubW9kaWZpZXIodSx0aGlzLHQpLHRoaXMuX3B0PWQpfSxXdD1mdW5jdGlvbiBfaW5pdFR3ZWVuKHQsZSxyKXt2YXIgaSxuLGEscyxvLHUsaCxsLGYsZCxjLHAsXyxtPXQudmFycyxnPW0uZWFzZSx2PW0uc3RhcnRBdCx5PW0uaW1tZWRpYXRlUmVuZGVyLFQ9bS5sYXp5LGI9bS5vblVwZGF0ZSx4PW0ucnVuQmFja3dhcmRzLE09bS55b3lvRWFzZSxrPW0ua2V5ZnJhbWVzLE89bS5hdXRvUmV2ZXJ0LEE9dC5fZHVyLFA9dC5fc3RhcnRBdCxDPXQuX3RhcmdldHMsUz10LnBhcmVudCxEPVMmJiJuZXN0ZWQiPT09Uy5kYXRhP1MudmFycy50YXJnZXRzOkMsej0iYXV0byI9PT10Ll9vdmVyd3JpdGUmJiFGLEU9dC50aW1lbGluZTtpZighRXx8ayYmZ3x8KGc9Im5vbmUiKSx0Ll9lYXNlPVl0KGcsWi5lYXNlKSx0Ll95RWFzZT1NP2p0KFl0KCEwPT09TT9nOk0sWi5lYXNlKSk6MCxNJiZ0Ll95b3lvJiYhdC5fcmVwZWF0JiYoTT10Ll95RWFzZSx0Ll95RWFzZT10Ll9lYXNlLHQuX2Vhc2U9TSksdC5fZnJvbT0hRSYmISFtLnJ1bkJhY2t3YXJkcywhRXx8ayYmIW0uc3RhZ2dlcil7aWYocD0obD1DWzBdP2ZhKENbMF0pLmhhcm5lc3M6MCkmJm1bbC5wcm9wXSxpPXZhKG0sZnQpLFAmJihQLl96VGltZTwwJiZQLnByb2dyZXNzKDEpLGU8MCYmeCYmeSYmIU8\/UC5yZW5kZXIoLTEsITApOlAucmV2ZXJ0KHgmJkE\/aHQ6dXQpLFAuX2xhenk9MCksdil7aWYoQWEodC5fc3RhcnRBdD1KdC5zZXQoQyxyYSh7ZGF0YToiaXNTdGFydCIsb3ZlcndyaXRlOiExLHBhcmVudDpTLGltbWVkaWF0ZVJlbmRlcjohMCxsYXp5OiFQJiZ3KFQpLHN0YXJ0QXQ6bnVsbCxkZWxheTowLG9uVXBkYXRlOmImJmZ1bmN0aW9uKCl7cmV0dXJuIFB0KHQsIm9uVXBkYXRlIil9LHN0YWdnZXI6MH0sdikpKSx0Ll9zdGFydEF0Ll9kcD0wLHQuX3N0YXJ0QXQuX3NhdD10LGU8MCYmKEx8fCF5JiYhTykmJnQuX3N0YXJ0QXQucmV2ZXJ0KGh0KSx5JiZBJiZlPD0wJiZyPD0wKXJldHVybiB2b2lkKGUmJih0Ll96VGltZT1lKSl9ZWxzZSBpZih4JiZBJiYhUClpZihlJiYoeT0hMSksYT1yYSh7b3ZlcndyaXRlOiExLGRhdGE6ImlzRnJvbVN0YXJ0IixsYXp5OnkmJiFQJiZ3KFQpLGltbWVkaWF0ZVJlbmRlcjp5LHN0YWdnZXI6MCxwYXJlbnQ6U30saSkscCYmKGFbbC5wcm9wXT1wKSxBYSh0Ll9zdGFydEF0PUp0LnNldChDLGEpKSx0Ll9zdGFydEF0Ll9kcD0wLHQuX3N0YXJ0QXQuX3NhdD10LGU8MCYmKEw\/dC5fc3RhcnRBdC5yZXZlcnQoaHQpOnQuX3N0YXJ0QXQucmVuZGVyKC0xLCEwKSksdC5felRpbWU9ZSx5KXtpZighZSlyZXR1cm59ZWxzZSBfaW5pdFR3ZWVuKHQuX3N0YXJ0QXQsVSxVKTtmb3IodC5fcHQ9dC5fcHRDYWNoZT0wLFQ9QSYmdyhUKXx8VCYmIUEsbj0wO248Qy5sZW5ndGg7bisrKXtpZihoPShvPUNbbl0pLl9nc2FwfHxlYShDKVtuXS5fZ3NhcCx0Ll9wdExvb2t1cFtuXT1kPXt9LGN0W2guaWRdJiZkdC5sZW5ndGgmJm1hKCksYz1EPT09Qz9uOkQuaW5kZXhPZihvKSxsJiYhMSE9PShmPW5ldyBsKS5pbml0KG8scHx8aSx0LGMsRCkmJih0Ll9wdD1zPW5ldyBnZSh0Ll9wdCxvLGYubmFtZSwwLDEsZi5yZW5kZXIsZiwwLGYucHJpb3JpdHkpLGYuX3Byb3BzLmZvckVhY2goZnVuY3Rpb24odCl7ZFt0XT1zfSksZi5wcmlvcml0eSYmKHU9MSkpLCFsfHxwKWZvcihhIGluIGkpcHRbYV0mJihmPWJjKGEsaSx0LGMsbyxEKSk\/Zi5wcmlvcml0eSYmKHU9MSk6ZFthXT1zPVZ0LmNhbGwodCxvLGEsImdldCIsaVthXSxjLEQsMCxtLnN0cmluZ0ZpbHRlcik7dC5fb3AmJnQuX29wW25dJiZ0LmtpbGwobyx0Ll9vcFtuXSkseiYmdC5fcHQmJihVdD10LEkua2lsbFR3ZWVuc09mKG8sZCx0Lmdsb2JhbFRpbWUoZSkpLF89IXQucGFyZW50LFV0PTApLHQuX3B0JiZUJiYoY3RbaC5pZF09MSl9dSYmX2UodCksdC5fb25Jbml0JiZ0Ll9vbkluaXQodCl9dC5fb25VcGRhdGU9Yix0Ll9pbml0dGVkPSghdC5fb3B8fHQuX3B0KSYmIV8sayYmZTw9MCYmRS5yZW5kZXIoTiwhMCwhMCl9LEd0PWZ1bmN0aW9uIF9wYXJzZUZ1bmNPclN0cmluZyh0LGUsaSxuLGEpe3JldHVybiBzKHQpP3QuY2FsbChlLGksbixhKTpyKHQpJiZ+dC5pbmRleE9mKCJyYW5kb20oIik\/cGIodCk6dH0sSHQ9dnQrInJlcGVhdCxyZXBlYXREZWxheSx5b3lvLHJlcGVhdFJlZnJlc2gseW95b0Vhc2UsYXV0b1JldmVydCIsS3Q9e307aGEoSHQrIixpZCxzdGFnZ2VyLGRlbGF5LGR1cmF0aW9uLHBhdXNlZCxzY3JvbGxUcmlnZ2VyIixmdW5jdGlvbih0KXtyZXR1cm4gS3RbdF09MX0pO3ZhciBKdD1mdW5jdGlvbihFKXtmdW5jdGlvbiBUd2VlbihlLHIsaSxuKXt2YXIgYTsibnVtYmVyIj09dHlwZW9mIHImJihpLmR1cmF0aW9uPXIscj1pLGk9bnVsbCk7dmFyIHMsbyx1LGgsbCxmLGQsYyxwPShhPUUuY2FsbCh0aGlzLG4\/cjp3YShyKSl8fHRoaXMpLnZhcnMsXz1wLmR1cmF0aW9uLG09cC5kZWxheSxnPXAuaW1tZWRpYXRlUmVuZGVyLFQ9cC5zdGFnZ2VyLGI9cC5vdmVyd3JpdGUseD1wLmtleWZyYW1lcyxNPXAuZGVmYXVsdHMsaz1wLnNjcm9sbFRyaWdnZXIsTz1wLnlveW9FYXNlLEE9ci5wYXJlbnR8fEksUD0oJChlKXx8SihlKT90KGVbMF0pOiJsZW5ndGgiaW4gcik\/W2VdOk90KGUpO2lmKGEuX3RhcmdldHM9UC5sZW5ndGg\/ZWEoUCk6UigiR1NBUCB0YXJnZXQgIitlKyIgbm90IGZvdW5kLiBodHRwczovL2dzYXAuY29tIiwhWC5udWxsVGFyZ2V0V2Fybil8fFtdLGEuX3B0TG9va3VwPVtdLGEuX292ZXJ3cml0ZT1iLHh8fFR8fHkoXyl8fHkobSkpe2lmKHI9YS52YXJzLChzPWEudGltZWxpbmU9bmV3IFF0KHtkYXRhOiJuZXN0ZWQiLGRlZmF1bHRzOk18fHt9LHRhcmdldHM6QSYmIm5lc3RlZCI9PT1BLmRhdGE\/QS52YXJzLnRhcmdldHM6UH0pKS5raWxsKCkscy5wYXJlbnQ9cy5fZHA9X2Fzc2VydFRoaXNJbml0aWFsaXplZChhKSxzLl9zdGFydD0wLFR8fHkoXyl8fHkobSkpe2lmKGg9UC5sZW5ndGgsZD1UJiZmYihUKSx2KFQpKWZvcihsIGluIFQpfkh0LmluZGV4T2YobCkmJigoYz1jfHx7fSlbbF09VFtsXSk7Zm9yKG89MDtvPGg7bysrKSh1PXZhKHIsS3QpKS5zdGFnZ2VyPTAsTyYmKHUueW95b0Vhc2U9TyksYyYmeXQodSxjKSxmPVBbb10sdS5kdXJhdGlvbj0rR3QoXyxfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGEpLG8sZixQKSx1LmRlbGF5PSgrR3QobSxfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGEpLG8sZixQKXx8MCktYS5fZGVsYXksIVQmJjE9PT1oJiZ1LmRlbGF5JiYoYS5fZGVsYXk9bT11LmRlbGF5LGEuX3N0YXJ0Kz1tLHUuZGVsYXk9MCkscy50byhmLHUsZD9kKG8sZixQKTowKSxzLl9lYXNlPUx0Lm5vbmU7cy5kdXJhdGlvbigpP189bT0wOmEudGltZWxpbmU9MH1lbHNlIGlmKHgpe3dhKHJhKHMudmFycy5kZWZhdWx0cyx7ZWFzZToibm9uZSJ9KSkscy5fZWFzZT1ZdCh4LmVhc2V8fHIuZWFzZXx8Im5vbmUiKTt2YXIgQyxTLEQsej0wO2lmKCQoeCkpeC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBzLnRvKFAsdCwiPiIpfSkscy5kdXJhdGlvbigpO2Vsc2V7Zm9yKGwgaW4gdT17fSx4KSJlYXNlIj09PWx8fCJlYXNlRWFjaCI9PT1sfHxoYyhsLHhbbF0sdSx4LmVhc2VFYWNoKTtmb3IobCBpbiB1KWZvcihDPXVbbF0uc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LnQtZS50fSksbz16PTA7bzxDLmxlbmd0aDtvKyspKEQ9e2Vhc2U6KFM9Q1tvXSkuZSxkdXJhdGlvbjooUy50LShvP0Nbby0xXS50OjApKS8xMDAqX30pW2xdPVMudixzLnRvKFAsRCx6KSx6Kz1ELmR1cmF0aW9uO3MuZHVyYXRpb24oKTxfJiZzLnRvKHt9LHtkdXJhdGlvbjpfLXMuZHVyYXRpb24oKX0pfX1ffHxhLmR1cmF0aW9uKF89cy5kdXJhdGlvbigpKX1lbHNlIGEudGltZWxpbmU9MDtyZXR1cm4hMCE9PWJ8fEZ8fChVdD1fYXNzZXJ0VGhpc0luaXRpYWxpemVkKGEpLEkua2lsbFR3ZWVuc09mKFApLFV0PTApLExhKEEsX2Fzc2VydFRoaXNJbml0aWFsaXplZChhKSxpKSxyLnJldmVyc2VkJiZhLnJldmVyc2UoKSxyLnBhdXNlZCYmYS5wYXVzZWQoITApLChnfHwhXyYmIXgmJmEuX3N0YXJ0PT09amEoQS5fdGltZSkmJncoZykmJmZ1bmN0aW9uIF9oYXNOb1BhdXNlZEFuY2VzdG9ycyh0KXtyZXR1cm4hdHx8dC5fdHMmJl9oYXNOb1BhdXNlZEFuY2VzdG9ycyh0LnBhcmVudCl9KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoYSkpJiYibmVzdGVkIiE9PUEuZGF0YSkmJihhLl90VGltZT0tVSxhLnJlbmRlcihNYXRoLm1heCgwLC1tKXx8MCkpLGsmJk1hKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoYSksayksYX1faW5oZXJpdHNMb29zZShUd2VlbixFKTt2YXIgZT1Ud2Vlbi5wcm90b3R5cGU7cmV0dXJuIGUucmVuZGVyPWZ1bmN0aW9uIHJlbmRlcih0LGUscil7dmFyIGksbixhLHMsbyx1LGgsbCxmLGQ9dGhpcy5fdGltZSxjPXRoaXMuX3REdXIscD10aGlzLl9kdXIsXz10PDAsbT1jLVU8dCYmIV8\/Yzp0PFU\/MDp0O2lmKHApe2lmKG0hPT10aGlzLl90VGltZXx8IXR8fHJ8fCF0aGlzLl9pbml0dGVkJiZ0aGlzLl90VGltZXx8dGhpcy5fc3RhcnRBdCYmdGhpcy5felRpbWU8MCE9X3x8dGhpcy5fbGF6eSl7aWYoaT1tLGw9dGhpcy50aW1lbGluZSx0aGlzLl9yZXBlYXQpe2lmKHM9cCt0aGlzLl9yRGVsYXksdGhpcy5fcmVwZWF0PC0xJiZfKXJldHVybiB0aGlzLnRvdGFsVGltZSgxMDAqcyt0LGUscik7aWYoaT1qYShtJXMpLG09PT1jPyhhPXRoaXMuX3JlcGVhdCxpPXApOihhPX5+KG89amEobS9zKSkpJiZhPT09bz8oaT1wLGEtLSk6cDxpJiYoaT1wKSwodT10aGlzLl95b3lvJiYxJmEpJiYoZj10aGlzLl95RWFzZSxpPXAtaSksbz1UdCh0aGlzLl90VGltZSxzKSxpPT09ZCYmIXImJnRoaXMuX2luaXR0ZWQmJmE9PT1vKXJldHVybiB0aGlzLl90VGltZT1tLHRoaXM7YSE9PW8mJihsJiZ0aGlzLl95RWFzZSYmUmIobCx1KSx0aGlzLnZhcnMucmVwZWF0UmVmcmVzaCYmIXUmJiF0aGlzLl9sb2NrJiZpIT09cyYmdGhpcy5faW5pdHRlZCYmKHRoaXMuX2xvY2s9cj0xLHRoaXMucmVuZGVyKGphKHMqYSksITApLmludmFsaWRhdGUoKS5fbG9jaz0wKSl9aWYoIXRoaXMuX2luaXR0ZWQpe2lmKE5hKHRoaXMsXz90OmkscixlLG0pKXJldHVybiB0aGlzLl90VGltZT0wLHRoaXM7aWYoIShkPT09dGhpcy5fdGltZXx8ciYmdGhpcy52YXJzLnJlcGVhdFJlZnJlc2gmJmEhPT1vKSlyZXR1cm4gdGhpcztpZihwIT09dGhpcy5fZHVyKXJldHVybiB0aGlzLnJlbmRlcih0LGUscil9aWYodGhpcy5fdFRpbWU9bSx0aGlzLl90aW1lPWksIXRoaXMuX2FjdCYmdGhpcy5fdHMmJih0aGlzLl9hY3Q9MSx0aGlzLl9sYXp5PTApLHRoaXMucmF0aW89aD0oZnx8dGhpcy5fZWFzZSkoaS9wKSx0aGlzLl9mcm9tJiYodGhpcy5yYXRpbz1oPTEtaCksIWQmJm0mJiFlJiYhbyYmKFB0KHRoaXMsIm9uU3RhcnQiKSx0aGlzLl90VGltZSE9PW0pKXJldHVybiB0aGlzO2ZvcihuPXRoaXMuX3B0O247KW4ucihoLG4uZCksbj1uLl9uZXh0O2wmJmwucmVuZGVyKHQ8MD90OmwuX2R1cipsLl9lYXNlKGkvdGhpcy5fZHVyKSxlLHIpfHx0aGlzLl9zdGFydEF0JiYodGhpcy5felRpbWU9dCksdGhpcy5fb25VcGRhdGUmJiFlJiYoXyYmRGEodGhpcyx0LDAsciksUHQodGhpcywib25VcGRhdGUiKSksdGhpcy5fcmVwZWF0JiZhIT09byYmdGhpcy52YXJzLm9uUmVwZWF0JiYhZSYmdGhpcy5wYXJlbnQmJlB0KHRoaXMsIm9uUmVwZWF0IiksbSE9PXRoaXMuX3REdXImJm18fHRoaXMuX3RUaW1lIT09bXx8KF8mJiF0aGlzLl9vblVwZGF0ZSYmRGEodGhpcyx0LDAsITApLCF0JiZwfHwhKG09PT10aGlzLl90RHVyJiYwPHRoaXMuX3RzfHwhbSYmdGhpcy5fdHM8MCl8fEFhKHRoaXMsMSksZXx8XyYmIWR8fCEobXx8ZHx8dSl8fChQdCh0aGlzLG09PT1jPyJvbkNvbXBsZXRlIjoib25SZXZlcnNlQ29tcGxldGUiLCEwKSwhdGhpcy5fcHJvbXx8bTxjJiYwPHRoaXMudGltZVNjYWxlKCl8fHRoaXMuX3Byb20oKSkpfX1lbHNlIWZ1bmN0aW9uIF9yZW5kZXJaZXJvRHVyYXRpb25Ud2Vlbih0LGUscixpKXt2YXIgbixhLHMsbz10LnJhdGlvLHU9ZTwwfHwhZSYmKCF0Ll9zdGFydCYmZnVuY3Rpb24gX3BhcmVudFBsYXloZWFkSXNCZWZvcmVTdGFydCh0KXt2YXIgZT10LnBhcmVudDtyZXR1cm4gZSYmZS5fdHMmJmUuX2luaXR0ZWQmJiFlLl9sb2NrJiYoZS5yYXdUaW1lKCk8MHx8X3BhcmVudFBsYXloZWFkSXNCZWZvcmVTdGFydChlKSl9KHQpJiYodC5faW5pdHRlZHx8IWJ0KHQpKXx8KHQuX3RzPDB8fHQuX2RwLl90czwwKSYmIWJ0KHQpKT8wOjEsaD10Ll9yRGVsYXksbD0wO2lmKGgmJnQuX3JlcGVhdCYmKGw9TXQoMCx0Ll90RHVyLGUpLGE9VHQobCxoKSx0Ll95b3lvJiYxJmEmJih1PTEtdSksYSE9PVR0KHQuX3RUaW1lLGgpJiYobz0xLXUsdC52YXJzLnJlcGVhdFJlZnJlc2gmJnQuX2luaXR0ZWQmJnQuaW52YWxpZGF0ZSgpKSksdSE9PW98fEx8fGl8fHQuX3pUaW1lPT09VXx8IWUmJnQuX3pUaW1lKXtpZighdC5faW5pdHRlZCYmTmEodCxlLGkscixsKSlyZXR1cm47Zm9yKHM9dC5felRpbWUsdC5felRpbWU9ZXx8KHI\/VTowKSxyPXJ8fGUmJiFzLHQucmF0aW89dSx0Ll9mcm9tJiYodT0xLXUpLHQuX3RpbWU9MCx0Ll90VGltZT1sLG49dC5fcHQ7bjspbi5yKHUsbi5kKSxuPW4uX25leHQ7ZTwwJiZEYSh0LGUsMCwhMCksdC5fb25VcGRhdGUmJiFyJiZQdCh0LCJvblVwZGF0ZSIpLGwmJnQuX3JlcGVhdCYmIXImJnQucGFyZW50JiZQdCh0LCJvblJlcGVhdCIpLChlPj10Ll90RHVyfHxlPDApJiZ0LnJhdGlvPT09dSYmKHUmJkFhKHQsMSkscnx8THx8KFB0KHQsdT8ib25Db21wbGV0ZSI6Im9uUmV2ZXJzZUNvbXBsZXRlIiwhMCksdC5fcHJvbSYmdC5fcHJvbSgpKSl9ZWxzZSB0Ll96VGltZXx8KHQuX3pUaW1lPWUpfSh0aGlzLHQsZSxyKTtyZXR1cm4gdGhpc30sZS50YXJnZXRzPWZ1bmN0aW9uIHRhcmdldHMoKXtyZXR1cm4gdGhpcy5fdGFyZ2V0c30sZS5pbnZhbGlkYXRlPWZ1bmN0aW9uIGludmFsaWRhdGUodCl7cmV0dXJuIHQmJnRoaXMudmFycy5ydW5CYWNrd2FyZHN8fCh0aGlzLl9zdGFydEF0PTApLHRoaXMuX3B0PXRoaXMuX29wPXRoaXMuX29uVXBkYXRlPXRoaXMuX2xhenk9dGhpcy5yYXRpbz0wLHRoaXMuX3B0TG9va3VwPVtdLHRoaXMudGltZWxpbmUmJnRoaXMudGltZWxpbmUuaW52YWxpZGF0ZSh0KSxFLnByb3RvdHlwZS5pbnZhbGlkYXRlLmNhbGwodGhpcyx0KX0sZS5yZXNldFRvPWZ1bmN0aW9uIHJlc2V0VG8odCxlLHIsaSxuKXtjfHxSdC53YWtlKCksdGhpcy5fdHN8fHRoaXMucGxheSgpO3ZhciBhLHM9TWF0aC5taW4odGhpcy5fZHVyLCh0aGlzLl9kcC5fdGltZS10aGlzLl9zdGFydCkqdGhpcy5fdHMpO3JldHVybiB0aGlzLl9pbml0dGVkfHxXdCh0aGlzLHMpLGE9dGhpcy5fZWFzZShzL3RoaXMuX2R1ciksZnVuY3Rpb24gX3VwZGF0ZVByb3BUd2VlbnModCxlLHIsaSxuLGEscyxvKXt2YXIgdSxoLGwsZixkPSh0Ll9wdCYmdC5fcHRDYWNoZXx8KHQuX3B0Q2FjaGU9e30pKVtlXTtpZighZClmb3IoZD10Ll9wdENhY2hlW2VdPVtdLGw9dC5fcHRMb29rdXAsZj10Ll90YXJnZXRzLmxlbmd0aDtmLS07KXtpZigodT1sW2ZdW2VdKSYmdS5kJiZ1LmQuX3B0KWZvcih1PXUuZC5fcHQ7dSYmdS5wIT09ZSYmdS5mcCE9PWU7KXU9dS5fbmV4dDtpZighdSlyZXR1cm4gcXQ9MSx0LnZhcnNbZV09Iis9MCIsV3QodCxzKSxxdD0wLG8\/UihlKyIgbm90IGVsaWdpYmxlIGZvciByZXNldCIpOjE7ZC5wdXNoKHUpfWZvcihmPWQubGVuZ3RoO2YtLTspKHU9KGg9ZFtmXSkuX3B0fHxoKS5zPSFpJiYwIT09aXx8bj91LnMrKGl8fDApK2EqdS5jOmksdS5jPXItdS5zLGguZSYmKGguZT1pYShyKStaYShoLmUpKSxoLmImJihoLmI9dS5zK1phKGguYikpfSh0aGlzLHQsZSxyLGksYSxzLG4pP3RoaXMucmVzZXRUbyh0LGUscixpLDEpOihKYSh0aGlzLDApLHRoaXMucGFyZW50fHx5YSh0aGlzLl9kcCx0aGlzLCJfZmlyc3QiLCJfbGFzdCIsdGhpcy5fZHAuX3NvcnQ\/Il9zdGFydCI6MCksdGhpcy5yZW5kZXIoMCkpfSxlLmtpbGw9ZnVuY3Rpb24ga2lsbCh0LGUpe2lmKHZvaWQgMD09PWUmJihlPSJhbGwiKSwhKHR8fGUmJiJhbGwiIT09ZSkpcmV0dXJuIHRoaXMuX2xhenk9dGhpcy5fcHQ9MCx0aGlzLnBhcmVudD91Yih0aGlzKTp0aGlzLnNjcm9sbFRyaWdnZXImJnRoaXMuc2Nyb2xsVHJpZ2dlci5raWxsKCEhTCksdGhpcztpZih0aGlzLnRpbWVsaW5lKXt2YXIgaT10aGlzLnRpbWVsaW5lLnRvdGFsRHVyYXRpb24oKTtyZXR1cm4gdGhpcy50aW1lbGluZS5raWxsVHdlZW5zT2YodCxlLFV0JiYhMCE9PVV0LnZhcnMub3ZlcndyaXRlKS5fZmlyc3R8fHViKHRoaXMpLHRoaXMucGFyZW50JiZpIT09dGhpcy50aW1lbGluZS50b3RhbER1cmF0aW9uKCkmJlNhKHRoaXMsdGhpcy5fZHVyKnRoaXMudGltZWxpbmUuX3REdXIvaSwwLDEpLHRoaXN9dmFyIG4sYSxzLG8sdSxoLGwsZj10aGlzLl90YXJnZXRzLGQ9dD9PdCh0KTpmLGM9dGhpcy5fcHRMb29rdXAscD10aGlzLl9wdDtpZigoIWV8fCJhbGwiPT09ZSkmJmZ1bmN0aW9uIF9hcnJheXNNYXRjaCh0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxpPXI9PT1lLmxlbmd0aDtpJiZyLS0mJnRbcl09PT1lW3JdOyk7cmV0dXJuIHI8MH0oZixkKSlyZXR1cm4iYWxsIj09PWUmJih0aGlzLl9wdD0wKSx1Yih0aGlzKTtmb3Iobj10aGlzLl9vcD10aGlzLl9vcHx8W10sImFsbCIhPT1lJiYocihlKSYmKHU9e30saGEoZSxmdW5jdGlvbih0KXtyZXR1cm4gdVt0XT0xfSksZT11KSxlPWZ1bmN0aW9uIF9hZGRBbGlhc2VzVG9WYXJzKHQsZSl7dmFyIHIsaSxuLGEscz10WzBdP2ZhKHRbMF0pLmhhcm5lc3M6MCxvPXMmJnMuYWxpYXNlcztpZighbylyZXR1cm4gZTtmb3IoaSBpbiByPXl0KHt9LGUpLG8paWYoaSBpbiByKWZvcihuPShhPW9baV0uc3BsaXQoIiwiKSkubGVuZ3RoO24tLTspclthW25dXT1yW2ldO3JldHVybiByfShmLGUpKSxsPWYubGVuZ3RoO2wtLTspaWYofmQuaW5kZXhPZihmW2xdKSlmb3IodSBpbiBhPWNbbF0sImFsbCI9PT1lPyhuW2xdPWUsbz1hLHM9e30pOihzPW5bbF09bltsXXx8e30sbz1lKSxvKShoPWEmJmFbdV0pJiYoImtpbGwiaW4gaC5kJiYhMCE9PWguZC5raWxsKHUpfHx6YSh0aGlzLGgsIl9wdCIpLGRlbGV0ZSBhW3VdKSwiYWxsIiE9PXMmJihzW3VdPTEpO3JldHVybiB0aGlzLl9pbml0dGVkJiYhdGhpcy5fcHQmJnAmJnViKHRoaXMpLHRoaXN9LFR3ZWVuLnRvPWZ1bmN0aW9uIHRvKHQsZSxyKXtyZXR1cm4gbmV3IFR3ZWVuKHQsZSxyKX0sVHdlZW4uZnJvbT1mdW5jdGlvbiBmcm9tKHQsZSl7cmV0dXJuIFdhKDEsYXJndW1lbnRzKX0sVHdlZW4uZGVsYXllZENhbGw9ZnVuY3Rpb24gZGVsYXllZENhbGwodCxlLHIsaSl7cmV0dXJuIG5ldyBUd2VlbihlLDAse2ltbWVkaWF0ZVJlbmRlcjohMSxsYXp5OiExLG92ZXJ3cml0ZTohMSxkZWxheTp0LG9uQ29tcGxldGU6ZSxvblJldmVyc2VDb21wbGV0ZTplLG9uQ29tcGxldGVQYXJhbXM6cixvblJldmVyc2VDb21wbGV0ZVBhcmFtczpyLGNhbGxiYWNrU2NvcGU6aX0pfSxUd2Vlbi5mcm9tVG89ZnVuY3Rpb24gZnJvbVRvKHQsZSxyKXtyZXR1cm4gV2EoMixhcmd1bWVudHMpfSxUd2Vlbi5zZXQ9ZnVuY3Rpb24gc2V0KHQsZSl7cmV0dXJuIGUuZHVyYXRpb249MCxlLnJlcGVhdERlbGF5fHwoZS5yZXBlYXQ9MCksbmV3IFR3ZWVuKHQsZSl9LFR3ZWVuLmtpbGxUd2VlbnNPZj1mdW5jdGlvbiBraWxsVHdlZW5zT2YodCxlLHIpe3JldHVybiBJLmtpbGxUd2VlbnNPZih0LGUscil9LFR3ZWVufShOdCk7cmEoSnQucHJvdG90eXBlLHtfdGFyZ2V0czpbXSxfbGF6eTowLF9zdGFydEF0OjAsX29wOjAsX29uSW5pdDowfSksaGEoInN0YWdnZXJUbyxzdGFnZ2VyRnJvbSxzdGFnZ2VyRnJvbVRvIixmdW5jdGlvbihyKXtKdFtyXT1mdW5jdGlvbigpe3ZhciB0PW5ldyBRdCxlPWt0LmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBlLnNwbGljZSgic3RhZ2dlckZyb21UbyI9PT1yPzU6NCwwLDApLHRbcl0uYXBwbHkodCxlKX19KTtmdW5jdGlvbiBwYyh0LGUscil7cmV0dXJuIHQuc2V0QXR0cmlidXRlKGUscil9ZnVuY3Rpb24geGModCxlLHIsaSl7aS5tU2V0KHQsZSxpLm0uY2FsbChpLnR3ZWVuLHIsaS5tdCksaSl9dmFyICR0PWZ1bmN0aW9uIF9zZXR0ZXJQbGFpbih0LGUscil7cmV0dXJuIHRbZV09cn0sdGU9ZnVuY3Rpb24gX3NldHRlckZ1bmModCxlLHIpe3JldHVybiB0W2VdKHIpfSxyZT1mdW5jdGlvbiBfc2V0dGVyRnVuY1dpdGhQYXJhbSh0LGUscixpKXtyZXR1cm4gdFtlXShpLmZwLHIpfSxpZT1mdW5jdGlvbiBfZ2V0U2V0dGVyKHQsZSl7cmV0dXJuIHModFtlXSk\/dGU6dSh0W2VdKSYmdC5zZXRBdHRyaWJ1dGU\/cGM6JHR9LG5lPWZ1bmN0aW9uIF9yZW5kZXJQbGFpbih0LGUpe3JldHVybiBlLnNldChlLnQsZS5wLE1hdGgucm91bmQoMWU2KihlLnMrZS5jKnQpKS8xZTYsZSl9LHNlPWZ1bmN0aW9uIF9yZW5kZXJCb29sZWFuKHQsZSl7cmV0dXJuIGUuc2V0KGUudCxlLnAsISEoZS5zK2UuYyp0KSxlKX0sb2U9ZnVuY3Rpb24gX3JlbmRlckNvbXBsZXhTdHJpbmcodCxlKXt2YXIgcj1lLl9wdCxpPSIiO2lmKCF0JiZlLmIpaT1lLmI7ZWxzZSBpZigxPT09dCYmZS5lKWk9ZS5lO2Vsc2V7Zm9yKDtyOylpPXIucCsoci5tP3IubShyLnMrci5jKnQpOk1hdGgucm91bmQoMWU0KihyLnMrci5jKnQpKS8xZTQpK2kscj1yLl9uZXh0O2krPWUuY31lLnNldChlLnQsZS5wLGksZSl9LHVlPWZ1bmN0aW9uIF9yZW5kZXJQcm9wVHdlZW5zKHQsZSl7Zm9yKHZhciByPWUuX3B0O3I7KXIucih0LHIuZCkscj1yLl9uZXh0fSxoZT1mdW5jdGlvbiBfYWRkUGx1Z2luTW9kaWZpZXIodCxlLHIsaSl7Zm9yKHZhciBuLGE9dGhpcy5fcHQ7YTspbj1hLl9uZXh0LGEucD09PWkmJmEubW9kaWZpZXIodCxlLHIpLGE9bn0sZGU9ZnVuY3Rpb24gX2tpbGxQcm9wVHdlZW5zT2YodCl7Zm9yKHZhciBlLHIsaT10aGlzLl9wdDtpOylyPWkuX25leHQsaS5wPT09dCYmIWkub3B8fGkub3A9PT10P3phKHRoaXMsaSwiX3B0Iik6aS5kZXB8fChlPTEpLGk9cjtyZXR1cm4hZX0sX2U9ZnVuY3Rpb24gX3NvcnRQcm9wVHdlZW5zQnlQcmlvcml0eSh0KXtmb3IodmFyIGUscixpLG4sYT10Ll9wdDthOyl7Zm9yKGU9YS5fbmV4dCxyPWk7ciYmci5wcj5hLnByOylyPXIuX25leHQ7KGEuX3ByZXY9cj9yLl9wcmV2Om4pP2EuX3ByZXYuX25leHQ9YTppPWEsKGEuX25leHQ9cik\/ci5fcHJldj1hOm49YSxhPWV9dC5fcHQ9aX0sZ2U9KFByb3BUd2Vlbi5wcm90b3R5cGUubW9kaWZpZXI9ZnVuY3Rpb24gbW9kaWZpZXIodCxlLHIpe3RoaXMubVNldD10aGlzLm1TZXR8fHRoaXMuc2V0LHRoaXMuc2V0PXhjLHRoaXMubT10LHRoaXMubXQ9cix0aGlzLnR3ZWVuPWV9LFByb3BUd2Vlbik7ZnVuY3Rpb24gUHJvcFR3ZWVuKHQsZSxyLGksbixhLHMsbyx1KXt0aGlzLnQ9ZSx0aGlzLnM9aSx0aGlzLmM9bix0aGlzLnA9cix0aGlzLnI9YXx8bmUsdGhpcy5kPXN8fHRoaXMsdGhpcy5zZXQ9b3x8JHQsdGhpcy5wcj11fHwwLCh0aGlzLl9uZXh0PXQpJiYodC5fcHJldj10aGlzKX1oYSh2dCsicGFyZW50LGR1cmF0aW9uLGVhc2UsZGVsYXksb3ZlcndyaXRlLHJ1bkJhY2t3YXJkcyxzdGFydEF0LHlveW8saW1tZWRpYXRlUmVuZGVyLHJlcGVhdCxyZXBlYXREZWxheSxkYXRhLHBhdXNlZCxyZXZlcnNlZCxsYXp5LGNhbGxiYWNrU2NvcGUsc3RyaW5nRmlsdGVyLGlkLHlveW9FYXNlLHN0YWdnZXIsaW5oZXJpdCxyZXBlYXRSZWZyZXNoLGtleWZyYW1lcyxhdXRvUmV2ZXJ0LHNjcm9sbFRyaWdnZXIiLGZ1bmN0aW9uKHQpe3JldHVybiBmdFt0XT0xfSksb3QuVHdlZW5NYXg9b3QuVHdlZW5MaXRlPUp0LG90LlRpbWVsaW5lTGl0ZT1vdC5UaW1lbGluZU1heD1RdCxJPW5ldyBRdCh7c29ydENoaWxkcmVuOiExLGRlZmF1bHRzOlosYXV0b1JlbW92ZUNoaWxkcmVuOiEwLGlkOiJyb290IixzbW9vdGhDaGlsZFRpbWluZzohMH0pLFguc3RyaW5nRmlsdGVyPUdiO2Z1bmN0aW9uIEZjKHQpe3JldHVybihiZVt0XXx8TWUpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSl9ZnVuY3Rpb24gR2MoKXt2YXIgdD1EYXRlLm5vdygpLG89W107Mjx0LU9lJiYoRmMoIm1hdGNoTWVkaWFJbml0IiksVGUuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZSxyLGksbixhPXQucXVlcmllcyxzPXQuY29uZGl0aW9ucztmb3IociBpbiBhKShlPWgubWF0Y2hNZWRpYShhW3JdKS5tYXRjaGVzKSYmKGk9MSksZSE9PXNbcl0mJihzW3JdPWUsbj0xKTtuJiYodC5yZXZlcnQoKSxpJiZvLnB1c2godCkpfSksRmMoIm1hdGNoTWVkaWFSZXZlcnQiKSxvLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUub25NYXRjaChlLGZ1bmN0aW9uKHQpe3JldHVybiBlLmFkZChudWxsLHQpfSl9KSxPZT10LEZjKCJtYXRjaE1lZGlhIikpfXZhciB2ZSxUZT1bXSxiZT17fSxNZT1bXSxPZT0wLEFlPTAsUGU9KCh2ZT1Db250ZXh0LnByb3RvdHlwZSkuYWRkPWZ1bmN0aW9uIGFkZCh0LGksbil7ZnVuY3Rpb24gSXcoKXt2YXIgdCxlPWwscj1hLnNlbGVjdG9yO3JldHVybiBlJiZlIT09YSYmZS5kYXRhLnB1c2goYSksbiYmKGEuc2VsZWN0b3I9ZGIobikpLGw9YSx0PWkuYXBwbHkoYSxhcmd1bWVudHMpLHModCkmJmEuX3IucHVzaCh0KSxsPWUsYS5zZWxlY3Rvcj1yLGEuaXNSZXZlcnRlZD0hMSx0fXModCkmJihuPWksaT10LHQ9cyk7dmFyIGE9dGhpcztyZXR1cm4gYS5sYXN0PUl3LHQ9PT1zP0l3KGEsZnVuY3Rpb24odCl7cmV0dXJuIGEuYWRkKG51bGwsdCl9KTp0P2FbdF09SXc6SXd9LHZlLmlnbm9yZT1mdW5jdGlvbiBpZ25vcmUodCl7dmFyIGU9bDtsPW51bGwsdCh0aGlzKSxsPWV9LHZlLmdldFR3ZWVucz1mdW5jdGlvbiBnZXRUd2VlbnMoKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5kYXRhLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBDb250ZXh0P2UucHVzaC5hcHBseShlLHQuZ2V0VHdlZW5zKCkpOnQgaW5zdGFuY2VvZiBKdCYmISh0LnBhcmVudCYmIm5lc3RlZCI9PT10LnBhcmVudC5kYXRhKSYmZS5wdXNoKHQpfSksZX0sdmUuY2xlYXI9ZnVuY3Rpb24gY2xlYXIoKXt0aGlzLl9yLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RoPTB9LHZlLmtpbGw9ZnVuY3Rpb24ga2lsbChpLHQpe3ZhciBuPXRoaXM7aWYoaT9mdW5jdGlvbigpe2Zvcih2YXIgdCxlPW4uZ2V0VHdlZW5zKCkscj1uLmRhdGEubGVuZ3RoO3ItLTspImlzRmxpcCI9PT0odD1uLmRhdGFbcl0pLmRhdGEmJih0LnJldmVydCgpLHQuZ2V0Q2hpbGRyZW4oITAsITAsITEpLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuc3BsaWNlKGUuaW5kZXhPZih0KSwxKX0pKTtmb3IoZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue2c6dC5fZHVyfHx0Ll9kZWxheXx8dC5fc2F0JiYhdC5fc2F0LnZhcnMuaW1tZWRpYXRlUmVuZGVyP3QuZ2xvYmFsVGltZSgwKTotMS8wLHQ6dH19KS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZy10Lmd8fC0xLzB9KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnQucmV2ZXJ0KGkpfSkscj1uLmRhdGEubGVuZ3RoO3ItLTspKHQ9bi5kYXRhW3JdKWluc3RhbmNlb2YgUXQ\/Im5lc3RlZCIhPT10LmRhdGEmJih0LnNjcm9sbFRyaWdnZXImJnQuc2Nyb2xsVHJpZ2dlci5yZXZlcnQoKSx0LmtpbGwoKSk6dCBpbnN0YW5jZW9mIEp0fHwhdC5yZXZlcnR8fHQucmV2ZXJ0KGkpO24uX3IuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdChpLG4pfSksbi5pc1JldmVydGVkPSEwfSgpOnRoaXMuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmtpbGwmJnQua2lsbCgpfSksdGhpcy5jbGVhcigpLHQpZm9yKHZhciBlPVRlLmxlbmd0aDtlLS07KVRlW2VdLmlkPT09dGhpcy5pZCYmVGUuc3BsaWNlKGUsMSl9LHZlLnJldmVydD1mdW5jdGlvbiByZXZlcnQodCl7dGhpcy5raWxsKHR8fHt9KX0sQ29udGV4dCk7ZnVuY3Rpb24gQ29udGV4dCh0LGUpe3RoaXMuc2VsZWN0b3I9ZSYmZGIoZSksdGhpcy5kYXRhPVtdLHRoaXMuX3I9W10sdGhpcy5pc1JldmVydGVkPSExLHRoaXMuaWQ9QWUrKyx0JiZ0aGlzLmFkZCh0KX12YXIgQ2UsU2U9KChDZT1NYXRjaE1lZGlhLnByb3RvdHlwZSkuYWRkPWZ1bmN0aW9uIGFkZCh0LGUscil7dih0KXx8KHQ9e21hdGNoZXM6dH0pO3ZhciBpLG4sYSxzPW5ldyBQZSgwLHJ8fHRoaXMuc2NvcGUpLG89cy5jb25kaXRpb25zPXt9O2ZvcihuIGluIGwmJiFzLnNlbGVjdG9yJiYocy5zZWxlY3Rvcj1sLnNlbGVjdG9yKSx0aGlzLmNvbnRleHRzLnB1c2gocyksZT1zLmFkZCgib25NYXRjaCIsZSkscy5xdWVyaWVzPXQpImFsbCI9PT1uP2E9MTooaT1oLm1hdGNoTWVkaWEodFtuXSkpJiYoVGUuaW5kZXhPZihzKTwwJiZUZS5wdXNoKHMpLChvW25dPWkubWF0Y2hlcykmJihhPTEpLGkuYWRkTGlzdGVuZXI\/aS5hZGRMaXN0ZW5lcihHYyk6aS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLEdjKSk7cmV0dXJuIGEmJmUocyxmdW5jdGlvbih0KXtyZXR1cm4gcy5hZGQobnVsbCx0KX0pLHRoaXN9LENlLnJldmVydD1mdW5jdGlvbiByZXZlcnQodCl7dGhpcy5raWxsKHR8fHt9KX0sQ2Uua2lsbD1mdW5jdGlvbiBraWxsKGUpe3RoaXMuY29udGV4dHMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5raWxsKGUsITApfSl9LE1hdGNoTWVkaWEpO2Z1bmN0aW9uIE1hdGNoTWVkaWEodCl7dGhpcy5jb250ZXh0cz1bXSx0aGlzLnNjb3BlPXQsbCYmbC5kYXRhLnB1c2godGhpcyl9dmFyIERlPXtyZWdpc3RlclBsdWdpbjpmdW5jdGlvbiByZWdpc3RlclBsdWdpbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09YXJndW1lbnRzW3JdO2UuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4geGIodCl9KX0sdGltZWxpbmU6ZnVuY3Rpb24gdGltZWxpbmUodCl7cmV0dXJuIG5ldyBRdCh0KX0sZ2V0VHdlZW5zT2Y6ZnVuY3Rpb24gZ2V0VHdlZW5zT2YodCxlKXtyZXR1cm4gSS5nZXRUd2VlbnNPZih0LGUpfSxnZXRQcm9wZXJ0eTpmdW5jdGlvbiBnZXRQcm9wZXJ0eShpLHQsZSxuKXtyKGkpJiYoaT1PdChpKVswXSk7dmFyIGE9ZmEoaXx8e30pLmdldCxzPWU\/cWE6cGE7cmV0dXJuIm5hdGl2ZSI9PT1lJiYoZT0iIiksaT90P3MoKHB0W3RdJiZwdFt0XS5nZXR8fGEpKGksdCxlLG4pKTpmdW5jdGlvbih0LGUscil7cmV0dXJuIHMoKHB0W3RdJiZwdFt0XS5nZXR8fGEpKGksdCxlLHIpKX06aX0scXVpY2tTZXR0ZXI6ZnVuY3Rpb24gcXVpY2tTZXR0ZXIocixlLGkpe2lmKDE8KHI9T3QocikpLmxlbmd0aCl7dmFyIG49ci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHplLnF1aWNrU2V0dGVyKHQsZSxpKX0pLGE9bi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1hO2UtLTspbltlXSh0KX19cj1yWzBdfHx7fTt2YXIgcz1wdFtlXSxvPWZhKHIpLHU9by5oYXJuZXNzJiYoby5oYXJuZXNzLmFsaWFzZXN8fHt9KVtlXXx8ZSxoPXM\/ZnVuY3Rpb24odCl7dmFyIGU9bmV3IHM7ZC5fcHQ9MCxlLmluaXQocixpP3QraTp0LGQsMCxbcl0pLGUucmVuZGVyKDEsZSksZC5fcHQmJnVlKDEsZCl9Om8uc2V0KHIsdSk7cmV0dXJuIHM\/aDpmdW5jdGlvbih0KXtyZXR1cm4gaChyLHUsaT90K2k6dCxvLDEpfX0scXVpY2tUbzpmdW5jdGlvbiBxdWlja1RvKHQsaSxlKXtmdW5jdGlvbiBheSh0LGUscil7cmV0dXJuIG4ucmVzZXRUbyhpLHQsZSxyKX12YXIgcixuPXplLnRvKHQscmEoKChyPXt9KVtpXT0iKz0wLjEiLHIucGF1c2VkPSEwLHIuc3RhZ2dlcj0wLHIpLGV8fHt9KSk7cmV0dXJuIGF5LnR3ZWVuPW4sYXl9LGlzVHdlZW5pbmc6ZnVuY3Rpb24gaXNUd2VlbmluZyh0KXtyZXR1cm4gMDxJLmdldFR3ZWVuc09mKHQsITApLmxlbmd0aH0sZGVmYXVsdHM6ZnVuY3Rpb24gZGVmYXVsdHModCl7cmV0dXJuIHQmJnQuZWFzZSYmKHQuZWFzZT1ZdCh0LmVhc2UsWi5lYXNlKSksdWEoWix0fHx7fSl9LGNvbmZpZzpmdW5jdGlvbiBjb25maWcodCl7cmV0dXJuIHVhKFgsdHx8e30pfSxyZWdpc3RlckVmZmVjdDpmdW5jdGlvbiByZWdpc3RlckVmZmVjdCh0KXt2YXIgaT10Lm5hbWUsbj10LmVmZmVjdCxlPXQucGx1Z2lucyxhPXQuZGVmYXVsdHMscj10LmV4dGVuZFRpbWVsaW5lOyhlfHwiIikuc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0JiYhcHRbdF0mJiFvdFt0XSYmUihpKyIgZWZmZWN0IHJlcXVpcmVzICIrdCsiIHBsdWdpbi4iKX0pLF90W2ldPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbihPdCh0KSxyYShlfHx7fSxhKSxyKX0sciYmKFF0LnByb3RvdHlwZVtpXT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuYWRkKF90W2ldKHQsdihlKT9lOihyPWUpJiZ7fSx0aGlzKSxyKX0pfSxyZWdpc3RlckVhc2U6ZnVuY3Rpb24gcmVnaXN0ZXJFYXNlKHQsZSl7THRbdF09WXQoZSl9LHBhcnNlRWFzZTpmdW5jdGlvbiBwYXJzZUVhc2UodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9ZdCh0LGUpOkx0fSxnZXRCeUlkOmZ1bmN0aW9uIGdldEJ5SWQodCl7cmV0dXJuIEkuZ2V0QnlJZCh0KX0sZXhwb3J0Um9vdDpmdW5jdGlvbiBleHBvcnRSb290KHQsZSl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciByLGksbj1uZXcgUXQodCk7Zm9yKG4uc21vb3RoQ2hpbGRUaW1pbmc9dyh0LnNtb290aENoaWxkVGltaW5nKSxJLnJlbW92ZShuKSxuLl9kcD0wLG4uX3RpbWU9bi5fdFRpbWU9SS5fdGltZSxyPUkuX2ZpcnN0O3I7KWk9ci5fbmV4dCwhZSYmIXIuX2R1ciYmciBpbnN0YW5jZW9mIEp0JiZyLnZhcnMub25Db21wbGV0ZT09PXIuX3RhcmdldHNbMF18fExhKG4scixyLl9zdGFydC1yLl9kZWxheSkscj1pO3JldHVybiBMYShJLG4sMCksbn0sY29udGV4dDpmdW5jdGlvbiBjb250ZXh0KHQsZSl7cmV0dXJuIHQ\/bmV3IFBlKHQsZSk6bH0sbWF0Y2hNZWRpYTpmdW5jdGlvbiBtYXRjaE1lZGlhKHQpe3JldHVybiBuZXcgU2UodCl9LG1hdGNoTWVkaWFSZWZyZXNoOmZ1bmN0aW9uIG1hdGNoTWVkaWFSZWZyZXNoKCl7cmV0dXJuIFRlLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGUscixpPXQuY29uZGl0aW9ucztmb3IociBpbiBpKWlbcl0mJihpW3JdPSExLGU9MSk7ZSYmdC5yZXZlcnQoKX0pfHxHYygpfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIodCxlKXt2YXIgcj1iZVt0XXx8KGJlW3RdPVtdKTt+ci5pbmRleE9mKGUpfHxyLnB1c2goZSl9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUpe3ZhciByPWJlW3RdLGk9ciYmci5pbmRleE9mKGUpOzA8PWkmJnIuc3BsaWNlKGksMSl9LHV0aWxzOnt3cmFwOmZ1bmN0aW9uIHdyYXAoZSx0LHIpe3ZhciBpPXQtZTtyZXR1cm4gJChlKT9tYihlLHdyYXAoMCxlLmxlbmd0aCksdCk6WGEocixmdW5jdGlvbih0KXtyZXR1cm4oaSsodC1lKSVpKSVpK2V9KX0sd3JhcFlveW86ZnVuY3Rpb24gd3JhcFlveW8oZSx0LHIpe3ZhciBpPXQtZSxuPTIqaTtyZXR1cm4gJChlKT9tYihlLHdyYXBZb3lvKDAsZS5sZW5ndGgtMSksdCk6WGEocixmdW5jdGlvbih0KXtyZXR1cm4gZSsoaTwodD0obisodC1lKSVuKSVufHwwKT9uLXQ6dCl9KX0sZGlzdHJpYnV0ZTpmYixyYW5kb206aWIsc25hcDpoYixub3JtYWxpemU6ZnVuY3Rpb24gbm9ybWFsaXplKHQsZSxyKXtyZXR1cm4gQXQodCxlLDAsMSxyKX0sZ2V0VW5pdDpaYSxjbGFtcDpmdW5jdGlvbiBjbGFtcChlLHIsdCl7cmV0dXJuIFhhKHQsZnVuY3Rpb24odCl7cmV0dXJuIE10KGUscix0KX0pfSxzcGxpdENvbG9yOkJiLHRvQXJyYXk6T3Qsc2VsZWN0b3I6ZGIsbWFwUmFuZ2U6QXQscGlwZTpmdW5jdGlvbiBwaXBlKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspZVtyXT1hcmd1bWVudHNbcl07cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiBlKHQpfSx0KX19LHVuaXRpemU6ZnVuY3Rpb24gdW5pdGl6ZShlLHIpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZShwYXJzZUZsb2F0KHQpKSsocnx8WmEodCkpfX0saW50ZXJwb2xhdGU6ZnVuY3Rpb24gaW50ZXJwb2xhdGUoZSxpLHQsbil7dmFyIGE9aXNOYU4oZStpKT8wOmZ1bmN0aW9uKHQpe3JldHVybigxLXQpKmUrdCppfTtpZighYSl7dmFyIHMsbyx1LGgsbCxmPXIoZSksZD17fTtpZighMD09PXQmJihuPTEpJiYodD1udWxsKSxmKWU9e3A6ZX0saT17cDppfTtlbHNlIGlmKCQoZSkmJiEkKGkpKXtmb3IodT1bXSxoPWUubGVuZ3RoLGw9aC0yLG89MTtvPGg7bysrKXUucHVzaChpbnRlcnBvbGF0ZShlW28tMV0sZVtvXSkpO2gtLSxhPWZ1bmN0aW9uIGZ1bmModCl7dCo9aDt2YXIgZT1NYXRoLm1pbihsLH5+dCk7cmV0dXJuIHVbZV0odC1lKX0sdD1pfWVsc2Ugbnx8KGU9eXQoJChlKT9bXTp7fSxlKSk7aWYoIXUpe2ZvcihzIGluIGkpVnQuY2FsbChkLGUscywiZ2V0IixpW3NdKTthPWZ1bmN0aW9uIGZ1bmModCl7cmV0dXJuIHVlKHQsZCl8fChmP2UucDplKX19fXJldHVybiBYYSh0LGEpfSxzaHVmZmxlOmVifSxpbnN0YWxsOlAsZWZmZWN0czpfdCx0aWNrZXI6UnQsdXBkYXRlUm9vdDpRdC51cGRhdGVSb290LHBsdWdpbnM6cHQsZ2xvYmFsVGltZWxpbmU6SSxjb3JlOntQcm9wVHdlZW46Z2UsZ2xvYmFsczpTLFR3ZWVuOkp0LFRpbWVsaW5lOlF0LEFuaW1hdGlvbjpOdCxnZXRDYWNoZTpmYSxfcmVtb3ZlTGlua2VkTGlzdEl0ZW06emEscmV2ZXJ0aW5nOmZ1bmN0aW9uIHJldmVydGluZygpe3JldHVybiBMfSxjb250ZXh0OmZ1bmN0aW9uIGNvbnRleHQodCl7cmV0dXJuIHQmJmwmJihsLmRhdGEucHVzaCh0KSx0Ll9jdHg9bCksbH0sc3VwcHJlc3NPdmVyd3JpdGVzOmZ1bmN0aW9uIHN1cHByZXNzT3ZlcndyaXRlcyh0KXtyZXR1cm4gRj10fX19O2hhKCJ0byxmcm9tLGZyb21UbyxkZWxheWVkQ2FsbCxzZXQsa2lsbFR3ZWVuc09mIixmdW5jdGlvbih0KXtyZXR1cm4gRGVbdF09SnRbdF19KSxSdC5hZGQoUXQudXBkYXRlUm9vdCksZD1EZS50byh7fSx7ZHVyYXRpb246MH0pO2Z1bmN0aW9uIEtjKHQsZSl7Zm9yKHZhciByPXQuX3B0O3ImJnIucCE9PWUmJnIub3AhPT1lJiZyLmZwIT09ZTspcj1yLl9uZXh0O3JldHVybiByfWZ1bmN0aW9uIE1jKHQsYSl7cmV0dXJue25hbWU6dCxoZWFkbGVzczoxLHJhd1ZhcnM6MSxpbml0OmZ1bmN0aW9uIGluaXQodCxuLGUpe2UuX29uSW5pdD1mdW5jdGlvbih0KXt2YXIgZSxpO2lmKHIobikmJihlPXt9LGhhKG4sZnVuY3Rpb24odCl7cmV0dXJuIGVbdF09MX0pLG49ZSksYSl7Zm9yKGkgaW4gZT17fSxuKWVbaV09YShuW2ldKTtuPWV9IWZ1bmN0aW9uIF9hZGRNb2RpZmllcnModCxlKXt2YXIgcixpLG4sYT10Ll90YXJnZXRzO2ZvcihyIGluIGUpZm9yKGk9YS5sZW5ndGg7aS0tOykobj0obj10Ll9wdExvb2t1cFtpXVtyXSkmJm4uZCkmJihuLl9wdCYmKG49S2MobixyKSksbiYmbi5tb2RpZmllciYmbi5tb2RpZmllcihlW3JdLHQsYVtpXSxyKSl9KHQsbil9fX19dmFyIHplPURlLnJlZ2lzdGVyUGx1Z2luKHtuYW1lOiJhdHRyIixpbml0OmZ1bmN0aW9uIGluaXQodCxlLHIsaSxuKXt2YXIgYSxzLG87Zm9yKGEgaW4gdGhpcy50d2Vlbj1yLGUpbz10LmdldEF0dHJpYnV0ZShhKXx8IiIsKHM9dGhpcy5hZGQodCwic2V0QXR0cmlidXRlIiwob3x8MCkrIiIsZVthXSxpLG4sMCwwLGEpKS5vcD1hLHMuYj1vLHRoaXMuX3Byb3BzLnB1c2goYSl9LHJlbmRlcjpmdW5jdGlvbiByZW5kZXIodCxlKXtmb3IodmFyIHI9ZS5fcHQ7cjspTD9yLnNldChyLnQsci5wLHIuYixyKTpyLnIodCxyLmQpLHI9ci5fbmV4dH19LHtuYW1lOiJlbmRBcnJheSIsaGVhZGxlc3M6MSxpbml0OmZ1bmN0aW9uIGluaXQodCxlKXtmb3IodmFyIHI9ZS5sZW5ndGg7ci0tOyl0aGlzLmFkZCh0LHIsdFtyXXx8MCxlW3JdLDAsMCwwLDAsMCwxKX19LE1jKCJyb3VuZFByb3BzIixnYiksTWMoIm1vZGlmaWVycyIpLE1jKCJzbmFwIixoYikpfHxEZTtKdC52ZXJzaW9uPVF0LnZlcnNpb249emUudmVyc2lvbj0iMy4xMy4wIixvPTEseCgpJiZGdCgpO2Z1bmN0aW9uIHdkKHQsZSl7cmV0dXJuIGUuc2V0KGUudCxlLnAsTWF0aC5yb3VuZCgxZTQqKGUucytlLmMqdCkpLzFlNCtlLnUsZSl9ZnVuY3Rpb24geGQodCxlKXtyZXR1cm4gZS5zZXQoZS50LGUucCwxPT09dD9lLmU6TWF0aC5yb3VuZCgxZTQqKGUucytlLmMqdCkpLzFlNCtlLnUsZSl9ZnVuY3Rpb24geWQodCxlKXtyZXR1cm4gZS5zZXQoZS50LGUucCx0P01hdGgucm91bmQoMWU0KihlLnMrZS5jKnQpKS8xZTQrZS51OmUuYixlKX1mdW5jdGlvbiB6ZCh0LGUpe3ZhciByPWUucytlLmMqdDtlLnNldChlLnQsZS5wLH5+KHIrKHI8MD8tLjU6LjUpKStlLnUsZSl9ZnVuY3Rpb24gQWQodCxlKXtyZXR1cm4gZS5zZXQoZS50LGUucCx0P2UuZTplLmIsZSl9ZnVuY3Rpb24gQmQodCxlKXtyZXR1cm4gZS5zZXQoZS50LGUucCwxIT09dD9lLmI6ZS5lLGUpfWZ1bmN0aW9uIENkKHQsZSxyKXtyZXR1cm4gdC5zdHlsZVtlXT1yfWZ1bmN0aW9uIERkKHQsZSxyKXtyZXR1cm4gdC5zdHlsZS5zZXRQcm9wZXJ0eShlLHIpfWZ1bmN0aW9uIEVkKHQsZSxyKXtyZXR1cm4gdC5fZ3NhcFtlXT1yfWZ1bmN0aW9uIEZkKHQsZSxyKXtyZXR1cm4gdC5fZ3NhcC5zY2FsZVg9dC5fZ3NhcC5zY2FsZVk9cn1mdW5jdGlvbiBHZCh0LGUscixpLG4pe3ZhciBhPXQuX2dzYXA7YS5zY2FsZVg9YS5zY2FsZVk9cixhLnJlbmRlclRyYW5zZm9ybShuLGEpfWZ1bmN0aW9uIEhkKHQsZSxyLGksbil7dmFyIGE9dC5fZ3NhcDthW2VdPXIsYS5yZW5kZXJUcmFuc2Zvcm0obixhKX1mdW5jdGlvbiBLZCh0LGUpe3ZhciByPXRoaXMsaT10aGlzLnRhcmdldCxuPWkuc3R5bGUsYT1pLl9nc2FwO2lmKHQgaW4gc3ImJm4pe2lmKHRoaXMudGZtPXRoaXMudGZtfHx7fSwidHJhbnNmb3JtIj09PXQpcmV0dXJuIGNyLnRyYW5zZm9ybS5zcGxpdCgiLCIpLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIEtkLmNhbGwocix0LGUpfSk7aWYofih0PWNyW3RdfHx0KS5pbmRleE9mKCIsIik\/dC5zcGxpdCgiLCIpLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHIudGZtW3RdPVRyKGksdCl9KTp0aGlzLnRmbVt0XT1hLng\/YVt0XTpUcihpLHQpLHQ9PT1fciYmKHRoaXMudGZtLnpPcmlnaW49YS56T3JpZ2luKSwwPD10aGlzLnByb3BzLmluZGV4T2YocHIpKXJldHVybjthLnN2ZyYmKHRoaXMuc3Znbz1pLmdldEF0dHJpYnV0ZSgiZGF0YS1zdmctb3JpZ2luIiksdGhpcy5wcm9wcy5wdXNoKF9yLGUsIiIpKSx0PXByfShufHxlKSYmdGhpcy5wcm9wcy5wdXNoKHQsZSxuW3RdKX1mdW5jdGlvbiBMZCh0KXt0LnRyYW5zbGF0ZSYmKHQucmVtb3ZlUHJvcGVydHkoInRyYW5zbGF0ZSIpLHQucmVtb3ZlUHJvcGVydHkoInNjYWxlIiksdC5yZW1vdmVQcm9wZXJ0eSgicm90YXRlIikpfWZ1bmN0aW9uIE1kKCl7dmFyIHQsZSxyPXRoaXMucHJvcHMsaT10aGlzLnRhcmdldCxuPWkuc3R5bGUsYT1pLl9nc2FwO2Zvcih0PTA7dDxyLmxlbmd0aDt0Kz0zKXJbdCsxXT8yPT09clt0KzFdP2lbclt0XV0oclt0KzJdKTppW3JbdF1dPXJbdCsyXTpyW3QrMl0\/bltyW3RdXT1yW3QrMl06bi5yZW1vdmVQcm9wZXJ0eSgiLS0iPT09clt0XS5zdWJzdHIoMCwyKT9yW3RdOnJbdF0ucmVwbGFjZShsciwiLSQxIikudG9Mb3dlckNhc2UoKSk7aWYodGhpcy50Zm0pe2ZvcihlIGluIHRoaXMudGZtKWFbZV09dGhpcy50Zm1bZV07YS5zdmcmJihhLnJlbmRlclRyYW5zZm9ybSgpLGkuc2V0QXR0cmlidXRlKCJkYXRhLXN2Zy1vcmlnaW4iLHRoaXMuc3Znb3x8IiIpKSwodD1ZZSgpKSYmdC5pc1N0YXJ0fHxuW3ByXXx8KExkKG4pLGEuek9yaWdpbiYmbltfcl0mJihuW19yXSs9IiAiK2Euek9yaWdpbisicHgiLGEuek9yaWdpbj0wLGEucmVuZGVyVHJhbnNmb3JtKCkpLGEudW5jYWNoZT0xKX19ZnVuY3Rpb24gTmQodCxlKXt2YXIgcj17dGFyZ2V0OnQscHJvcHM6W10scmV2ZXJ0Ok1kLHNhdmU6S2R9O3JldHVybiB0Ll9nc2FwfHx6ZS5jb3JlLmdldENhY2hlKHQpLGUmJnQuc3R5bGUmJnQubm9kZVR5cGUmJmUuc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiByLnNhdmUodCl9KSxyfWZ1bmN0aW9uIFBkKHQsZSl7dmFyIHI9UmUuY3JlYXRlRWxlbWVudE5TP1JlLmNyZWF0ZUVsZW1lbnROUygoZXx8Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiKS5yZXBsYWNlKC9eaHR0cHMvLCJodHRwIiksdCk6UmUuY3JlYXRlRWxlbWVudCh0KTtyZXR1cm4gciYmci5zdHlsZT9yOlJlLmNyZWF0ZUVsZW1lbnQodCl9ZnVuY3Rpb24gUWQodCxlLHIpe3ZhciBpPWdldENvbXB1dGVkU3R5bGUodCk7cmV0dXJuIGlbZV18fGkuZ2V0UHJvcGVydHlWYWx1ZShlLnJlcGxhY2UobHIsIi0kMSIpLnRvTG93ZXJDYXNlKCkpfHxpLmdldFByb3BlcnR5VmFsdWUoZSl8fCFyJiZRZCh0LGdyKGUpfHxlLDEpfHwiIn1mdW5jdGlvbiBUZCgpeyhmdW5jdGlvbiBfd2luZG93RXhpc3RzKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3d9KSgpJiZ3aW5kb3cuZG9jdW1lbnQmJihFZT13aW5kb3csUmU9RWUuZG9jdW1lbnQsRmU9UmUuZG9jdW1lbnRFbGVtZW50LEllPVBkKCJkaXYiKXx8e3N0eWxlOnt9fSxQZCgiZGl2IikscHI9Z3IocHIpLF9yPXByKyJPcmlnaW4iLEllLnN0eWxlLmNzc1RleHQ9ImJvcmRlci13aWR0aDowO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7cGFkZGluZzowIixYZT0hIWdyKCJwZXJzcGVjdGl2ZSIpLFllPXplLmNvcmUucmV2ZXJ0aW5nLExlPTEpfWZ1bmN0aW9uIFVkKHQpe3ZhciBlLHI9dC5vd25lclNWR0VsZW1lbnQsaT1QZCgic3ZnIixyJiZyLmdldEF0dHJpYnV0ZSgieG1sbnMiKXx8Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiksbj10LmNsb25lTm9kZSghMCk7bi5zdHlsZS5kaXNwbGF5PSJibG9jayIsaS5hcHBlbmRDaGlsZChuKSxGZS5hcHBlbmRDaGlsZChpKTt0cnl7ZT1uLmdldEJCb3goKX1jYXRjaCh0KXt9cmV0dXJuIGkucmVtb3ZlQ2hpbGQobiksRmUucmVtb3ZlQ2hpbGQoaSksZX1mdW5jdGlvbiBWZCh0LGUpe2Zvcih2YXIgcj1lLmxlbmd0aDtyLS07KWlmKHQuaGFzQXR0cmlidXRlKGVbcl0pKXJldHVybiB0LmdldEF0dHJpYnV0ZShlW3JdKX1mdW5jdGlvbiBXZChlKXt2YXIgcixpO3RyeXtyPWUuZ2V0QkJveCgpfWNhdGNoKHQpe3I9VWQoZSksaT0xfXJldHVybiByJiYoci53aWR0aHx8ci5oZWlnaHQpfHxpfHwocj1VZChlKSksIXJ8fHIud2lkdGh8fHIueHx8ci55P3I6e3g6K1ZkKGUsWyJ4IiwiY3giLCJ4MSJdKXx8MCx5OitWZChlLFsieSIsImN5IiwieTEiXSl8fDAsd2lkdGg6MCxoZWlnaHQ6MH19ZnVuY3Rpb24gWGQodCl7cmV0dXJuISghdC5nZXRDVE18fHQucGFyZW50Tm9kZSYmIXQub3duZXJTVkdFbGVtZW50fHwhV2QodCkpfWZ1bmN0aW9uIFlkKHQsZSl7aWYoZSl7dmFyIHIsaT10LnN0eWxlO2UgaW4gc3ImJmUhPT1fciYmKGU9cHIpLGkucmVtb3ZlUHJvcGVydHk\/KCJtcyIhPT0ocj1lLnN1YnN0cigwLDIpKSYmIndlYmtpdCIhPT1lLnN1YnN0cigwLDYpfHwoZT0iLSIrZSksaS5yZW1vdmVQcm9wZXJ0eSgiLS0iPT09cj9lOmUucmVwbGFjZShsciwiLSQxIikudG9Mb3dlckNhc2UoKSkpOmkucmVtb3ZlQXR0cmlidXRlKGUpfX1mdW5jdGlvbiBaZCh0LGUscixpLG4sYSl7dmFyIHM9bmV3IGdlKHQuX3B0LGUsciwwLDEsYT9CZDpBZCk7cmV0dXJuKHQuX3B0PXMpLmI9aSxzLmU9bix0Ll9wcm9wcy5wdXNoKHIpLHN9ZnVuY3Rpb24gYWUodCxlLHIsaSl7dmFyIG4sYSxzLG8sdT1wYXJzZUZsb2F0KHIpfHwwLGg9KHIrIiIpLnRyaW0oKS5zdWJzdHIoKHUrIiIpLmxlbmd0aCl8fCJweCIsbD1JZS5zdHlsZSxmPWZyLnRlc3QoZSksZD0ic3ZnIj09PXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpLGM9KGQ\/ImNsaWVudCI6Im9mZnNldCIpKyhmPyJXaWR0aCI6IkhlaWdodCIpLHA9InB4Ij09PWksXz0iJSI9PT1pO2lmKGk9PT1ofHwhdXx8dnJbaV18fHZyW2hdKXJldHVybiB1O2lmKCJweCI9PT1ofHxwfHwodT1hZSh0LGUsciwicHgiKSksbz10LmdldENUTSYmWGQodCksKF98fCIlIj09PWgpJiYoc3JbZV18fH5lLmluZGV4T2YoImFkaXVzIikpKXJldHVybiBuPW8\/dC5nZXRCQm94KClbZj8id2lkdGgiOiJoZWlnaHQiXTp0W2NdLGlhKF8\/dS9uKjEwMDp1LzEwMCpuKTtpZihsW2Y\/IndpZHRoIjoiaGVpZ2h0Il09MTAwKyhwP2g6aSksYT0icmVtIiE9PWkmJn5lLmluZGV4T2YoImFkaXVzIil8fCJlbSI9PT1pJiZ0LmFwcGVuZENoaWxkJiYhZD90OnQucGFyZW50Tm9kZSxvJiYoYT0odC5vd25lclNWR0VsZW1lbnR8fHt9KS5wYXJlbnROb2RlKSxhJiZhIT09UmUmJmEuYXBwZW5kQ2hpbGR8fChhPVJlLmJvZHkpLChzPWEuX2dzYXApJiZfJiZzLndpZHRoJiZmJiZzLnRpbWU9PT1SdC50aW1lJiYhcy51bmNhY2hlKXJldHVybiBpYSh1L3Mud2lkdGgqMTAwKTtpZighX3x8ImhlaWdodCIhPT1lJiYid2lkdGgiIT09ZSkhXyYmIiUiIT09aHx8eXJbUWQoYSwiZGlzcGxheSIpXXx8KGwucG9zaXRpb249UWQodCwicG9zaXRpb24iKSksYT09PXQmJihsLnBvc2l0aW9uPSJzdGF0aWMiKSxhLmFwcGVuZENoaWxkKEllKSxuPUllW2NdLGEucmVtb3ZlQ2hpbGQoSWUpLGwucG9zaXRpb249ImFic29sdXRlIjtlbHNle3ZhciBtPXQuc3R5bGVbZV07dC5zdHlsZVtlXT0xMDAraSxuPXRbY10sbT90LnN0eWxlW2VdPW06WWQodCxlKX1yZXR1cm4gZiYmXyYmKChzPWZhKGEpKS50aW1lPVJ0LnRpbWUscy53aWR0aD1hW2NdKSxpYShwP24qdS8xMDA6biYmdT8xMDAvbip1OjApfWZ1bmN0aW9uIGNlKHQsZSxyLGkpe2lmKCFyfHwibm9uZSI9PT1yKXt2YXIgbj1ncihlLHQsMSksYT1uJiZRZCh0LG4sMSk7YSYmYSE9PXI\/KGU9bixyPWEpOiJib3JkZXJDb2xvciI9PT1lJiYocj1RZCh0LCJib3JkZXJUb3BDb2xvciIpKX12YXIgcyxvLHUsaCxsLGYsZCxjLHAsXyxtLGc9bmV3IGdlKHRoaXMuX3B0LHQuc3R5bGUsZSwwLDEsb2UpLHY9MCx5PTA7aWYoZy5iPXIsZy5lPWkscis9IiIsInZhcigtLSI9PT0oaSs9IiIpLnN1YnN0cmluZygwLDYpJiYoaT1RZCh0LGkuc3Vic3RyaW5nKDQsaS5pbmRleE9mKCIpIikpKSksImF1dG8iPT09aSYmKGY9dC5zdHlsZVtlXSx0LnN0eWxlW2VdPWksaT1RZCh0LGUpfHxpLGY\/dC5zdHlsZVtlXT1mOllkKHQsZSkpLEdiKHM9W3IsaV0pLGk9c1sxXSx1PShyPXNbMF0pLm1hdGNoKHJ0KXx8W10sKGkubWF0Y2gocnQpfHxbXSkubGVuZ3RoKXtmb3IoO289cnQuZXhlYyhpKTspZD1vWzBdLHA9aS5zdWJzdHJpbmcodixvLmluZGV4KSxsP2w9KGwrMSklNToicmdiYSgiIT09cC5zdWJzdHIoLTUpJiYiaHNsYSgiIT09cC5zdWJzdHIoLTUpfHwobD0xKSxkIT09KGY9dVt5KytdfHwiIikmJihoPXBhcnNlRmxvYXQoZil8fDAsbT1mLnN1YnN0cigoaCsiIikubGVuZ3RoKSwiPSI9PT1kLmNoYXJBdCgxKSYmKGQ9a2EoaCxkKSttKSxjPXBhcnNlRmxvYXQoZCksXz1kLnN1YnN0cigoYysiIikubGVuZ3RoKSx2PXJ0Lmxhc3RJbmRleC1fLmxlbmd0aCxffHwoXz1ffHxYLnVuaXRzW2VdfHxtLHY9PT1pLmxlbmd0aCYmKGkrPV8sZy5lKz1fKSksbSE9PV8mJihoPWFlKHQsZSxmLF8pfHwwKSxnLl9wdD17X25leHQ6Zy5fcHQscDpwfHwxPT09eT9wOiIsIixzOmgsYzpjLWgsbTpsJiZsPDR8fCJ6SW5kZXgiPT09ZT9NYXRoLnJvdW5kOjB9KTtnLmM9djxpLmxlbmd0aD9pLnN1YnN0cmluZyh2LGkubGVuZ3RoKToiIn1lbHNlIGcucj0iZGlzcGxheSI9PT1lJiYibm9uZSI9PT1pP0JkOkFkO3JldHVybiBudC50ZXN0KGkpJiYoZy5lPTApLHRoaXMuX3B0PWd9ZnVuY3Rpb24gZWUodCl7dmFyIGU9dC5zcGxpdCgiICIpLHI9ZVswXSxpPWVbMV18fCI1MCUiO3JldHVybiJ0b3AiIT09ciYmImJvdHRvbSIhPT1yJiYibGVmdCIhPT1pJiYicmlnaHQiIT09aXx8KHQ9cixyPWksaT10KSxlWzBdPWJyW3JdfHxyLGVbMV09YnJbaV18fGksZS5qb2luKCIgIil9ZnVuY3Rpb24gZmUodCxlKXtpZihlLnR3ZWVuJiZlLnR3ZWVuLl90aW1lPT09ZS50d2Vlbi5fZHVyKXt2YXIgcixpLG4sYT1lLnQscz1hLnN0eWxlLG89ZS51LHU9YS5fZ3NhcDtpZigiYWxsIj09PW98fCEwPT09bylzLmNzc1RleHQ9IiIsaT0xO2Vsc2UgZm9yKG49KG89by5zcGxpdCgiLCIpKS5sZW5ndGg7LTE8LS1uOylyPW9bbl0sc3Jbcl0mJihpPTEscj0idHJhbnNmb3JtT3JpZ2luIj09PXI\/X3I6cHIpLFlkKGEscik7aSYmKFlkKGEscHIpLHUmJih1LnN2ZyYmYS5yZW1vdmVBdHRyaWJ1dGUoInRyYW5zZm9ybSIpLHMuc2NhbGU9cy5yb3RhdGU9cy50cmFuc2xhdGU9Im5vbmUiLGtyKGEsMSksdS51bmNhY2hlPTEsTGQocykpKX19ZnVuY3Rpb24gamUodCl7cmV0dXJuIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSI9PT10fHwibm9uZSI9PT10fHwhdH1mdW5jdGlvbiBrZSh0KXt2YXIgZT1RZCh0LHByKTtyZXR1cm4gamUoZSk\/eHI6ZS5zdWJzdHIoNykubWF0Y2goZXQpLm1hcChpYSl9ZnVuY3Rpb24gbGUodCxlKXt2YXIgcixpLG4sYSxzPXQuX2dzYXB8fGZhKHQpLG89dC5zdHlsZSx1PWtlKHQpO3JldHVybiBzLnN2ZyYmdC5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpPyIxLDAsMCwxLDAsMCI9PT0odT1bKG49dC50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpLm1hdHJpeCkuYSxuLmIsbi5jLG4uZCxuLmUsbi5mXSkuam9pbigiLCIpP3hyOnU6KHUhPT14cnx8dC5vZmZzZXRQYXJlbnR8fHQ9PT1GZXx8cy5zdmd8fChuPW8uZGlzcGxheSxvLmRpc3BsYXk9ImJsb2NrIiwocj10LnBhcmVudE5vZGUpJiYodC5vZmZzZXRQYXJlbnR8fHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpfHwoYT0xLGk9dC5uZXh0RWxlbWVudFNpYmxpbmcsRmUuYXBwZW5kQ2hpbGQodCkpLHU9a2UodCksbj9vLmRpc3BsYXk9bjpZZCh0LCJkaXNwbGF5IiksYSYmKGk\/ci5pbnNlcnRCZWZvcmUodCxpKTpyP3IuYXBwZW5kQ2hpbGQodCk6RmUucmVtb3ZlQ2hpbGQodCkpKSxlJiY2PHUubGVuZ3RoP1t1WzBdLHVbMV0sdVs0XSx1WzVdLHVbMTJdLHVbMTNdXTp1KX1mdW5jdGlvbiBtZSh0LGUscixpLG4sYSl7dmFyIHMsbyx1LGg9dC5fZ3NhcCxsPW58fGxlKHQsITApLGY9aC54T3JpZ2lufHwwLGQ9aC55T3JpZ2lufHwwLGM9aC54T2Zmc2V0fHwwLHA9aC55T2Zmc2V0fHwwLF89bFswXSxtPWxbMV0sZz1sWzJdLHY9bFszXSx5PWxbNF0sVD1sWzVdLGI9ZS5zcGxpdCgiICIpLHc9cGFyc2VGbG9hdChiWzBdKXx8MCx4PXBhcnNlRmxvYXQoYlsxXSl8fDA7cj9sIT09eHImJihvPV8qdi1tKmcpJiYodT13KigtbS9vKSt4KihfL28pLShfKlQtbSp5KS9vLHc9dyoodi9vKSt4KigtZy9vKSsoZypULXYqeSkvbyx4PXUpOih3PShzPVdkKHQpKS54Kyh+YlswXS5pbmRleE9mKCIlIik\/dy8xMDAqcy53aWR0aDp3KSx4PXMueSsofihiWzFdfHxiWzBdKS5pbmRleE9mKCIlIik\/eC8xMDAqcy5oZWlnaHQ6eCkpLGl8fCExIT09aSYmaC5zbW9vdGg\/KHk9dy1mLFQ9eC1kLGgueE9mZnNldD1jKyh5Kl8rVCpnKS15LGgueU9mZnNldD1wKyh5Km0rVCp2KS1UKTpoLnhPZmZzZXQ9aC55T2Zmc2V0PTAsaC54T3JpZ2luPXcsaC55T3JpZ2luPXgsaC5zbW9vdGg9ISFpLGgub3JpZ2luPWUsaC5vcmlnaW5Jc0Fic29sdXRlPSEhcix0LnN0eWxlW19yXT0iMHB4IDBweCIsYSYmKFpkKGEsaCwieE9yaWdpbiIsZix3KSxaZChhLGgsInlPcmlnaW4iLGQseCksWmQoYSxoLCJ4T2Zmc2V0IixjLGgueE9mZnNldCksWmQoYSxoLCJ5T2Zmc2V0IixwLGgueU9mZnNldCkpLHQuc2V0QXR0cmlidXRlKCJkYXRhLXN2Zy1vcmlnaW4iLHcrIiAiK3gpfWZ1bmN0aW9uIHBlKHQsZSxyKXt2YXIgaT1aYShlKTtyZXR1cm4gaWEocGFyc2VGbG9hdChlKStwYXJzZUZsb2F0KGFlKHQsIngiLHIrInB4IixpKSkpK2l9ZnVuY3Rpb24gd2UodCxlLGksbixhKXt2YXIgcyxvLHU9MzYwLGg9cihhKSxsPXBhcnNlRmxvYXQoYSkqKGgmJn5hLmluZGV4T2YoInJhZCIpP29yOjEpLW4sZj1uK2wrImRlZyI7cmV0dXJuIGgmJigic2hvcnQiPT09KHM9YS5zcGxpdCgiXyIpWzFdKSYmKGwlPXUpIT09bCUxODAmJihsKz1sPDA\/dTotdSksImN3Ij09PXMmJmw8MD9sPShsKzM2ZTkpJXUtfn4obC91KSp1OiJjY3ciPT09cyYmMDxsJiYobD0obC0zNmU5KSV1LX5+KGwvdSkqdSkpLHQuX3B0PW89bmV3IGdlKHQuX3B0LGUsaSxuLGwseGQpLG8uZT1mLG8udT0iZGVnIix0Ll9wcm9wcy5wdXNoKGkpLG99ZnVuY3Rpb24geGUodCxlKXtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl07cmV0dXJuIHR9ZnVuY3Rpb24geWUodCxlLHIpe3ZhciBpLG4sYSxzLG8sdSxoLGw9eGUoe30sci5fZ3NhcCksZj1yLnN0eWxlO2ZvcihuIGluIGwuc3ZnPyhhPXIuZ2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iKSxyLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwiIiksZltwcl09ZSxpPWtyKHIsMSksWWQocixwciksci5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsYSkpOihhPWdldENvbXB1dGVkU3R5bGUocilbcHJdLGZbcHJdPWUsaT1rcihyLDEpLGZbcHJdPWEpLHNyKShhPWxbbl0pIT09KHM9aVtuXSkmJiJwZXJzcGVjdGl2ZSxmb3JjZTNELHRyYW5zZm9ybU9yaWdpbixzdmdPcmlnaW4iLmluZGV4T2Yobik8MCYmKG89WmEoYSkhPT0oaD1aYShzKSk\/YWUocixuLGEsaCk6cGFyc2VGbG9hdChhKSx1PXBhcnNlRmxvYXQocyksdC5fcHQ9bmV3IGdlKHQuX3B0LGksbixvLHUtbyx3ZCksdC5fcHQudT1ofHwwLHQuX3Byb3BzLnB1c2gobikpO3hlKGksbCl9dmFyIEVlLFJlLEZlLExlLEllLEJlLFllLFhlLFplPUx0LlBvd2VyMCxOZT1MdC5Qb3dlcjEsUWU9THQuUG93ZXIyLFVlPUx0LlBvd2VyMyxxZT1MdC5Qb3dlcjQsVmU9THQuTGluZWFyLFdlPUx0LlF1YWQsR2U9THQuQ3ViaWMsSGU9THQuUXVhcnQsS2U9THQuUXVpbnQsSmU9THQuU3Ryb25nLCRlPUx0LkVsYXN0aWMsdHI9THQuQmFjayxlcj1MdC5TdGVwcGVkRWFzZSxycj1MdC5Cb3VuY2UsaXI9THQuU2luZSxucj1MdC5FeHBvLGFyPUx0LkNpcmMsc3I9e30sb3I9MTgwL01hdGguUEksdXI9TWF0aC5QSS8xODAsaHI9TWF0aC5hdGFuMixscj0vKFtBLVpdKS9nLGZyPS8obGVmdHxyaWdodHx3aWR0aHxtYXJnaW58cGFkZGluZ3x4KS9pLGRyPS9bXHMsXChdXFMvLGNyPXthdXRvQWxwaGE6Im9wYWNpdHksdmlzaWJpbGl0eSIsc2NhbGU6InNjYWxlWCxzY2FsZVkiLGFscGhhOiJvcGFjaXR5In0scHI9InRyYW5zZm9ybSIsX3I9cHIrIk9yaWdpbiIsbXI9Ik8sTW96LG1zLE1zLFdlYmtpdCIuc3BsaXQoIiwiKSxncj1mdW5jdGlvbiBfY2hlY2tQcm9wUHJlZml4KHQsZSxyKXt2YXIgaT0oZXx8SWUpLnN0eWxlLG49NTtpZih0IGluIGkmJiFyKXJldHVybiB0O2Zvcih0PXQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHIoMSk7bi0tJiYhKG1yW25dK3QgaW4gaSk7KTtyZXR1cm4gbjwwP251bGw6KDM9PT1uPyJtcyI6MDw9bj9tcltuXToiIikrdH0sdnI9e2RlZzoxLHJhZDoxLHR1cm46MX0seXI9e2dyaWQ6MSxmbGV4OjF9LFRyPWZ1bmN0aW9uIF9nZXQodCxlLHIsaSl7dmFyIG47cmV0dXJuIExlfHxUZCgpLGUgaW4gY3ImJiJ0cmFuc2Zvcm0iIT09ZSYmfihlPWNyW2VdKS5pbmRleE9mKCIsIikmJihlPWUuc3BsaXQoIiwiKVswXSksc3JbZV0mJiJ0cmFuc2Zvcm0iIT09ZT8obj1rcih0LGkpLG49InRyYW5zZm9ybU9yaWdpbiIhPT1lP25bZV06bi5zdmc\/bi5vcmlnaW46T3IoUWQodCxfcikpKyIgIituLnpPcmlnaW4rInB4Iik6KG49dC5zdHlsZVtlXSkmJiJhdXRvIiE9PW4mJiFpJiYhfihuKyIiKS5pbmRleE9mKCJjYWxjKCIpfHwobj13cltlXSYmd3JbZV0odCxlLHIpfHxRZCh0LGUpfHxnYSh0LGUpfHwoIm9wYWNpdHkiPT09ZT8xOjApKSxyJiYhfihuKyIiKS50cmltKCkuaW5kZXhPZigiICIpP2FlKHQsZSxuLHIpK3I6bn0sYnI9e3RvcDoiMCUiLGJvdHRvbToiMTAwJSIsbGVmdDoiMCUiLHJpZ2h0OiIxMDAlIixjZW50ZXI6IjUwJSJ9LHdyPXtjbGVhclByb3BzOmZ1bmN0aW9uIGNsZWFyUHJvcHModCxlLHIsaSxuKXtpZigiaXNGcm9tU3RhcnQiIT09bi5kYXRhKXt2YXIgYT10Ll9wdD1uZXcgZ2UodC5fcHQsZSxyLDAsMCxmZSk7cmV0dXJuIGEudT1pLGEucHI9LTEwLGEudHdlZW49bix0Ll9wcm9wcy5wdXNoKHIpLDF9fX0seHI9WzEsMCwwLDEsMCwwXSxNcj17fSxrcj1mdW5jdGlvbiBfcGFyc2VUcmFuc2Zvcm0odCxlKXt2YXIgcj10Ll9nc2FwfHxuZXcgWnQodCk7aWYoIngiaW4gciYmIWUmJiFyLnVuY2FjaGUpcmV0dXJuIHI7dmFyIGksbixhLHMsbyx1LGgsbCxmLGQsYyxwLF8sbSxnLHYseSxULGIsdyx4LE0sayxPLEEsUCxDLFMsRCx6LEUsUixGPXQuc3R5bGUsTD1yLnNjYWxlWDwwLEk9ImRlZyIsQj1nZXRDb21wdXRlZFN0eWxlKHQpLGo9UWQodCxfcil8fCIwIjtyZXR1cm4gaT1uPWE9dT1oPWw9Zj1kPWM9MCxzPW89MSxyLnN2Zz0hKCF0LmdldENUTXx8IVhkKHQpKSxCLnRyYW5zbGF0ZSYmKCJub25lIj09PUIudHJhbnNsYXRlJiYibm9uZSI9PT1CLnNjYWxlJiYibm9uZSI9PT1CLnJvdGF0ZXx8KEZbcHJdPSgibm9uZSIhPT1CLnRyYW5zbGF0ZT8idHJhbnNsYXRlM2QoIisoQi50cmFuc2xhdGUrIiAwIDAiKS5zcGxpdCgiICIpLnNsaWNlKDAsMykuam9pbigiLCAiKSsiKSAiOiIiKSsoIm5vbmUiIT09Qi5yb3RhdGU\/InJvdGF0ZSgiK0Iucm90YXRlKyIpICI6IiIpKygibm9uZSIhPT1CLnNjYWxlPyJzY2FsZSgiK0Iuc2NhbGUuc3BsaXQoIiAiKS5qb2luKCIsIikrIikgIjoiIikrKCJub25lIiE9PUJbcHJdP0JbcHJdOiIiKSksRi5zY2FsZT1GLnJvdGF0ZT1GLnRyYW5zbGF0ZT0ibm9uZSIpLG09bGUodCxyLnN2Zyksci5zdmcmJihPPXIudW5jYWNoZT8oQT10LmdldEJCb3goKSxqPXIueE9yaWdpbi1BLngrInB4ICIrKHIueU9yaWdpbi1BLnkpKyJweCIsIiIpOiFlJiZ0LmdldEF0dHJpYnV0ZSgiZGF0YS1zdmctb3JpZ2luIiksbWUodCxPfHxqLCEhT3x8ci5vcmlnaW5Jc0Fic29sdXRlLCExIT09ci5zbW9vdGgsbSkpLHA9ci54T3JpZ2lufHwwLF89ci55T3JpZ2lufHwwLG0hPT14ciYmKFQ9bVswXSxiPW1bMV0sdz1tWzJdLHg9bVszXSxpPU09bVs0XSxuPWs9bVs1XSw2PT09bS5sZW5ndGg\/KHM9TWF0aC5zcXJ0KFQqVCtiKmIpLG89TWF0aC5zcXJ0KHgqeCt3KncpLHU9VHx8Yj9ocihiLFQpKm9yOjAsKGY9d3x8eD9ocih3LHgpKm9yK3U6MCkmJihvKj1NYXRoLmFicyhNYXRoLmNvcyhmKnVyKSkpLHIuc3ZnJiYoaS09cC0ocCpUK18qdyksbi09Xy0ocCpiK18qeCkpKTooUj1tWzZdLHo9bVs3XSxDPW1bOF0sUz1tWzldLEQ9bVsxMF0sRT1tWzExXSxpPW1bMTJdLG49bVsxM10sYT1tWzE0XSxoPShnPWhyKFIsRCkpKm9yLGcmJihPPU0qKHY9TWF0aC5jb3MoLWcpKStDKih5PU1hdGguc2luKC1nKSksQT1rKnYrUyp5LFA9Uip2K0QqeSxDPU0qLXkrQyp2LFM9ayoteStTKnYsRD1SKi15K0QqdixFPXoqLXkrRSp2LE09TyxrPUEsUj1QKSxsPShnPWhyKC13LEQpKSpvcixnJiYodj1NYXRoLmNvcygtZyksRT14Kih5PU1hdGguc2luKC1nKSkrRSp2LFQ9Tz1UKnYtQyp5LGI9QT1iKnYtUyp5LHc9UD13KnYtRCp5KSx1PShnPWhyKGIsVCkpKm9yLGcmJihPPVQqKHY9TWF0aC5jb3MoZykpK2IqKHk9TWF0aC5zaW4oZykpLEE9TSp2K2sqeSxiPWIqdi1UKnksaz1rKnYtTSp5LFQ9TyxNPUEpLGgmJjM1OS45PE1hdGguYWJzKGgpK01hdGguYWJzKHUpJiYoaD11PTAsbD0xODAtbCkscz1pYShNYXRoLnNxcnQoVCpUK2IqYit3KncpKSxvPWlhKE1hdGguc3FydChrKmsrUipSKSksZz1ocihNLGspLGY9MmUtNDxNYXRoLmFicyhnKT9nKm9yOjAsYz1FPzEvKEU8MD8tRTpFKTowKSxyLnN2ZyYmKE89dC5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpLHIuZm9yY2VDU1M9dC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsIiIpfHwhamUoUWQodCxwcikpLE8mJnQuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLE8pKSksOTA8TWF0aC5hYnMoZikmJk1hdGguYWJzKGYpPDI3MCYmKEw\/KHMqPS0xLGYrPXU8PTA\/MTgwOi0xODAsdSs9dTw9MD8xODA6LTE4MCk6KG8qPS0xLGYrPWY8PTA\/MTgwOi0xODApKSxlPWV8fHIudW5jYWNoZSxyLng9aS0oKHIueFBlcmNlbnQ9aSYmKCFlJiZyLnhQZXJjZW50fHwoTWF0aC5yb3VuZCh0Lm9mZnNldFdpZHRoLzIpPT09TWF0aC5yb3VuZCgtaSk\/LTUwOjApKSk\/dC5vZmZzZXRXaWR0aCpyLnhQZXJjZW50LzEwMDowKSsicHgiLHIueT1uLSgoci55UGVyY2VudD1uJiYoIWUmJnIueVBlcmNlbnR8fChNYXRoLnJvdW5kKHQub2Zmc2V0SGVpZ2h0LzIpPT09TWF0aC5yb3VuZCgtbik\/LTUwOjApKSk\/dC5vZmZzZXRIZWlnaHQqci55UGVyY2VudC8xMDA6MCkrInB4IixyLno9YSsicHgiLHIuc2NhbGVYPWlhKHMpLHIuc2NhbGVZPWlhKG8pLHIucm90YXRpb249aWEodSkrSSxyLnJvdGF0aW9uWD1pYShoKStJLHIucm90YXRpb25ZPWlhKGwpK0ksci5za2V3WD1mK0ksci5za2V3WT1kK0ksci50cmFuc2Zvcm1QZXJzcGVjdGl2ZT1jKyJweCIsKHIuek9yaWdpbj1wYXJzZUZsb2F0KGouc3BsaXQoIiAiKVsyXSl8fCFlJiZyLnpPcmlnaW58fDApJiYoRltfcl09T3IoaikpLHIueE9mZnNldD1yLnlPZmZzZXQ9MCxyLmZvcmNlM0Q9WC5mb3JjZTNELHIucmVuZGVyVHJhbnNmb3JtPXIuc3ZnP3pyOlhlP0RyOkFyLHIudW5jYWNoZT0wLHJ9LE9yPWZ1bmN0aW9uIF9maXJzdFR3b09ubHkodCl7cmV0dXJuKHQ9dC5zcGxpdCgiICIpKVswXSsiICIrdFsxXX0sQXI9ZnVuY3Rpb24gX3JlbmRlck5vbjNEVHJhbnNmb3Jtcyh0LGUpe2Uuej0iMHB4IixlLnJvdGF0aW9uWT1lLnJvdGF0aW9uWD0iMGRlZyIsZS5mb3JjZTNEPTAsRHIodCxlKX0sUHI9IjBkZWciLENyPSIwcHgiLFNyPSIpICIsRHI9ZnVuY3Rpb24gX3JlbmRlckNTU1RyYW5zZm9ybXModCxlKXt2YXIgcj1lfHx0aGlzLGk9ci54UGVyY2VudCxuPXIueVBlcmNlbnQsYT1yLngscz1yLnksbz1yLnosdT1yLnJvdGF0aW9uLGg9ci5yb3RhdGlvblksbD1yLnJvdGF0aW9uWCxmPXIuc2tld1gsZD1yLnNrZXdZLGM9ci5zY2FsZVgscD1yLnNjYWxlWSxfPXIudHJhbnNmb3JtUGVyc3BlY3RpdmUsbT1yLmZvcmNlM0QsZz1yLnRhcmdldCx2PXIuek9yaWdpbix5PSIiLFQ9ImF1dG8iPT09bSYmdCYmMSE9PXR8fCEwPT09bTtpZih2JiYobCE9PVByfHxoIT09UHIpKXt2YXIgYix3PXBhcnNlRmxvYXQoaCkqdXIseD1NYXRoLnNpbih3KSxNPU1hdGguY29zKHcpO3c9cGFyc2VGbG9hdChsKSp1cixiPU1hdGguY29zKHcpLGE9cGUoZyxhLHgqYiotdikscz1wZShnLHMsLU1hdGguc2luKHcpKi12KSxvPXBlKGcsbyxNKmIqLXYrdil9XyE9PUNyJiYoeSs9InBlcnNwZWN0aXZlKCIrXytTciksKGl8fG4pJiYoeSs9InRyYW5zbGF0ZSgiK2krIiUsICIrbisiJSkgIiksIVQmJmE9PT1DciYmcz09PUNyJiZvPT09Q3J8fCh5Kz1vIT09Q3J8fFQ\/InRyYW5zbGF0ZTNkKCIrYSsiLCAiK3MrIiwgIitvKyIpICI6InRyYW5zbGF0ZSgiK2ErIiwgIitzK1NyKSx1IT09UHImJih5Kz0icm90YXRlKCIrdStTciksaCE9PVByJiYoeSs9InJvdGF0ZVkoIitoK1NyKSxsIT09UHImJih5Kz0icm90YXRlWCgiK2wrU3IpLGY9PT1QciYmZD09PVByfHwoeSs9InNrZXcoIitmKyIsICIrZCtTciksMT09PWMmJjE9PT1wfHwoeSs9InNjYWxlKCIrYysiLCAiK3ArU3IpLGcuc3R5bGVbcHJdPXl8fCJ0cmFuc2xhdGUoMCwgMCkifSx6cj1mdW5jdGlvbiBfcmVuZGVyU1ZHVHJhbnNmb3Jtcyh0LGUpe3ZhciByLGksbixhLHMsbz1lfHx0aGlzLHU9by54UGVyY2VudCxoPW8ueVBlcmNlbnQsbD1vLngsZj1vLnksZD1vLnJvdGF0aW9uLGM9by5za2V3WCxwPW8uc2tld1ksXz1vLnNjYWxlWCxtPW8uc2NhbGVZLGc9by50YXJnZXQsdj1vLnhPcmlnaW4seT1vLnlPcmlnaW4sVD1vLnhPZmZzZXQsYj1vLnlPZmZzZXQsdz1vLmZvcmNlQ1NTLHg9cGFyc2VGbG9hdChsKSxNPXBhcnNlRmxvYXQoZik7ZD1wYXJzZUZsb2F0KGQpLGM9cGFyc2VGbG9hdChjKSwocD1wYXJzZUZsb2F0KHApKSYmKGMrPXA9cGFyc2VGbG9hdChwKSxkKz1wKSxkfHxjPyhkKj11cixjKj11cixyPU1hdGguY29zKGQpKl8saT1NYXRoLnNpbihkKSpfLG49TWF0aC5zaW4oZC1jKSotbSxhPU1hdGguY29zKGQtYykqbSxjJiYocCo9dXIscz1NYXRoLnRhbihjLXApLG4qPXM9TWF0aC5zcXJ0KDErcypzKSxhKj1zLHAmJihzPU1hdGgudGFuKHApLHIqPXM9TWF0aC5zcXJ0KDErcypzKSxpKj1zKSkscj1pYShyKSxpPWlhKGkpLG49aWEobiksYT1pYShhKSk6KHI9XyxhPW0saT1uPTApLCh4JiYhfihsKyIiKS5pbmRleE9mKCJweCIpfHxNJiYhfihmKyIiKS5pbmRleE9mKCJweCIpKSYmKHg9YWUoZywieCIsbCwicHgiKSxNPWFlKGcsInkiLGYsInB4IikpLCh2fHx5fHxUfHxiKSYmKHg9aWEoeCt2LSh2KnIreSpuKStUKSxNPWlhKE0reS0odippK3kqYSkrYikpLCh1fHxoKSYmKHM9Zy5nZXRCQm94KCkseD1pYSh4K3UvMTAwKnMud2lkdGgpLE09aWEoTStoLzEwMCpzLmhlaWdodCkpLHM9Im1hdHJpeCgiK3IrIiwiK2krIiwiK24rIiwiK2ErIiwiK3grIiwiK00rIikiLGcuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLHMpLHcmJihnLnN0eWxlW3ByXT1zKX07aGEoInBhZGRpbmcsbWFyZ2luLFdpZHRoLFJhZGl1cyIsZnVuY3Rpb24oZSxyKXt2YXIgdD0iUmlnaHQiLGk9IkJvdHRvbSIsbj0iTGVmdCIsbz0ocjwzP1siVG9wIix0LGksbl06WyJUb3AiK24sIlRvcCIrdCxpK3QsaStuXSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiByPDI\/ZSt0OiJib3JkZXIiK3QrZX0pO3dyWzE8cj8iYm9yZGVyIitlOmVdPWZ1bmN0aW9uKGUsdCxyLGksbil7dmFyIGEscztpZihhcmd1bWVudHMubGVuZ3RoPDQpcmV0dXJuIGE9by5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIFRyKGUsdCxyKX0pLDU9PT0ocz1hLmpvaW4oIiAiKSkuc3BsaXQoYVswXSkubGVuZ3RoP2FbMF06czthPShpKyIiKS5zcGxpdCgiICIpLHM9e30sby5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNbdF09YVtlXT1hW2VdfHxhWyhlLTEpLzJ8MF19KSxlLmluaXQodCxzLG4pfX0pO3ZhciBFcixScixGcixMcj17bmFtZToiY3NzIixyZWdpc3RlcjpUZCx0YXJnZXRUZXN0OmZ1bmN0aW9uIHRhcmdldFRlc3QodCl7cmV0dXJuIHQuc3R5bGUmJnQubm9kZVR5cGV9LGluaXQ6ZnVuY3Rpb24gaW5pdCh0LGUsaSxuLGEpe3ZhciBzLG8sdSxoLGwsZixkLGMscCxfLG0sZyx2LHksVCxiLHc9dGhpcy5fcHJvcHMseD10LnN0eWxlLE09aS52YXJzLnN0YXJ0QXQ7Zm9yKGQgaW4gTGV8fFRkKCksdGhpcy5zdHlsZXM9dGhpcy5zdHlsZXN8fE5kKHQpLGI9dGhpcy5zdHlsZXMucHJvcHMsdGhpcy50d2Vlbj1pLGUpaWYoImF1dG9Sb3VuZCIhPT1kJiYobz1lW2RdLCFwdFtkXXx8IWJjKGQsZSxpLG4sdCxhKSkpaWYobD10eXBlb2YgbyxmPXdyW2RdLCJmdW5jdGlvbiI9PT1sJiYobD10eXBlb2Yobz1vLmNhbGwoaSxuLHQsYSkpKSwic3RyaW5nIj09PWwmJn5vLmluZGV4T2YoInJhbmRvbSgiKSYmKG89cGIobykpLGYpZih0aGlzLHQsZCxvLGkpJiYoVD0xKTtlbHNlIGlmKCItLSI9PT1kLnN1YnN0cigwLDIpKXM9KGdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZShkKSsiIikudHJpbSgpLG8rPSIiLHp0Lmxhc3RJbmRleD0wLHp0LnRlc3Qocyl8fChjPVphKHMpLHA9WmEobykpLHA\/YyE9PXAmJihzPWFlKHQsZCxzLHApK3ApOmMmJihvKz1jKSx0aGlzLmFkZCh4LCJzZXRQcm9wZXJ0eSIscyxvLG4sYSwwLDAsZCksdy5wdXNoKGQpLGIucHVzaChkLDAseFtkXSk7ZWxzZSBpZigidW5kZWZpbmVkIiE9PWwpe2lmKE0mJmQgaW4gTT8ocz0iZnVuY3Rpb24iPT10eXBlb2YgTVtkXT9NW2RdLmNhbGwoaSxuLHQsYSk6TVtkXSxyKHMpJiZ+cy5pbmRleE9mKCJyYW5kb20oIikmJihzPXBiKHMpKSxaYShzKyIiKXx8ImF1dG8iPT09c3x8KHMrPVgudW5pdHNbZF18fFphKFRyKHQsZCkpfHwiIiksIj0iPT09KHMrIiIpLmNoYXJBdCgxKSYmKHM9VHIodCxkKSkpOnM9VHIodCxkKSxoPXBhcnNlRmxvYXQocyksKF89InN0cmluZyI9PT1sJiYiPSI9PT1vLmNoYXJBdCgxKSYmby5zdWJzdHIoMCwyKSkmJihvPW8uc3Vic3RyKDIpKSx1PXBhcnNlRmxvYXQobyksZCBpbiBjciYmKCJhdXRvQWxwaGEiPT09ZCYmKDE9PT1oJiYiaGlkZGVuIj09PVRyKHQsInZpc2liaWxpdHkiKSYmdSYmKGg9MCksYi5wdXNoKCJ2aXNpYmlsaXR5IiwwLHgudmlzaWJpbGl0eSksWmQodGhpcyx4LCJ2aXNpYmlsaXR5IixoPyJpbmhlcml0IjoiaGlkZGVuIix1PyJpbmhlcml0IjoiaGlkZGVuIiwhdSkpLCJzY2FsZSIhPT1kJiYidHJhbnNmb3JtIiE9PWQmJn4oZD1jcltkXSkuaW5kZXhPZigiLCIpJiYoZD1kLnNwbGl0KCIsIilbMF0pKSxtPWQgaW4gc3IpaWYodGhpcy5zdHlsZXMuc2F2ZShkKSwic3RyaW5nIj09PWwmJiJ2YXIoLS0iPT09by5zdWJzdHJpbmcoMCw2KSYmKG89UWQodCxvLnN1YnN0cmluZyg0LG8uaW5kZXhPZigiKSIpKSksdT1wYXJzZUZsb2F0KG8pKSxnfHwoKHY9dC5fZ3NhcCkucmVuZGVyVHJhbnNmb3JtJiYhZS5wYXJzZVRyYW5zZm9ybXx8a3IodCxlLnBhcnNlVHJhbnNmb3JtKSx5PSExIT09ZS5zbW9vdGhPcmlnaW4mJnYuc21vb3RoLChnPXRoaXMuX3B0PW5ldyBnZSh0aGlzLl9wdCx4LHByLDAsMSx2LnJlbmRlclRyYW5zZm9ybSx2LDAsLTEpKS5kZXA9MSksInNjYWxlIj09PWQpdGhpcy5fcHQ9bmV3IGdlKHRoaXMuX3B0LHYsInNjYWxlWSIsdi5zY2FsZVksKF8\/a2Eodi5zY2FsZVksXyt1KTp1KS12LnNjYWxlWXx8MCx3ZCksdGhpcy5fcHQudT0wLHcucHVzaCgic2NhbGVZIixkKSxkKz0iWCI7ZWxzZXtpZigidHJhbnNmb3JtT3JpZ2luIj09PWQpe2IucHVzaChfciwwLHhbX3JdKSxvPWVlKG8pLHYuc3ZnP21lKHQsbywwLHksMCx0aGlzKTooKHA9cGFyc2VGbG9hdChvLnNwbGl0KCIgIilbMl0pfHwwKSE9PXYuek9yaWdpbiYmWmQodGhpcyx2LCJ6T3JpZ2luIix2LnpPcmlnaW4scCksWmQodGhpcyx4LGQsT3IocyksT3IobykpKTtjb250aW51ZX1pZigic3ZnT3JpZ2luIj09PWQpe21lKHQsbywxLHksMCx0aGlzKTtjb250aW51ZX1pZihkIGluIE1yKXt3ZSh0aGlzLHYsZCxoLF8\/a2EoaCxfK28pOm8pO2NvbnRpbnVlfWlmKCJzbW9vdGhPcmlnaW4iPT09ZCl7WmQodGhpcyx2LCJzbW9vdGgiLHYuc21vb3RoLG8pO2NvbnRpbnVlfWlmKCJmb3JjZTNEIj09PWQpe3ZbZF09bztjb250aW51ZX1pZigidHJhbnNmb3JtIj09PWQpe3llKHRoaXMsbyx0KTtjb250aW51ZX19ZWxzZSBkIGluIHh8fChkPWdyKGQpfHxkKTtpZihtfHwodXx8MD09PXUpJiYoaHx8MD09PWgpJiYhZHIudGVzdChvKSYmZCBpbiB4KXU9dXx8MCwoYz0ocysiIikuc3Vic3RyKChoKyIiKS5sZW5ndGgpKSE9PShwPVphKG8pfHwoZCBpbiBYLnVuaXRzP1gudW5pdHNbZF06YykpJiYoaD1hZSh0LGQscyxwKSksdGhpcy5fcHQ9bmV3IGdlKHRoaXMuX3B0LG0\/djp4LGQsaCwoXz9rYShoLF8rdSk6dSktaCxtfHwicHgiIT09cCYmInpJbmRleCIhPT1kfHwhMT09PWUuYXV0b1JvdW5kP3dkOnpkKSx0aGlzLl9wdC51PXB8fDAsYyE9PXAmJiIlIiE9PXAmJih0aGlzLl9wdC5iPXMsdGhpcy5fcHQucj15ZCk7ZWxzZSBpZihkIGluIHgpY2UuY2FsbCh0aGlzLHQsZCxzLF8\/XytvOm8pO2Vsc2UgaWYoZCBpbiB0KXRoaXMuYWRkKHQsZCxzfHx0W2RdLF8\/XytvOm8sbixhKTtlbHNlIGlmKCJwYXJzZVRyYW5zZm9ybSIhPT1kKXtRKGQsbyk7Y29udGludWV9bXx8KGQgaW4geD9iLnB1c2goZCwwLHhbZF0pOiJmdW5jdGlvbiI9PXR5cGVvZiB0W2RdP2IucHVzaChkLDIsdFtkXSgpKTpiLnB1c2goZCwxLHN8fHRbZF0pKSx3LnB1c2goZCl9VCYmX2UodGhpcyl9LHJlbmRlcjpmdW5jdGlvbiByZW5kZXIodCxlKXtpZihlLnR3ZWVuLl90aW1lfHwhWWUoKSlmb3IodmFyIHI9ZS5fcHQ7cjspci5yKHQsci5kKSxyPXIuX25leHQ7ZWxzZSBlLnN0eWxlcy5yZXZlcnQoKX0sZ2V0OlRyLGFsaWFzZXM6Y3IsZ2V0U2V0dGVyOmZ1bmN0aW9uIGdldFNldHRlcih0LGUscil7dmFyIGk9Y3JbZV07cmV0dXJuIGkmJmkuaW5kZXhPZigiLCIpPDAmJihlPWkpLGUgaW4gc3ImJmUhPT1fciYmKHQuX2dzYXAueHx8VHIodCwieCIpKT9yJiZCZT09PXI\/InNjYWxlIj09PWU\/RmQ6RWQ6KEJlPXJ8fHt9KSYmKCJzY2FsZSI9PT1lP0dkOkhkKTp0LnN0eWxlJiYhdSh0LnN0eWxlW2VdKT9DZDp+ZS5pbmRleE9mKCItIik\/RGQ6aWUodCxlKX0sY29yZTp7X3JlbW92ZVByb3BlcnR5OllkLF9nZXRNYXRyaXg6bGV9fTt6ZS51dGlscy5jaGVja1ByZWZpeD1ncix6ZS5jb3JlLmdldFN0eWxlU2F2ZXI9TmQsRnI9aGEoKEVyPSJ4LHkseixzY2FsZSxzY2FsZVgsc2NhbGVZLHhQZXJjZW50LHlQZXJjZW50IikrIiwiKyhScj0icm90YXRpb24scm90YXRpb25YLHJvdGF0aW9uWSxza2V3WCxza2V3WSIpKyIsdHJhbnNmb3JtLHRyYW5zZm9ybU9yaWdpbixzdmdPcmlnaW4sZm9yY2UzRCxzbW9vdGhPcmlnaW4sdHJhbnNmb3JtUGVyc3BlY3RpdmUiLGZ1bmN0aW9uKHQpe3NyW3RdPTF9KSxoYShScixmdW5jdGlvbih0KXtYLnVuaXRzW3RdPSJkZWciLE1yW3RdPTF9KSxjcltGclsxM11dPUVyKyIsIitScixoYSgiMDp0cmFuc2xhdGVYLDE6dHJhbnNsYXRlWSwyOnRyYW5zbGF0ZVosODpyb3RhdGUsODpyb3RhdGlvblosODpyb3RhdGVaLDk6cm90YXRlWCwxMDpyb3RhdGVZIixmdW5jdGlvbih0KXt2YXIgZT10LnNwbGl0KCI6Iik7Y3JbZVsxXV09RnJbZVswXV19KSxoYSgieCx5LHosdG9wLHJpZ2h0LGJvdHRvbSxsZWZ0LHdpZHRoLGhlaWdodCxmb250U2l6ZSxwYWRkaW5nLG1hcmdpbixwZXJzcGVjdGl2ZSIsZnVuY3Rpb24odCl7WC51bml0c1t0XT0icHgifSksemUucmVnaXN0ZXJQbHVnaW4oTHIpO3ZhciBJcj16ZS5yZWdpc3RlclBsdWdpbihMcil8fHplLEJyPUlyLmNvcmUuVHdlZW47ZS5CYWNrPXRyLGUuQm91bmNlPXJyLGUuQ1NTUGx1Z2luPUxyLGUuQ2lyYz1hcixlLkN1YmljPUdlLGUuRWxhc3RpYz0kZSxlLkV4cG89bnIsZS5MaW5lYXI9VmUsZS5Qb3dlcjA9WmUsZS5Qb3dlcjE9TmUsZS5Qb3dlcjI9UWUsZS5Qb3dlcjM9VWUsZS5Qb3dlcjQ9cWUsZS5RdWFkPVdlLGUuUXVhcnQ9SGUsZS5RdWludD1LZSxlLlNpbmU9aXIsZS5TdGVwcGVkRWFzZT1lcixlLlN0cm9uZz1KZSxlLlRpbWVsaW5lTGl0ZT1RdCxlLlRpbWVsaW5lTWF4PVF0LGUuVHdlZW5MaXRlPUp0LGUuVHdlZW5NYXg9QnIsZS5kZWZhdWx0PUlyLGUuZ3NhcD1JcjtpZiAodHlwZW9mKHdpbmRvdyk9PT0idW5kZWZpbmVkInx8d2luZG93IT09ZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSBlbHNlIHtkZWxldGUgZS5kZWZhdWx0fX0pOwoK');r('LyohCiAqIFNjcm9sbFRyaWdnZXIgMy4xMy4wCiAqIGh0dHBzOi8vZ3NhcC5jb20KICogCiAqIEBsaWNlbnNlIENvcHlyaWdodCAyMDI1LCBHcmVlblNvY2suIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIFN1YmplY3QgdG8gdGhlIHRlcm1zIGF0IGh0dHBzOi8vZ3NhcC5jb20vc3RhbmRhcmQtbGljZW5zZS4KICogQGF1dGhvcjogSmFjayBEb3lsZSwgamFja0BncmVlbnNvY2suY29tCiAqLwoKIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT90KGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsiZXhwb3J0cyJdLHQpOnQoKGU9ZXx8c2VsZikud2luZG93PWUud2luZG93fHx7fSl9KHRoaXMsZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19ZnVuY3Rpb24gcigpe3JldHVybiBTZXx8InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJihTZT13aW5kb3cuZ3NhcCkmJlNlLnJlZ2lzdGVyUGx1Z2luJiZTZX1mdW5jdGlvbiB6KGUsdCl7cmV0dXJuflllLmluZGV4T2YoZSkmJlllW1llLmluZGV4T2YoZSkrMV1bdF19ZnVuY3Rpb24gQShlKXtyZXR1cm4hIX50LmluZGV4T2YoZSl9ZnVuY3Rpb24gQihlLHQscixuLGkpe3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIodCxyLHtwYXNzaXZlOiExIT09bixjYXB0dXJlOiEhaX0pfWZ1bmN0aW9uIEMoZSx0LHIsbil7cmV0dXJuIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHIsISFuKX1mdW5jdGlvbiBGKCl7cmV0dXJuIFJlJiZSZS5pc1ByZXNzZWR8fHplLmNhY2hlKyt9ZnVuY3Rpb24gRyhyLG4pe2Z1bmN0aW9uIGVkKGUpe2lmKGV8fDA9PT1lKXtpJiYoVGUuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbj0ibWFudWFsIik7dmFyIHQ9UmUmJlJlLmlzUHJlc3NlZDtlPWVkLnY9TWF0aC5yb3VuZChlKXx8KFJlJiZSZS5pT1M\/MTowKSxyKGUpLGVkLmNhY2hlSUQ9emUuY2FjaGUsdCYmbygic3MiLGUpfWVsc2Uobnx8emUuY2FjaGUhPT1lZC5jYWNoZUlEfHxvKCJyZWYiKSkmJihlZC5jYWNoZUlEPXplLmNhY2hlLGVkLnY9cigpKTtyZXR1cm4gZWQuditlZC5vZmZzZXR9cmV0dXJuIGVkLm9mZnNldD0wLHImJmVkfWZ1bmN0aW9uIEooZSx0KXtyZXR1cm4odCYmdC5fY3R4JiZ0Ll9jdHguc2VsZWN0b3J8fFNlLnV0aWxzLnRvQXJyYXkpKGUpWzBdfHwoInN0cmluZyI9PXR5cGVvZiBlJiYhMSE9PVNlLmNvbmZpZygpLm51bGxUYXJnZXRXYXJuP2NvbnNvbGUud2FybigiRWxlbWVudCBub3QgZm91bmQ6IixlKTpudWxsKX1mdW5jdGlvbiBMKHQsZSl7dmFyIHI9ZS5zLG49ZS5zYztBKHQpJiYodD1DZS5zY3JvbGxpbmdFbGVtZW50fHxNZSk7dmFyIGk9emUuaW5kZXhPZih0KSxvPW49PT1xZS5zYz8xOjI7fml8fChpPXplLnB1c2godCktMSksemVbaStvXXx8Qih0LCJzY3JvbGwiLEYpO3ZhciBhPXplW2krb10scz1hfHwoemVbaStvXT1HKHoodCxyKSwhMCl8fChBKHQpP246RyhmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90W3JdPWU6dFtyXX0pKSk7cmV0dXJuIHMudGFyZ2V0PXQsYXx8KHMuc21vb3RoPSJzbW9vdGgiPT09U2UuZ2V0UHJvcGVydHkodCwic2Nyb2xsQmVoYXZpb3IiKSksc31mdW5jdGlvbiBNKGUsdCxpKXtmdW5jdGlvbiBHZChlLHQpe3ZhciByPUxlKCk7dHx8bjxyLXM\/KGE9byxvPWUsbD1zLHM9cik6aT9vKz1lOm89YSsoZS1hKS8oci1sKSoocy1sKX12YXIgbz1lLGE9ZSxzPUxlKCksbD1zLG49dHx8NTAsYz1NYXRoLm1heCg1MDAsMypuKTtyZXR1cm57dXBkYXRlOkdkLHJlc2V0OmZ1bmN0aW9uIHJlc2V0KCl7YT1vPWk\/MDpvLGw9cz0wfSxnZXRWZWxvY2l0eTpmdW5jdGlvbiBnZXRWZWxvY2l0eShlKXt2YXIgdD1sLHI9YSxuPUxlKCk7cmV0dXJuIWUmJjAhPT1lfHxlPT09b3x8R2QoZSkscz09PWx8fGM8bi1sPzA6KG8rKGk\/cjotcikpLygoaT9uOnMpLXQpKjFlM319fWZ1bmN0aW9uIE4oZSx0KXtyZXR1cm4gdCYmIWUuX2dzYXBBbGxvdyYmZS5wcmV2ZW50RGVmYXVsdCgpLGUuY2hhbmdlZFRvdWNoZXM\/ZS5jaGFuZ2VkVG91Y2hlc1swXTplfWZ1bmN0aW9uIE8oZSl7dmFyIHQ9TWF0aC5tYXguYXBwbHkoTWF0aCxlKSxyPU1hdGgubWluLmFwcGx5KE1hdGgsZSk7cmV0dXJuIE1hdGguYWJzKHQpPj1NYXRoLmFicyhyKT90OnJ9ZnVuY3Rpb24gUCgpeyhBZT1TZS5jb3JlLmdsb2JhbHMoKS5TY3JvbGxUcmlnZ2VyKSYmQWUuY29yZSYmZnVuY3Rpb24gX2ludGVncmF0ZSgpe3ZhciBlPUFlLmNvcmUscj1lLmJyaWRnZXx8e30sdD1lLl9zY3JvbGxlcnMsbj1lLl9wcm94aWVzO3QucHVzaC5hcHBseSh0LHplKSxuLnB1c2guYXBwbHkobixZZSksemU9dCxZZT1uLG89ZnVuY3Rpb24gX2JyaWRnZShlLHQpe3JldHVybiByW2VdKHQpfX0oKX1mdW5jdGlvbiBRKGUpe3JldHVybiBTZT1lfHxyKCksIWtlJiZTZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuYm9keSYmKFRlPXdpbmRvdyxNZT0oQ2U9ZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudCxFZT1DZS5ib2R5LHQ9W1RlLENlLE1lLEVlXSxTZS51dGlscy5jbGFtcCxCZT1TZS5jb3JlLmNvbnRleHR8fGZ1bmN0aW9uKCl7fSxPZT0ib25wb2ludGVyZW50ZXIiaW4gRWU\/InBvaW50ZXIiOiJtb3VzZSIsUGU9RS5pc1RvdWNoPVRlLm1hdGNoTWVkaWEmJlRlLm1hdGNoTWVkaWEoIihob3Zlcjogbm9uZSksIChwb2ludGVyOiBjb2Fyc2UpIikubWF0Y2hlcz8xOiJvbnRvdWNoc3RhcnQiaW4gVGV8fDA8bmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfHwwPG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzPzI6MCxEZT1FLmV2ZW50VHlwZXM9KCJvbnRvdWNoc3RhcnQiaW4gTWU\/InRvdWNoc3RhcnQsdG91Y2htb3ZlLHRvdWNoY2FuY2VsLHRvdWNoZW5kIjoib25wb2ludGVyZG93biJpbiBNZT8icG9pbnRlcmRvd24scG9pbnRlcm1vdmUscG9pbnRlcmNhbmNlbCxwb2ludGVydXAiOiJtb3VzZWRvd24sbW91c2Vtb3ZlLG1vdXNldXAsbW91c2V1cCIpLnNwbGl0KCIsIiksc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBpPTB9LDUwMCksUCgpLGtlPTEpLGtlfXZhciBTZSxrZSxUZSxDZSxNZSxFZSxQZSxPZSxBZSx0LFJlLERlLEJlLGk9MSxJZT1bXSx6ZT1bXSxZZT1bXSxMZT1EYXRlLm5vdyxvPWZ1bmN0aW9uIF9icmlkZ2UoZSx0KXtyZXR1cm4gdH0sbj0ic2Nyb2xsTGVmdCIsYT0ic2Nyb2xsVG9wIixIZT17czpuLHA6ImxlZnQiLHAyOiJMZWZ0IixvczoicmlnaHQiLG9zMjoiUmlnaHQiLGQ6IndpZHRoIixkMjoiV2lkdGgiLGE6IngiLHNjOkcoZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg\/VGUuc2Nyb2xsVG8oZSxxZS5zYygpKTpUZS5wYWdlWE9mZnNldHx8Q2Vbbl18fE1lW25dfHxFZVtuXXx8MH0pfSxxZT17czphLHA6InRvcCIscDI6IlRvcCIsb3M6ImJvdHRvbSIsb3MyOiJCb3R0b20iLGQ6ImhlaWdodCIsZDI6IkhlaWdodCIsYToieSIsb3A6SGUsc2M6RyhmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9UZS5zY3JvbGxUbyhIZS5zYygpLGUpOlRlLnBhZ2VZT2Zmc2V0fHxDZVthXXx8TWVbYV18fEVlW2FdfHwwfSl9O0hlLm9wPXFlLHplLmNhY2hlPTA7dmFyIEU9KE9ic2VydmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uIGluaXQoZSl7a2V8fFEoU2UpfHxjb25zb2xlLndhcm4oIlBsZWFzZSBnc2FwLnJlZ2lzdGVyUGx1Z2luKE9ic2VydmVyKSIpLEFlfHxQKCk7dmFyIGk9ZS50b2xlcmFuY2UsYT1lLmRyYWdNaW5pbXVtLHQ9ZS50eXBlLG89ZS50YXJnZXQscj1lLmxpbmVIZWlnaHQsbj1lLmRlYm91bmNlLHM9ZS5wcmV2ZW50RGVmYXVsdCxsPWUub25TdG9wLGM9ZS5vblN0b3BEZWxheSx1PWUuaWdub3JlLGY9ZS53aGVlbFNwZWVkLGQ9ZS5ldmVudCxwPWUub25EcmFnU3RhcnQsZz1lLm9uRHJhZ0VuZCxoPWUub25EcmFnLHY9ZS5vblByZXNzLGI9ZS5vblJlbGVhc2UsbT1lLm9uUmlnaHQseT1lLm9uTGVmdCx4PWUub25VcCxfPWUub25Eb3duLHc9ZS5vbkNoYW5nZVgsUz1lLm9uQ2hhbmdlWSxrPWUub25DaGFuZ2UsVD1lLm9uVG9nZ2xlWCxFPWUub25Ub2dnbGVZLFI9ZS5vbkhvdmVyLEQ9ZS5vbkhvdmVyRW5kLEk9ZS5vbk1vdmUsej1lLmlnbm9yZUNoZWNrLFk9ZS5pc05vcm1hbGl6ZXIsSD1lLm9uR2VzdHVyZVN0YXJ0LHE9ZS5vbkdlc3R1cmVFbmQsWD1lLm9uV2hlZWwsVT1lLm9uRW5hYmxlLFc9ZS5vbkRpc2FibGUsRz1lLm9uQ2xpY2ssVj1lLnNjcm9sbFNwZWVkLEs9ZS5jYXB0dXJlLGo9ZS5hbGxvd0NsaWNrcyxaPWUubG9ja0F4aXMsJD1lLm9uTG9ja0F4aXM7ZnVuY3Rpb24gZ2YoKXtyZXR1cm4geGU9TGUoKX1mdW5jdGlvbiBoZihlLHQpe3JldHVybihzZS5ldmVudD1lKSYmdSYmZnVuY3Rpb24gX2lzV2l0aGluKGUsdCl7Zm9yKHZhciByPXQubGVuZ3RoO3ItLTspaWYodFtyXT09PWV8fHRbcl0uY29udGFpbnMoZSkpcmV0dXJuITA7cmV0dXJuITF9KGUudGFyZ2V0LHUpfHx0JiZoZSYmInRvdWNoIiE9PWUucG9pbnRlclR5cGV8fHomJnooZSx0KX1mdW5jdGlvbiBrZigpe3ZhciBlPXNlLmRlbHRhWD1PKG1lKSx0PXNlLmRlbHRhWT1PKHllKSxyPU1hdGguYWJzKGUpPj1pLG49TWF0aC5hYnModCk+PWk7ayYmKHJ8fG4pJiZrKHNlLGUsdCxtZSx5ZSksciYmKG0mJjA8c2UuZGVsdGFYJiZtKHNlKSx5JiZzZS5kZWx0YVg8MCYmeShzZSksdyYmdyhzZSksVCYmc2UuZGVsdGFYPDAhPWxlPDAmJlQoc2UpLGxlPXNlLmRlbHRhWCxtZVswXT1tZVsxXT1tZVsyXT0wKSxuJiYoXyYmMDxzZS5kZWx0YVkmJl8oc2UpLHgmJnNlLmRlbHRhWTwwJiZ4KHNlKSxTJiZTKHNlKSxFJiZzZS5kZWx0YVk8MCE9Y2U8MCYmRShzZSksY2U9c2UuZGVsdGFZLHllWzBdPXllWzFdPXllWzJdPTApLChuZXx8cmUpJiYoSSYmSShzZSkscmUmJihwJiYxPT09cmUmJnAoc2UpLGgmJmgoc2UpLHJlPTApLG5lPSExKSxvZSYmIShvZT0hMSkmJiQmJiQoc2UpLGllJiYoWChzZSksaWU9ITEpLGVlPTB9ZnVuY3Rpb24gbGYoZSx0LHIpe21lW3JdKz1lLHllW3JdKz10LHNlLl92eC51cGRhdGUoZSksc2UuX3Z5LnVwZGF0ZSh0KSxuP2VlPWVlfHxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoa2YpOmtmKCl9ZnVuY3Rpb24gbWYoZSx0KXtaJiYhYWUmJihzZS5heGlzPWFlPU1hdGguYWJzKGUpPk1hdGguYWJzKHQpPyJ4IjoieSIsb2U9ITApLCJ5IiE9PWFlJiYobWVbMl0rPWUsc2UuX3Z4LnVwZGF0ZShlLCEwKSksIngiIT09YWUmJih5ZVsyXSs9dCxzZS5fdnkudXBkYXRlKHQsITApKSxuP2VlPWVlfHxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoa2YpOmtmKCl9ZnVuY3Rpb24gbmYoZSl7aWYoIWhmKGUsMSkpe3ZhciB0PShlPU4oZSxzKSkuY2xpZW50WCxyPWUuY2xpZW50WSxuPXQtc2UueCxpPXItc2UueSxvPXNlLmlzRHJhZ2dpbmc7c2UueD10LHNlLnk9ciwob3x8KG58fGkpJiYoTWF0aC5hYnMoc2Uuc3RhcnRYLXQpPj1hfHxNYXRoLmFicyhzZS5zdGFydFktcik+PWEpKSYmKHJlPW8\/MjoxLG98fChzZS5pc0RyYWdnaW5nPSEwKSxtZihuLGkpKX19ZnVuY3Rpb24gcWYoZSl7cmV0dXJuIGUudG91Y2hlcyYmMTxlLnRvdWNoZXMubGVuZ3RoJiYoc2UuaXNHZXN0dXJpbmc9ITApJiZIKGUsc2UuaXNEcmFnZ2luZyl9ZnVuY3Rpb24gcmYoKXtyZXR1cm4oc2UuaXNHZXN0dXJpbmc9ITEpfHxxKHNlKX1mdW5jdGlvbiBzZihlKXtpZighaGYoZSkpe3ZhciB0PWZlKCkscj1kZSgpO2xmKCh0LXBlKSpWLChyLWdlKSpWLDEpLHBlPXQsZ2U9cixsJiZ0ZS5yZXN0YXJ0KCEwKX19ZnVuY3Rpb24gdGYoZSl7aWYoIWhmKGUpKXtlPU4oZSxzKSxYJiYoaWU9ITApO3ZhciB0PSgxPT09ZS5kZWx0YU1vZGU\/cjoyPT09ZS5kZWx0YU1vZGU\/VGUuaW5uZXJIZWlnaHQ6MSkqZjtsZihlLmRlbHRhWCp0LGUuZGVsdGFZKnQsMCksbCYmIVkmJnRlLnJlc3RhcnQoITApfX1mdW5jdGlvbiB1ZihlKXtpZighaGYoZSkpe3ZhciB0PWUuY2xpZW50WCxyPWUuY2xpZW50WSxuPXQtc2UueCxpPXItc2UueTtzZS54PXQsc2UueT1yLG5lPSEwLGwmJnRlLnJlc3RhcnQoITApLChufHxpKSYmbWYobixpKX19ZnVuY3Rpb24gdmYoZSl7c2UuZXZlbnQ9ZSxSKHNlKX1mdW5jdGlvbiB3ZihlKXtzZS5ldmVudD1lLEQoc2UpfWZ1bmN0aW9uIHhmKGUpe3JldHVybiBoZihlKXx8TihlLHMpJiZHKHNlKX10aGlzLnRhcmdldD1vPUoobyl8fE1lLHRoaXMudmFycz1lLHU9dSYmU2UudXRpbHMudG9BcnJheSh1KSxpPWl8fDFlLTksYT1hfHwwLGY9Znx8MSxWPVZ8fDEsdD10fHwid2hlZWwsdG91Y2gscG9pbnRlciIsbj0hMSE9PW4scj1yfHxwYXJzZUZsb2F0KFRlLmdldENvbXB1dGVkU3R5bGUoRWUpLmxpbmVIZWlnaHQpfHwyMjt2YXIgZWUsdGUscmUsbmUsaWUsb2UsYWUsc2U9dGhpcyxsZT0wLGNlPTAsdWU9ZS5wYXNzaXZlfHwhcyYmITEhPT1lLnBhc3NpdmUsZmU9TChvLEhlKSxkZT1MKG8scWUpLHBlPWZlKCksZ2U9ZGUoKSxoZT1+dC5pbmRleE9mKCJ0b3VjaCIpJiYhfnQuaW5kZXhPZigicG9pbnRlciIpJiYicG9pbnRlcmRvd24iPT09RGVbMF0sdmU9QShvKSxiZT1vLm93bmVyRG9jdW1lbnR8fENlLG1lPVswLDAsMF0seWU9WzAsMCwwXSx4ZT0wLF9lPXNlLm9uUHJlc3M9ZnVuY3Rpb24oZSl7aGYoZSwxKXx8ZSYmZS5idXR0b258fChzZS5heGlzPWFlPW51bGwsdGUucGF1c2UoKSxzZS5pc1ByZXNzZWQ9ITAsZT1OKGUpLGxlPWNlPTAsc2Uuc3RhcnRYPXNlLng9ZS5jbGllbnRYLHNlLnN0YXJ0WT1zZS55PWUuY2xpZW50WSxzZS5fdngucmVzZXQoKSxzZS5fdnkucmVzZXQoKSxCKFk\/bzpiZSxEZVsxXSxuZix1ZSwhMCksc2UuZGVsdGFYPXNlLmRlbHRhWT0wLHYmJnYoc2UpKX0sd2U9c2Uub25SZWxlYXNlPWZ1bmN0aW9uKHQpe2lmKCFoZih0LDEpKXtDKFk\/bzpiZSxEZVsxXSxuZiwhMCk7dmFyIGU9IWlzTmFOKHNlLnktc2Uuc3RhcnRZKSxyPXNlLmlzRHJhZ2dpbmcsbj1yJiYoMzxNYXRoLmFicyhzZS54LXNlLnN0YXJ0WCl8fDM8TWF0aC5hYnMoc2UueS1zZS5zdGFydFkpKSxpPU4odCk7IW4mJmUmJihzZS5fdngucmVzZXQoKSxzZS5fdnkucmVzZXQoKSxzJiZqJiZTZS5kZWxheWVkQ2FsbCguMDgsZnVuY3Rpb24oKXtpZigzMDA8TGUoKS14ZSYmIXQuZGVmYXVsdFByZXZlbnRlZClpZih0LnRhcmdldC5jbGljayl0LnRhcmdldC5jbGljaygpO2Vsc2UgaWYoYmUuY3JlYXRlRXZlbnQpe3ZhciBlPWJlLmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO2UuaW5pdE1vdXNlRXZlbnQoImNsaWNrIiwhMCwhMCxUZSwxLGkuc2NyZWVuWCxpLnNjcmVlblksaS5jbGllbnRYLGkuY2xpZW50WSwhMSwhMSwhMSwhMSwwLG51bGwpLHQudGFyZ2V0LmRpc3BhdGNoRXZlbnQoZSl9fSkpLHNlLmlzRHJhZ2dpbmc9c2UuaXNHZXN0dXJpbmc9c2UuaXNQcmVzc2VkPSExLGwmJnImJiFZJiZ0ZS5yZXN0YXJ0KCEwKSxyZSYma2YoKSxnJiZyJiZnKHNlKSxiJiZiKHNlLG4pfX07dGU9c2UuX2RjPVNlLmRlbGF5ZWRDYWxsKGN8fC4yNSxmdW5jdGlvbiBvblN0b3BGdW5jKCl7c2UuX3Z4LnJlc2V0KCksc2UuX3Z5LnJlc2V0KCksdGUucGF1c2UoKSxsJiZsKHNlKX0pLnBhdXNlKCksc2UuZGVsdGFYPXNlLmRlbHRhWT0wLHNlLl92eD1NKDAsNTAsITApLHNlLl92eT1NKDAsNTAsITApLHNlLnNjcm9sbFg9ZmUsc2Uuc2Nyb2xsWT1kZSxzZS5pc0RyYWdnaW5nPXNlLmlzR2VzdHVyaW5nPXNlLmlzUHJlc3NlZD0hMSxCZSh0aGlzKSxzZS5lbmFibGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHNlLmlzRW5hYmxlZHx8KEIodmU\/YmU6bywic2Nyb2xsIixGKSwwPD10LmluZGV4T2YoInNjcm9sbCIpJiZCKHZlP2JlOm8sInNjcm9sbCIsc2YsdWUsSyksMDw9dC5pbmRleE9mKCJ3aGVlbCIpJiZCKG8sIndoZWVsIix0Zix1ZSxLKSwoMDw9dC5pbmRleE9mKCJ0b3VjaCIpJiZQZXx8MDw9dC5pbmRleE9mKCJwb2ludGVyIikpJiYoQihvLERlWzBdLF9lLHVlLEspLEIoYmUsRGVbMl0sd2UpLEIoYmUsRGVbM10sd2UpLGomJkIobywiY2xpY2siLGdmLCEwLCEwKSxHJiZCKG8sImNsaWNrIix4ZiksSCYmQihiZSwiZ2VzdHVyZXN0YXJ0IixxZikscSYmQihiZSwiZ2VzdHVyZWVuZCIscmYpLFImJkIobyxPZSsiZW50ZXIiLHZmKSxEJiZCKG8sT2UrImxlYXZlIix3ZiksSSYmQihvLE9lKyJtb3ZlIix1ZikpLHNlLmlzRW5hYmxlZD0hMCxzZS5pc0RyYWdnaW5nPXNlLmlzR2VzdHVyaW5nPXNlLmlzUHJlc3NlZD1uZT1yZT0hMSxzZS5fdngucmVzZXQoKSxzZS5fdnkucmVzZXQoKSxwZT1mZSgpLGdlPWRlKCksZSYmZS50eXBlJiZfZShlKSxVJiZVKHNlKSksc2V9LHNlLmRpc2FibGU9ZnVuY3Rpb24oKXtzZS5pc0VuYWJsZWQmJihJZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT1zZSYmQShlLnRhcmdldCl9KS5sZW5ndGh8fEModmU\/YmU6bywic2Nyb2xsIixGKSxzZS5pc1ByZXNzZWQmJihzZS5fdngucmVzZXQoKSxzZS5fdnkucmVzZXQoKSxDKFk\/bzpiZSxEZVsxXSxuZiwhMCkpLEModmU\/YmU6bywic2Nyb2xsIixzZixLKSxDKG8sIndoZWVsIix0ZixLKSxDKG8sRGVbMF0sX2UsSyksQyhiZSxEZVsyXSx3ZSksQyhiZSxEZVszXSx3ZSksQyhvLCJjbGljayIsZ2YsITApLEMobywiY2xpY2siLHhmKSxDKGJlLCJnZXN0dXJlc3RhcnQiLHFmKSxDKGJlLCJnZXN0dXJlZW5kIixyZiksQyhvLE9lKyJlbnRlciIsdmYpLEMobyxPZSsibGVhdmUiLHdmKSxDKG8sT2UrIm1vdmUiLHVmKSxzZS5pc0VuYWJsZWQ9c2UuaXNQcmVzc2VkPXNlLmlzRHJhZ2dpbmc9ITEsVyYmVyhzZSkpfSxzZS5raWxsPXNlLnJldmVydD1mdW5jdGlvbigpe3NlLmRpc2FibGUoKTt2YXIgZT1JZS5pbmRleE9mKHNlKTswPD1lJiZJZS5zcGxpY2UoZSwxKSxSZT09PXNlJiYoUmU9MCl9LEllLnB1c2goc2UpLFkmJkEobykmJihSZT1zZSksc2UuZW5hYmxlKGQpfSxmdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSx0LHIpe3JldHVybiB0JiZfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSx0KSxyJiZfZGVmaW5lUHJvcGVydGllcyhlLHIpLGV9KE9ic2VydmVyLFt7a2V5OiJ2ZWxvY2l0eVgiLGdldDpmdW5jdGlvbiBnZXQoKXtyZXR1cm4gdGhpcy5fdnguZ2V0VmVsb2NpdHkoKX19LHtrZXk6InZlbG9jaXR5WSIsZ2V0OmZ1bmN0aW9uIGdldCgpe3JldHVybiB0aGlzLl92eS5nZXRWZWxvY2l0eSgpfX1dKSxPYnNlcnZlcik7ZnVuY3Rpb24gT2JzZXJ2ZXIoZSl7dGhpcy5pbml0KGUpfUUudmVyc2lvbj0iMy4xMy4wIixFLmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IEUoZSl9LEUucmVnaXN0ZXI9USxFLmdldEFsbD1mdW5jdGlvbigpe3JldHVybiBJZS5zbGljZSgpfSxFLmdldEJ5SWQ9ZnVuY3Rpb24odCl7cmV0dXJuIEllLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52YXJzLmlkPT09dH0pWzBdfSxyKCkmJlNlLnJlZ2lzdGVyUGx1Z2luKEUpO2Z1bmN0aW9uIERhKGUsdCxyKXt2YXIgbj1jdChlKSYmKCJjbGFtcCgiPT09ZS5zdWJzdHIoMCw2KXx8LTE8ZS5pbmRleE9mKCJtYXgiKSk7cmV0dXJuKHJbIl8iK3QrIkNsYW1wIl09bik\/ZS5zdWJzdHIoNixlLmxlbmd0aC03KTplfWZ1bmN0aW9uIEVhKGUsdCl7cmV0dXJuIXR8fGN0KGUpJiYiY2xhbXAoIj09PWUuc3Vic3RyKDAsNik\/ZToiY2xhbXAoIitlKyIpIn1mdW5jdGlvbiBHYSgpe3JldHVybiBRZT0xfWZ1bmN0aW9uIEhhKCl7cmV0dXJuIFFlPTB9ZnVuY3Rpb24gSWEoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gSmEoZSl7cmV0dXJuIE1hdGgucm91bmQoMWU1KmUpLzFlNXx8MH1mdW5jdGlvbiBLYSgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93fWZ1bmN0aW9uIExhKCl7cmV0dXJuIE5lfHxLYSgpJiYoTmU9d2luZG93LmdzYXApJiZOZS5yZWdpc3RlclBsdWdpbiYmTmV9ZnVuY3Rpb24gTWEoZSl7cmV0dXJuISF+bC5pbmRleE9mKGUpfWZ1bmN0aW9uIE5hKGUpe3JldHVybigiSGVpZ2h0Ij09PWU\/UzpYZVsiaW5uZXIiK2VdKXx8VWVbImNsaWVudCIrZV18fFdlWyJjbGllbnQiK2VdfWZ1bmN0aW9uIE9hKGUpe3JldHVybiB6KGUsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIpfHwoTWEoZSk\/ZnVuY3Rpb24oKXtyZXR1cm4gT3Qud2lkdGg9WGUuaW5uZXJXaWR0aCxPdC5oZWlnaHQ9UyxPdH06ZnVuY3Rpb24oKXtyZXR1cm4gX3QoZSl9KX1mdW5jdGlvbiBSYShlLHQpe3ZhciByPXQucyxuPXQuZDIsaT10LmQsbz10LmE7cmV0dXJuIE1hdGgubWF4KDAsKHI9InNjcm9sbCIrbikmJihvPXooZSxyKSk\/bygpLU9hKGUpKClbaV06TWEoZSk\/KFVlW3JdfHxXZVtyXSktTmEobik6ZVtyXS1lWyJvZmZzZXQiK25dKX1mdW5jdGlvbiBTYShlLHQpe2Zvcih2YXIgcj0wO3I8Zy5sZW5ndGg7cis9Myl0JiYhfnQuaW5kZXhPZihnW3IrMV0pfHxlKGdbcl0sZ1tyKzFdLGdbcisyXSl9ZnVuY3Rpb24gVWEoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV9ZnVuY3Rpb24gVmEoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlfWZ1bmN0aW9uIFdhKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZX1mdW5jdGlvbiBYYShlLHQscil7cmV0dXJuIGUmJmUucHJvZ3Jlc3ModD8wOjEpJiZyJiZlLnBhdXNlKCl9ZnVuY3Rpb24gWWEoZSx0KXtpZihlLmVuYWJsZWQpe3ZhciByPWUuX2N0eD9lLl9jdHguYWRkKGZ1bmN0aW9uKCl7cmV0dXJuIHQoZSl9KTp0KGUpO3ImJnIudG90YWxUaW1lJiYoZS5jYWxsYmFja0FuaW1hdGlvbj1yKX19ZnVuY3Rpb24gbmIoZSl7cmV0dXJuIFhlLmdldENvbXB1dGVkU3R5bGUoZSl9ZnVuY3Rpb24gcGIoZSx0KXtmb3IodmFyIHIgaW4gdClyIGluIGV8fChlW3JdPXRbcl0pO3JldHVybiBlfWZ1bmN0aW9uIHJiKGUsdCl7dmFyIHI9dC5kMjtyZXR1cm4gZVsib2Zmc2V0IityXXx8ZVsiY2xpZW50IityXXx8MH1mdW5jdGlvbiBzYihlKXt2YXIgdCxyPVtdLG49ZS5sYWJlbHMsaT1lLmR1cmF0aW9uKCk7Zm9yKHQgaW4gbilyLnB1c2goblt0XS9pKTtyZXR1cm4gcn1mdW5jdGlvbiB1YihpKXt2YXIgbz1OZS51dGlscy5zbmFwKGkpLGE9QXJyYXkuaXNBcnJheShpKSYmaS5zbGljZSgwKS5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUtdH0pO3JldHVybiBhP2Z1bmN0aW9uKGUsdCxyKXt2YXIgbjtpZih2b2lkIDA9PT1yJiYocj0uMDAxKSwhdClyZXR1cm4gbyhlKTtpZigwPHQpe2ZvcihlLT1yLG49MDtuPGEubGVuZ3RoO24rKylpZihhW25dPj1lKXJldHVybiBhW25dO3JldHVybiBhW24tMV19Zm9yKG49YS5sZW5ndGgsZSs9cjtuLS07KWlmKGFbbl08PWUpcmV0dXJuIGFbbl07cmV0dXJuIGFbMF19OmZ1bmN0aW9uKGUsdCxyKXt2b2lkIDA9PT1yJiYocj0uMDAxKTt2YXIgbj1vKGUpO3JldHVybiF0fHxNYXRoLmFicyhuLWUpPHJ8fG4tZTwwPT10PDA\/bjpvKHQ8MD9lLWk6ZStpKX19ZnVuY3Rpb24gd2IodCxyLGUsbil7cmV0dXJuIGUuc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0KHIsZSxuKX0pfWZ1bmN0aW9uIHhiKGUsdCxyLG4saSl7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcih0LHIse3Bhc3NpdmU6IW4sY2FwdHVyZTohIWl9KX1mdW5jdGlvbiB5YihlLHQscixuKXtyZXR1cm4gZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsciwhIW4pfWZ1bmN0aW9uIHpiKGUsdCxyKXsocj1yJiZyLndoZWVsSGFuZGxlcikmJihlKHQsIndoZWVsIixyKSxlKHQsInRvdWNobW92ZSIscikpfWZ1bmN0aW9uIERiKGUsdCl7aWYoY3QoZSkpe3ZhciByPWUuaW5kZXhPZigiPSIpLG49fnI\/KGUuY2hhckF0KHItMSkrMSkqcGFyc2VGbG9hdChlLnN1YnN0cihyKzEpKTowO35yJiYoZS5pbmRleE9mKCIlIik+ciYmKG4qPXQvMTAwKSxlPWUuc3Vic3RyKDAsci0xKSksZT1uKyhlIGluIHE\/cVtlXSp0On5lLmluZGV4T2YoIiUiKT9wYXJzZUZsb2F0KGUpKnQvMTAwOnBhcnNlRmxvYXQoZSl8fDApfXJldHVybiBlfWZ1bmN0aW9uIEViKGUsdCxyLG4saSxvLGEscyl7dmFyIGw9aS5zdGFydENvbG9yLGM9aS5lbmRDb2xvcix1PWkuZm9udFNpemUsZj1pLmluZGVudCxkPWkuZm9udFdlaWdodCxwPUZlLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGc9TWEocil8fCJmaXhlZCI9PT16KHIsInBpblR5cGUiKSxoPS0xIT09ZS5pbmRleE9mKCJzY3JvbGxlciIpLHY9Zz9XZTpyLGI9LTEhPT1lLmluZGV4T2YoInN0YXJ0IiksbT1iP2w6Yyx5PSJib3JkZXItY29sb3I6IittKyI7Zm9udC1zaXplOiIrdSsiO2NvbG9yOiIrbSsiO2ZvbnQtd2VpZ2h0OiIrZCsiO3BvaW50ZXItZXZlbnRzOm5vbmU7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWYsQXJpYWw7ei1pbmRleDoxMDAwO3BhZGRpbmc6NHB4IDhweDtib3JkZXItd2lkdGg6MDtib3JkZXItc3R5bGU6c29saWQ7IjtyZXR1cm4geSs9InBvc2l0aW9uOiIrKChofHxzKSYmZz8iZml4ZWQ7IjoiYWJzb2x1dGU7IiksIWgmJiFzJiZnfHwoeSs9KG49PT1xZT9JOlkpKyI6IisobytwYXJzZUZsb2F0KGYpKSsicHg7IiksYSYmKHkrPSJib3gtc2l6aW5nOmJvcmRlci1ib3g7dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOiIrYS5vZmZzZXRXaWR0aCsicHg7IikscC5faXNTdGFydD1iLHAuc2V0QXR0cmlidXRlKCJjbGFzcyIsImdzYXAtbWFya2VyLSIrZSsodD8iIG1hcmtlci0iK3Q6IiIpKSxwLnN0eWxlLmNzc1RleHQ9eSxwLmlubmVyVGV4dD10fHwwPT09dD9lKyItIit0OmUsdi5jaGlsZHJlblswXT92Lmluc2VydEJlZm9yZShwLHYuY2hpbGRyZW5bMF0pOnYuYXBwZW5kQ2hpbGQocCkscC5fb2Zmc2V0PXBbIm9mZnNldCIrbi5vcC5kMl0sWChwLDAsbixiKSxwfWZ1bmN0aW9uIEpiKCl7cmV0dXJuIDM0PGF0KCktc3QmJihUPVR8fHJlcXVlc3RBbmltYXRpb25GcmFtZShaKSl9ZnVuY3Rpb24gS2IoKXt2JiZ2LmlzUHJlc3NlZCYmISh2LnN0YXJ0WD5XZS5jbGllbnRXaWR0aCl8fCh6ZS5jYWNoZSsrLHY\/VD1UfHxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoWik6WigpLHN0fHxWKCJzY3JvbGxTdGFydCIpLHN0PWF0KCkpfWZ1bmN0aW9uIExiKCl7eT1YZS5pbm5lcldpZHRoLG09WGUuaW5uZXJIZWlnaHR9ZnVuY3Rpb24gTWIoZSl7emUuY2FjaGUrKywhMCE9PWUmJihLZXx8aHx8RmUuZnVsbHNjcmVlbkVsZW1lbnR8fEZlLndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50fHxiJiZ5PT09WGUuaW5uZXJXaWR0aCYmIShNYXRoLmFicyhYZS5pbm5lckhlaWdodC1tKT4uMjUqWGUuaW5uZXJIZWlnaHQpKXx8Yy5yZXN0YXJ0KCEwKX1mdW5jdGlvbiBQYigpe3JldHVybiB5YihuZSwic2Nyb2xsRW5kIixQYil8fE10KCEwKX1mdW5jdGlvbiBTYihlKXtmb3IodmFyIHQ9MDt0PEsubGVuZ3RoO3QrPTUpKCFlfHxLW3QrNF0mJktbdCs0XS5xdWVyeT09PWUpJiYoS1t0XS5zdHlsZS5jc3NUZXh0PUtbdCsxXSxLW3RdLmdldEJCb3gmJktbdF0uc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLEtbdCsyXXx8IiIpLEtbdCszXS51bmNhY2hlPTEpfWZ1bmN0aW9uIFRiKGUsdCl7dmFyIHI7Zm9yKGplPTA7amU8a3QubGVuZ3RoO2plKyspIShyPWt0W2plXSl8fHQmJnIuX2N0eCE9PXR8fChlP3Iua2lsbCgxKTpyLnJldmVydCghMCwhMCkpO2s9ITAsdCYmU2IodCksdHx8VigicmV2ZXJ0Iil9ZnVuY3Rpb24gVWIoZSx0KXt6ZS5jYWNoZSsrLCF0JiZydHx8emUuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gVWEoZSkmJmUuY2FjaGVJRCsrJiYoZS5yZWM9MCl9KSxjdChlKSYmKFhlLmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb249Xz1lKX1mdW5jdGlvbiBaYigpe1dlLmFwcGVuZENoaWxkKHcpLFM9IXYmJncub2Zmc2V0SGVpZ2h0fHxYZS5pbm5lckhlaWdodCxXZS5yZW1vdmVDaGlsZCh3KX1mdW5jdGlvbiAkYih0KXtyZXR1cm4gSmUoIi5nc2FwLW1hcmtlci1zdGFydCwgLmdzYXAtbWFya2VyLWVuZCwgLmdzYXAtbWFya2VyLXNjcm9sbGVyLXN0YXJ0LCAuZ3NhcC1tYXJrZXItc2Nyb2xsZXItZW5kIikuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZS5zdHlsZS5kaXNwbGF5PXQ\/Im5vbmUiOiJibG9jayJ9KX1mdW5jdGlvbiBoYyhlLHQscixuKXtpZighZS5fZ3NhcC5zd2FwcGVkSW4pe2Zvcih2YXIgaSxvPSQubGVuZ3RoLGE9dC5zdHlsZSxzPWUuc3R5bGU7by0tOylhW2k9JFtvXV09cltpXTthLnBvc2l0aW9uPSJhYnNvbHV0ZSI9PT1yLnBvc2l0aW9uPyJhYnNvbHV0ZSI6InJlbGF0aXZlIiwiaW5saW5lIj09PXIuZGlzcGxheSYmKGEuZGlzcGxheT0iaW5saW5lLWJsb2NrIiksc1tZXT1zW0ldPSJhdXRvIixhLmZsZXhCYXNpcz1yLmZsZXhCYXNpc3x8ImF1dG8iLGEub3ZlcmZsb3c9InZpc2libGUiLGEuYm94U2l6aW5nPSJib3JkZXItYm94IixhW2Z0XT1yYihlLEhlKSt4dCxhW2R0XT1yYihlLHFlKSt4dCxhW2J0XT1zW210XT1zLnRvcD1zLmxlZnQ9IjAiLFB0KG4pLHNbZnRdPXMubWF4V2lkdGg9cltmdF0sc1tkdF09cy5tYXhIZWlnaHQ9cltkdF0sc1tidF09cltidF0sZS5wYXJlbnROb2RlIT09dCYmKGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodCxlKSx0LmFwcGVuZENoaWxkKGUpKSxlLl9nc2FwLnN3YXBwZWRJbj0hMH19ZnVuY3Rpb24ga2MoZSl7Zm9yKHZhciB0PWVlLmxlbmd0aCxyPWUuc3R5bGUsbj1bXSxpPTA7aTx0O2krKyluLnB1c2goZWVbaV0scltlZVtpXV0pO3JldHVybiBuLnQ9ZSxufWZ1bmN0aW9uIG5jKGUsdCxyLG4saSxvLGEscyxsLGMsdSxmLGQscCl7VWEoZSkmJihlPWUocykpLGN0KGUpJiYibWF4Ij09PWUuc3Vic3RyKDAsMykmJihlPWYrKCI9Ij09PWUuY2hhckF0KDQpP0RiKCIwIitlLnN1YnN0cigzKSxyKTowKSk7dmFyIGcsaCx2LGI9ZD9kLnRpbWUoKTowO2lmKGQmJmQuc2VlaygwKSxpc05hTihlKXx8KGU9K2UpLFZhKGUpKWQmJihlPU5lLnV0aWxzLm1hcFJhbmdlKGQuc2Nyb2xsVHJpZ2dlci5zdGFydCxkLnNjcm9sbFRyaWdnZXIuZW5kLDAsZixlKSksYSYmWChhLHIsbiwhMCk7ZWxzZXtVYSh0KSYmKHQ9dChzKSk7dmFyIG0seSx4LF8sdz0oZXx8IjAiKS5zcGxpdCgiICIpO3Y9Sih0LHMpfHxXZSwobT1fdCh2KXx8e30pJiYobS5sZWZ0fHxtLnRvcCl8fCJub25lIiE9PW5iKHYpLmRpc3BsYXl8fChfPXYuc3R5bGUuZGlzcGxheSx2LnN0eWxlLmRpc3BsYXk9ImJsb2NrIixtPV90KHYpLF8\/di5zdHlsZS5kaXNwbGF5PV86di5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiZGlzcGxheSIpKSx5PURiKHdbMF0sbVtuLmRdKSx4PURiKHdbMV18fCIwIixyKSxlPW1bbi5wXS1sW24ucF0tYyt5K2kteCxhJiZYKGEseCxuLHIteDwyMHx8YS5faXNTdGFydCYmMjA8eCksci09ci14fWlmKHAmJihzW3BdPWV8fC0uMDAxLGU8MCYmKGU9MCkpLG8pe3ZhciBTPWUrcixrPW8uX2lzU3RhcnQ7Zz0ic2Nyb2xsIituLmQyLFgobyxTLG4sayYmMjA8U3x8IWsmJih1P01hdGgubWF4KFdlW2ddLFVlW2ddKTpvLnBhcmVudE5vZGVbZ10pPD1TKzEpLHUmJihsPV90KGEpLHUmJihvLnN0eWxlW24ub3AucF09bFtuLm9wLnBdLW4ub3AubS1vLl9vZmZzZXQreHQpKX1yZXR1cm4gZCYmdiYmKGc9X3QodiksZC5zZWVrKGYpLGg9X3QodiksZC5fY2FTY3JvbGxEaXN0PWdbbi5wXS1oW24ucF0sZT1lL2QuX2NhU2Nyb2xsRGlzdCpmKSxkJiZkLnNlZWsoYiksZD9lOk1hdGgucm91bmQoZSl9ZnVuY3Rpb24gcGMoZSx0LHIsbil7aWYoZS5wYXJlbnROb2RlIT09dCl7dmFyIGksbyxhPWUuc3R5bGU7aWYodD09PVdlKXtmb3IoaSBpbiBlLl9zdE9yaWc9YS5jc3NUZXh0LG89bmIoZSkpK2l8fHJlLnRlc3QoaSl8fCFvW2ldfHwic3RyaW5nIiE9dHlwZW9mIGFbaV18fCIwIj09PWl8fChhW2ldPW9baV0pO2EudG9wPXIsYS5sZWZ0PW59ZWxzZSBhLmNzc1RleHQ9ZS5fc3RPcmlnO05lLmNvcmUuZ2V0Q2FjaGUoZSkudW5jYWNoZT0xLHQuYXBwZW5kQ2hpbGQoZSl9fWZ1bmN0aW9uIHFjKHIsZSxuKXt2YXIgaT1lLG89aTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5yb3VuZChyKCkpO3JldHVybiB0IT09aSYmdCE9PW8mJjM8TWF0aC5hYnModC1pKSYmMzxNYXRoLmFicyh0LW8pJiYoZT10LG4mJm4oKSksbz1pLGk9TWF0aC5yb3VuZChlKX19ZnVuY3Rpb24gcmMoZSx0LHIpe3ZhciBuPXt9O25bdC5wXT0iKz0iK3IsTmUuc2V0KGUsbil9ZnVuY3Rpb24gc2MoYyxlKXtmdW5jdGlvbiBIayhlLHQscixuLGkpe3ZhciBvPUhrLnR3ZWVuLGE9dC5vbkNvbXBsZXRlLHM9e307cj1yfHx1KCk7dmFyIGw9cWModSxyLGZ1bmN0aW9uKCl7by5raWxsKCksSGsudHdlZW49MH0pO3JldHVybiBpPW4mJml8fDAsbj1ufHxlLXIsbyYmby5raWxsKCksdFtmXT1lLHQuaW5oZXJpdD0hMSwodC5tb2RpZmllcnM9cylbZl09ZnVuY3Rpb24oKXtyZXR1cm4gbChyK24qby5yYXRpbytpKm8ucmF0aW8qby5yYXRpbyl9LHQub25VcGRhdGU9ZnVuY3Rpb24oKXt6ZS5jYWNoZSsrLEhrLnR3ZWVuJiZaKCl9LHQub25Db21wbGV0ZT1mdW5jdGlvbigpe0hrLnR3ZWVuPTAsYSYmYS5jYWxsKG8pfSxvPUhrLnR3ZWVuPU5lLnRvKGMsdCl9dmFyIHU9TChjLGUpLGY9Il9zY3JvbGwiK2UucDI7cmV0dXJuKGNbZl09dSkud2hlZWxIYW5kbGVyPWZ1bmN0aW9uKCl7cmV0dXJuIEhrLnR3ZWVuJiZIay50d2Vlbi5raWxsKCkmJihIay50d2Vlbj0wKX0seGIoYywid2hlZWwiLHUud2hlZWxIYW5kbGVyKSxuZS5pc1RvdWNoJiZ4YihjLCJ0b3VjaG1vdmUiLHUud2hlZWxIYW5kbGVyKSxIa312YXIgTmUscyxYZSxGZSxVZSxXZSxsLGMsSmUsR2UsVmUsdSxLZSxRZSxmLGplLGQscCxnLFplLCRlLGgsdixiLG0seSxSLHgsXyx3LFMsayxldCx0dCxULHJ0LG50LGl0LG90PTEsYXQ9RGF0ZS5ub3csRD1hdCgpLHN0PTAsbHQ9MCxjdD1mdW5jdGlvbiBfaXNTdHJpbmcoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSx1dD1NYXRoLmFicyxJPSJyaWdodCIsWT0iYm90dG9tIixmdD0id2lkdGgiLGR0PSJoZWlnaHQiLHB0PSJSaWdodCIsZ3Q9IkxlZnQiLGh0PSJUb3AiLHZ0PSJCb3R0b20iLGJ0PSJwYWRkaW5nIixtdD0ibWFyZ2luIix5dD0iV2lkdGgiLEg9IkhlaWdodCIseHQ9InB4IixfdD1mdW5jdGlvbiBfZ2V0Qm91bmRzKGUsdCl7dmFyIHI9dCYmIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIhPT1uYihlKVtmXSYmTmUudG8oZSx7eDowLHk6MCx4UGVyY2VudDowLHlQZXJjZW50OjAscm90YXRpb246MCxyb3RhdGlvblg6MCxyb3RhdGlvblk6MCxzY2FsZToxLHNrZXdYOjAsc2tld1k6MH0pLnByb2dyZXNzKDEpLG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gciYmci5wcm9ncmVzcygwKS5raWxsKCksbn0sd3Q9e3N0YXJ0Q29sb3I6ImdyZWVuIixlbmRDb2xvcjoicmVkIixpbmRlbnQ6MCxmb250U2l6ZToiMTZweCIsZm9udFdlaWdodDoibm9ybWFsIn0sU3Q9e3RvZ2dsZUFjdGlvbnM6InBsYXkiLGFudGljaXBhdGVQaW46MH0scT17dG9wOjAsbGVmdDowLGNlbnRlcjouNSxib3R0b206MSxyaWdodDoxfSxYPWZ1bmN0aW9uIF9wb3NpdGlvbk1hcmtlcihlLHQscixuKXt2YXIgaT17ZGlzcGxheToiYmxvY2sifSxvPXJbbj8ib3MyIjoicDIiXSxhPXJbbj8icDIiOiJvczIiXTtlLl9pc0ZsaXBwZWQ9bixpW3IuYSsiUGVyY2VudCJdPW4\/LTEwMDowLGlbci5hXT1uPyIxcHgiOjAsaVsiYm9yZGVyIitvK3l0XT0xLGlbImJvcmRlciIrYSt5dF09MCxpW3IucF09dCsicHgiLE5lLnNldChlLGkpfSxrdD1bXSxUdD17fSxVPXt9LFc9W10sVj1mdW5jdGlvbiBfZGlzcGF0Y2goZSl7cmV0dXJuIFVbZV0mJlVbZV0ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KXx8V30sSz1bXSxDdD0wLE10PWZ1bmN0aW9uIF9yZWZyZXNoQWxsKGUsdCl7aWYoVWU9RmUuZG9jdW1lbnRFbGVtZW50LFdlPUZlLmJvZHksbD1bWGUsRmUsVWUsV2VdLCFzdHx8ZXx8ayl7WmIoKSxydD1uZS5pc1JlZnJlc2hpbmc9ITAsemUuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gVWEoZSkmJisrZS5jYWNoZUlEJiYoZS5yZWM9ZSgpKX0pO3ZhciByPVYoInJlZnJlc2hJbml0Iik7WmUmJm5lLnNvcnQoKSx0fHxUYigpLHplLmZvckVhY2goZnVuY3Rpb24oZSl7VWEoZSkmJihlLnNtb290aCYmKGUudGFyZ2V0LnN0eWxlLnNjcm9sbEJlaGF2aW9yPSJhdXRvIiksZSgwKSl9KSxrdC5zbGljZSgwKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZnJlc2goKX0pLGs9ITEsa3QuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLl9zdWJQaW5PZmZzZXQmJmUucGluKXt2YXIgdD1lLnZhcnMuaG9yaXpvbnRhbD8ib2Zmc2V0V2lkdGgiOiJvZmZzZXRIZWlnaHQiLHI9ZS5waW5bdF07ZS5yZXZlcnQoITAsMSksZS5hZGp1c3RQaW5TcGFjaW5nKGUucGluW3RdLXIpLGUucmVmcmVzaCgpfX0pLGV0PTEsJGIoITApLGt0LmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9UmEoZS5zY3JvbGxlcixlLl9kaXIpLHI9Im1heCI9PT1lLnZhcnMuZW5kfHxlLl9lbmRDbGFtcCYmZS5lbmQ+dCxuPWUuX3N0YXJ0Q2xhbXAmJmUuc3RhcnQ+PXQ7KHJ8fG4pJiZlLnNldFBvc2l0aW9ucyhuP3QtMTplLnN0YXJ0LHI\/TWF0aC5tYXgobj90OmUuc3RhcnQrMSx0KTplLmVuZCwhMCl9KSwkYighMSksZXQ9MCxyLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUucmVuZGVyJiZlLnJlbmRlcigtMSl9KSx6ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe1VhKGUpJiYoZS5zbW9vdGgmJnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3JldHVybiBlLnRhcmdldC5zdHlsZS5zY3JvbGxCZWhhdmlvcj0ic21vb3RoIn0pLGUucmVjJiZlKGUucmVjKSl9KSxVYihfLDEpLGMucGF1c2UoKSxDdCsrLFoocnQ9Miksa3QuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gVWEoZS52YXJzLm9uUmVmcmVzaCkmJmUudmFycy5vblJlZnJlc2goZSl9KSxydD1uZS5pc1JlZnJlc2hpbmc9ITEsVigicmVmcmVzaCIpfWVsc2UgeGIobmUsInNjcm9sbEVuZCIsUGIpfSxqPTAsRXQ9MSxaPWZ1bmN0aW9uIF91cGRhdGVBbGwoZSl7aWYoMj09PWV8fCFydCYmIWspe25lLmlzVXBkYXRpbmc9ITAsaXQmJml0LnVwZGF0ZSgwKTt2YXIgdD1rdC5sZW5ndGgscj1hdCgpLG49NTA8PXItRCxpPXQmJmt0WzBdLnNjcm9sbCgpO2lmKEV0PWk8aj8tMToxLHJ0fHwoaj1pKSxuJiYoc3QmJiFRZSYmMjAwPHItc3QmJihzdD0wLFYoInNjcm9sbEVuZCIpKSxWZT1ELEQ9ciksRXQ8MCl7Zm9yKGplPXQ7MDxqZS0tOylrdFtqZV0mJmt0W2plXS51cGRhdGUoMCxuKTtFdD0xfWVsc2UgZm9yKGplPTA7amU8dDtqZSsrKWt0W2plXSYma3RbamVdLnVwZGF0ZSgwLG4pO25lLmlzVXBkYXRpbmc9ITF9VD0wfSwkPVsibGVmdCIsInRvcCIsWSxJLG10K3Z0LG10K3B0LG10K2h0LG10K2d0LCJkaXNwbGF5IiwiZmxleFNocmluayIsImZsb2F0IiwiekluZGV4IiwiZ3JpZENvbHVtblN0YXJ0IiwiZ3JpZENvbHVtbkVuZCIsImdyaWRSb3dTdGFydCIsImdyaWRSb3dFbmQiLCJncmlkQXJlYSIsImp1c3RpZnlTZWxmIiwiYWxpZ25TZWxmIiwicGxhY2VTZWxmIiwib3JkZXIiXSxlZT0kLmNvbmNhdChbZnQsZHQsImJveFNpemluZyIsIm1heCIreXQsIm1heCIrSCwicG9zaXRpb24iLG10LGJ0LGJ0K2h0LGJ0K3B0LGJ0K3Z0LGJ0K2d0XSksdGU9LyhbQS1aXSkvZyxQdD1mdW5jdGlvbiBfc2V0U3RhdGUoZSl7aWYoZSl7dmFyIHQscixuPWUudC5zdHlsZSxpPWUubGVuZ3RoLG89MDtmb3IoKGUudC5fZ3NhcHx8TmUuY29yZS5nZXRDYWNoZShlLnQpKS51bmNhY2hlPTE7bzxpO28rPTIpcj1lW28rMV0sdD1lW29dLHI\/blt0XT1yOm5bdF0mJm4ucmVtb3ZlUHJvcGVydHkodC5yZXBsYWNlKHRlLCItJDEiKS50b0xvd2VyQ2FzZSgpKX19LE90PXtsZWZ0OjAsdG9wOjB9LHJlPS8od2Via2l0fG1venxsZW5ndGh8Y3NzVGV4dHxpbnNldCkvaSxuZT0oU2Nyb2xsVHJpZ2dlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbiBpbml0KFAsTyl7aWYodGhpcy5wcm9ncmVzcz10aGlzLnN0YXJ0PTAsdGhpcy52YXJzJiZ0aGlzLmtpbGwoITAsITApLGx0KXt2YXIgQSxuLHAsUixELEIsSSxZLEgscSxOLGUsWCxGLFUsVyxHLFYsdCxLLGIsUSxqLG0sWix5LCQseCxyLF8sdyxlZSxpLGcsdGUscmUsbmUsUyxvLGs9KFA9cGIoY3QoUCl8fFZhKFApfHxQLm5vZGVUeXBlP3t0cmlnZ2VyOlB9OlAsU3QpKS5vblVwZGF0ZSxUPVAudG9nZ2xlQ2xhc3MsYT1QLmlkLEM9UC5vblRvZ2dsZSxpZT1QLm9uUmVmcmVzaCxNPVAuc2NydWIsb2U9UC50cmlnZ2VyLGFlPVAucGluLHNlPVAucGluU3BhY2luZyxsZT1QLmludmFsaWRhdGVPblJlZnJlc2gsRT1QLmFudGljaXBhdGVQaW4scz1QLm9uU2NydWJDb21wbGV0ZSxoPVAub25TbmFwQ29tcGxldGUsY2U9UC5vbmNlLHVlPVAuc25hcCxmZT1QLnBpblJlcGFyZW50LGw9UC5waW5TcGFjZXIsZGU9UC5jb250YWluZXJBbmltYXRpb24scGU9UC5mYXN0U2Nyb2xsRW5kLGdlPVAucHJldmVudE92ZXJsYXBzLGhlPVAuaG9yaXpvbnRhbHx8UC5jb250YWluZXJBbmltYXRpb24mJiExIT09UC5ob3Jpem9udGFsP0hlOnFlLHZlPSFNJiYwIT09TSxiZT1KKFAuc2Nyb2xsZXJ8fFhlKSxjPU5lLmNvcmUuZ2V0Q2FjaGUoYmUpLG1lPU1hKGJlKSx5ZT0iZml4ZWQiPT09KCJwaW5UeXBlImluIFA\/UC5waW5UeXBlOnooYmUsInBpblR5cGUiKXx8bWUmJiJmaXhlZCIpLHhlPVtQLm9uRW50ZXIsUC5vbkxlYXZlLFAub25FbnRlckJhY2ssUC5vbkxlYXZlQmFja10sX2U9dmUmJlAudG9nZ2xlQWN0aW9ucy5zcGxpdCgiICIpLHdlPSJtYXJrZXJzImluIFA\/UC5tYXJrZXJzOlN0Lm1hcmtlcnMsU2U9bWU\/MDpwYXJzZUZsb2F0KG5iKGJlKVsiYm9yZGVyIitoZS5wMit5dF0pfHwwLGtlPXRoaXMsVGU9UC5vblJlZnJlc2hJbml0JiZmdW5jdGlvbigpe3JldHVybiBQLm9uUmVmcmVzaEluaXQoa2UpfSxDZT1mdW5jdGlvbiBfZ2V0U2l6ZUZ1bmMoZSx0LHIpe3ZhciBuPXIuZCxpPXIuZDIsbz1yLmE7cmV0dXJuKG89eihlLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiKSk\/ZnVuY3Rpb24oKXtyZXR1cm4gbygpW25dfTpmdW5jdGlvbigpe3JldHVybih0P05hKGkpOmVbImNsaWVudCIraV0pfHwwfX0oYmUsbWUsaGUpLE1lPWZ1bmN0aW9uIF9nZXRPZmZzZXRzRnVuYyhlLHQpe3JldHVybiF0fHx+WWUuaW5kZXhPZihlKT9PYShlKTpmdW5jdGlvbigpe3JldHVybiBPdH19KGJlLG1lKSxFZT0wLFBlPTAsT2U9MCxBZT1MKGJlLGhlKTtpZihrZS5fc3RhcnRDbGFtcD1rZS5fZW5kQ2xhbXA9ITEsa2UuX2Rpcj1oZSxFKj00NSxrZS5zY3JvbGxlcj1iZSxrZS5zY3JvbGw9ZGU\/ZGUudGltZS5iaW5kKGRlKTpBZSxSPUFlKCksa2UudmFycz1QLE89T3x8UC5hbmltYXRpb24sInJlZnJlc2hQcmlvcml0eSJpbiBQJiYoWmU9MSwtOTk5OT09PVAucmVmcmVzaFByaW9yaXR5JiYoaXQ9a2UpKSxjLnR3ZWVuU2Nyb2xsPWMudHdlZW5TY3JvbGx8fHt0b3A6c2MoYmUscWUpLGxlZnQ6c2MoYmUsSGUpfSxrZS50d2VlblRvPUE9Yy50d2VlblNjcm9sbFtoZS5wXSxrZS5zY3J1YkR1cmF0aW9uPWZ1bmN0aW9uKGUpeyhpPVZhKGUpJiZlKT9lZT9lZS5kdXJhdGlvbihlKTplZT1OZS50byhPLHtlYXNlOiJleHBvIix0b3RhbFByb2dyZXNzOiIrPTAiLGluaGVyaXQ6ITEsZHVyYXRpb246aSxwYXVzZWQ6ITAsb25Db21wbGV0ZTpmdW5jdGlvbiBvbkNvbXBsZXRlKCl7cmV0dXJuIHMmJnMoa2UpfX0pOihlZSYmZWUucHJvZ3Jlc3MoMSkua2lsbCgpLGVlPTApfSxPJiYoTy52YXJzLmxhenk9ITEsTy5faW5pdHRlZCYmIWtlLmlzUmV2ZXJ0ZWR8fCExIT09Ty52YXJzLmltbWVkaWF0ZVJlbmRlciYmITEhPT1QLmltbWVkaWF0ZVJlbmRlciYmTy5kdXJhdGlvbigpJiZPLnJlbmRlcigwLCEwLCEwKSxrZS5hbmltYXRpb249Ty5wYXVzZSgpLChPLnNjcm9sbFRyaWdnZXI9a2UpLnNjcnViRHVyYXRpb24oTSksXz0wLGE9YXx8Ty52YXJzLmlkKSx1ZSYmKFdhKHVlKSYmIXVlLnB1c2h8fCh1ZT17c25hcFRvOnVlfSksInNjcm9sbEJlaGF2aW9yImluIFdlLnN0eWxlJiZOZS5zZXQobWU\/W1dlLFVlXTpiZSx7c2Nyb2xsQmVoYXZpb3I6ImF1dG8ifSksemUuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gVWEoZSkmJmUudGFyZ2V0PT09KG1lP0ZlLnNjcm9sbGluZ0VsZW1lbnR8fFVlOmJlKSYmKGUuc21vb3RoPSExKX0pLHA9VWEodWUuc25hcFRvKT91ZS5zbmFwVG86ImxhYmVscyI9PT11ZS5zbmFwVG8\/ZnVuY3Rpb24gX2dldENsb3Nlc3RMYWJlbCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE5lLnV0aWxzLnNuYXAoc2IodCksZSl9fShPKToibGFiZWxzRGlyZWN0aW9uYWwiPT09dWUuc25hcFRvP2Z1bmN0aW9uIF9nZXRMYWJlbEF0RGlyZWN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiB1YihzYihyKSkoZSx0LmRpcmVjdGlvbil9fShPKTohMSE9PXVlLmRpcmVjdGlvbmFsP2Z1bmN0aW9uKGUsdCl7cmV0dXJuIHViKHVlLnNuYXBUbykoZSxhdCgpLVBlPDUwMD8wOnQuZGlyZWN0aW9uKX06TmUudXRpbHMuc25hcCh1ZS5zbmFwVG8pLGc9dWUuZHVyYXRpb258fHttaW46LjEsbWF4OjJ9LGc9V2EoZyk\/R2UoZy5taW4sZy5tYXgpOkdlKGcsZyksdGU9TmUuZGVsYXllZENhbGwodWUuZGVsYXl8fGkvMnx8LjEsZnVuY3Rpb24oKXt2YXIgZT1BZSgpLHQ9YXQoKS1QZTw1MDAscj1BLnR3ZWVuO2lmKCEodHx8TWF0aC5hYnMoa2UuZ2V0VmVsb2NpdHkoKSk8MTApfHxyfHxRZXx8RWU9PT1lKWtlLmlzQWN0aXZlJiZFZSE9PWUmJnRlLnJlc3RhcnQoITApO2Vsc2V7dmFyIG4saSxvPShlLUIpL0YsYT1PJiYhdmU\/Ty50b3RhbFByb2dyZXNzKCk6byxzPXQ\/MDooYS13KS8oYXQoKS1WZSkqMWUzfHwwLGw9TmUudXRpbHMuY2xhbXAoLW8sMS1vLHV0KHMvMikqcy8uMTg1KSxjPW8rKCExPT09dWUuaW5lcnRpYT8wOmwpLHU9dWUub25TdGFydCxmPXVlLm9uSW50ZXJydXB0LGQ9dWUub25Db21wbGV0ZTtpZihuPXAoYyxrZSksVmEobil8fChuPWMpLGk9TWF0aC5tYXgoMCxNYXRoLnJvdW5kKEIrbipGKSksZTw9SSYmQjw9ZSYmaSE9PWUpe2lmKHImJiFyLl9pbml0dGVkJiZyLmRhdGE8PXV0KGktZSkpcmV0dXJuOyExPT09dWUuaW5lcnRpYSYmKGw9bi1vKSxBKGkse2R1cmF0aW9uOmcodXQoLjE4NSpNYXRoLm1heCh1dChjLWEpLHV0KG4tYSkpL3MvLjA1fHwwKSksZWFzZTp1ZS5lYXNlfHwicG93ZXIzIixkYXRhOnV0KGktZSksb25JbnRlcnJ1cHQ6ZnVuY3Rpb24gb25JbnRlcnJ1cHQoKXtyZXR1cm4gdGUucmVzdGFydCghMCkmJmYmJmYoa2UpfSxvbkNvbXBsZXRlOmZ1bmN0aW9uIG9uQ29tcGxldGUoKXtrZS51cGRhdGUoKSxFZT1BZSgpLE8mJiF2ZSYmKGVlP2VlLnJlc2V0VG8oInRvdGFsUHJvZ3Jlc3MiLG4sTy5fdFRpbWUvTy5fdER1cik6Ty5wcm9ncmVzcyhuKSksXz13PU8mJiF2ZT9PLnRvdGFsUHJvZ3Jlc3MoKTprZS5wcm9ncmVzcyxoJiZoKGtlKSxkJiZkKGtlKX19LGUsbCpGLGktZS1sKkYpLHUmJnUoa2UsQS50d2Vlbil9fX0pLnBhdXNlKCkpLGEmJihUdFthXT1rZSksbz0obz0ob2U9a2UudHJpZ2dlcj1KKG9lfHwhMCE9PWFlJiZhZSkpJiZvZS5fZ3NhcCYmb2UuX2dzYXAuc3RSZXZlcnQpJiZvKGtlKSxhZT0hMD09PWFlP29lOkooYWUpLGN0KFQpJiYoVD17dGFyZ2V0czpvZSxjbGFzc05hbWU6VH0pLGFlJiYoITE9PT1zZXx8c2U9PT1tdHx8KHNlPSEoIXNlJiZhZS5wYXJlbnROb2RlJiZhZS5wYXJlbnROb2RlLnN0eWxlJiYiZmxleCI9PT1uYihhZS5wYXJlbnROb2RlKS5kaXNwbGF5KSYmYnQpLGtlLnBpbj1hZSwobj1OZS5jb3JlLmdldENhY2hlKGFlKSkuc3BhY2VyP1U9bi5waW5TdGF0ZToobCYmKChsPUoobCkpJiYhbC5ub2RlVHlwZSYmKGw9bC5jdXJyZW50fHxsLm5hdGl2ZUVsZW1lbnQpLG4uc3BhY2VySXNOYXRpdmU9ISFsLGwmJihuLnNwYWNlclN0YXRlPWtjKGwpKSksbi5zcGFjZXI9Vj1sfHxGZS5jcmVhdGVFbGVtZW50KCJkaXYiKSxWLmNsYXNzTGlzdC5hZGQoInBpbi1zcGFjZXIiKSxhJiZWLmNsYXNzTGlzdC5hZGQoInBpbi1zcGFjZXItIithKSxuLnBpblN0YXRlPVU9a2MoYWUpKSwhMSE9PVAuZm9yY2UzRCYmTmUuc2V0KGFlLHtmb3JjZTNEOiEwfSksa2Uuc3BhY2VyPVY9bi5zcGFjZXIscj1uYihhZSksbT1yW3NlK2hlLm9zMl0sSz1OZS5nZXRQcm9wZXJ0eShhZSksYj1OZS5xdWlja1NldHRlcihhZSxoZS5hLHh0KSxoYyhhZSxWLHIpLEc9a2MoYWUpKSx3ZSl7ZT1XYSh3ZSk\/cGIod2Usd3QpOnd0LHE9RWIoInNjcm9sbGVyLXN0YXJ0IixhLGJlLGhlLGUsMCksTj1FYigic2Nyb2xsZXItZW5kIixhLGJlLGhlLGUsMCxxKSx0PXFbIm9mZnNldCIraGUub3AuZDJdO3ZhciB1PUooeihiZSwiY29udGVudCIpfHxiZSk7WT10aGlzLm1hcmtlclN0YXJ0PUViKCJzdGFydCIsYSx1LGhlLGUsdCwwLGRlKSxIPXRoaXMubWFya2VyRW5kPUViKCJlbmQiLGEsdSxoZSxlLHQsMCxkZSksZGUmJihTPU5lLnF1aWNrU2V0dGVyKFtZLEhdLGhlLmEseHQpKSx5ZXx8WWUubGVuZ3RoJiYhMD09PXooYmUsImZpeGVkTWFya2VycyIpfHwoZnVuY3Rpb24gX21ha2VQb3NpdGlvbmFibGUoZSl7dmFyIHQ9bmIoZSkucG9zaXRpb247ZS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiPT09dHx8ImZpeGVkIj09PXQ\/dDoicmVsYXRpdmUifShtZT9XZTpiZSksTmUuc2V0KFtxLE5dLHtmb3JjZTNEOiEwfSkseT1OZS5xdWlja1NldHRlcihxLGhlLmEseHQpLHg9TmUucXVpY2tTZXR0ZXIoTixoZS5hLHh0KSl9aWYoZGUpe3ZhciBmPWRlLnZhcnMub25VcGRhdGUsZD1kZS52YXJzLm9uVXBkYXRlUGFyYW1zO2RlLmV2ZW50Q2FsbGJhY2soIm9uVXBkYXRlIixmdW5jdGlvbigpe2tlLnVwZGF0ZSgwLDAsMSksZiYmZi5hcHBseShkZSxkfHxbXSl9KX1pZihrZS5wcmV2aW91cz1mdW5jdGlvbigpe3JldHVybiBrdFtrdC5pbmRleE9mKGtlKS0xXX0sa2UubmV4dD1mdW5jdGlvbigpe3JldHVybiBrdFtrdC5pbmRleE9mKGtlKSsxXX0sa2UucmV2ZXJ0PWZ1bmN0aW9uKGUsdCl7aWYoIXQpcmV0dXJuIGtlLmtpbGwoITApO3ZhciByPSExIT09ZXx8IWtlLmVuYWJsZWQsbj1LZTtyIT09a2UuaXNSZXZlcnRlZCYmKHImJihyZT1NYXRoLm1heChBZSgpLGtlLnNjcm9sbC5yZWN8fDApLE9lPWtlLnByb2dyZXNzLG5lPU8mJk8ucHJvZ3Jlc3MoKSksWSYmW1ksSCxxLE5dLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3R5bGUuZGlzcGxheT1yPyJub25lIjoiYmxvY2sifSksciYmKEtlPWtlKS51cGRhdGUociksIWFlfHxmZSYma2UuaXNBY3RpdmV8fChyP2Z1bmN0aW9uIF9zd2FwUGluT3V0KGUsdCxyKXtQdChyKTt2YXIgbj1lLl9nc2FwO2lmKG4uc3BhY2VySXNOYXRpdmUpUHQobi5zcGFjZXJTdGF0ZSk7ZWxzZSBpZihlLl9nc2FwLnN3YXBwZWRJbil7dmFyIGk9dC5wYXJlbnROb2RlO2kmJihpLmluc2VydEJlZm9yZShlLHQpLGkucmVtb3ZlQ2hpbGQodCkpfWUuX2dzYXAuc3dhcHBlZEluPSExfShhZSxWLFUpOmhjKGFlLFYsbmIoYWUpLFopKSxyfHxrZS51cGRhdGUociksS2U9bixrZS5pc1JldmVydGVkPXIpfSxrZS5yZWZyZXNoPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKCFLZSYma2UuZW5hYmxlZHx8dClpZihhZSYmZSYmc3QpeGIoU2Nyb2xsVHJpZ2dlciwic2Nyb2xsRW5kIixQYik7ZWxzZXshcnQmJlRlJiZUZShrZSksS2U9a2UsQS50d2VlbiYmIXImJihBLnR3ZWVuLmtpbGwoKSxBLnR3ZWVuPTApLGVlJiZlZS5wYXVzZSgpLGxlJiZPJiYoTy5yZXZlcnQoe2tpbGw6ITF9KS5pbnZhbGlkYXRlKCksTy5nZXRDaGlsZHJlbiYmTy5nZXRDaGlsZHJlbighMCwhMCwhMSkuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZS52YXJzLmltbWVkaWF0ZVJlbmRlciYmZS5yZW5kZXIoMCwhMCwhMCl9KSksa2UuaXNSZXZlcnRlZHx8a2UucmV2ZXJ0KCEwLCEwKSxrZS5fc3ViUGluT2Zmc2V0PSExO3ZhciBpLG8sYSxzLGwsYyx1LGYsZCxwLGcsaCx2LGI9Q2UoKSxtPU1lKCkseT1kZT9kZS5kdXJhdGlvbigpOlJhKGJlLGhlKSx4PUY8PS4wMXx8IUYsXz0wLHc9bnx8MCxTPVdhKHIpP3IuZW5kOlAuZW5kLGs9UC5lbmRUcmlnZ2VyfHxvZSxUPVdhKHIpP3Iuc3RhcnQ6UC5zdGFydHx8KDAhPT1QLnN0YXJ0JiZvZT9hZT8iMCAwIjoiMCAxMDAlIjowKSxDPWtlLnBpbm5lZENvbnRhaW5lcj1QLnBpbm5lZENvbnRhaW5lciYmSihQLnBpbm5lZENvbnRhaW5lcixrZSksTT1vZSYmTWF0aC5tYXgoMCxrdC5pbmRleE9mKGtlKSl8fDAsRT1NO2Zvcih3ZSYmV2EocikmJihoPU5lLmdldFByb3BlcnR5KHEsaGUucCksdj1OZS5nZXRQcm9wZXJ0eShOLGhlLnApKTswPEUtLTspKGM9a3RbRV0pLmVuZHx8Yy5yZWZyZXNoKDAsMSl8fChLZT1rZSksISh1PWMucGluKXx8dSE9PW9lJiZ1IT09YWUmJnUhPT1DfHxjLmlzUmV2ZXJ0ZWR8fCgocD1wfHxbXSkudW5zaGlmdChjKSxjLnJldmVydCghMCwhMCkpLGMhPT1rdFtFXSYmKE0tLSxFLS0pO2ZvcihVYShUKSYmKFQ9VChrZSkpLFQ9RGEoVCwic3RhcnQiLGtlKSxCPW5jKFQsb2UsYixoZSxBZSgpLFkscSxrZSxtLFNlLHllLHksZGUsa2UuX3N0YXJ0Q2xhbXAmJiJfc3RhcnRDbGFtcCIpfHwoYWU\/LS4wMDE6MCksVWEoUykmJihTPVMoa2UpKSxjdChTKSYmIVMuaW5kZXhPZigiKz0iKSYmKH5TLmluZGV4T2YoIiAiKT9TPShjdChUKT9ULnNwbGl0KCIgIilbMF06IiIpK1M6KF89RGIoUy5zdWJzdHIoMiksYiksUz1jdChUKT9UOihkZT9OZS51dGlscy5tYXBSYW5nZSgwLGRlLmR1cmF0aW9uKCksZGUuc2Nyb2xsVHJpZ2dlci5zdGFydCxkZS5zY3JvbGxUcmlnZ2VyLmVuZCxCKTpCKStfLGs9b2UpKSxTPURhKFMsImVuZCIsa2UpLEk9TWF0aC5tYXgoQixuYyhTfHwoaz8iMTAwJSAwIjp5KSxrLGIsaGUsQWUoKStfLEgsTixrZSxtLFNlLHllLHksZGUsa2UuX2VuZENsYW1wJiYiX2VuZENsYW1wIikpfHwtLjAwMSxfPTAsRT1NO0UtLTspKHU9KGM9a3RbRV0pLnBpbikmJmMuc3RhcnQtYy5fcGluUHVzaDw9QiYmIWRlJiYwPGMuZW5kJiYoaT1jLmVuZC0oa2UuX3N0YXJ0Q2xhbXA\/TWF0aC5tYXgoMCxjLnN0YXJ0KTpjLnN0YXJ0KSwodT09PW9lJiZjLnN0YXJ0LWMuX3BpblB1c2g8Qnx8dT09PUMpJiZpc05hTihUKSYmKF8rPWkqKDEtYy5wcm9ncmVzcykpLHU9PT1hZSYmKHcrPWkpKTtpZihCKz1fLEkrPV8sa2UuX3N0YXJ0Q2xhbXAmJihrZS5fc3RhcnRDbGFtcCs9Xyksa2UuX2VuZENsYW1wJiYhcnQmJihrZS5fZW5kQ2xhbXA9SXx8LS4wMDEsST1NYXRoLm1pbihJLFJhKGJlLGhlKSkpLEY9SS1CfHwoQi09LjAxKSYmLjAwMSx4JiYoT2U9TmUudXRpbHMuY2xhbXAoMCwxLE5lLnV0aWxzLm5vcm1hbGl6ZShCLEkscmUpKSksa2UuX3BpblB1c2g9dyxZJiZfJiYoKGk9e30pW2hlLmFdPSIrPSIrXyxDJiYoaVtoZS5wXT0iLT0iK0FlKCkpLE5lLnNldChbWSxIXSxpKSksIWFlfHxldCYma2UuZW5kPj1SYShiZSxoZSkpe2lmKG9lJiZBZSgpJiYhZGUpZm9yKG89b2UucGFyZW50Tm9kZTtvJiZvIT09V2U7KW8uX3Bpbk9mZnNldCYmKEItPW8uX3Bpbk9mZnNldCxJLT1vLl9waW5PZmZzZXQpLG89by5wYXJlbnROb2RlfWVsc2UgaT1uYihhZSkscz1oZT09PXFlLGE9QWUoKSxRPXBhcnNlRmxvYXQoSyhoZS5hKSkrdywheSYmMTxJJiYoZz17c3R5bGU6Zz0obWU\/RmUuc2Nyb2xsaW5nRWxlbWVudHx8VWU6YmUpLnN0eWxlLHZhbHVlOmdbIm92ZXJmbG93IitoZS5hLnRvVXBwZXJDYXNlKCldfSxtZSYmInNjcm9sbCIhPT1uYihXZSlbIm92ZXJmbG93IitoZS5hLnRvVXBwZXJDYXNlKCldJiYoZy5zdHlsZVsib3ZlcmZsb3ciK2hlLmEudG9VcHBlckNhc2UoKV09InNjcm9sbCIpKSxoYyhhZSxWLGkpLEc9a2MoYWUpLG89X3QoYWUsITApLGY9eWUmJkwoYmUscz9IZTpxZSkoKSxzZT8oKFo9W3NlK2hlLm9zMixGK3creHRdKS50PVYsKEU9c2U9PT1idD9yYihhZSxoZSkrRit3OjApJiYoWi5wdXNoKGhlLmQsRSt4dCksImF1dG8iIT09Vi5zdHlsZS5mbGV4QmFzaXMmJihWLnN0eWxlLmZsZXhCYXNpcz1FK3h0KSksUHQoWiksQyYma3QuZm9yRWFjaChmdW5jdGlvbihlKXtlLnBpbj09PUMmJiExIT09ZS52YXJzLnBpblNwYWNpbmcmJihlLl9zdWJQaW5PZmZzZXQ9ITApfSkseWUmJkFlKHJlKSk6KEU9cmIoYWUsaGUpKSYmImF1dG8iIT09Vi5zdHlsZS5mbGV4QmFzaXMmJihWLnN0eWxlLmZsZXhCYXNpcz1FK3h0KSx5ZSYmKChsPXt0b3A6by50b3ArKHM\/YS1COmYpK3h0LGxlZnQ6by5sZWZ0KyhzP2Y6YS1CKSt4dCxib3hTaXppbmc6ImJvcmRlci1ib3giLHBvc2l0aW9uOiJmaXhlZCJ9KVtmdF09bC5tYXhXaWR0aD1NYXRoLmNlaWwoby53aWR0aCkreHQsbFtkdF09bC5tYXhIZWlnaHQ9TWF0aC5jZWlsKG8uaGVpZ2h0KSt4dCxsW210XT1sW210K2h0XT1sW210K3B0XT1sW210K3Z0XT1sW210K2d0XT0iMCIsbFtidF09aVtidF0sbFtidCtodF09aVtidCtodF0sbFtidCtwdF09aVtidCtwdF0sbFtidCt2dF09aVtidCt2dF0sbFtidCtndF09aVtidCtndF0sVz1mdW5jdGlvbiBfY29weVN0YXRlKGUsdCxyKXtmb3IodmFyIG4saT1bXSxvPWUubGVuZ3RoLGE9cj84OjA7YTxvO2ErPTIpbj1lW2FdLGkucHVzaChuLG4gaW4gdD90W25dOmVbYSsxXSk7cmV0dXJuIGkudD1lLnQsaX0oVSxsLGZlKSxydCYmQWUoMCkpLE8\/KGQ9Ty5faW5pdHRlZCwkZSgxKSxPLnJlbmRlcihPLmR1cmF0aW9uKCksITAsITApLGo9SyhoZS5hKS1RK0YrdywkPTE8TWF0aC5hYnMoRi1qKSx5ZSYmJCYmVy5zcGxpY2UoVy5sZW5ndGgtMiwyKSxPLnJlbmRlcigwLCEwLCEwKSxkfHxPLmludmFsaWRhdGUoITApLE8ucGFyZW50fHxPLnRvdGFsVGltZShPLnRvdGFsVGltZSgpKSwkZSgwKSk6aj1GLGcmJihnLnZhbHVlP2cuc3R5bGVbIm92ZXJmbG93IitoZS5hLnRvVXBwZXJDYXNlKCldPWcudmFsdWU6Zy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgib3ZlcmZsb3ctIitoZS5hKSk7cCYmcC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJldmVydCghMSwhMCl9KSxrZS5zdGFydD1CLGtlLmVuZD1JLFI9RD1ydD9yZTpBZSgpLGRlfHxydHx8KFI8cmUmJkFlKHJlKSxrZS5zY3JvbGwucmVjPTApLGtlLnJldmVydCghMSwhMCksUGU9YXQoKSx0ZSYmKEVlPS0xLHRlLnJlc3RhcnQoITApKSxLZT0wLE8mJnZlJiYoTy5faW5pdHRlZHx8bmUpJiZPLnByb2dyZXNzKCkhPT1uZSYmTy5wcm9ncmVzcyhuZXx8MCwhMCkucmVuZGVyKE8udGltZSgpLCEwLCEwKSwoeHx8T2UhPT1rZS5wcm9ncmVzc3x8ZGV8fGxlfHxPJiYhTy5faW5pdHRlZCkmJihPJiYhdmUmJihPLl9pbml0dGVkfHxPZXx8ITEhPT1PLnZhcnMuaW1tZWRpYXRlUmVuZGVyKSYmTy50b3RhbFByb2dyZXNzKGRlJiZCPC0uMDAxJiYhT2U\/TmUudXRpbHMubm9ybWFsaXplKEIsSSwwKTpPZSwhMCksa2UucHJvZ3Jlc3M9eHx8KFItQikvRj09PU9lPzA6T2UpLGFlJiZzZSYmKFYuX3Bpbk9mZnNldD1NYXRoLnJvdW5kKGtlLnByb2dyZXNzKmopKSxlZSYmZWUuaW52YWxpZGF0ZSgpLGlzTmFOKGgpfHwoaC09TmUuZ2V0UHJvcGVydHkocSxoZS5wKSx2LT1OZS5nZXRQcm9wZXJ0eShOLGhlLnApLHJjKHEsaGUsaCkscmMoWSxoZSxoLShufHwwKSkscmMoTixoZSx2KSxyYyhILGhlLHYtKG58fDApKSkseCYmIXJ0JiZrZS51cGRhdGUoKSwhaWV8fHJ0fHxYfHwoWD0hMCxpZShrZSksWD0hMSl9fSxrZS5nZXRWZWxvY2l0eT1mdW5jdGlvbigpe3JldHVybihBZSgpLUQpLyhhdCgpLVZlKSoxZTN8fDB9LGtlLmVuZEFuaW1hdGlvbj1mdW5jdGlvbigpe1hhKGtlLmNhbGxiYWNrQW5pbWF0aW9uKSxPJiYoZWU\/ZWUucHJvZ3Jlc3MoMSk6Ty5wYXVzZWQoKT92ZXx8WGEoTyxrZS5kaXJlY3Rpb248MCwxKTpYYShPLE8ucmV2ZXJzZWQoKSkpfSxrZS5sYWJlbFRvU2Nyb2xsPWZ1bmN0aW9uKGUpe3JldHVybiBPJiZPLmxhYmVscyYmKEJ8fGtlLnJlZnJlc2goKXx8QikrTy5sYWJlbHNbZV0vTy5kdXJhdGlvbigpKkZ8fDB9LGtlLmdldFRyYWlsaW5nPWZ1bmN0aW9uKHQpe3ZhciBlPWt0LmluZGV4T2Yoa2UpLHI9MDxrZS5kaXJlY3Rpb24\/a3Quc2xpY2UoMCxlKS5yZXZlcnNlKCk6a3Quc2xpY2UoZSsxKTtyZXR1cm4oY3QodCk\/ci5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFycy5wcmV2ZW50T3ZlcmxhcHM9PT10fSk6cikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiAwPGtlLmRpcmVjdGlvbj9lLmVuZDw9QjplLnN0YXJ0Pj1JfSl9LGtlLnVwZGF0ZT1mdW5jdGlvbihlLHQscil7aWYoIWRlfHxyfHxlKXt2YXIgbixpLG8sYSxzLGwsYyx1PSEwPT09cnQ\/cmU6a2Uuc2Nyb2xsKCksZj1lPzA6KHUtQikvRixkPWY8MD8wOjE8Zj8xOmZ8fDAscD1rZS5wcm9ncmVzcztpZih0JiYoRD1SLFI9ZGU\/QWUoKTp1LHVlJiYodz1fLF89TyYmIXZlP08udG90YWxQcm9ncmVzcygpOmQpKSxFJiZhZSYmIUtlJiYhb3QmJnN0JiYoIWQmJkI8dSsodS1EKS8oYXQoKS1WZSkqRT9kPTFlLTQ6MT09PWQmJkk+dSsodS1EKS8oYXQoKS1WZSkqRSYmKGQ9Ljk5OTkpKSxkIT09cCYma2UuZW5hYmxlZCl7aWYoYT0ocz0obj1rZS5pc0FjdGl2ZT0hIWQmJmQ8MSkhPSghIXAmJnA8MSkpfHwhIWQhPSEhcCxrZS5kaXJlY3Rpb249cDxkPzE6LTEsa2UucHJvZ3Jlc3M9ZCxhJiYhS2UmJihpPWQmJiFwPzA6MT09PWQ\/MToxPT09cD8yOjMsdmUmJihvPSFzJiYibm9uZSIhPT1fZVtpKzFdJiZfZVtpKzFdfHxfZVtpXSxjPU8mJigiY29tcGxldGUiPT09b3x8InJlc2V0Ij09PW98fG8gaW4gTykpKSxnZSYmKHN8fGMpJiYoY3x8TXx8IU8pJiYoVWEoZ2UpP2dlKGtlKTprZS5nZXRUcmFpbGluZyhnZSkuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZS5lbmRBbmltYXRpb24oKX0pKSx2ZXx8KCFlZXx8S2V8fG90P08mJk8udG90YWxQcm9ncmVzcyhkLCEoIUtlfHwhUGUmJiFlKSk6KGVlLl9kcC5fdGltZS1lZS5fc3RhcnQhPT1lZS5fdGltZSYmZWUucmVuZGVyKGVlLl9kcC5fdGltZS1lZS5fc3RhcnQpLGVlLnJlc2V0VG8\/ZWUucmVzZXRUbygidG90YWxQcm9ncmVzcyIsZCxPLl90VGltZS9PLl90RHVyKTooZWUudmFycy50b3RhbFByb2dyZXNzPWQsZWUuaW52YWxpZGF0ZSgpLnJlc3RhcnQoKSkpKSxhZSlpZihlJiZzZSYmKFYuc3R5bGVbc2UraGUub3MyXT1tKSx5ZSl7aWYoYSl7aWYobD0hZSYmcDxkJiZ1PEkrMSYmdSsxPj1SYShiZSxoZSksZmUpaWYoZXx8IW4mJiFsKXBjKGFlLFYpO2Vsc2V7dmFyIGc9X3QoYWUsITApLGg9dS1CO3BjKGFlLFdlLGcudG9wKyhoZT09PXFlP2g6MCkreHQsZy5sZWZ0KyhoZT09PXFlPzA6aCkreHQpfVB0KG58fGw\/VzpHKSwkJiZkPDEmJm58fGIoUSsoMSE9PWR8fGw\/MDpqKSl9fWVsc2UgYihKYShRK2oqZCkpOyF1ZXx8QS50d2Vlbnx8S2V8fG90fHx0ZS5yZXN0YXJ0KCEwKSxUJiYoc3x8Y2UmJmQmJihkPDF8fCF0dCkpJiZKZShULnRhcmdldHMpLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xhc3NMaXN0W258fGNlPyJhZGQiOiJyZW1vdmUiXShULmNsYXNzTmFtZSl9KSwha3x8dmV8fGV8fGsoa2UpLGEmJiFLZT8odmUmJihjJiYoImNvbXBsZXRlIj09PW8\/Ty5wYXVzZSgpLnRvdGFsUHJvZ3Jlc3MoMSk6InJlc2V0Ij09PW8\/Ty5yZXN0YXJ0KCEwKS5wYXVzZSgpOiJyZXN0YXJ0Ij09PW8\/Ty5yZXN0YXJ0KCEwKTpPW29dKCkpLGsmJmsoa2UpKSwhcyYmdHR8fChDJiZzJiZZYShrZSxDKSx4ZVtpXSYmWWEoa2UseGVbaV0pLGNlJiYoMT09PWQ\/a2Uua2lsbCghMSwxKTp4ZVtpXT0wKSxzfHx4ZVtpPTE9PT1kPzE6M10mJllhKGtlLHhlW2ldKSkscGUmJiFuJiZNYXRoLmFicyhrZS5nZXRWZWxvY2l0eSgpKT4oVmEocGUpP3BlOjI1MDApJiYoWGEoa2UuY2FsbGJhY2tBbmltYXRpb24pLGVlP2VlLnByb2dyZXNzKDEpOlhhKE8sInJldmVyc2UiPT09bz8xOiFkLDEpKSk6dmUmJmsmJiFLZSYmayhrZSl9aWYoeCl7dmFyIHY9ZGU\/dS9kZS5kdXJhdGlvbigpKihkZS5fY2FTY3JvbGxEaXN0fHwwKTp1O3kodisocS5faXNGbGlwcGVkPzE6MCkpLHgodil9UyYmUygtdS9kZS5kdXJhdGlvbigpKihkZS5fY2FTY3JvbGxEaXN0fHwwKSl9fSxrZS5lbmFibGU9ZnVuY3Rpb24oZSx0KXtrZS5lbmFibGVkfHwoa2UuZW5hYmxlZD0hMCx4YihiZSwicmVzaXplIixNYiksbWV8fHhiKGJlLCJzY3JvbGwiLEtiKSxUZSYmeGIoU2Nyb2xsVHJpZ2dlciwicmVmcmVzaEluaXQiLFRlKSwhMSE9PWUmJihrZS5wcm9ncmVzcz1PZT0wLFI9RD1FZT1BZSgpKSwhMSE9PXQmJmtlLnJlZnJlc2goKSl9LGtlLmdldFR3ZWVuPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZBP0EudHdlZW46ZWV9LGtlLnNldFBvc2l0aW9ucz1mdW5jdGlvbihlLHQscixuKXtpZihkZSl7dmFyIGk9ZGUuc2Nyb2xsVHJpZ2dlcixvPWRlLmR1cmF0aW9uKCksYT1pLmVuZC1pLnN0YXJ0O2U9aS5zdGFydCthKmUvbyx0PWkuc3RhcnQrYSp0L299a2UucmVmcmVzaCghMSwhMSx7c3RhcnQ6RWEoZSxyJiYhIWtlLl9zdGFydENsYW1wKSxlbmQ6RWEodCxyJiYhIWtlLl9lbmRDbGFtcCl9LG4pLGtlLnVwZGF0ZSgpfSxrZS5hZGp1c3RQaW5TcGFjaW5nPWZ1bmN0aW9uKGUpe2lmKFomJmUpe3ZhciB0PVouaW5kZXhPZihoZS5kKSsxO1pbdF09cGFyc2VGbG9hdChaW3RdKStlK3h0LFpbMV09cGFyc2VGbG9hdChaWzFdKStlK3h0LFB0KFopfX0sa2UuZGlzYWJsZT1mdW5jdGlvbihlLHQpe2lmKGtlLmVuYWJsZWQmJighMSE9PWUmJmtlLnJldmVydCghMCwhMCksa2UuZW5hYmxlZD1rZS5pc0FjdGl2ZT0hMSx0fHxlZSYmZWUucGF1c2UoKSxyZT0wLG4mJihuLnVuY2FjaGU9MSksVGUmJnliKFNjcm9sbFRyaWdnZXIsInJlZnJlc2hJbml0IixUZSksdGUmJih0ZS5wYXVzZSgpLEEudHdlZW4mJkEudHdlZW4ua2lsbCgpJiYoQS50d2Vlbj0wKSksIW1lKSl7Zm9yKHZhciByPWt0Lmxlbmd0aDtyLS07KWlmKGt0W3JdLnNjcm9sbGVyPT09YmUmJmt0W3JdIT09a2UpcmV0dXJuO3liKGJlLCJyZXNpemUiLE1iKSxtZXx8eWIoYmUsInNjcm9sbCIsS2IpfX0sa2Uua2lsbD1mdW5jdGlvbihlLHQpe2tlLmRpc2FibGUoZSx0KSxlZSYmIXQmJmVlLmtpbGwoKSxhJiZkZWxldGUgVHRbYV07dmFyIHI9a3QuaW5kZXhPZihrZSk7MDw9ciYma3Quc3BsaWNlKHIsMSkscj09PWplJiYwPEV0JiZqZS0tLHI9MCxrdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNjcm9sbGVyPT09a2Uuc2Nyb2xsZXImJihyPTEpfSkscnx8cnR8fChrZS5zY3JvbGwucmVjPTApLE8mJihPLnNjcm9sbFRyaWdnZXI9bnVsbCxlJiZPLnJldmVydCh7a2lsbDohMX0pLHR8fE8ua2lsbCgpKSxZJiZbWSxILHEsTl0uZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9KSxpdD09PWtlJiYoaXQ9MCksYWUmJihuJiYobi51bmNhY2hlPTEpLHI9MCxrdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnBpbj09PWFlJiZyKyt9KSxyfHwobi5zcGFjZXI9MCkpLFAub25LaWxsJiZQLm9uS2lsbChrZSl9LGt0LnB1c2goa2UpLGtlLmVuYWJsZSghMSwhMSksbyYmbyhrZSksTyYmTy5hZGQmJiFGKXt2YXIgdj1rZS51cGRhdGU7a2UudXBkYXRlPWZ1bmN0aW9uKCl7a2UudXBkYXRlPXYsemUuY2FjaGUrKyxCfHxJfHxrZS5yZWZyZXNoKCl9LE5lLmRlbGF5ZWRDYWxsKC4wMSxrZS51cGRhdGUpLEY9LjAxLEI9ST0wfWVsc2Uga2UucmVmcmVzaCgpO2FlJiZmdW5jdGlvbiBfcXVldWVSZWZyZXNoQWxsKCl7aWYobnQhPT1DdCl7dmFyIGU9bnQ9Q3Q7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7cmV0dXJuIGU9PT1DdCYmTXQoITApfSl9fSgpfWVsc2UgdGhpcy51cGRhdGU9dGhpcy5yZWZyZXNoPXRoaXMua2lsbD1JYX0sU2Nyb2xsVHJpZ2dlci5yZWdpc3Rlcj1mdW5jdGlvbiByZWdpc3RlcihlKXtyZXR1cm4gc3x8KE5lPWV8fExhKCksS2EoKSYmd2luZG93LmRvY3VtZW50JiZTY3JvbGxUcmlnZ2VyLmVuYWJsZSgpLHM9bHQpLHN9LFNjcm9sbFRyaWdnZXIuZGVmYXVsdHM9ZnVuY3Rpb24gZGVmYXVsdHMoZSl7aWYoZSlmb3IodmFyIHQgaW4gZSlTdFt0XT1lW3RdO3JldHVybiBTdH0sU2Nyb2xsVHJpZ2dlci5kaXNhYmxlPWZ1bmN0aW9uIGRpc2FibGUodCxyKXtsdD0wLGt0LmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGVbcj8ia2lsbCI6ImRpc2FibGUiXSh0KX0pLHliKFhlLCJ3aGVlbCIsS2IpLHliKEZlLCJzY3JvbGwiLEtiKSxjbGVhckludGVydmFsKHUpLHliKEZlLCJ0b3VjaGNhbmNlbCIsSWEpLHliKFdlLCJ0b3VjaHN0YXJ0IixJYSksd2IoeWIsRmUsInBvaW50ZXJkb3duLHRvdWNoc3RhcnQsbW91c2Vkb3duIixHYSksd2IoeWIsRmUsInBvaW50ZXJ1cCx0b3VjaGVuZCxtb3VzZXVwIixIYSksYy5raWxsKCksU2EoeWIpO2Zvcih2YXIgZT0wO2U8emUubGVuZ3RoO2UrPTMpemIoeWIsemVbZV0semVbZSsxXSksemIoeWIsemVbZV0semVbZSsyXSl9LFNjcm9sbFRyaWdnZXIuZW5hYmxlPWZ1bmN0aW9uIGVuYWJsZSgpe2lmKFhlPXdpbmRvdyxGZT1kb2N1bWVudCxVZT1GZS5kb2N1bWVudEVsZW1lbnQsV2U9RmUuYm9keSxOZSYmKEplPU5lLnV0aWxzLnRvQXJyYXksR2U9TmUudXRpbHMuY2xhbXAseD1OZS5jb3JlLmNvbnRleHR8fElhLCRlPU5lLmNvcmUuc3VwcHJlc3NPdmVyd3JpdGVzfHxJYSxfPVhlLmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb258fCJhdXRvIixqPVhlLnBhZ2VZT2Zmc2V0fHwwLE5lLmNvcmUuZ2xvYmFscygiU2Nyb2xsVHJpZ2dlciIsU2Nyb2xsVHJpZ2dlciksV2UpKXtsdD0xLCh3PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5zdHlsZS5oZWlnaHQ9IjEwMHZoIix3LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsWmIoKSxmdW5jdGlvbiBfcmFmQnVnRml4KCl7cmV0dXJuIGx0JiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoX3JhZkJ1Z0ZpeCl9KCksRS5yZWdpc3RlcihOZSksU2Nyb2xsVHJpZ2dlci5pc1RvdWNoPUUuaXNUb3VjaCxSPUUuaXNUb3VjaCYmLyhpUGFkfGlQaG9uZXxpUG9kfE1hYykvZy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGI9MT09PUUuaXNUb3VjaCx4YihYZSwid2hlZWwiLEtiKSxsPVtYZSxGZSxVZSxXZV0sTmUubWF0Y2hNZWRpYT8oU2Nyb2xsVHJpZ2dlci5tYXRjaE1lZGlhPWZ1bmN0aW9uKGUpe3ZhciB0LHI9TmUubWF0Y2hNZWRpYSgpO2Zvcih0IGluIGUpci5hZGQodCxlW3RdKTtyZXR1cm4gcn0sTmUuYWRkRXZlbnRMaXN0ZW5lcigibWF0Y2hNZWRpYUluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIFRiKCl9KSxOZS5hZGRFdmVudExpc3RlbmVyKCJtYXRjaE1lZGlhUmV2ZXJ0IixmdW5jdGlvbigpe3JldHVybiBTYigpfSksTmUuYWRkRXZlbnRMaXN0ZW5lcigibWF0Y2hNZWRpYSIsZnVuY3Rpb24oKXtNdCgwLDEpLFYoIm1hdGNoTWVkaWEiKX0pLE5lLm1hdGNoTWVkaWEoKS5hZGQoIihvcmllbnRhdGlvbjogcG9ydHJhaXQpIixmdW5jdGlvbigpe3JldHVybiBMYigpLExifSkpOmNvbnNvbGUud2FybigiUmVxdWlyZXMgR1NBUCAzLjExLjAgb3IgbGF0ZXIiKSxMYigpLHhiKEZlLCJzY3JvbGwiLEtiKTt2YXIgZSx0LHI9V2UuaGFzQXR0cmlidXRlKCJzdHlsZSIpLG49V2Uuc3R5bGUsaT1uLmJvcmRlclRvcFN0eWxlLG89TmUuY29yZS5BbmltYXRpb24ucHJvdG90eXBlO2ZvcihvLnJldmVydHx8T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sInJldmVydCIse3ZhbHVlOmZ1bmN0aW9uIHZhbHVlKCl7cmV0dXJuIHRoaXMudGltZSgtLjAxLCEwKX19KSxuLmJvcmRlclRvcFN0eWxlPSJzb2xpZCIsZT1fdChXZSkscWUubT1NYXRoLnJvdW5kKGUudG9wK3FlLnNjKCkpfHwwLEhlLm09TWF0aC5yb3VuZChlLmxlZnQrSGUuc2MoKSl8fDAsaT9uLmJvcmRlclRvcFN0eWxlPWk6bi5yZW1vdmVQcm9wZXJ0eSgiYm9yZGVyLXRvcC1zdHlsZSIpLHJ8fChXZS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiIiksV2UucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpKSx1PXNldEludGVydmFsKEpiLDI1MCksTmUuZGVsYXllZENhbGwoLjUsZnVuY3Rpb24oKXtyZXR1cm4gb3Q9MH0pLHhiKEZlLCJ0b3VjaGNhbmNlbCIsSWEpLHhiKFdlLCJ0b3VjaHN0YXJ0IixJYSksd2IoeGIsRmUsInBvaW50ZXJkb3duLHRvdWNoc3RhcnQsbW91c2Vkb3duIixHYSksd2IoeGIsRmUsInBvaW50ZXJ1cCx0b3VjaGVuZCxtb3VzZXVwIixIYSksZj1OZS51dGlscy5jaGVja1ByZWZpeCgidHJhbnNmb3JtIiksZWUucHVzaChmKSxzPWF0KCksYz1OZS5kZWxheWVkQ2FsbCguMixNdCkucGF1c2UoKSxnPVtGZSwidmlzaWJpbGl0eWNoYW5nZSIsZnVuY3Rpb24oKXt2YXIgZT1YZS5pbm5lcldpZHRoLHQ9WGUuaW5uZXJIZWlnaHQ7RmUuaGlkZGVuPyhkPWUscD10KTpkPT09ZSYmcD09PXR8fE1iKCl9LEZlLCJET01Db250ZW50TG9hZGVkIixNdCxYZSwibG9hZCIsTXQsWGUsInJlc2l6ZSIsTWJdLFNhKHhiKSxrdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmVuYWJsZSgwLDEpfSksdD0wO3Q8emUubGVuZ3RoO3QrPTMpemIoeWIsemVbdF0semVbdCsxXSksemIoeWIsemVbdF0semVbdCsyXSl9fSxTY3JvbGxUcmlnZ2VyLmNvbmZpZz1mdW5jdGlvbiBjb25maWcoZSl7ImxpbWl0Q2FsbGJhY2tzImluIGUmJih0dD0hIWUubGltaXRDYWxsYmFja3MpO3ZhciB0PWUuc3luY0ludGVydmFsO3QmJmNsZWFySW50ZXJ2YWwodSl8fCh1PXQpJiZzZXRJbnRlcnZhbChKYix0KSwiaWdub3JlTW9iaWxlUmVzaXplImluIGUmJihiPTE9PT1TY3JvbGxUcmlnZ2VyLmlzVG91Y2gmJmUuaWdub3JlTW9iaWxlUmVzaXplKSwiYXV0b1JlZnJlc2hFdmVudHMiaW4gZSYmKFNhKHliKXx8U2EoeGIsZS5hdXRvUmVmcmVzaEV2ZW50c3x8Im5vbmUiKSxoPS0xPT09KGUuYXV0b1JlZnJlc2hFdmVudHMrIiIpLmluZGV4T2YoInJlc2l6ZSIpKX0sU2Nyb2xsVHJpZ2dlci5zY3JvbGxlclByb3h5PWZ1bmN0aW9uIHNjcm9sbGVyUHJveHkoZSx0KXt2YXIgcj1KKGUpLG49emUuaW5kZXhPZihyKSxpPU1hKHIpO35uJiZ6ZS5zcGxpY2UobixpPzY6MiksdCYmKGk\/WWUudW5zaGlmdChYZSx0LFdlLHQsVWUsdCk6WWUudW5zaGlmdChyLHQpKX0sU2Nyb2xsVHJpZ2dlci5jbGVhck1hdGNoTWVkaWE9ZnVuY3Rpb24gY2xlYXJNYXRjaE1lZGlhKHQpe2t0LmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2N0eCYmZS5fY3R4LnF1ZXJ5PT09dCYmZS5fY3R4LmtpbGwoITAsITApfSl9LFNjcm9sbFRyaWdnZXIuaXNJblZpZXdwb3J0PWZ1bmN0aW9uIGlzSW5WaWV3cG9ydChlLHQscil7dmFyIG49KGN0KGUpP0ooZSk6ZSkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT1uW3I\/ZnQ6ZHRdKnR8fDA7cmV0dXJuIHI\/MDxuLnJpZ2h0LWkmJm4ubGVmdCtpPFhlLmlubmVyV2lkdGg6MDxuLmJvdHRvbS1pJiZuLnRvcCtpPFhlLmlubmVySGVpZ2h0fSxTY3JvbGxUcmlnZ2VyLnBvc2l0aW9uSW5WaWV3cG9ydD1mdW5jdGlvbiBwb3NpdGlvbkluVmlld3BvcnQoZSx0LHIpe2N0KGUpJiYoZT1KKGUpKTt2YXIgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9bltyP2Z0OmR0XSxvPW51bGw9PXQ\/aS8yOnQgaW4gcT9xW3RdKmk6fnQuaW5kZXhPZigiJSIpP3BhcnNlRmxvYXQodCkqaS8xMDA6cGFyc2VGbG9hdCh0KXx8MDtyZXR1cm4gcj8obi5sZWZ0K28pL1hlLmlubmVyV2lkdGg6KG4udG9wK28pL1hlLmlubmVySGVpZ2h0fSxTY3JvbGxUcmlnZ2VyLmtpbGxBbGw9ZnVuY3Rpb24ga2lsbEFsbChlKXtpZihrdC5zbGljZSgwKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiJTY3JvbGxTbW9vdGhlciIhPT1lLnZhcnMuaWQmJmUua2lsbCgpfSksITAhPT1lKXt2YXIgdD1VLmtpbGxBbGx8fFtdO1U9e30sdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KX19LFNjcm9sbFRyaWdnZXIpO2Z1bmN0aW9uIFNjcm9sbFRyaWdnZXIoZSx0KXtzfHxTY3JvbGxUcmlnZ2VyLnJlZ2lzdGVyKE5lKXx8Y29uc29sZS53YXJuKCJQbGVhc2UgZ3NhcC5yZWdpc3RlclBsdWdpbihTY3JvbGxUcmlnZ2VyKSIpLHgodGhpcyksdGhpcy5pbml0KGUsdCl9bmUudmVyc2lvbj0iMy4xMy4wIixuZS5zYXZlU3R5bGVzPWZ1bmN0aW9uKGUpe3JldHVybiBlP0plKGUpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZSYmZS5zdHlsZSl7dmFyIHQ9Sy5pbmRleE9mKGUpOzA8PXQmJksuc3BsaWNlKHQsNSksSy5wdXNoKGUsZS5zdHlsZS5jc3NUZXh0LGUuZ2V0QkJveCYmZS5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpLE5lLmNvcmUuZ2V0Q2FjaGUoZSkseCgpKX19KTpLfSxuZS5yZXZlcnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVGIoIWUsdCl9LG5lLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgbmUoZSx0KX0sbmUucmVmcmVzaD1mdW5jdGlvbihlKXtyZXR1cm4gZT9NYighMCk6KHN8fG5lLnJlZ2lzdGVyKCkpJiZNdCghMCl9LG5lLnVwZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4rK3plLmNhY2hlJiZaKCEwPT09ZT8yOjApfSxuZS5jbGVhclNjcm9sbE1lbW9yeT1VYixuZS5tYXhTY3JvbGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUmEoZSx0P0hlOnFlKX0sbmUuZ2V0U2Nyb2xsRnVuYz1mdW5jdGlvbihlLHQpe3JldHVybiBMKEooZSksdD9IZTpxZSl9LG5lLmdldEJ5SWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFR0W2VdfSxuZS5nZXRBbGw9ZnVuY3Rpb24oKXtyZXR1cm4ga3QuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiJTY3JvbGxTbW9vdGhlciIhPT1lLnZhcnMuaWR9KX0sbmUuaXNTY3JvbGxpbmc9ZnVuY3Rpb24oKXtyZXR1cm4hIXN0fSxuZS5zbmFwRGlyZWN0aW9uYWw9dWIsbmUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3ZhciByPVVbZV18fChVW2VdPVtdKTt+ci5pbmRleE9mKHQpfHxyLnB1c2godCl9LG5lLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcj1VW2VdLG49ciYmci5pbmRleE9mKHQpOzA8PW4mJnIuc3BsaWNlKG4sMSl9LG5lLmJhdGNoPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gSnAoZSx0KXt2YXIgcj1bXSxuPVtdLGk9TmUuZGVsYXllZENhbGwobyxmdW5jdGlvbigpe3QocixuKSxyPVtdLG49W119KS5wYXVzZSgpO3JldHVybiBmdW5jdGlvbihlKXtyLmxlbmd0aHx8aS5yZXN0YXJ0KCEwKSxyLnB1c2goZS50cmlnZ2VyKSxuLnB1c2goZSksYTw9ci5sZW5ndGgmJmkucHJvZ3Jlc3MoMSl9fXZhciByLG49W10saT17fSxvPXQuaW50ZXJ2YWx8fC4wMTYsYT10LmJhdGNoTWF4fHwxZTk7Zm9yKHIgaW4gdClpW3JdPSJvbiI9PT1yLnN1YnN0cigwLDIpJiZVYSh0W3JdKSYmIm9uUmVmcmVzaEluaXQiIT09cj9KcCgwLHRbcl0pOnRbcl07cmV0dXJuIFVhKGEpJiYoYT1hKCkseGIobmUsInJlZnJlc2giLGZ1bmN0aW9uKCl7cmV0dXJuIGE9dC5iYXRjaE1heCgpfSkpLEplKGUpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9e307Zm9yKHIgaW4gaSl0W3JdPWlbcl07dC50cmlnZ2VyPWUsbi5wdXNoKG5lLmNyZWF0ZSh0KSl9KSxufTtmdW5jdGlvbiB1YyhlLHQscixuKXtyZXR1cm4gbjx0P2Uobik6dDwwJiZlKDApLG48cj8obi10KS8oci10KTpyPDA\/dC8odC1yKToxfWZ1bmN0aW9uIHZjKGUsdCl7ITA9PT10P2Uuc3R5bGUucmVtb3ZlUHJvcGVydHkoInRvdWNoLWFjdGlvbiIpOmUuc3R5bGUudG91Y2hBY3Rpb249ITA9PT10PyJhdXRvIjp0PyJwYW4tIit0KyhFLmlzVG91Y2g\/IiBwaW5jaC16b29tIjoiIik6Im5vbmUiLGU9PT1VZSYmdmMoV2UsdCl9ZnVuY3Rpb24geGMoZSl7dmFyIHQscj1lLmV2ZW50LG49ZS50YXJnZXQsaT1lLmF4aXMsbz0oci5jaGFuZ2VkVG91Y2hlcz9yLmNoYW5nZWRUb3VjaGVzWzBdOnIpLnRhcmdldCxhPW8uX2dzYXB8fE5lLmNvcmUuZ2V0Q2FjaGUobykscz1hdCgpO2lmKCFhLl9pc1Njcm9sbFR8fDJlMzxzLWEuX2lzU2Nyb2xsVCl7Zm9yKDtvJiZvIT09V2UmJihvLnNjcm9sbEhlaWdodDw9by5jbGllbnRIZWlnaHQmJm8uc2Nyb2xsV2lkdGg8PW8uY2xpZW50V2lkdGh8fCFvZVsodD1uYihvKSkub3ZlcmZsb3dZXSYmIW9lW3Qub3ZlcmZsb3dYXSk7KW89by5wYXJlbnROb2RlO2EuX2lzU2Nyb2xsPW8mJm8hPT1uJiYhTWEobykmJihvZVsodD1uYihvKSkub3ZlcmZsb3dZXXx8b2VbdC5vdmVyZmxvd1hdKSxhLl9pc1Njcm9sbFQ9c30hYS5faXNTY3JvbGwmJiJ4IiE9PWl8fChyLnN0b3BQcm9wYWdhdGlvbigpLHIuX2dzYXBBbGxvdz0hMCl9ZnVuY3Rpb24geWMoZSx0LHIsbil7cmV0dXJuIEUuY3JlYXRlKHt0YXJnZXQ6ZSxjYXB0dXJlOiEwLGRlYm91bmNlOiExLGxvY2tBeGlzOiEwLHR5cGU6dCxvbldoZWVsOm49biYmeGMsb25QcmVzczpuLG9uRHJhZzpuLG9uU2Nyb2xsOm4sb25FbmFibGU6ZnVuY3Rpb24gb25FbmFibGUoKXtyZXR1cm4gciYmeGIoRmUsRS5ldmVudFR5cGVzWzBdLHNlLCExLCEwKX0sb25EaXNhYmxlOmZ1bmN0aW9uIG9uRGlzYWJsZSgpe3JldHVybiB5YihGZSxFLmV2ZW50VHlwZXNbMF0sc2UsITApfX0pfWZ1bmN0aW9uIENjKGUpe2Z1bmN0aW9uIEdxKCl7cmV0dXJuIGk9ITF9ZnVuY3Rpb24gSnEoKXtvPVJhKHAscWUpLFQ9R2UoUj8xOjAsbyksZiYmKGs9R2UoMCxSYShwLEhlKSkpLGw9Q3R9ZnVuY3Rpb24gS3EoKXt2Ll9nc2FwLnk9SmEocGFyc2VGbG9hdCh2Ll9nc2FwLnkpK2Iub2Zmc2V0KSsicHgiLHYuc3R5bGUudHJhbnNmb3JtPSJtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAiK3BhcnNlRmxvYXQodi5fZ3NhcC55KSsiLCAwLCAxKSIsYi5vZmZzZXQ9Yi5jYWNoZUlEPTB9ZnVuY3Rpb24gUXEoKXtKcSgpLGEuaXNBY3RpdmUoKSYmYS52YXJzLnNjcm9sbFk+byYmKGIoKT5vP2EucHJvZ3Jlc3MoMSkmJmIobyk6YS5yZXNldFRvKCJzY3JvbGxZIixvKSl9V2EoZSl8fChlPXt9KSxlLnByZXZlbnREZWZhdWx0PWUuaXNOb3JtYWxpemVyPWUuYWxsb3dDbGlja3M9ITAsZS50eXBlfHwoZS50eXBlPSJ3aGVlbCx0b3VjaCIpLGUuZGVib3VuY2U9ISFlLmRlYm91bmNlLGUuaWQ9ZS5pZHx8Im5vcm1hbGl6ZXIiO3ZhciBuLG8sbCxpLGEsYyx1LHMsZj1lLm5vcm1hbGl6ZVNjcm9sbFgsdD1lLm1vbWVudHVtLHI9ZS5hbGxvd05lc3RlZFNjcm9sbCxkPWUub25SZWxlYXNlLHA9SihlLnRhcmdldCl8fFVlLGc9TmUuY29yZS5nbG9iYWxzKCkuU2Nyb2xsU21vb3RoZXIsaD1nJiZnLmdldCgpLHY9UiYmKGUuY29udGVudCYmSihlLmNvbnRlbnQpfHxoJiYhMSE9PWUuY29udGVudCYmIWguc21vb3RoKCkmJmguY29udGVudCgpKSxiPUwocCxxZSksbT1MKHAsSGUpLHk9MSx4PShFLmlzVG91Y2gmJlhlLnZpc3VhbFZpZXdwb3J0P1hlLnZpc3VhbFZpZXdwb3J0LnNjYWxlKlhlLnZpc3VhbFZpZXdwb3J0LndpZHRoOlhlLm91dGVyV2lkdGgpL1hlLmlubmVyV2lkdGgsXz0wLHc9VWEodCk\/ZnVuY3Rpb24oKXtyZXR1cm4gdChuKX06ZnVuY3Rpb24oKXtyZXR1cm4gdHx8Mi44fSxTPXljKHAsZS50eXBlLCEwLHIpLGs9SWEsVD1JYTtyZXR1cm4gdiYmTmUuc2V0KHYse3k6Iis9MCJ9KSxlLmlnbm9yZUNoZWNrPWZ1bmN0aW9uKGUpe3JldHVybiBSJiYidG91Y2htb3ZlIj09PWUudHlwZSYmZnVuY3Rpb24gaWdub3JlRHJhZygpe2lmKGkpe3JlcXVlc3RBbmltYXRpb25GcmFtZShHcSk7dmFyIGU9SmEobi5kZWx0YVkvMiksdD1UKGIudi1lKTtpZih2JiZ0IT09Yi52K2Iub2Zmc2V0KXtiLm9mZnNldD10LWIudjt2YXIgcj1KYSgocGFyc2VGbG9hdCh2JiZ2Ll9nc2FwLnkpfHwwKS1iLm9mZnNldCk7di5zdHlsZS50cmFuc2Zvcm09Im1hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsICIrcisiLCAwLCAxKSIsdi5fZ3NhcC55PXIrInB4IixiLmNhY2hlSUQ9emUuY2FjaGUsWigpfXJldHVybiEwfWIub2Zmc2V0JiZLcSgpLGk9ITB9KCl8fDEuMDU8eSYmInRvdWNoc3RhcnQiIT09ZS50eXBlfHxuLmlzR2VzdHVyaW5nfHxlLnRvdWNoZXMmJjE8ZS50b3VjaGVzLmxlbmd0aH0sZS5vblByZXNzPWZ1bmN0aW9uKCl7aT0hMTt2YXIgZT15O3k9SmEoKFhlLnZpc3VhbFZpZXdwb3J0JiZYZS52aXN1YWxWaWV3cG9ydC5zY2FsZXx8MSkveCksYS5wYXVzZSgpLGUhPT15JiZ2YyhwLDEuMDE8eXx8IWYmJiJ4IiksYz1tKCksdT1iKCksSnEoKSxsPUN0fSxlLm9uUmVsZWFzZT1lLm9uR2VzdHVyZVN0YXJ0PWZ1bmN0aW9uKGUsdCl7aWYoYi5vZmZzZXQmJktxKCksdCl7emUuY2FjaGUrKzt2YXIgcixuLGk9dygpO2YmJihuPShyPW0oKSkrLjA1KmkqLWUudmVsb2NpdHlYLy4yMjcsaSo9dWMobSxyLG4sUmEocCxIZSkpLGEudmFycy5zY3JvbGxYPWsobikpLG49KHI9YigpKSsuMDUqaSotZS52ZWxvY2l0eVkvLjIyNyxpKj11YyhiLHIsbixSYShwLHFlKSksYS52YXJzLnNjcm9sbFk9VChuKSxhLmludmFsaWRhdGUoKS5kdXJhdGlvbihpKS5wbGF5KC4wMSksKFImJmEudmFycy5zY3JvbGxZPj1vfHxvLTE8PXIpJiZOZS50byh7fSx7b25VcGRhdGU6UXEsZHVyYXRpb246aX0pfWVsc2Ugcy5yZXN0YXJ0KCEwKTtkJiZkKGUpfSxlLm9uV2hlZWw9ZnVuY3Rpb24oKXthLl90cyYmYS5wYXVzZSgpLDFlMzxhdCgpLV8mJihsPTAsXz1hdCgpKX0sZS5vbkNoYW5nZT1mdW5jdGlvbihlLHQscixuLGkpe2lmKEN0IT09bCYmSnEoKSx0JiZmJiZtKGsoblsyXT09PXQ\/YysoZS5zdGFydFgtZS54KTptKCkrdC1uWzFdKSkscil7Yi5vZmZzZXQmJktxKCk7dmFyIG89aVsyXT09PXIsYT1vP3UrZS5zdGFydFktZS55OmIoKStyLWlbMV0scz1UKGEpO28mJmEhPT1zJiYodSs9cy1hKSxiKHMpfShyfHx0KSYmWigpfSxlLm9uRW5hYmxlPWZ1bmN0aW9uKCl7dmMocCwhZiYmIngiKSxuZS5hZGRFdmVudExpc3RlbmVyKCJyZWZyZXNoIixRcSkseGIoWGUsInJlc2l6ZSIsUXEpLGIuc21vb3RoJiYoYi50YXJnZXQuc3R5bGUuc2Nyb2xsQmVoYXZpb3I9ImF1dG8iLGIuc21vb3RoPW0uc21vb3RoPSExKSxTLmVuYWJsZSgpfSxlLm9uRGlzYWJsZT1mdW5jdGlvbigpe3ZjKHAsITApLHliKFhlLCJyZXNpemUiLFFxKSxuZS5yZW1vdmVFdmVudExpc3RlbmVyKCJyZWZyZXNoIixRcSksUy5raWxsKCl9LGUubG9ja0F4aXM9ITEhPT1lLmxvY2tBeGlzLCgobj1uZXcgRShlKSkuaU9TPVIpJiYhYigpJiZiKDEpLFImJk5lLnRpY2tlci5hZGQoSWEpLHM9bi5fZGMsYT1OZS50byhuLHtlYXNlOiJwb3dlcjQiLHBhdXNlZDohMCxpbmhlcml0OiExLHNjcm9sbFg6Zj8iKz0wLjEiOiIrPTAiLHNjcm9sbFk6Iis9MC4xIixtb2RpZmllcnM6e3Njcm9sbFk6cWMoYixiKCksZnVuY3Rpb24oKXtyZXR1cm4gYS5wYXVzZSgpfSl9LG9uVXBkYXRlOlosb25Db21wbGV0ZTpzLnZhcnMub25Db21wbGV0ZX0pLG59dmFyIGllLG9lPXthdXRvOjEsc2Nyb2xsOjF9LGFlPS8oaW5wdXR8bGFiZWx8c2VsZWN0fHRleHRhcmVhKS9pLHNlPWZ1bmN0aW9uIF9jYXB0dXJlSW5wdXRzKGUpe3ZhciB0PWFlLnRlc3QoZS50YXJnZXQudGFnTmFtZSk7KHR8fGllKSYmKGUuX2dzYXBBbGxvdz0hMCxpZT10KX07bmUuc29ydD1mdW5jdGlvbihlKXtpZihVYShlKSlyZXR1cm4ga3Quc29ydChlKTt2YXIgdD1YZS5wYWdlWU9mZnNldHx8MDtyZXR1cm4gbmUuZ2V0QWxsKCkuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZS5fc29ydFk9ZS50cmlnZ2VyP3QrZS50cmlnZ2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDplLnN0YXJ0K1hlLmlubmVySGVpZ2h0fSksa3Quc29ydChlfHxmdW5jdGlvbihlLHQpe3JldHVybi0xZTYqKGUudmFycy5yZWZyZXNoUHJpb3JpdHl8fDApKyhlLnZhcnMuY29udGFpbmVyQW5pbWF0aW9uPzFlNjplLl9zb3J0WSktKCh0LnZhcnMuY29udGFpbmVyQW5pbWF0aW9uPzFlNjp0Ll9zb3J0WSkrLTFlNioodC52YXJzLnJlZnJlc2hQcmlvcml0eXx8MCkpfSl9LG5lLm9ic2VydmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBFKGUpfSxuZS5ub3JtYWxpemVTY3JvbGw9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSlyZXR1cm4gdjtpZighMD09PWUmJnYpcmV0dXJuIHYuZW5hYmxlKCk7aWYoITE9PT1lKXJldHVybiB2JiZ2LmtpbGwoKSx2b2lkKHY9ZSk7dmFyIHQ9ZSBpbnN0YW5jZW9mIEU\/ZTpDYyhlKTtyZXR1cm4gdiYmdi50YXJnZXQ9PT10LnRhcmdldCYmdi5raWxsKCksTWEodC50YXJnZXQpJiYodj10KSx0fSxuZS5jb3JlPXtfZ2V0VmVsb2NpdHlQcm9wOk0sX2lucHV0T2JzZXJ2ZXI6eWMsX3Njcm9sbGVyczp6ZSxfcHJveGllczpZZSxicmlkZ2U6e3NzOmZ1bmN0aW9uIHNzKCl7c3R8fFYoInNjcm9sbFN0YXJ0Iiksc3Q9YXQoKX0scmVmOmZ1bmN0aW9uIHJlZigpe3JldHVybiBLZX19fSxMYSgpJiZOZS5yZWdpc3RlclBsdWdpbihuZSksZS5TY3JvbGxUcmlnZ2VyPW5lLGUuZGVmYXVsdD1uZTtpZiAodHlwZW9mKHdpbmRvdyk9PT0idW5kZWZpbmVkInx8d2luZG93IT09ZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSBlbHNlIHtkZWxldGUgZS5kZWZhdWx0fX0pOwoK');r('CihmdW5jdGlvbigpewogIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fib3V0Jyk7CiAgaWYgKCFyb290KSByZXR1cm47CiAgdmFyIHJlZHVjZSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CiAgcm9vdC5jbGFzc0xpc3QuYWRkKCdqcycpOwoKICAvKiDlvbHniYfvvJrpgLLnlavpnaLmiY3mkq3jgIHpm6LplovlsLHlgZwgKi8KICB2YXIgdmlkcyA9IFtdLnNsaWNlLmNhbGwocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCd2aWRlby5sb29wJykpOwogIGlmICghcmVkdWNlICYmICdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93KSB7CiAgICB2YXIgdmlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGVudHJpZXMpewogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgdmFyIHYgPSBlLnRhcmdldDsKICAgICAgICBpZiAoZS5pbnRlcnNlY3Rpb25SYXRpbyA+PSAwLjI1KSB7IHZhciBwID0gdi5wbGF5KCk7IGlmIChwICYmIHAuY2F0Y2gpIHAuY2F0Y2goZnVuY3Rpb24oKXt9KTsgfQogICAgICAgIGVsc2UgeyB2LnBhdXNlKCk7IH0KICAgICAgfSk7CiAgICB9LCB7IHRocmVzaG9sZDogWzAsIDAuMjUsIDAuNV0gfSk7CiAgICB2aWRzLmZvckVhY2goZnVuY3Rpb24odil7IHZpby5vYnNlcnZlKHYpOyB9KTsKICB9CgogIC8qIOermeWFp+mMqOm7nuW5s+a7keaNsuWLlSAqLwogIHJvb3QuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICB2YXIgYSA9IGV2LnRhcmdldC5jbG9zZXN0ID8gZXYudGFyZ2V0LmNsb3Nlc3QoJ2FbaHJlZl49IiMiXScpIDogbnVsbDsKICAgIGlmICghYSkgcmV0dXJuOwogICAgdmFyIHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhLmdldEF0dHJpYnV0ZSgnaHJlZicpLnNsaWNlKDEpKTsKICAgIGlmICghdCkgcmV0dXJuOwogICAgZXYucHJldmVudERlZmF1bHQoKTsKICAgIHQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogcmVkdWNlID8gJ2F1dG8nIDogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pOwogIH0pOwoKICB2YXIgaGxzID0gW10uc2xpY2UuY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5obCcpKTsKICBpZiAocmVkdWNlIHx8IHR5cGVvZiBnc2FwID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgU2Nyb2xsVHJpZ2dlciA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIGhscy5mb3JFYWNoKGZ1bmN0aW9uKGgpeyBoLmNsYXNzTGlzdC5hZGQoJ29uJyk7IH0pOwogICAgcmV0dXJuOwogIH0KICBnc2FwLnJlZ2lzdGVyUGx1Z2luKFNjcm9sbFRyaWdnZXIpOwogIFNjcm9sbFRyaWdnZXIuY29uZmlnKHsgaWdub3JlTW9iaWxlUmVzaXplOiB0cnVlIH0pOwogIHJvb3QuY2xhc3NMaXN0LmFkZCgnZ28nKTsKICB2YXIgcSA9IGZ1bmN0aW9uKHMsIGVsKXsgcmV0dXJuIFtdLnNsaWNlLmNhbGwoKGVsIHx8IHJvb3QpLnF1ZXJ5U2VsZWN0b3JBbGwocykpOyB9OwogIHZhciBpc01vYiA9IHdpbmRvdy5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOjkwMHB4KScpLm1hdGNoZXM7CgogIC8qIOKUgOKUgCDplovloLTvvJrmiYvlr6vlpKfmqJnliLflh7rjgIHkuIDnlormi43nq4vlvpfmiYflvaLlsZXplovjgIHmlbjlrZfot7Pli5Ug4pSA4pSAICovCiAgdmFyIEggPSByb290LnF1ZXJ5U2VsZWN0b3IoJy5oZXJvJyk7CiAgdmFyIGludHJvID0gZ3NhcC50aW1lbGluZSh7IGRlZmF1bHRzOiB7IGVhc2U6ICdwb3dlcjMub3V0JyB9IH0pOwogIGludHJvLmZyb21UbyhILnF1ZXJ5U2VsZWN0b3IoJy5mcmFtZScpLCB7IG9wYWNpdHk6IDAsIHk6IDM0LCByb3RhdGlvbjogLTcsIHNjYWxlOiAuOTUgfSwgeyBvcGFjaXR5OiAxLCB5OiAwLCByb3RhdGlvbjogLTIsIHNjYWxlOiAxLCBkdXJhdGlvbjogLjkgfSwgMCkKICAgIC5mcm9tKEgucXVlcnlTZWxlY3RvcignLmtpY2snKSwgeyBvcGFjaXR5OiAwLCB5OiAxMiwgZHVyYXRpb246IC40NSB9LCAuMDUpCiAgICAuZnJvbVRvKHEoJ2gxIC5sbicsIEgpLCB7IGNsaXBQYXRoOiAnaW5zZXQoMCAxMDAlIDAgMCknIH0sIHsgY2xpcFBhdGg6ICdpbnNldCgwIDAlIDAgMCknLCBkdXJhdGlvbjogLjYyLCBzdGFnZ2VyOiAuMTgsIGVhc2U6ICdwb3dlcjIuaW5PdXQnIH0sIC4xMikKICAgIC5mcm9tKHEoJy5sZWFkLCAubGVhZDIsIC5jaGlwcywgLmZhY3RzLCAuYnRucm93LCAuZ3VpZGUnLCBIKSwgeyBvcGFjaXR5OiAwLCB5OiAxNiwgZHVyYXRpb246IC41LCBzdGFnZ2VyOiAuMDcgfSwgLjQ1KQogICAgLmFkZChmdW5jdGlvbigpeyB2YXIgaCA9IEgucXVlcnlTZWxlY3RvcignLmhsJyk7IGlmIChoKSBoLmNsYXNzTGlzdC5hZGQoJ29uJyk7IH0sIC44KTsKICBxKCcuZGsnLCBIKS5mb3JFYWNoKGZ1bmN0aW9uKGVsLCBpKXsKICAgIGludHJvLmZyb21UbyhlbCwgeyBvcGFjaXR5OiAwLCB4OiAtNzAsIHk6IDUwLCByb3RhdGlvbjogLTI0LCBzY2FsZTogLjggfSwgeyBvcGFjaXR5OiAxLCB4OiBpICogMjIsIHk6IC1pICogMTQsIHJvdGF0aW9uOiAtNiArIGkgKiA5LCBzY2FsZTogMSwgZHVyYXRpb246IC43NSwgZWFzZTogJ2JhY2sub3V0KDEuNiknIH0sIC40NSArIGkgKiAuMSk7CiAgfSk7CiAgcSgnLmZhY3RzIGInLCBIKS5mb3JFYWNoKGZ1bmN0aW9uKGIsIGkpewogICAgdmFyIGZpbiA9IGIudGV4dENvbnRlbnQsIG4gPSBwYXJzZUludChmaW4ucmVwbGFjZSgvW14wLTldL2csICcnKSwgMTApLCBzdWYgPSBmaW4ucmVwbGFjZSgvWzAtOSxdL2csICcnKSwgbyA9IHsgdjogMCB9OwogICAgaW50cm8udG8obywgeyB2OiBuLCBkdXJhdGlvbjogLjgsIGVhc2U6ICdwb3dlcjIub3V0Jywgb25VcGRhdGU6IGZ1bmN0aW9uKCl7IGIudGV4dENvbnRlbnQgPSBNYXRoLnJvdW5kKG8udikudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJykgKyBzdWY7IH0sIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCl7IGIudGV4dENvbnRlbnQgPSBmaW47IH0gfSwgLjQyICsgaSAqIC4wNSk7CiAgfSk7CiAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhKCcocG9pbnRlcjpmaW5lKScpLm1hdGNoZXMpIHsKICAgIHZhciB0ciA9IGdzYXAucXVpY2tUbyhILnF1ZXJ5U2VsZWN0b3IoJy50aWx0JyksICdyb3RhdGlvbicsIHsgZHVyYXRpb246IC45LCBlYXNlOiAncG93ZXIzJyB9KTsKICAgIHZhciB0eSA9IGdzYXAucXVpY2tUbyhILnF1ZXJ5U2VsZWN0b3IoJy50aWx0JyksICd5JywgeyBkdXJhdGlvbjogLjksIGVhc2U6ICdwb3dlcjMnIH0pOwogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgZnVuY3Rpb24oZSl7IHRyKChlLmNsaWVudFggLyBpbm5lcldpZHRoIC0gLjUpICogOCk7IHR5KChlLmNsaWVudFkgLyBpbm5lckhlaWdodCAtIC41KSAqIDE2KTsgfSwgeyBwYXNzaXZlOiB0cnVlIH0pOwogIH0KICBnc2FwLnRpbWVsaW5lKHsgc2Nyb2xsVHJpZ2dlcjogeyB0cmlnZ2VyOiBILCBzdGFydDogJ3RvcCB0b3AnLCBlbmQ6ICdib3R0b20gdG9wJywgc2NydWI6IC42IH0gfSkKICAgIC50byhILnF1ZXJ5U2VsZWN0b3IoJy5kZWNrJyksIHsgeTogLTI2MCwgeDogLTE0MCwgcm90YXRpb246IC0xMCwgb3BhY2l0eTogMCwgZWFzZTogJ3Bvd2VyMS5pbicgfSwgMCkKICAgIC50byhILnF1ZXJ5U2VsZWN0b3IoJy5maWcnKSwgeyB5OiA3MCwgZWFzZTogJ25vbmUnIH0sIDApCiAgICAudG8oSC5xdWVyeVNlbGVjdG9yKCcuY29weScpLCB7IHk6IC00MCwgZWFzZTogJ25vbmUnIH0sIDApOwoKICAvKiDilIDilIAg5Y2A5aGK5aSn5qiZ77ya5omL5a+r5Yi35Ye6IOKUgOKUgCAqLwogIHEoJy5oZWFkLCAuc3ViY3RhJykuZm9yRWFjaChmdW5jdGlvbihoZCl7CiAgICB2YXIgdGwgPSBnc2FwLnRpbWVsaW5lKHsgc2Nyb2xsVHJpZ2dlcjogeyB0cmlnZ2VyOiBoZCwgc3RhcnQ6ICd0b3AgODIlJywgb25jZTogdHJ1ZSB9IH0pOwogICAgdGwuZnJvbShxKCcua2ljaycsIGhkKSwgeyBvcGFjaXR5OiAwLCB5OiAxMCwgZHVyYXRpb246IC40IH0sIDApCiAgICAgIC5mcm9tVG8ocSgnaDInLCBoZCksIHsgY2xpcFBhdGg6ICdpbnNldCgwIDEwMCUgMCAwKScgfSwgeyBjbGlwUGF0aDogJ2luc2V0KDAgMCUgMCAwKScsIGR1cmF0aW9uOiAuOCwgZWFzZTogJ3Bvd2VyMi5pbk91dCcgfSwgLjEpCiAgICAgIC5mcm9tKHEoJy5zdWIsIHAsIC5idG5yb3csIC5maW5lLCAuc29mdCcsIGhkKSwgeyBvcGFjaXR5OiAwLCB5OiAxNiwgZHVyYXRpb246IC41LCBzdGFnZ2VyOiAuMDcgfSwgLjQ1KTsKICB9KTsKCiAgLyog4pSA4pSAIOaZgumWk+e3mu+8mue3mueVq+S4i+S+huOAgem7nuW9iOWHuuOAgeWwj+aLjeeri+W+l+aOieS4i+S+hiDilIDilIAgKi8KICB2YXIgVEwgPSByb290LnF1ZXJ5U2VsZWN0b3IoJy50bCcpOwogIGdzYXAuZnJvbVRvKFRMLCB7ICctLWxuJzogMCB9LCB7ICctLWxuJzogMSwgZWFzZTogJ25vbmUnLCBzY3JvbGxUcmlnZ2VyOiB7IHRyaWdnZXI6IFRMLCBzdGFydDogJ3RvcCA3OCUnLCBlbmQ6ICdib3R0b20gNjIlJywgc2NydWI6IC41IH0gfSk7CiAgdmFyIHJlc3QgPSBbLTEuNSwgMS41LCAtMSwgMS4yLCAtMS4zXTsKICBxKCcubm9kZScsIFRMKS5mb3JFYWNoKGZ1bmN0aW9uKG5kLCBpKXsKICAgIHZhciB0bCA9IGdzYXAudGltZWxpbmUoeyBzY3JvbGxUcmlnZ2VyOiB7IHRyaWdnZXI6IG5kLCBzdGFydDogJ3RvcCA4MCUnLCBvbmNlOiB0cnVlLCBvbkVudGVyOiBmdW5jdGlvbigpeyBuZC5jbGFzc0xpc3QuYWRkKCdvbicpOyB9IH0gfSk7CiAgICB0bC5mcm9tVG8obmQucXVlcnlTZWxlY3RvcignLm1pbmknKSwgeyBvcGFjaXR5OiAwLCB5OiAtNDYsIHJvdGF0aW9uOiBpICUgMiA\/IDE0IDogLTE0IH0sIHsgb3BhY2l0eTogMSwgeTogMCwgcm90YXRpb246IHJlc3RbaV0sIGR1cmF0aW9uOiAuNywgZWFzZTogJ2JhY2sub3V0KDEuNyknLCBjbGVhclByb3BzOiAndHJhbnNmb3JtJyB9LCAuMDgpCiAgICAgIC5mcm9tKG5kLnF1ZXJ5U2VsZWN0b3IoJy50eHQnKSwgeyBvcGFjaXR5OiAwLCB5OiAyMiwgZHVyYXRpb246IC41IH0sIC4xOCk7CiAgfSk7CgogIC8qIOKUgOKUgCDkupTnq6Dnm7jnsL\/vvJrkuIDpoIHok4vkuIDpoIHjgIHkuIrkuIDpoIHnuK7lsI\/orormmpfjgIHnhafniYfmk6blh7rjgIHljbDnq6DlvYjlh7og4pSA4pSAICovCiAgdmFyIGFsYnVtID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuYWxidW0nKTsKICB2YXIgcGdzID0gcSgnLnBnJywgYWxidW0pLCBta3MgPSBxKCcubWsnLCBhbGJ1bSksIGRvdHMgPSBxKCcuZG90cyBpJywgYWxidW0pLCBkb3RzQm94ID0gYWxidW0ucXVlcnlTZWxlY3RvcignLmRvdHMnKTsKICBmdW5jdGlvbiBoZWFkT2ZmKCl7CiAgICB2YXIgbSA9IDA7CiAgICBxKCcuZWxlbWVudG9yLWxvY2F0aW9uLWhlYWRlciAqJywgZG9jdW1lbnQpLmZvckVhY2goZnVuY3Rpb24oeCl7CiAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKHgpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7IHZhciBiID0geC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b207IGlmIChiID4gbSAmJiBiIDwgMTQwKSBtID0gYjsgfQogICAgfSk7CiAgICByZXR1cm4gbTsKICB9CiAgZnVuY3Rpb24gbGF5b3V0KCl7CiAgICB2YXIgb2ZmID0gaGVhZE9mZigpLCB2aCA9IHdpbmRvdy5pbm5lckhlaWdodCwgYXZhaWwgPSB2aCAtIG9mZjsKICAgIHBncy5mb3JFYWNoKGZ1bmN0aW9uKHApewogICAgICB2YXIgaCA9IHAub2Zmc2V0SGVpZ2h0LCBmaXQgPSBoIDw9IGF2YWlsIC0gMjQ7CiAgICAgIHAuX3QgPSBNYXRoLnJvdW5kKGZpdCA\/IG9mZiArIChhdmFpbCAtIGgpIC8gMiA6IHZoIC0gaCAtIDEyKTsKICAgICAgcC5zdHlsZS50b3AgPSBwLl90ICsgJ3B4JzsKICAgICAgcC5xdWVyeVNlbGVjdG9yKCcuc2hlZXQnKS5zdHlsZS50cmFuc2Zvcm1PcmlnaW4gPSAnNTAlICcgKyAoZml0ID8gMCA6IE1hdGgucm91bmQob2ZmIC0gcC5fdCkpICsgJ3B4JzsKICAgIH0pOwogIH0KICBsYXlvdXQoKTsKICBTY3JvbGxUcmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3JlZnJlc2hJbml0JywgbGF5b3V0KTsKCiAgcGdzLmZvckVhY2goZnVuY3Rpb24oUCwgaSl7CiAgICB2YXIgUyA9IFAucXVlcnlTZWxlY3RvcignLnNoZWV0Jyk7CiAgICB2YXIgd2lwZSA9IFAucXVlcnlTZWxlY3RvcignLndpcGUnKTsKICAgIGlmICh3aXBlKSBnc2FwLnNldCh3aXBlLCB7IHNjYWxlWTogMSB9KTsKICAgIHZhciBydCA9IGdzYXAudGltZWxpbmUoeyBwYXVzZWQ6IHRydWUgfSk7CiAgICBpZiAod2lwZSkgcnQudG8od2lwZSwgeyBzY2FsZVk6IDAsIGR1cmF0aW9uOiAuODUsIGVhc2U6ICdwb3dlcjIuaW5PdXQnIH0sIC4xKTsKICAgIHJ0LmZyb21UbyhQLnF1ZXJ5U2VsZWN0b3IoJy5jaC1zY2VuZScpLCB7IGNsaXBQYXRoOiAnaW5zZXQoMCAxMDAlIDAgMCknIH0sIHsgY2xpcFBhdGg6ICdpbnNldCgwIDAlIDAgMCknLCBkdXJhdGlvbjogLjcsIGVhc2U6ICdwb3dlcjIuaW5PdXQnIH0sIC4xNSkKICAgICAgLmZyb20ocSgnLnN0LWxhYmVsLCAuY2gtc3ViLCAudHh0Y29sIHAsIC50eHRjb2wgLmtxLCAuZmlnY29sID4gLmtxJywgUCksIHsgb3BhY2l0eTogMCwgeTogMjIsIGR1cmF0aW9uOiAuNSwgc3RhZ2dlcjogLjA2IH0sIC4yMikKICAgICAgLmZyb20ocSgnLnN0YW1wJywgUCksIHsgc2NhbGU6IDAsIHJvdGF0aW9uOiAtMjQsIGR1cmF0aW9uOiAuNDIsIGVhc2U6ICdiYWNrLm91dCgyLjIpJywgc3RhZ2dlcjogLjEyIH0sIC42KQogICAgICAuYWRkKGZ1bmN0aW9uKCl7IHEoJy5obCcsIFApLmZvckVhY2goZnVuY3Rpb24oaCl7IGguY2xhc3NMaXN0LmFkZCgnb24nKTsgfSk7IH0sIC45KTsKICAgIHZhciBiZnMgPSBxKCcuYmYnLCBQKTsKICAgIGlmIChiZnMubGVuZ3RoKSBydC5mcm9tKGJmcywgeyB4OiAwLCB5OiA0MCwgcm90YXRpb246IDAsIG9wYWNpdHk6IDAsIGR1cmF0aW9uOiAuNzUsIGVhc2U6ICdiYWNrLm91dCgxLjUpJywgc3RhZ2dlcjogLjA5LCBjbGVhclByb3BzOiAndHJhbnNmb3JtLG9wYWNpdHknIH0sIC4zNSk7CiAgICBTY3JvbGxUcmlnZ2VyLmNyZWF0ZSh7IHRyaWdnZXI6IG1rc1tpXSwgc3RhcnQ6ICdib3R0b20gNzglJywgb25jZTogdHJ1ZSwgb25FbnRlcjogZnVuY3Rpb24oKXsgcnQucGxheSgpOyB9IH0pOwoKICAgIFNjcm9sbFRyaWdnZXIuY3JlYXRlKHsgdHJpZ2dlcjogbWtzW2ldLCBzdGFydDogJ2JvdHRvbSA1NSUnLAogICAgICBvbkVudGVyOiBmdW5jdGlvbigpeyBkb3RzLmZvckVhY2goZnVuY3Rpb24oZCwgayl7IGQuY2xhc3NMaXN0LnRvZ2dsZSgnb24nLCBrID09PSBpKTsgfSk7IH0sCiAgICAgIG9uTGVhdmVCYWNrOiBmdW5jdGlvbigpeyBkb3RzLmZvckVhY2goZnVuY3Rpb24oZCwgayl7IGQuY2xhc3NMaXN0LnRvZ2dsZSgnb24nLCBrID09PSBNYXRoLm1heCgwLCBpIC0gMSkpOyB9KTsgfSB9KTsKCiAgICBpZiAoIWkpIHJldHVybjsKICAgIHZhciBwcmV2ID0gcGdzW2kgLSAxXS5xdWVyeVNlbGVjdG9yKCcuc2hlZXQnKSwgcGRpbSA9IHBnc1tpIC0gMV0ucXVlcnlTZWxlY3RvcignLmRpbScpOwogICAgdmFyIGZsaXAgPSBnc2FwLnRpbWVsaW5lKHsgc2Nyb2xsVHJpZ2dlcjogeyB0cmlnZ2VyOiBta3NbaV0sIHN0YXJ0OiAnYm90dG9tIGJvdHRvbScsIGVuZDogZnVuY3Rpb24oKXsgcmV0dXJuICdib3R0b20gJyArIFAuX3QgKyAncHgnOyB9LCBzY3J1YjogLjQsIGludmFsaWRhdGVPblJlZnJlc2g6IHRydWUgfSB9KTsKICAgIGZsaXAudG8ocGRpbSwgeyBvcGFjaXR5OiAuMiwgZWFzZTogJ25vbmUnIH0sIDApOwogICAgaWYgKCFpc01vYikgZmxpcC5mcm9tVG8oUywgeyByb3RhdGlvbjogaSAlIDIgPyAyLjQgOiAtMi40IH0sIHsgcm90YXRpb246IDAsIGVhc2U6ICdwb3dlcjEub3V0JyB9LCAwKQogICAgICAudG8ocHJldiwgeyBzY2FsZTogLjkzLCByb3RhdGlvbjogaSAlIDIgPyAtMS4yIDogMS4yLCBlYXNlOiAnbm9uZScgfSwgMCk7CiAgfSk7CiAgU2Nyb2xsVHJpZ2dlci5jcmVhdGUoeyB0cmlnZ2VyOiBhbGJ1bSwgc3RhcnQ6ICd0b3AgNDUlJywgZW5kOiAnYm90dG9tIDU1JScsIHRvZ2dsZUNsYXNzOiB7IHRhcmdldHM6IGRvdHNCb3gsIGNsYXNzTmFtZTogJ29uJyB9IH0pOwoKICAvKiDilIDilIAg5LiJ5YCL5aSn6IWm5Y2h44CB5om+5Yiw5oiR44CB57WQ5bC+IOKUgOKUgCAqLwogIHEoJy5iY2FyZCcpLmZvckVhY2goZnVuY3Rpb24oYywgaSl7CiAgICB2YXIgdGwgPSBnc2FwLnRpbWVsaW5lKHsgc2Nyb2xsVHJpZ2dlcjogeyB0cmlnZ2VyOiBjLCBzdGFydDogJ3RvcCA4OCUnLCBvbmNlOiB0cnVlIH0gfSk7CiAgICB0bC5mcm9tKGMsIHsgb3BhY2l0eTogMCwgeTogNTYsIHJvdGF0aW9uOiBpICUgMiA\/IDIuNSA6IC0yLjUsIGR1cmF0aW9uOiAuNzUsIGVhc2U6ICdwb3dlcjMub3V0JywgY2xlYXJQcm9wczogJ3RyYW5zZm9ybScgfSwgaSAqIC4wOCkKICAgICAgLmZyb20oYy5xdWVyeVNlbGVjdG9yKCcuYnJhaW4nKSwgeyBzY2FsZTogMCwgcm90YXRpb246IC0zMCwgZHVyYXRpb246IC41NSwgZWFzZTogJ2JhY2sub3V0KDIpJyB9LCAuNDIgKyBpICogLjA4KQogICAgICAuZnJvbVRvKGMucXVlcnlTZWxlY3RvcignaDMnKSwgeyBjbGlwUGF0aDogJ2luc2V0KDAgMTAwJSAwIDApJyB9LCB7IGNsaXBQYXRoOiAnaW5zZXQoMCAwJSAwIDApJywgZHVyYXRpb246IC42LCBlYXNlOiAncG93ZXIyLmluT3V0JyB9LCAuMyArIGkgKiAuMDgpOwogIH0pOwogIHEoJy5mY2FyZCcpLmZvckVhY2goZnVuY3Rpb24oYywgaSl7CiAgICBnc2FwLmZyb20oYywgeyBvcGFjaXR5OiAwLCB5OiA0MCwgcm90YXRpb246IGkgJSAyID8gMiA6IC0yLCBkdXJhdGlvbjogLjY1LCBlYXNlOiAncG93ZXIzLm91dCcsIGRlbGF5OiAoaSAlIDMpICogLjA4LCBjbGVhclByb3BzOiAndHJhbnNmb3JtJywgc2Nyb2xsVHJpZ2dlcjogeyB0cmlnZ2VyOiBjLCBzdGFydDogJ3RvcCA5MCUnLCBvbmNlOiB0cnVlIH0gfSk7CiAgfSk7CiAgdmFyIG5vdGUgPSByb290LnF1ZXJ5U2VsZWN0b3IoJy5ub3RlJyk7CiAgdmFyIG50bCA9IGdzYXAudGltZWxpbmUoeyBzY3JvbGxUcmlnZ2VyOiB7IHRyaWdnZXI6IG5vdGUsIHN0YXJ0OiAndG9wIDg1JScsIG9uY2U6IHRydWUgfSB9KTsKICBudGwuZnJvbShub3RlLCB7IG9wYWNpdHk6IDAsIHk6IDYwLCByb3RhdGlvbjogMywgZHVyYXRpb246IC44LCBlYXNlOiAncG93ZXIzLm91dCcsIGNsZWFyUHJvcHM6ICd0cmFuc2Zvcm0nIH0sIDApCiAgICAuZnJvbShub3RlLnF1ZXJ5U2VsZWN0b3IoJy5zdGFtcCcpLCB7IHNjYWxlOiAwLCByb3RhdGlvbjogLTI0LCBkdXJhdGlvbjogLjQyLCBlYXNlOiAnYmFjay5vdXQoMi4yKScgfSwgLjQ1KQogICAgLmZyb21Ubyhub3RlLnF1ZXJ5U2VsZWN0b3IoJy5zaWcnKSwgeyBjbGlwUGF0aDogJ2luc2V0KDAgMTAwJSAwIDApJyB9LCB7IGNsaXBQYXRoOiAnaW5zZXQoMCAwJSAwIDApJywgZHVyYXRpb246IC45LCBlYXNlOiAncG93ZXIyLmluT3V0JyB9LCAuNik7CgogIC8qIOKUgOKUgCDku5blgJHlr6vntabmiJHnmoToqbHvvJropovorYnlg4\/mi43nq4vlvpfmjonkuIvkvobjgIHljbDnq6DlvYjlh7rjgIHllq7kvY3lkI3llq7kuIDlgIvlgIvlhpLlh7og4pSA4pSAICovCiAgcSgnLnZ3YWxsID4gKicpLmZvckVhY2goZnVuY3Rpb24oZWwsIGkpewogICAgZ3NhcC5mcm9tKGVsLCB7IG9wYWNpdHk6IDAsIHk6IC00NCwgcm90YXRpb246IGkgJSAyID8gOSA6IC05LCBkdXJhdGlvbjogLjcsIGVhc2U6ICdiYWNrLm91dCgxLjYpJywgZGVsYXk6IChpICUgMykgKiAuMDgsIGNsZWFyUHJvcHM6ICd0cmFuc2Zvcm0nLCBzY3JvbGxUcmlnZ2VyOiB7IHRyaWdnZXI6IGVsLCBzdGFydDogJ3RvcCA5MCUnLCBvbmNlOiB0cnVlIH0gfSk7CiAgfSk7CiAgcSgnLnZub3RlJykuZm9yRWFjaChmdW5jdGlvbihudCl7CiAgICBnc2FwLmZyb20obnQucXVlcnlTZWxlY3RvcignLnN0YW1wJyksIHsgc2NhbGU6IDAsIHJvdGF0aW9uOiAtMjQsIGR1cmF0aW9uOiAuNDIsIGVhc2U6ICdiYWNrLm91dCgyLjIpJywgZGVsYXk6IC40NSwgc2Nyb2xsVHJpZ2dlcjogeyB0cmlnZ2VyOiBudCwgc3RhcnQ6ICd0b3AgOTAlJywgb25jZTogdHJ1ZSB9IH0pOwogIH0pOwogIHZhciBob3N0cyA9IHJvb3QucXVlcnlTZWxlY3RvcignLmhvc3RzJyk7CiAgaWYgKGhvc3RzKSB7CiAgICB2YXIgaHRsID0gZ3NhcC50aW1lbGluZSh7IHNjcm9sbFRyaWdnZXI6IHsgdHJpZ2dlcjogaG9zdHMsIHN0YXJ0OiAndG9wIDg1JScsIG9uY2U6IHRydWUgfSB9KTsKICAgIGh0bC5mcm9tVG8oaG9zdHMucXVlcnlTZWxlY3RvcignaDMnKSwgeyBjbGlwUGF0aDogJ2luc2V0KDAgMTAwJSAwIDApJyB9LCB7IGNsaXBQYXRoOiAnaW5zZXQoMCAwJSAwIDApJywgZHVyYXRpb246IC43LCBlYXNlOiAncG93ZXIyLmluT3V0JyB9LCAwKQogICAgICAuZnJvbShxKCcudGl4IGxpJywgaG9zdHMpLCB7IG9wYWNpdHk6IDAsIHk6IDE4LCBzY2FsZTogLjksIGR1cmF0aW9uOiAuNDUsIGVhc2U6ICdiYWNrLm91dCgxLjgpJywgc3RhZ2dlcjogLjA0LCBjbGVhclByb3BzOiAndHJhbnNmb3JtJyB9LCAuMjUpOwogIH0KCiAgLyog4pSA4pSAIOWFtumkmOieouWFieethu+8mumAsueVq+mdouaJjeWItyDilIDilIAgKi8KICBobHMuZm9yRWFjaChmdW5jdGlvbihoKXsKICAgIGlmIChILmNvbnRhaW5zKGgpIHx8IGFsYnVtLmNvbnRhaW5zKGgpKSByZXR1cm47CiAgICBTY3JvbGxUcmlnZ2VyLmNyZWF0ZSh7IHRyaWdnZXI6IGgsIHN0YXJ0OiAndG9wIDg1JScsIG9uY2U6IHRydWUsIG9uRW50ZXI6IGZ1bmN0aW9uKCl7IGguY2xhc3NMaXN0LmFkZCgnb24nKTsgfSB9KTsKICB9KTsKCiAgaWYgKGRvY3VtZW50LmZvbnRzICYmIGRvY3VtZW50LmZvbnRzLnJlYWR5KSBkb2N1bWVudC5mb250cy5yZWFkeS50aGVuKGZ1bmN0aW9uKCl7IFNjcm9sbFRyaWdnZXIucmVmcmVzaCgpOyB9KTsKfSkoKTsK');})()<\/script>\n","protected":false},"excerpt":{"rendered":"<p>AI Second Brain &amp; Knowledge Management instructor, and a lecturer across the strait, helping professionals build a digital Second Brain that can be accumulated long-term and accessed anytime. Founder of Caitobang Co., Ltd., and the host of \u201cAI Mind Upgrade 321\u201d.<\/p>","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"iawp_total_views":1445,"footnotes":""},"class_list":["post-1550","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/knowledgegut.com\/en\/wp-json\/wp\/v2\/pages\/1550","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/knowledgegut.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/knowledgegut.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/knowledgegut.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/knowledgegut.com\/en\/wp-json\/wp\/v2\/comments?post=1550"}],"version-history":[{"count":0,"href":"https:\/\/knowledgegut.com\/en\/wp-json\/wp\/v2\/pages\/1550\/revisions"}],"wp:attachment":[{"href":"https:\/\/knowledgegut.com\/en\/wp-json\/wp\/v2\/media?parent=1550"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}