세대 구성원 전원이 무주택인가요 예 아니오
가구원수 1인 2인 3인 4인 5인 6인
소득 형태 외벌이·단독 맞벌이 (부부 모두 소득)
해당 계층 해당 없음(일반) 청년 (19~39세, 미혼) 대학생·취업준비생 신혼부부·한부모 (혼인 7년 이내 또는 6세 이하 자녀) 고령자 (65세 이상)
기초생활보장 수급·차상위 해당 없음 생계·의료급여 수급자 / 차상위 / 한부모가족 주거급여 수급자
전용 50㎡ 미만 소형을 원하나요 (국민임대 우선공급) 아니오 예
유형별 결과
영구임대 …
국민임대 …
행복주택 …
통합공공임대 …
매입·전세임대 …
○는 여기 넣은 소득·자산으로 본 기본 요건 이 맞는다는 뜻이지 당첨이나 신청 보장이 아닙니다. △는 기준선 ±8% 안이라 공고문의 금액표로 다시 봐야 합니다.
공고마다 해당 지역 거주 요건, 우선순위·배점, 청약통장 요건, 거주 기간이 따로 있습니다. 반드시 입주자모집공고문 으로 확인하세요.
유형별 기준 요약 (2026년 적용)
유형 소득 기준 총자산 자동차 특징
영구임대 1순위 생계·의료급여 수급자 등 · 일반 50% 이하 2.45억 이하(2026 공고 기준) 4,542만원 이하 시세의 30% 수준, 자격 유지 시 갱신
국민임대 70% 이하 (50㎡ 미만 우선 50%) 3.45억 이하 4,542만원 이하 최장 30년
행복주택 100% 이하 (신혼 맞벌이 120%) 청년 2.51억 · 대학생 1.08억 · 그 외 3.45억 4,542만원 이하(대학생은 無) 대학생·청년·산단근로자 10년, 신혼부부 무자녀 10년·자녀 14년, 고령자·주거급여수급자 20년
통합공공임대 기준 중위소득 150% 이하 (우선 100%) 3.45억 이하 4,542만원 이하 영구·국민·행복주택을 합친 유형, 소득 구간별 임대료
매입·전세임대 청년 100%(순위별 합산 범위 다름) · 신혼 I형 70%(90%) · II형 130%(200%) 유형별(일반 3.45억 또는 청년 기준 · 신혼 II형 3.62억) 4,542만원 이하 기존 주택을 LH 등이 사거나 전세로 빌려 재임대
1인 가구는 소득 기준에 20%p, 2인 가구는 10%p를 더해 봅니다(예: 국민임대 70% → 1인 90%, 2인 80%). 총자산은 세대 구성원 전원의 부동산(공시가격)·자동차·금융·일반자산을 더하고 부채를 뺀 금액입니다.
가구원수별 기준 금액 (월, 원)
가구원 도시근로자 100% 70% 50% 기준 중위소득 100% 중위 150% 1인 3,813,363 2,669,354 1,906,682 2,564,238 3,846,357 2인 5,866,270 4,106,389 2,933,135 4,199,292 6,298,938 3인 8,168,429 5,717,900 4,084,214 5,359,036 8,038,554 4인 8,802,202 6,161,541 4,401,101 6,494,738 9,742,107 5인 9,326,985 6,528,890 4,663,492 7,556,719 11,335,078 6인 9,906,263 6,934,384 4,953,132 8,555,952 12,833,928
도시근로자 월평균소득은 공고마다 적용 연도가 다를 수 있습니다(3인 가구 금액은 출처에 따라 7,533,763원과 8,168,429원이 함께 쓰입니다 — 여기서는 공공임대 공고가 쓰는 뒤 금액을 썼습니다). 기준선 가까이면 반드시 공고문 표로 확인하세요.
어디에 신청하나요
지금 접수 중인 공고는 임대주택 모집공고 에서 유형·지역별로 볼 수 있고, 단지별로 몇 명이 기다리는지는 예비입주자 대기현황 , 유형·지역별 보통 임대료는 공공임대 임대료 에서 확인하세요.
아파트 분양 청약의 특별공급 자격은 특별공급 자격 진단 이 따로 있습니다.
근거 마이홈포털 입주자격 안내(국민임대·행복주택·통합공공임대·매입임대, 2026년도 적용기준) · LH 청약플러스 임대가이드 입주자격 · LH 2026 공고문(익산 행복주택 10/2, 과천 S12 행복주택 10/28, 삼척정선 국민임대 6/10, 김제검산 영구임대 10/26, 전북 신혼Ⅱ 매입임대, 청년 전세임대 2/24) · 국토교통부고시 제2026-293호 공공주택 입주자 보유 자산 관련 업무처리기준(산식) · 보건복지부 2026년 기준 중위소득(고시 제2025-135호) · 공공주택 특별법 시행규칙 별표 3·4·5·5의2(2026-06-22 개정본) · 매입·전세임대 업무처리지침(훈령 제1983호·제1916호) · 확인일 2026-11-10 · 참고용이며 실제 자격은 입주자모집공고문과 공급기관(LH 1600-1004 등) 확인을 따릅니다.
자주 묻는 질문 국민임대와 행복주택은 무엇이 다른가요? 국민임대는 무주택 저소득 가구 대상으로 소득 기준이 70%로 낮은 대신 최장 30년까지 살 수 있고, 행복주택은 대학생·청년·신혼부부·고령자 등 계층 대상으로 소득 기준이 100%로 넓은 대신 계층별로 거주 기간(대학생·청년 10년, 신혼부부는 자녀 있으면 14년, 고령자·수급자 20년 — 2024-12 개정 기준)이 정해져 있습니다.
통합공공임대는 기준이 왜 다른가요? 영구·국민·행복주택을 하나로 합친 유형이라 도시근로자 소득이 아니라 기준 중위소득 을 씁니다. 일반공급은 중위소득 150% 이하, 우선공급은 100% 이하이고, 소득 구간에 따라 임대료가 달라집니다.
총자산은 어떻게 계산하나요? 세대 구성원 전원의 부동산(건물·토지는 공시가격), 자동차(보험개발원 차량기준가액), 금융자산(예금·주식 등), 일반자산(분양권·회원권 등)을 더한 뒤 부채를 뺀 금액입니다. 공급기관이 사회보장정보시스템으로 조회해 판정하므로 자가진단 값과 다를 수 있습니다.
기준선에 걸리면 어떻게 하나요? 소득 기준 금액은 공고의 적용 연도와 가구원수 산정(태아 포함 여부 등)에 따라 달라집니다. 기준선 ±8% 안이면 공고문의 금액표로 다시 계산하고, 애매하면 공급기관 콜센터(LH 1600-1004)에 문의하세요.
요율·기준 확인일 2026-09-16 · 본 계산기는 참고용이며 법적 효력이 없습니다. 입력값은 브라우저에서만 계산되며 서버로 전송되지 않습니다.
dmFyIFRIRU1FX0lDTz1mdW5jdGlvbih0KXtyZXR1cm4gdD09PSdkYXJrJz8nPHN2ZyBjbGFzcz0idHBoLWkgaWNvLXMiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMjAgMTQuNUE4LjUgOC41IDAgMCAxIDkuNSA0YTguNSA4LjUgMCAxIDAgMTAuNSAxMC41eiIvPjwvc3ZnPic6dD09PSdsaWdodCc/JzxzdmcgY2xhc3M9InRwaC1pIGljby1zIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTEyIDcuNWE0LjUgNC41IDAgMSAwIDAgOSA0LjUgNC41IDAgMCAwIDAtOXpNMTIgMnYyTTEyIDIwdjJNNC4yIDQuMmwxLjQgMS40TTE4LjQgMTguNGwxLjQgMS40TTIgMTJoMk0yMCAxMmgyTTQuMiAxOS44bDEuNC0xLjRNMTguNCA1LjZsMS40LTEuNCIvPjwvc3ZnPic6JzxzdmcgY2xhc3M9InRwaC1pIGljby1zIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTEyIDNhOSA5IDAgMSAwIDAgMTggOSA5IDAgMCAwIDAtMTh6TTEyIDN2MThhOSA5IDAgMCAwIDAtMTh6Ii8+PC9zdmc+Jzt9OwoKdmFyICQ9ZnVuY3Rpb24oaSl7cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cGgtJytpKTt9Owp2YXIgdj1mdW5jdGlvbihpKXt2YXIgZT0kKGkpO3JldHVybiBlPygrZS52YWx1ZXx8MCk6MDt9Owp2YXIgcz1mdW5jdGlvbihpKXt2YXIgZT0kKGkpO3JldHVybiBlP2UudmFsdWU6Jyc7fTsKdmFyIGY9ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucm91bmQobikudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+ybkCc7fTsKdmFyIGZkPWZ1bmN0aW9uKG4sZCl7cmV0dXJuIG4udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJyx7bWF4aW11bUZyYWN0aW9uRGlnaXRzOmR8fDF9KTt9Owp2YXIgY3V0MTA9ZnVuY3Rpb24oeCl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yb3VuZCh4KS8xMCkqMTA7fTsKdmFyIHNldD1mdW5jdGlvbihpLHQpe3ZhciBlPSQoaSk7aWYoIWUpcmV0dXJuO2lmKGk9PT0nbWFpbicpe2NvdW50VXAoZSx0KTt9ZWxzZXtlLnRleHRDb250ZW50PXQ7fX07CgovKiDslYjsoITtlZwg7KCA7J6l7IaMIOygkeq3vCDigJQg7Iuc7YGs66a/IOuqqOuTnC/ssKjri6gg7ZmY6rK97JeQ7ISc64+EIOyjveyngCDslYrqsowgKi8KdmFyIHN0b3JlPXsKICBnZXQ6ZnVuY3Rpb24oayl7dHJ5e3JldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrKTt9Y2F0Y2goZSl7cmV0dXJuIG51bGw7fX0sCiAgc2V0OmZ1bmN0aW9uKGssdmFsKXt0cnl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oayx2YWwpO31jYXRjaChlKXt9fSwKICBkZWw6ZnVuY3Rpb24oayl7dHJ5e2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGspO31jYXRjaChlKXt9fQp9OwoKdmFyIHRvYXN0PWZ1bmN0aW9uKG1zZyl7CiAgdmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRwaC10b2FzdCcpOwogIGlmKCF0KXt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3QuY2xhc3NOYW1lPSd0cGgtdG9hc3QnO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7fQogIHQudGV4dENvbnRlbnQ9bXNnO3QuY2xhc3NMaXN0LmFkZCgnc2hvdycpOwogIGNsZWFyVGltZW91dCh0Ll9oKTt0Ll9oPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTt9LDE5MDApOwp9OwoKLyog7YWM66eIIO2GoOq4gDog7Iuc7Iqk7YWcIOyEpOyglSDihpIg65287J207Yq4IOKGkiDri6Ttgawg7Iic7ZmYICovCmZ1bmN0aW9uIGluaXRUaGVtZShyb290KXsKICB2YXIgSz0ndHBoLXRoZW1lJywgY3VyPXN0b3JlLmdldChLKTsKICBpZihjdXIpIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyxjdXIpOwogIHZhciBiPSQoJ3RoZW1lJyk7CiAgaWYoIWIpIHJldHVybjsKICB2YXIgbGFiZWw9ZnVuY3Rpb24oKXsKICAgIHZhciB0PXJvb3QuZ2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyk7CiAgICBiLmlubmVySFRNTD1USEVNRV9JQ08odCkrJyA8c3Bhbj4nKyh0PT09J2RhcmsnPyfri6TtgawnOnQ9PT0nbGlnaHQnPyfrnbzsnbTtirgnOifsnpDrj5knKSsnPC9zcGFuPic7CiAgfTsKICBsYWJlbCgpOwogIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICB2YXIgdD1yb290LmdldEF0dHJpYnV0ZSgnZGF0YS10aGVtZScpOwogICAgdmFyIG54PSF0PydsaWdodCc6dD09PSdsaWdodCc/J2RhcmsnOicnOwogICAgaWYobngpe3Jvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyxueCk7c3RvcmUuc2V0KEssbngpO30KICAgIGVsc2V7cm9vdC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnKTtzdG9yZS5kZWwoSyk7fQogICAgbGFiZWwoKTsKICB9KTsKfQoKLyog7J6F66Cl6rCSIOKGlCBVUkwg7YyM652866+47YSwIOKGlCBsb2NhbFN0b3JhZ2UgKi8KZnVuY3Rpb24gaW5pdFN0YXRlKHNsdWcsIGlkcywgb25jaGFuZ2UpewogIHZhciBLRVk9J3RwaC1pbi0nK3NsdWcsIHE9bmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpLCB1c2VkPWZhbHNlOwogIGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGkpewogICAgdmFyIGU9JChpKTsgaWYoIWUpIHJldHVybjsKICAgIGlmKHEuaGFzKGkpKXsgZS52YWx1ZT1xLmdldChpKTsgdXNlZD10cnVlOyB9CiAgfSk7CiAgaWYoIXVzZWQpewogICAgdmFyIHJhdz1zdG9yZS5nZXQoS0VZKTsKICAgIGlmKHJhdyl7IHRyeXsgdmFyIG89SlNPTi5wYXJzZShyYXcpOwogICAgICBpZHMuZm9yRWFjaChmdW5jdGlvbihpKXsgdmFyIGU9JChpKTsgaWYoZSYmb1tpXSE9PXVuZGVmaW5lZCYmb1tpXSE9PScnKSBlLnZhbHVlPW9baV07IH0pOwogICAgfWNhdGNoKGUpe30gfQogIH0KICB2YXIgc2F2ZT1mdW5jdGlvbigpewogICAgdmFyIG89e307IGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGkpeyB2YXIgZT0kKGkpOyBpZihlKSBvW2ldPWUudmFsdWU7IH0pOwogICAgc3RvcmUuc2V0KEtFWSwgSlNPTi5zdHJpbmdpZnkobykpOwogIH07CiAgdmFyIHNoYXJlPSQoJ3NoYXJlJyk7CiAgaWYoc2hhcmUpIHNoYXJlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgdmFyIHA9bmV3IFVSTFNlYXJjaFBhcmFtcygpOwogICAgaWRzLmZvckVhY2goZnVuY3Rpb24oaSl7IHZhciBlPSQoaSk7IGlmKGUpIHAuc2V0KGksZS52YWx1ZSk7IH0pOwogICAgdmFyIHVybD1sb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWUrJz8nK3AudG9TdHJpbmcoKTsKICAgIHZhciBkb25lPWZ1bmN0aW9uKCl7dG9hc3QoJ+unge2BrOulvCDrs7XsgqztlojsirXri4jri6QnKTt9OwogICAgaWYobmF2aWdhdG9yLmNsaXBib2FyZCYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQpewogICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh1cmwpLnRoZW4oZG9uZSxmdW5jdGlvbigpe3Byb21wdCgn7JWE656YIOyjvOyGjOulvCDrs7XsgqztlZjshLjsmpQnLHVybCk7fSk7CiAgICB9IGVsc2UgcHJvbXB0KCfslYTrnpgg7KO87IaM66W8IOuzteyCrO2VmOyEuOyalCcsdXJsKTsKICB9KTsKICB2YXIgY29weT0kKCdjb3B5Jyk7CiAgaWYoY29weSkgY29weS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgIHZhciBsaW5lcz1bZG9jdW1lbnQudGl0bGUuc3BsaXQoJ3wnKVswXS50cmltKCldOwogICAgaWRzLmZvckVhY2goZnVuY3Rpb24oaSl7CiAgICAgIHZhciBlPSQoaSk7IGlmKCFlKSByZXR1cm47CiAgICAgIHZhciBsYWI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGFiZWxbZm9yPXRwaC0nK2krJ10nKTsKICAgICAgdmFyIHZhbD1lLnRhZ05hbWU9PT0nU0VMRUNUJz9lLm9wdGlvbnNbZS5zZWxlY3RlZEluZGV4XS50ZXh0OigrZS52YWx1ZXx8MCkudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJyk7CiAgICAgIGlmKGxhYikgbGluZXMucHVzaCgnwrcgJytsYWIudGV4dENvbnRlbnQudHJpbSgpKyc6ICcrdmFsKTsKICAgIH0pOwogICAgbGluZXMucHVzaCgnJyk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHBoLXRvdGFsJykuZm9yRWFjaChmdW5jdGlvbih0KXsKICAgICAgdmFyIGw9dC5xdWVyeVNlbGVjdG9yKCcubCcpLCB2YWw9dC5xdWVyeVNlbGVjdG9yKCcudicpOwogICAgICBpZihsJiZ2YWwpIGxpbmVzLnB1c2gobC50ZXh0Q29udGVudC50cmltKCkrJzogJyt2YWwudGV4dENvbnRlbnQudHJpbSgpKTsKICAgIH0pOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRwaC1wYWdlIHRhYmxlJykuZm9yRWFjaChmdW5jdGlvbih0Yil7CiAgICAgIHRiLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykuZm9yRWFjaChmdW5jdGlvbih0cil7CiAgICAgICAgdmFyIHRkPXRyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJyk7CiAgICAgICAgaWYodGQubGVuZ3RoPT09MikgbGluZXMucHVzaCgnwrcgJyt0ZFswXS50ZXh0Q29udGVudC50cmltKCkrJzogJyt0ZFsxXS50ZXh0Q29udGVudC50cmltKCkpOwogICAgICB9KTsKICAgIH0pOwogICAgbGluZXMucHVzaCgnJywgbG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lKTsKICAgIHZhciB0eHQ9bGluZXMuam9pbignXG4nKTsKICAgIHZhciBkb25lPWZ1bmN0aW9uKCl7dG9hc3QoJ+qysOqzvOulvCDrs7XsgqztlojsirXri4jri6QnKTt9OwogICAgaWYobmF2aWdhdG9yLmNsaXBib2FyZCYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQpIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHR4dCkudGhlbihkb25lLGRvbmUpOwogICAgZWxzZSB7IHZhciB0YT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpOyB0YS52YWx1ZT10eHQ7IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGEpOwogICAgICAgICAgIHRhLnNlbGVjdCgpOyB0cnl7ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTt9Y2F0Y2goZSl7fSB0YS5yZW1vdmUoKTsgZG9uZSgpOyB9CiAgfSk7CiAgdmFyIHJlc2V0PSQoJ3Jlc2V0Jyk7CiAgaWYocmVzZXQpIHJlc2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgc3RvcmUuZGVsKEtFWSk7IGxvY2F0aW9uLmhyZWY9bG9jYXRpb24ucGF0aG5hbWU7CiAgfSk7CiAgcmV0dXJuIHNhdmU7Cn0KCi8qIOq4iOyVoSDsnoXroKUg67CRIOu5oOuluCDsobDsoJUg7LmpICovCmZ1bmN0aW9uIGluaXRDaGlwcyhvbmNoYW5nZSl7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRwaC1jaGlwJykuZm9yRWFjaChmdW5jdGlvbihjKXsKICAgIGMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAgIHZhciBlPSQoYy5kYXRhc2V0LnQpOyBpZighZSkgcmV0dXJuOwogICAgICB2YXIgZD1jLmRhdGFzZXQuZDsKICAgICAgZS52YWx1ZSA9IGQ9PT0nMCcgPyAwIDogTWF0aC5tYXgoMCwoK2UudmFsdWV8fDApKygrZCkpOwogICAgICBvbmNoYW5nZSgpOwogICAgfSk7CiAgfSk7Cn0KCi8qIOyeheugpeqwkuydhCDsgqzrnozsnbQg7J2964qUIOusuOyepeycvOuhnCAoMywwMDAsMDAwIOKGkiAzMDDrp4zsm5ApICovCmZ1bmN0aW9uIGtvck1vbmV5KG4pewogIG49TWF0aC5yb3VuZChuKTsgaWYoIW4pIHJldHVybiAnMOybkCc7CiAgdmFyIGVvaz1NYXRoLmZsb29yKG4vMTAwMDAwMDAwKSwgbWFuPU1hdGguZmxvb3IoKG4lMTAwMDAwMDAwKS8xMDAwMCksIHdvbj1uJTEwMDAwLCBwPVtdOwogIGlmKGVvaykgcC5wdXNoKGVvaysn7Ja1Jyk7CiAgaWYobWFuKSBwLnB1c2gobWFuLnRvTG9jYWxlU3RyaW5nKCdrby1LUicpKyfrp4wnKTsKICBpZih3b24pIHAucHVzaCh3b24udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykpOwogIHJldHVybiBwLmpvaW4oJyAnKSsn7JuQJzsKfQpmdW5jdGlvbiBpbml0UmVhZChtYXApewogIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChmdW5jdGlvbihpZCl7CiAgICB2YXIgZT0kKGlkKSwgb3V0PSQobWFwW2lkXSk7IGlmKCFlfHwhb3V0KSByZXR1cm47CiAgICB2YXIgdXBkPWZ1bmN0aW9uKCl7IG91dC50ZXh0Q29udGVudCA9ICgrZS52YWx1ZT4wKSA/IGtvck1vbmV5KCtlLnZhbHVlKSA6ICcnOyB9OwogICAgZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsdXBkKTsgdXBkKCk7CiAgfSk7Cn0KCgovKiDsiKvsnpAg7Lm07Jq07Yq47JeFIOKAlCDqsrDqs7zqsIAg67CU64CUIOuVjCDrtoDrk5zrn73qsowgKi8KZnVuY3Rpb24gY291bnRVcChlbCwgdGV4dCl7CiAgaWYoIWVsKSByZXR1cm47CiAgdmFyIHByZXY9ZWwuX3Jhd3x8JycsIGN1cj10ZXh0OwogIGVsLl9yYXc9Y3VyOwogIHZhciBwbj1wYXJzZUZsb2F0KFN0cmluZyhwcmV2KS5yZXBsYWNlKC9bXjAtOS4tXS9nLCcnKSk7CiAgdmFyIGNuPXBhcnNlRmxvYXQoU3RyaW5nKGN1cikucmVwbGFjZSgvW14wLTkuLV0vZywnJykpOwogIHZhciByZWR1Y2U9d2luZG93Lm1hdGNoTWVkaWEmJndpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CiAgaWYocmVkdWNlfHwhaXNGaW5pdGUocG4pfHwhaXNGaW5pdGUoY24pfHxwbj09PWNufHxNYXRoLmFicyhjbi1wbik8MSl7ZWwudGV4dENvbnRlbnQ9Y3VyO3JldHVybjt9CiAgdmFyIHByZT1jdXIuc2xpY2UoMCxjdXIuc2VhcmNoKC9bMC05LV0vKSk7CiAgdmFyIHBvc3Q9Y3VyLnNsaWNlKGN1ci5zZWFyY2goL1swLTldW14wLTldKiQvKSsxKS5yZXBsYWNlKC9eWzAtOV0vLCcnKTsKICB2YXIgc3VmZml4PWN1ci5yZXBsYWNlKC9eW14wLTktXSovLCcnKS5yZXBsYWNlKC9eWzAtOSwuXC1dKy8sJycpOwogIHZhciB0MD1udWxsLCBkdXI9MzgwOwogIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGVsLl9hZnx8MCk7CiAgZnVuY3Rpb24gc3RlcCh0KXsKICAgIGlmKCF0MCkgdDA9dDsKICAgIHZhciBrPU1hdGgubWluKDEsKHQtdDApL2R1ciksIGU9MS1NYXRoLnBvdygxLWssMyk7CiAgICB2YXIgdmFsPXBuKyhjbi1wbikqZTsKICAgIGVsLnRleHRDb250ZW50PXByZStNYXRoLnJvdW5kKHZhbCkudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrc3VmZml4OwogICAgaWYoazwxKSBlbC5fYWY9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOyBlbHNlIGVsLnRleHRDb250ZW50PWN1cjsKICB9CiAgZWwuX2FmPXJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKfQoKLyog66qo67CU7J28IOqzoOyglSDqsrDqs7zrsJQgKyDrp6gg7JyE66GcICovCmZ1bmN0aW9uIGluaXRTdGlja3kocm9vdCwgbGFiZWwpewogIGlmKCFyb290KSByZXR1cm47CiAgdmFyIG1haW49JCgnbWFpbicpOyBpZighbWFpbikgcmV0dXJuOwogIHZhciBiYXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgYmFyLmNsYXNzTmFtZT0ndHBoLXN0aWNreSc7CiAgYmFyLmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibCI+JytsYWJlbCsnPC9kaXY+PGRpdiBjbGFzcz0idiIgaWQ9InRwaC1zdGlja3l2Ij7igKY8L2Rpdj4nOwogIHJvb3QuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgdG9wPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIHRvcC50eXBlPSdidXR0b24nOyB0b3AuY2xhc3NOYW1lPSd0cGgtdG9wJzsgdG9wLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsJ+unqCDsnITroZwnKTsKICB0b3AuaW5uZXJIVE1MPSc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDE5VjUiLz48cGF0aCBkPSJNNSAxMmw3LTcgNyA3Ii8+PC9zdmc+JzsKICB0b3AuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7d2luZG93LnNjcm9sbFRvKHt0b3A6MCxiZWhhdmlvcjonc21vb3RoJ30pO30pOwogIHJvb3QuYXBwZW5kQ2hpbGQodG9wKTsKICB2YXIgc3Y9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RwaC1zdGlja3l2Jyk7CiAgdmFyIHN5bmM9ZnVuY3Rpb24oKXsKICAgIGlmKHN2JiZzdi50ZXh0Q29udGVudCE9PW1haW4udGV4dENvbnRlbnQpIHN2LnRleHRDb250ZW50PW1haW4udGV4dENvbnRlbnQ7CiAgICB2YXIgcj1tYWluLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgYmFyLmNsYXNzTGlzdC50b2dnbGUoJ29uJywgci5ib3R0b208NTYpOwogICAgdG9wLmNsYXNzTGlzdC50b2dnbGUoJ29uJywgd2luZG93LnNjcm9sbFk+NTAwKTsKICB9OwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLHN5bmMse3Bhc3NpdmU6dHJ1ZX0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLHN5bmMpOwogIGlmKHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyKSBuZXcgTXV0YXRpb25PYnNlcnZlcihzeW5jKS5vYnNlcnZlKG1haW4se2NoaWxkTGlzdDp0cnVlLGNoYXJhY3RlckRhdGE6dHJ1ZSxzdWJ0cmVlOnRydWV9KTsKICBzeW5jKCk7Cn0KCi8qIOKUgOKUgCDssKjtirgg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAgIOyDieydgCBDU1Mg67OA7IiYIC0tczEvLS1zMi8tLXMzICjqsoDspp3rkJwg7Lm07YWM6rOg66asIO2MlOugiO2KuCkuCiAgIOqzhOyXtOydtCAy6rCcIOydtOyDgeydtOuptCDrspTroYDrpbwg7ZWt7IOBIOu2meydtOqzoCwg6rCS7J2AIO2RnOyXkOuPhCDqt7jrjIDroZwg7J6I64ukLiAqLwp2YXIgU1ZHTlM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKZnVuY3Rpb24gZWwodCxhKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHTlMsdCk7Zm9yKHZhciBrIGluIGEpZS5zZXRBdHRyaWJ1dGUoayxhW2tdKTtyZXR1cm4gZTt9CgpmdW5jdGlvbiB0aXAoYm94KXsKICB2YXIgdD1ib3gucXVlcnlTZWxlY3RvcignLnRwaC10aXAnKTsKICBpZighdCl7dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTt0LmNsYXNzTmFtZT0ndHBoLXRpcCc7Ym94LmFwcGVuZENoaWxkKHQpO30KICByZXR1cm4gdDsKfQpmdW5jdGlvbiBzaG93VGlwKGJveCx4LHksaHRtbCl7CiAgdmFyIHQ9dGlwKGJveCk7IHQuaW5uZXJIVE1MPWh0bWw7IHQuc3R5bGUub3BhY2l0eT0nMSc7CiAgdmFyIHc9dC5vZmZzZXRXaWR0aCwgYnc9Ym94LmNsaWVudFdpZHRoOwogIHQuc3R5bGUubGVmdD1NYXRoLm1heCg0LE1hdGgubWluKGJ3LXctNCx4LXcvMikpKydweCc7CiAgdC5zdHlsZS50b3A9TWF0aC5tYXgoMix5LXQub2Zmc2V0SGVpZ2h0LTEwKSsncHgnOwp9CmZ1bmN0aW9uIGhpZGVUaXAoYm94KXt2YXIgdD1ib3gucXVlcnlTZWxlY3RvcignLnRwaC10aXAnKTtpZih0KXQuc3R5bGUub3BhY2l0eT0nMCc7fQoKLyog7IS466GcIOuIhOyggSDrp4nrjIAg4oCUIGNhdHM6W+udvOuyqF0sIHNlcmllczpbe25hbWUsY2xzLGRhdGE6W119XSAqLwpmdW5jdGlvbiBzdGFja0NoYXJ0KGJveElkLCBjYXRzLCBzZXJpZXMsIGZtdCl7CiAgdmFyIGJveD0kKGJveElkKTsgaWYoIWJveCkgcmV0dXJuOwogIGJveC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcsLnRwaC1sZWdlbmQnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7CiAgdmFyIFc9NjYwLEg9MjM2LFBMPTgsUFI9OCxQVD0xNCxQQj0yNjsKICB2YXIgbj1jYXRzLmxlbmd0aDsgaWYoIW4pIHJldHVybjsKICB2YXIgdG90YWxzPWNhdHMubWFwKGZ1bmN0aW9uKF8saSl7cmV0dXJuIHNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSxzKXtyZXR1cm4gYSsocy5kYXRhW2ldfHwwKTt9LDApO30pOwogIHZhciBtYXg9TWF0aC5tYXguYXBwbHkobnVsbCx0b3RhbHMpfHwxOwogIHZhciBpdz1XLVBMLVBSLCBpaD1ILVBULVBCOwogIHZhciBidz1NYXRoLm1heCg2LE1hdGgubWluKDQ2LGl3L24qMC42OCkpLCBzdGVwPWl3L247CiAgdmFyIHN2Zz1lbCgnc3ZnJyx7dmlld0JveDonMCAwICcrVysnICcrSCxyb2xlOidpbWcnfSk7CiAgZm9yKHZhciBnPTA7Zzw9MztnKyspewogICAgdmFyIGd5PVBUK2loKmcvMzsKICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgnbGluZScse3gxOlBMLHkxOmd5LHgyOlctUFIseTI6Z3ksJ2NsYXNzJzonZ2wnfSkpOwogIH0KICBjYXRzLmZvckVhY2goZnVuY3Rpb24oYyxpKXsKICAgIHZhciBjeD1QTCtzdGVwKmkrc3RlcC8yLCB5PVBUK2loLCBhY2M9MDsKICAgIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKHMsc2kpewogICAgICB2YXIgdmFsPXMuZGF0YVtpXXx8MDsgaWYodmFsPD0wKSByZXR1cm47CiAgICAgIHZhciBoPXZhbC9tYXgqaWg7IHktPWg7IGFjYys9dmFsOwogICAgICB2YXIgaXNUb3AgPSBzaT09PXNlcmllcy5sZW5ndGgtMSB8fCAhc2VyaWVzLnNsaWNlKHNpKzEpLnNvbWUoZnVuY3Rpb24oeil7cmV0dXJuICh6LmRhdGFbaV18fDApPjA7fSk7CiAgICAgIHZhciByPWVsKCdyZWN0Jyx7eDpjeC1idy8yLHk6eSx3aWR0aDpidyxoZWlnaHQ6TWF0aC5tYXgoMSxoKSwnY2xhc3MnOnMuY2xzLAogICAgICAgICAgICAgICAgICAgICAgIHJ4OmlzVG9wPzQ6MCxyeTppc1RvcD80OjB9KTsKICAgICAgc3ZnLmFwcGVuZENoaWxkKHIpOwogICAgfSk7CiAgICB2YXIgaGl0PWVsKCdyZWN0Jyx7eDpjeC1zdGVwLzIrMSx5OlBULHdpZHRoOnN0ZXAtMixoZWlnaHQ6aWgsJ2NsYXNzJzonaGl0J30pOwogICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsZnVuY3Rpb24oZXYpewogICAgICB2YXIgYnI9Ym94LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICB2YXIgcm93cz1zZXJpZXMubWFwKGZ1bmN0aW9uKHMpewogICAgICAgIHJldHVybiAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6MnB4OycKICAgICAgICAgICAgICsgJ2JhY2tncm91bmQ6dmFyKC0tJytzLmNscysnKTttYXJnaW4tcmlnaHQ6NnB4Ij48L3NwYW4+JytzLm5hbWUrJyAnK2ZtdChzLmRhdGFbaV18fDApOwogICAgICB9KS5qb2luKCc8YnI+Jyk7CiAgICAgIHNob3dUaXAoYm94LGV2LmNsaWVudFgtYnIubGVmdCxldi5jbGllbnRZLWJyLnRvcCwKICAgICAgICAgICAgICAnPGI+JytjKyc8L2I+PGJyPicrcm93cysnPGJyPu2VqeqzhCAnK2ZtdChhY2MpKTsKICAgIH0pOwogICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLGZ1bmN0aW9uKCl7aGlkZVRpcChib3gpO30pOwogICAgc3ZnLmFwcGVuZENoaWxkKGhpdCk7CiAgICBpZihuPD0xNHx8aSVNYXRoLmNlaWwobi8xMik9PT0wKQogICAgICBzdmcuYXBwZW5kQ2hpbGQoT2JqZWN0LmFzc2lnbihlbCgndGV4dCcse3g6Y3gseTpILTgsJ2NsYXNzJzonbGInLCd0ZXh0LWFuY2hvcic6J21pZGRsZSd9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RleHRDb250ZW50OmN9KSk7CiAgfSk7CiAgYm94LmFwcGVuZENoaWxkKHN2Zyk7CiAgYm94LmFwcGVuZENoaWxkKGxlZ2VuZChzZXJpZXMpKTsKfQoKLyog6rCA66GcIOuIhOyggSDrp4nrjIAo6rWs7ISxKSDigJQgc2Vnczpbe25hbWUsY2xzLHZhbHVlfV0gwrcg7KeB7KCRIOudvOuyqCAqLwpmdW5jdGlvbiBoU3RhY2soYm94SWQsIHNlZ3MsIGZtdCl7CiAgdmFyIGJveD0kKGJveElkKTsgaWYoIWJveCkgcmV0dXJuOwogIGJveC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcsLnRwaC1sZWdlbmQnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7CiAgdmFyIHRvdGFsPXNlZ3MucmVkdWNlKGZ1bmN0aW9uKGEscyl7cmV0dXJuIGErTWF0aC5tYXgoMCxzLnZhbHVlKTt9LDApfHwxOwogIHZhciBXPTY2MCxIPTY0LFBMPTgsUFI9OCxCSD0zNCxUWT0xMjsKICB2YXIgc3ZnPWVsKCdzdmcnLHt2aWV3Qm94OicwIDAgJytXKycgJytILHJvbGU6J2ltZyd9KTsKICB2YXIgeD1QTCwgaXc9Vy1QTC1QUjsKICBzZWdzLmZvckVhY2goZnVuY3Rpb24ocyxpKXsKICAgIHZhciB3PU1hdGgubWF4KDAscy52YWx1ZSkvdG90YWwqaXc7IGlmKHc8PTApIHJldHVybjsKICAgIHZhciBmaXJzdD1pPT09MCwgbGFzdD1pPT09c2Vncy5sZW5ndGgtMTsKICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgncmVjdCcse3g6eCx5OlRZLHdpZHRoOncsaGVpZ2h0OkJILCdjbGFzcyc6cy5jbHMsCiAgICAgIHJ4OihmaXJzdHx8bGFzdCk/NDowLHJ5OihmaXJzdHx8bGFzdCk/NDowfSkpOwogICAgdmFyIHBjdD1zLnZhbHVlL3RvdGFsKjEwMDsKICAgIGlmKHBjdD49OSkKICAgICAgc3ZnLmFwcGVuZENoaWxkKE9iamVjdC5hc3NpZ24oZWwoJ3RleHQnLHt4Ongrdy8yLHk6VFkrQkgvMis0LCdjbGFzcyc6J3ZsJywKICAgICAgICAndGV4dC1hbmNob3InOidtaWRkbGUnLGZpbGw6JyNmZmYnfSkse3RleHRDb250ZW50OnBjdC50b0ZpeGVkKDApKyclJ30pKTsKICAgIHZhciBoaXQ9ZWwoJ3JlY3QnLHt4OngseTpUWSx3aWR0aDp3LGhlaWdodDpCSCwnY2xhc3MnOidoaXQnfSk7CiAgICAoZnVuY3Rpb24oc2VnLHB4LHB3KXsKICAgICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsZnVuY3Rpb24oZXYpewogICAgICAgIHZhciBicj1ib3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgc2hvd1RpcChib3gsZXYuY2xpZW50WC1ici5sZWZ0LGV2LmNsaWVudFktYnIudG9wLAogICAgICAgICAgJzxiPicrc2VnLm5hbWUrJzwvYj48YnI+JytmbXQoc2VnLnZhbHVlKSsnIMK3ICcrKHNlZy52YWx1ZS90b3RhbCoxMDApLnRvRml4ZWQoMSkrJyUnKTsKICAgICAgfSk7CiAgICAgIGhpdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJyxmdW5jdGlvbigpe2hpZGVUaXAoYm94KTt9KTsKICAgIH0pKHMseCx3KTsKICAgIHN2Zy5hcHBlbmRDaGlsZChoaXQpOwogICAgeCs9dzsKICB9KTsKICBib3guYXBwZW5kQ2hpbGQoc3ZnKTsKICBib3guYXBwZW5kQ2hpbGQobGVnZW5kKHNlZ3MubWFwKGZ1bmN0aW9uKHMpe3JldHVybiB7bmFtZTpzLm5hbWUrJyAnK2ZtdChzLnZhbHVlKSxjbHM6cy5jbHN9O30pKSk7Cn0KCi8qIOyEoO2YlSDstpTsnbQg7LCo7Yq4IOKAlCBzZXJpZXM6W3tuYW1lLGNscyxkYXRhOltdfV0sIGNhdHM6W+udvOuyqF0gKi8KZnVuY3Rpb24gbGluZUNoYXJ0KGJveElkLCBjYXRzLCBzZXJpZXMsIGZtdCl7CiAgdmFyIGJveD0kKGJveElkKTsgaWYoIWJveCkgcmV0dXJuOwogIGJveC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcsLnRwaC1sZWdlbmQnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7CiAgdmFyIG49Y2F0cy5sZW5ndGg7IGlmKG48MikgcmV0dXJuOwogIHZhciBXPTY2MCxIPTI0MCxQTD01NCxQUj0xMixQVD0xNCxQQj0yNjsKICB2YXIgYWxsPVtdOyBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihzKXthbGw9YWxsLmNvbmNhdChzLmRhdGEuZmlsdGVyKGZ1bmN0aW9uKHYpe3JldHVybiB2IT1udWxsO30pKTt9KTsKICBpZighYWxsLmxlbmd0aCkgcmV0dXJuOwogIHZhciBteD1NYXRoLm1heC5hcHBseShudWxsLGFsbCksIG1uPU1hdGgubWluLmFwcGx5KG51bGwsYWxsKTsKICB2YXIgcGFkPShteC1tbikqMC4xNXx8bXgqMC4wMnx8MTsgbXgrPXBhZDsgbW49TWF0aC5tYXgoMCxtbi1wYWQpOwogIHZhciBpdz1XLVBMLVBSLCBpaD1ILVBULVBCOwogIHZhciBYPWZ1bmN0aW9uKGkpe3JldHVybiBQTCtpdyoobj09PTE/MC41OmkvKG4tMSkpO307CiAgdmFyIFk9ZnVuY3Rpb24odil7cmV0dXJuIFBUK2loKigxLSh2LW1uKS8oKG14LW1uKXx8MSkpO307CiAgdmFyIHN2Zz1lbCgnc3ZnJyx7dmlld0JveDonMCAwICcrVysnICcrSCxyb2xlOidpbWcnfSk7CiAgZm9yKHZhciBnPTA7Zzw9NDtnKyspewogICAgdmFyIGd2PW1uKyhteC1tbikqZy80LCBneT1ZKGd2KTsKICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgnbGluZScse3gxOlBMLHkxOmd5LHgyOlctUFIseTI6Z3ksJ2NsYXNzJzonZ2wnfSkpOwogICAgc3ZnLmFwcGVuZENoaWxkKE9iamVjdC5hc3NpZ24oZWwoJ3RleHQnLHt4OlBMLTgseTpneSs0LCdjbGFzcyc6J2xiJywndGV4dC1hbmNob3InOidlbmQnfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGV4dENvbnRlbnQ6TWF0aC5yb3VuZChndikudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJyl9KSk7CiAgfQogIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKHMpewogICAgdmFyIGQ9JycsIHN0YXJ0ZWQ9ZmFsc2U7CiAgICBzLmRhdGEuZm9yRWFjaChmdW5jdGlvbih2LGkpewogICAgICBpZih2PT1udWxsKSByZXR1cm47CiAgICAgIGQrPShzdGFydGVkPydMJzonTScpK1goaSkudG9GaXhlZCgxKSsnICcrWSh2KS50b0ZpeGVkKDEpKycgJzsgc3RhcnRlZD10cnVlOwogICAgfSk7CiAgICBpZihkKSBzdmcuYXBwZW5kQ2hpbGQoZWwoJ3BhdGgnLHtkOmQsZmlsbDonbm9uZScsJ3N0cm9rZSc6J3ZhcigtLScrcy5jbHMrJyknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cm9rZS13aWR0aCc6Mi4yLCdzdHJva2UtbGluZWpvaW4nOidyb3VuZCcsJ3N0cm9rZS1saW5lY2FwJzoncm91bmQnfSkpOwogICAgdmFyIGxhc3Q9cy5kYXRhLmxlbmd0aC0xOwogICAgaWYocy5kYXRhW2xhc3RdIT1udWxsKQogICAgICBzdmcuYXBwZW5kQ2hpbGQoZWwoJ2NpcmNsZScse2N4OlgobGFzdCksY3k6WShzLmRhdGFbbGFzdF0pLHI6NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOid2YXIoLS0nK3MuY2xzKycpJyxzdHJva2U6J3ZhcigtLXN1cmZhY2UpJywnc3Ryb2tlLXdpZHRoJzoyfSkpOwogIH0pOwogIGNhdHMuZm9yRWFjaChmdW5jdGlvbihjLGkpewogICAgaWYobj4xMCAmJiBpJU1hdGguY2VpbChuLzcpIT09MCAmJiBpIT09bi0xKSByZXR1cm47CiAgICBzdmcuYXBwZW5kQ2hpbGQoT2JqZWN0LmFzc2lnbihlbCgndGV4dCcse3g6WChpKSx5OkgtOCwnY2xhc3MnOidsYicsJ3RleHQtYW5jaG9yJzonbWlkZGxlJ30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RleHRDb250ZW50OmN9KSk7CiAgfSk7CiAgZm9yKHZhciBpPTA7aTxuO2krKyl7CiAgICAoZnVuY3Rpb24oaWR4KXsKICAgICAgdmFyIGhpdD1lbCgncmVjdCcse3g6WChpZHgpLWl3LyhuLTEpLzIseTpQVCx3aWR0aDppdy8obi0xKXx8MjAsaGVpZ2h0OmloLCdjbGFzcyc6J2hpdCd9KTsKICAgICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsZnVuY3Rpb24oZXYpewogICAgICAgIHZhciBicj1ib3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgdmFyIHJvd3M9c2VyaWVzLm1hcChmdW5jdGlvbihzKXsKICAgICAgICAgIHJldHVybiAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6MnB4OycKICAgICAgICAgICAgICAgKyAnYmFja2dyb3VuZDp2YXIoLS0nK3MuY2xzKycpO21hcmdpbi1yaWdodDo2cHgiPjwvc3Bhbj4nK3MubmFtZSsnICcKICAgICAgICAgICAgICAgKyAocy5kYXRhW2lkeF09PW51bGw/Jy0nOmZtdChzLmRhdGFbaWR4XSkpOwogICAgICAgIH0pLmpvaW4oJzxicj4nKTsKICAgICAgICBzaG93VGlwKGJveCxldi5jbGllbnRYLWJyLmxlZnQsZXYuY2xpZW50WS1ici50b3AsJzxiPicrY2F0c1tpZHhdKyc8L2I+PGJyPicrcm93cyk7CiAgICAgIH0pOwogICAgICBoaXQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsZnVuY3Rpb24oKXtoaWRlVGlwKGJveCk7fSk7CiAgICAgIHN2Zy5hcHBlbmRDaGlsZChoaXQpOwogICAgfSkoaSk7CiAgfQogIGJveC5hcHBlbmRDaGlsZChzdmcpOwogIGJveC5hcHBlbmRDaGlsZChsZWdlbmQoc2VyaWVzKSk7Cn0KCmZ1bmN0aW9uIGxlZ2VuZChpdGVtcyl7CiAgdmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGQuY2xhc3NOYW1lPSd0cGgtbGVnZW5kJzsKICBpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKHMpewogICAgdmFyIHNwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgIHNwLmlubmVySFRNTD0nPGkgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tJytzLmNscysnKSI+PC9pPicrcy5uYW1lOwogICAgZC5hcHBlbmRDaGlsZChzcCk7CiAgfSk7CiAgcmV0dXJuIGQ7Cn0KLyogMuywqCDrqZTribQ6IO2YhOyerCDtg63snbQg7Zy064yA7Y+wIO2ZlOuptCDrsJYo7Jik66W47Kq9KeyXkCDsnojsnLzrqbQg6rCA66Gc66GcIOuLueqyqCDrs7TsnbTqsowg7ZWc64ukKO2OmOydtOyngOuKlCDshLjroZzroZwg7JuA7KeB7J207KeAIOyViuuKlOuLpCkgKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRwaC1zdWJuYXYgYVthcmlhLWN1cnJlbnRdJyk7IGlmKCFhKSByZXR1cm47CiAgdmFyIHc9YS5wYXJlbnROb2RlLCBhcj1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCB3cj13LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogIGlmKGFyLnJpZ2h0PndyLnJpZ2h0LTh8fGFyLmxlZnQ8d3IubGVmdCkgdy5zY3JvbGxMZWZ0Kz1hci5sZWZ0LXdyLmxlZnQtKHcuY2xpZW50V2lkdGgtYS5vZmZzZXRXaWR0aCkvMjsKfSkoKTsKCnZhciBSPXsiX+yjvOydmCI6ICLrqqjrk6Ag7JqU7Jyo7J2AIOy2nOyymOyZgCDtmZXsnbjsnbzsnpDrpbwg66qF7Iuc7ZWc64ukLiDrp6TrhYQgMTLsm5Qg6rOg7IucIO2ZleyduCDtm4Qg6rCx7Iug7ZWgIOqygy4iLCAieWVhciI6IDIwMjYsICJ2ZXJpZmllZF9vbiI6ICIyMDI2LTA5LTE2IiwgIuq1reuvvOyXsOq4iCI6IHsidG90YWwiOiAwLjA5NSwgImVtcGxveWVlIjogMC4wNDc1LCAiZW1wbG95ZXIiOiAwLjA0NzUsICLquLDspIDshozrk53sm5TslaFf7ZWY7ZWcIjogNDEwMDAwLCAi6riw7KSA7IaM65Od7JuU7JWhX+yDge2VnCI6IDY1OTAwMDAsICJub3RlIjogIjE5OTjrhYQg7J207ZuEIOyyqyDsnbjsg4EoOSXihpI5LjUlKS4gMjAzM+uFhOq5jOyngCAxMyXroZwg64uo6rOEIOyduOyDgS4iLCAic291cmNlIjogIuuztOqxtOuzteyngOu2gC/soJXssYXruIzrpqztlZEg7Jew6riI6rCc7ZiBIiwgIuq4sOykgOyGjOuTneyblOyVoV/soIHsmqnquLDqsIQiOiAiMjAyNi0wNy0wMX4yMDI3LTA2LTMwICjrp6TrhYQgN+yblCBB6rCSIOuzgOuPmeuloOuhnCDsobDsoJUsIDIwMjUuN34yMDI2LjbsnYAgNDDrp4x+NjM366eMKSIsICLquLDspIDshozrk53sm5TslaFfc291cmNlIjogIuuztOqxtOuzteyngOu2gCDqs6Dsi5wg4oCUIDIwMjYuNyDsg4HtlZwgNjU566eMwrftlZjtlZwgNDHrp4woQeqwkiDrs4Drj5nrpaAgMy40JSksIO2ZleyduCAyMDI2LTEwLTA0In0sICLqsbTqsJXrs7Ttl5giOiB7InRvdGFsIjogMC4wNzE5LCAiZW1wbG95ZWUiOiAwLjAzNTk1LCAiZW1wbG95ZXIiOiAwLjAzNTk1LCAicHJldl95ZWFyIjogMC4wNzA5LCAibm90ZSI6ICIyMDI164WEIDcuMDklIOKGkiAyMDI264WEIDcuMTklICgwLjElcCwg7Kad6rCA7JyoIDEuNDglKSIsICJzb3VyY2UiOiAi67O06rG067O17KeA67aAIOuztOuPhOyekOujjCAyMDI264WEIOqxtOqwleuztO2XmOujjOycqCA3LjE5JeuhnCDqsrDsoJUifSwgIuyepeq4sOyalOyWkeuztO2XmCI6IHsi7IaM65Od64yA67mEIjogMC4wMDk0NDgsICLqsbTqsJXrs7Ttl5jro4xf64yA67mEIjogMC4xMzE0LCAiZW1wbG95ZWVfc2hhcmUiOiAwLjUsICJlbXBsb3llcl9zaGFyZSI6IDAuNSwgInByZXZfeWVhcl/shozrk53rjIDruYQiOiAwLjAwOTE3NCwgIm5vdGUiOiAi6rG06rCV67O07ZeY66OMIHggMTMuMTQlLiDshozrk50g64yA67mE66Gc64qUIDAuOTQ0OCUuIiwgInNvdXJjZSI6ICLrs7TqsbTrs7Xsp4DrtoAg67O064+E7J6Q66OMIDIwMjbrhYTrj4Qg7J6l6riw7JqU7JaR67O07ZeY66OM7JyoIDAuOTQ0OCUifSwgIuqzoOyaqeuztO2XmCI6IHsi7Iuk7JeF6riJ7JesX3RvdGFsIjogMC4wMTgsICJlbXBsb3llZSI6IDAuMDA5LCAiZW1wbG95ZXIiOiAwLjAwOSwgIuqzoOyaqeyViOyglV/sp4Hsl4XriqXroKXqsJzrsJwiOiB7IjE1MOyduOuvuOunjCI6IDAuMDAyNSwgIjE1MOyduOydtOyDgV/smrDshKDsp4Dsm5DrjIDsg4EiOiAwLjAwNDUsICIxNTDsnbjsnbTsg4FfMTAwMOyduOuvuOunjCI6IDAuMDA2NSwgIjEwMDDsnbjsnbTsg4EiOiAwLjAwODUsICLrtoDri7Tso7zssrQiOiAi7IKs7JeF7KO8IOyghOyVoSJ9LCAibm90ZSI6ICLsi6Tsl4XquInsl6zrtoTrp4wg64W47IKsIOqwgSAxLzIg67aA64u0LiDqs6DsmqnslYjsoJXCt+yngeyXheuKpeugpeqwnOuwnOu2hOydgCDsgqzsl4Xso7wg7KCE7JWhLiIsICJzb3VyY2UiOiAi6rOg7Jqp67O07ZeYIOuwjyDsgrDsnqzrs7Ttl5jro4zsp5XsiJjrspUgLyDqs6Dsmqnrhbjrj5nrtoAiLCAiMjAyNl/rs4Dqsr3qs6Dsi5wiOiAiMjAyNuuFhCDsi6Tsl4XquInsl6wg67O07ZeY66OM7JyoIDEuOCUg64+Z6rKwKOq3vOuhnOyekCAwLjklKSDigJQg7ZmV7J24IDIwMjYtMTAtMDQiLCAi64uk7J2M7ZW0X+yYiOyglSI6ICIyMDI364WEIDEuOCXihpIyLjAlIOyduOyDgSDsoJXrtoDslYgoMjAyNi0wOS0wMSDrsJztkZwpLiDtmZXsoJUg6rOg7Iuc65CY66m0IOqwseyLoC4ifSwgIuyCsOyerOuztO2XmCI6IHsi67aA64u07KO87LK0IjogIuyCrOyXheyjvCDsoITslaEiLCAibm90ZSI6ICLsl4XsooXrs4Qg7IOB7J20LiDqt7zroZzsnpAg7Iuk7IiY66C57JWh7JeQ64qUIOyYge2WpSDsl4bsnYwuIn0sICLstZzsoIDsnoTquIgiOiB7IuyLnOq4iSI6IDEwMzIwLCAi7JuU7ZmY7IKwIjogMjE1Njg4MCwgIuq4sOykgOyLnOqwhCI6IDIwOSwgIuyghOuFhOyLnOq4iSI6IDEwMDMwLCAibm90ZSI6ICIyMDI2LTAxLTAxIOyggeyaqS4g7JeF7KKFIOq1rOu2hCDsl4bsnYwuIOyduOyDgeuloCAyLjklLiIsICJzb3VyY2UiOiAi6rOg7Jqp64W464+Z67aAIDIwMjbrhYQg7KCB7JqpIOy1nOyggOyehOq4iCDqs6Dsi5wgKOyLnOqwhOq4iSAxMCwzMjDsm5ApIiwgIuuLpOydjO2VtCI6IHsi7Jew64+EIjogMjAyNywgIuyLnOq4iSI6IDEwNzAwLCAi7JuU7ZmY7IKwIjogMjIzNjMwMCwgIuyduOyDgeuloCI6ICIzLjclIiwgIuyLnO2WiSI6ICIyMDI3LTAxLTAxIiwgInNvdXJjZSI6ICLqs6Dsmqnrhbjrj5nrtoAgMjAyN+uFhOuPhCDsoIHsmqkg7LWc7KCA7J6E6riIIOqzoOyLnCAoMjAyNi0wOC0wNSwg7Iuc6rCE6riJIDEwLDcwMOybkCkiLCAi7KO87J2YIjogIjIwMjctMDEtMDEg7JeQIOyLnOq4iS/sm5TtmZjsgrAv7KCE64WE7Iuc6riJ7J2EIOydtCDqsJLsnLzroZwg7Jiu6riw6rOgIOydtCDruJTroZ3snYQg7KeA7Jq064ukLiDsi6Tsl4XquInsl6wg7ZWY7ZWc7JWhKDgwJXg4aCnrj4Qg7ZWo6ruYIOuwlOuAkOuLpC4ifX0sICLsi6Tsl4XquInsl6wiOiB7IuyDge2VnOyVoV8x7J28IjogNjgxMDAsICLtlZjtlZzslaFf7LWc7KCA7J6E6riI67mE7JyoIjogMC44LCAi7ZWY7ZWc7JWhX+q4sOykgOyLnOqwhCI6IDgsICLqs4TsgrDrkJxf7ZWY7ZWc7JWhIjogNjYwNDgsICLtj4nqt6DsnoTquIhf7KeA6riJ66WgIjogMC42LCAi7KO87J2YIjogIjIwMjYtMDEtMDEg7J207ZuEIOydtOyngeyekDog7IOB7ZWc7JWhIDHsnbwgNjgsMTAw7JuQKOyehOq4iOydvOyVoSDsg4HtlZwgMTEzLDUwMOybkMOXNjAlLCAyMDE564WEIDY2LDAwMOybkCDsnbTtm4QgN+uFhCDrp4wg7J247IOBKSwg7ZWY7ZWc7JWhIDY2LDA0OOybkCjstZzsoIDsnoTquIggMTAsMzIww5c4MCXDlzhoKS4g7ZmV7J24IDIwMjYtMTAtMDQuIiwgIuyGjOygleq4ieyXrOydvOyImCI6IHsiNTDshLjrr7jrp4wiOiB7IjHrhYTrr7jrp4wiOiAxMjAsICIxfjPrhYQiOiAxNTAsICIzfjXrhYQiOiAxODAsICI1fjEw64WEIjogMjEwLCAiMTDrhYTsnbTsg4EiOiAyNDB9LCAiNTDshLjsnbTsg4Ff7J6l7JWg7J24IjogeyIx64WE66+466eMIjogMTIwLCAiMX4z64WEIjogMTgwLCAiM34164WEIjogMjEwLCAiNX4xMOuFhCI6IDI0MCwgIjEw64WE7J207IOBIjogMjcwfX0sICJzb3VyY2UiOiAi6rOg7Jqp64W464+Z67aAIC8g6rOg7Jqp67O07ZeY67KVIiwgIuyehOq4iOydvOyVoV/sg4HtlZwiOiAxMTM1MDAsICLsg4HtlZzslaFf7J207KCEIjogNjYwMDB9LCAi6re866Gc6riw7KSAIjogeyLsm5TshozsoJXqt7zroZzsi5zqsIQiOiAyMDksICLso7zshozsoJXqt7zroZzsi5zqsIQiOiA0MCwgIjHsnbzshozsoJXqt7zroZzsi5zqsIQiOiA4LCAi7Jew7LCoXzHrhYTrr7jrp4xf7LWc64yAIjogMTEsICLsl7DssKhf6riw67O4IjogMTUsICLsl7DssKhf7LWc64yAIjogMjUsICLtj4lf7KCc6rOx66+47YSwIjogMy4zMDU3ODUsICJzb3VyY2UiOiAi6re866Gc6riw7KSA67KVIOygnDYw7KGwIOuTsSJ9LCAi67O07Jyg7IS4IjogeyJf7Lac7LKYIjogIuyngOuwqeyEuOuylSDsoJwxMTHsobAo7J6s7IKw7IS4IOyEuOycqCksIOygnDExMuyhsCjrj4Tsi5zsp4Dsl63rtoQpLCDsp4DrsKnshLjrspXsi5ztlonroLkg7KCcMTA57KGwKOqzteygleyLnOyepeqwgOyVoeu5hOycqCksIOyihe2Vqeu2gOuPmeyCsOyEuOuylSDsoJw4wrc57KGwLiAyMDI264WEIOq4sOykgC4g7IS47JyowrfruYTsnKjsnYAg66ek64WEIOuwlOuAlCDsiJgg7J6I7Jy864uIIO2ZleyduOydvCDsnbTtm4Tsl5DripQg7J6s7ZmV7J247ZWgIOqygy4iLCAiX+2ZleyduOydvCI6ICIyMDI2LTEwLTA0IiwgIuyerOyCsOyEuCI6IHsi6rO17KCV7Iuc7J6l6rCA7JWh67mE7JyoIjogMC42LCAi6rO17KCV7Iuc7J6l6rCA7JWh67mE7JyoXzHshLjrjIAx7KO87YOdIjogMC40MywgIu2RnOykgOyEuOycqCI6IFtbNjAwMDAwMDAsIDAuMDAxLCAwXSwgWzE1MDAwMDAwMCwgMC4wMDE1LCAzMDAwMF0sIFszMDAwMDAwMDAsIDAuMDAyNSwgMTgwMDAwXSwgW251bGwsIDAuMDA0LCA2MzAwMDBdXSwgIu2KueuhgOyEuOycqF8x7IS464yAMeyjvO2DnV857Ja17J207ZWYIjogW1s2MDAwMDAwMCwgMC4wMDA1LCAwXSwgWzE1MDAwMDAwMCwgMC4wMDEsIDMwMDAwXSwgWzMwMDAwMDAwMCwgMC4wMDIsIDE4MDAwMF0sIFtudWxsLCAwLjAwMzUsIDYzMDAwMF1dLCAi64+E7Iuc7KeA7Jet67aE7IS47JyoIjogMC4wMDE0LCAi7KeA67Cp6rWQ7Jyh7IS47JyoIjogMC4yLCAi6rO17KCV7Iuc7J6l6rCA7JWh67mE7JyoXzHshLjrjIAx7KO87YOdX+q1rOqwhCI6IFtbMzAwMDAwMDAwLCAwLjQzXSwgWzYwMDAwMDAwMCwgMC40NF0sIFtudWxsLCAwLjQ1XV0sICJfMeyjvO2Dneu5hOycqF/so7wiOiAiMeyEuOuMgDHso7ztg50g6rO17KCV7Iuc7J6l6rCA7JWh67mE7JyoIO2KueuhgCDigJQg6rO17IucIDPslrUg7J207ZWYIDQzJcK3NuyWtSDsnbTtlZggNDQlwrc27Ja1IOy0iOqzvCA0NSUoMjAyNuuFhOuPhCAyMDI164WE6rO8IOuPmeydvCDsnKDsp4AsIOyngOuwqeyEuOuylSDsi5ztlonroLkpLiDtmZXsnbggMjAyNi0xMC0wNC4ifSwgIuyihe2Vqeu2gOuPmeyCsOyEuCI6IHsi6rO17KCcXzHshLjrjIAx7KO87YOdIjogMTIwMDAwMDAwMCwgIuqzteygnF/qt7jsmbgiOiA5MDAwMDAwMDAsICLqs7XsoJXsi5zsnqXqsIDslaHruYTsnKgiOiAwLjYsICLshLjsnKhfMuyjvO2DneydtO2VmCI6IFtbMzAwMDAwMDAwLCAwLjAwNSwgMF0sIFs2MDAwMDAwMDAsIDAuMDA3LCA2MDAwMDBdLCBbMTIwMDAwMDAwMCwgMC4wMSwgMjQwMDAwMF0sIFsyNTAwMDAwMDAwLCAwLjAxMywgNjAwMDAwMF0sIFs1MDAwMDAwMDAwLCAwLjAxNSwgMTEwMDAwMDBdLCBbOTQwMDAwMDAwMCwgMC4wMiwgMzYwMDAwMDBdLCBbbnVsbCwgMC4wMjcsIDEwMTgwMDAwMF1dLCAi64aN7Ja07LSM7Yq567OE7IS47JyoIjogMC4yfSwgIu2YhOyLpO2ZlOycqF/stpTsoJUiOiAwLjY5LCAiX+yEuOycqO2RnOyEpOuqhSI6ICJb6rWs6rCE7IOB7ZWcLCDshLjsnKgsIOuIhOynhOqzteygnF0uIOyEuOyVoSA9IOqzvOyEuO2RnOykgCDDlyDshLjsnKgg4oiSIOuIhOynhOqzteygnC4g64iE7KCB7IS47JWh7J20IOyVhOuLiOuLpC4ifSwgIuuMgOy2nOq3nOygnCI6IHsiX+y2nOyymCI6ICLquIjsnLXsnITsm5DtmowgM+uLqOqzhCDsiqTtirjroIjsiqQgRFNSKDIwMjUtMDcpwrc2wrcyNyDqsIDqs4TrtoDssYQg6rSA66asIOqwle2ZlOuwqeyViMK3MTDCtzE1IOyjvO2DneyLnOyepSDslYjsoJXtmZQg64yA7LGFKDIwMjUtMTAtMTUpLCDsp4DrsKkg7KO864u064yAIDLri6jqs4Qg7Jyg7KeAKDIwMjYg7ZWY67CY6riwKSDigJQg7J2A7ZaJ7Jew7ZWp7ZqMwrfquIjsnLXsnIQg67O064+EIOq4sOykgC4gRFNSIOydgO2WiSA0MCXCt+ygnDLquIjsnLXqtowgNTAlLiIsICJf7ZmV7J247J28IjogIjIwMjYtMTAtMDQiLCAiRFNS7ZWc64+EIjogeyLsnYDtlokiOiAwLjQsICLsoJwy6riI7Jy16raMIjogMC41fSwgIuyKpO2KuOugiOyKpOq4iOumrCI6IDMuMCwgIl/siqTtirjroIjsiqTquIjrpqxf7KO8IjogIijsmJsg7YKkKSDsg4gg7L2U65Oc64qUIOyKpO2KuOugiOyKpOq4iOumrF/so7zri7TrjIAg66W8IOyTtOuLpC4g7KeA67CpIOyjvOuLtOuMgCAwLjc1JXAoMuuLqOqzhCnripQgMjAyNuuFhCDtlZjrsJjquLDsl5Drj4Qg7Jyg7KeAIOKAlCDtmZXsnbggMjAyNi0xMC0wNC4iLCAi7Iqk7Yq466CI7Iqk7KCB7Jqp67mE7JyoIjogW1s1LCAwLjhdLCBbOSwgMC42XSwgWzE1LCAwLjRdLCBbbnVsbCwgMC4yXV0sICJMVFYiOiB7Iuu5hOq3nOygnOyngOyXrSI6IDAuNywgIuq3nOygnOyngOyXrSI6IDAuNCwgIuyDneyVoOy1nOy0iCI6IDAuOCwgIuyDneyVoOy1nOy0iF/siJjrj4Tqtozqt5zsoJwiOiAwLjcsICJf7KO8IjogIuq3nOygnOyngOyXrSA0MCUsIOu5hOq3nOygnCA3MCUsIOyDneyVoOy1nOy0iCA4MCUo7IiY64+E6raMwrfqt5zsoJzsp4Dsl63snYAgNsK3Mjcg7J207ZuEIDcwJSkifSwgIl9MVFZf7KO8IjogIuuMgO2RnOqwkuydtOuLpC4g7Yis6riw6rO87Je07KeA6rWswrfsobDsoJXrjIDsg4Hsp4Dsl60g7KeA7KCVIO2YhO2ZqSwg7KO87YOdIOyImCwg66y07KO87YOdIOyXrOu2gCwg7IOd7JWg7LWc7LSIIOyXrOu2gOyXkCDrlLDrnbwg64us65287KeE64ukLiDsi6TsoJwg7ZWc64+E64qUIOq4iOycte2ajOyCrOyXkOyEnCDtmZXsnbjtlbTslbwg7ZWc64ukLiIsICLsi6DsmqnrjIDstpxfRFNS7IKw7KCV66eM6riwIjogNSwgIl/si6DsmqnrjIDstpxf7KO8IjogIkRTUiDqs4TsgrAg7IucIOyLoOyaqeuMgOy2nOydgCDsi6TsoJwg66eM6riw6rCAIOyVhOuLiOudvCDqt5zsoJzsg4Eg66eM6riwKDXrhYQp66GcIOybkOumrOq4iOydhCDtmZjsgrDtlZzri6QuIiwgIuyKpO2KuOugiOyKpOq4iOumrF/so7zri7TrjIAiOiB7IuyImOuPhOq2jMK36rec7KCc7KeA7JetIjogMy4wLCAi7KeA67CpIjogMC43NSwgIl/so7wiOiAiMTDCtzE1IOuMgOyxhSgyMDI1LTEwLTE2IOqzhOyVveu2hH4pIOyImOuPhOq2jMK36rec7KCc7KeA7JetIOyjvOuLtOuMgCDsiqTtirjroIjsiqQg6riI66asIO2VmO2VnCAxLjXihpIzLjAlcC4g7KeA67CpKOu5hOq3nOygnCkg7KO864u064yA64qUIDLri6jqs4QoMS41JXDDlzUwJT0wLjc1JXAp66W8IDIwMjbrhYQg7ZWY67CY6riw7JeQ64+EIOycoOyngC4g6riI66as7Jyg7ZiV67OEIOuwmOyYgeu5hOycqCjsiqTtirjroIjsiqTsoIHsmqnruYTsnKgp7J2EIOqzse2VnOuLpC4ifSwgIuyjvOuLtOuMgO2VnOuPhF/siJjrj4Tqtozqt5zsoJwiOiBbWzE1MDAwMDAwMDAsIDYwMDAwMDAwMF0sIFsyNTAwMDAwMDAwLCA0MDAwMDAwMDBdLCBbbnVsbCwgMjAwMDAwMDAwXV0sICJf7KO864u064yA7ZWc64+EX+yjvCI6ICLsiJjrj4TqtozCt+q3nOygnOyngOyXrSDso7ztg53ri7Trs7TrjIDstpwg7LWc64yAIO2VnOuPhCDigJQg7Iuc6rCAIDE17Ja1IOydtO2VmCA27Ja1KDbCtzI3KSwgMTXslrUg7LSI6rO8fjI17Ja1IDTslrUsIDI17Ja1IOy0iOqzvCAy7Ja1KDEwwrcxNSkiLCAi6rec7KCc7KeA7JetXzEwMTUiOiB7Il/stpzsspgiOiAiMjAyNS0xMC0xNSDso7ztg53si5zsnqUg7JWI7KCV7ZmUIOuMgOyxhSjqta3thqDrtoDCt+q4iOycteychCkg4oCUIOyEnOyauCAyNeqwnCDqtawg7KCE7JetLCDqsr3quLAgMTLqs7Mo6rO87LKcwrfqtJHrqoXCt+yEseuCqCDrtoTri7nCt+yImOyglcK37KSR7JuQwrfsiJjsm5Ag7JiB7Ya1wrfsnqXslYjCt+2MlOuLrMK37JWI7JaRIOuPmeyViMK37Jqp7J24IOyImOyngMK37J2Y7JmVwrftlZjrgqgpIO2IrOq4sOqzvOyXtOyngOq1rMK37KGw7KCV64yA7IOB7KeA7JetLiDsi5wg64uo7JyE66GcIOyggeuKlOuLpCjqtawg64uo7JyEIOyYiOyZuCDsnojsnYwpLiIsICLshJzsmrgiOiB0cnVlLCAi6rK96riwX+yLnCI6IFsi6rO87LKc7IucIiwgIuq0keuqheyLnCIsICLshLHrgqjsi5wiLCAi7IiY7JuQ7IucIiwgIuyViOyWkeyLnCIsICLsmqnsnbjsi5wiLCAi7J2Y7JmV7IucIiwgIu2VmOuCqOyLnCJdfX0sICLst6jrk53shLgiOiB7Il/stpzsspgiOiAi7KeA67Cp7IS467KVIOygnDEx7KGwKOu2gOuPmeyCsCDst6jrk53shLjsnKgpwrfsoJwxM+yhsOydmDIo7KSR6rO8KcK37KCcMTUx7KGwKOyngOuwqeq1kOycoeyEuCksIOuGjeyWtOy0jO2KueuzhOyEuOuylS4g7KO87YOdIOycoOyDgeqxsOuemCDquLDspIAuIDIwMjbrhYQuIOyEuOycqMK36rCQ66m07J2AIOyekOyjvCDrsJTrgIzrr4DroZwg7ZmV7J247J28IOydtO2bhCDsnqztmZXsnbjtlaAg6rKDLiIsICJf7ZmV7J247J28IjogIjIwMjYtMDktMjEiLCAi6riw67O4IjogeyLtlZjtlZzqsIDslaEiOiA2MDAwMDAwMDAsICLsg4HtlZzqsIDslaEiOiA5MDAwMDAwMDAsICLquLDspIDslaEiOiAzMDAwMDAwMDAsICLtlZjtlZzshLjsnKgiOiAxLjAsICLsg4HtlZzshLjsnKgiOiAzLjAsICJf7IKw7IudIjogIuyEuOycqCglKSA9IOy3qOuTneqwgOyVoSDDlyAyIMO3IOq4sOykgOyVoSgz7Ja1KSDiiJIgMyJ9LCAi7KSR6rO8IjogeyI47Y287IS87Yq4IjogOC4wLCAiMTLtjbzshLztirgiOiAxMi4wfSwgIuyngOuwqeq1kOycoeyEuF/quLDrs7jrsLDsnKgiOiAwLjEsICLsp4DrsKnqtZDsnKHshLhf7KSR6rO8IjogMC40LCAi64aN7Yq57IS4IjogeyLquLDrs7giOiAwLjIsICLspJHqs7w4IjogMC42LCAi7KSR6rO8MTIiOiAxLjAsICLrqbTsoJzrqbTsoIEiOiA4NX0sICLsg53slaDstZzstIjqsJDrqbQiOiB7Iu2VnOuPhOqwgOyVoSI6IDEyMDAwMDAwMDAsICLstZzrjIDqsJDrqbTslaEiOiAyMDAwMDAwfSwgIl/so7zsnZgiOiAi7KGw7KCV64yA7IOB7KeA7JetIOyngOyglSDtmITtmansnYAg7IiY7Iuc66GcIOuwlOuAkOuLpC4g7J20IOqzhOyCsOq4sOuKlCAn7KGw7KCV64yA7IOB7KeA7Jet7J247KeAJ+ulvCDsnbTsmqnsnpDqsIAg7KeB7KCRIOqzoOultOqyjCDtlZzri6QuIOyngOyXrSDrqqnroZ3snYQg64K07J6l7ZWY66m0IOuwmOuTnOyLnCDti4DrprDri6QuIn0sICLspJHqsJzrs7TsiJgiOiB7Il/stpzsspgiOiAi6rO17J247KSR6rCc7IKs67KVIOyLnO2Wieq3nOy5mSDsoJwyMOyhsMK3W+uzhO2RnCAxXSjso7ztg50g7KSR6rCc67O07IiYIOyDge2VnOyalOycqCwgMjAyMS0xMC0xOSDsi5ztlokpIOKAlCDsi5zCt+uPhCDsobDroYDroZwg7KCV7ZWY66mwIOyghCDsi5zCt+uPhOqwgCDqsJnsnYAg7ZGc66W8IOyTtOuLpC4g7KO87YOdIOyZuCjsmKTtlLzsiqTthZQpIOygnDIw7KGw7KCcNO2VrS4iLCAiX+2ZleyduOydvCI6ICIyMDI2LTEwLTA0IiwgIuunpOunpCI6IFtbNTAwMDAwMDAsIDAuNiwgMjUwMDAwXSwgWzIwMDAwMDAwMCwgMC41LCA4MDAwMDBdLCBbOTAwMDAwMDAwLCAwLjQsIG51bGxdLCBbMTIwMDAwMDAwMCwgMC41LCBudWxsXSwgWzE1MDAwMDAwMDAsIDAuNiwgbnVsbF0sIFtudWxsLCAwLjcsIG51bGxdXSwgIuyehOuMgCI6IFtbNTAwMDAwMDAsIDAuNSwgMjAwMDAwXSwgWzEwMDAwMDAwMCwgMC40LCAzMDAwMDBdLCBbNjAwMDAwMDAwLCAwLjMsIG51bGxdLCBbMTIwMDAwMDAwMCwgMC40LCBudWxsXSwgWzE1MDAwMDAwMDAsIDAuNSwgbnVsbF0sIFtudWxsLCAwLjYsIG51bGxdXSwgIl/qtazqsITshKTrqoUiOiAiW+ydtCDquIjslaEg66+466eMLCDsg4HtlZzsmpTsnKgoJSksIO2VnOuPhOyVoSjsm5ApXSDigJQg66eI7KeA66eJIOykhOydgCDqt7gg7J207IOBIOyghOu2gCIsICLsmKTtlLzsiqTthZQiOiB7IuunpOunpCI6IDAuNSwgIuyehOuMgCI6IDAuNCwgIl/sobDqsbQiOiAi7KCE7JqpIDg1446hIOydtO2VmCArIOyghOyaqSDsnoXsi50g67aA7JeMwrfsiJjshLjsi50g7ZmU7J6l7IukwrfrqqnsmpXsi5zshKQiLCAi6re47Jm4IjogMC45fSwgIuyblOyEuO2ZmOyCsCI6IHsi67Cw7IiYIjogMTAwLCAi7IaM7JWh67Cw7IiYIjogNzAsICLshozslaHquLDspIAiOiA1MDAwMDAwMCwgIl/qt5zsuZkiOiAi6rGw656Y6riI7JWhID0g67O07Kad6riIICsg7JuU7IS4IMOXIDEwMC4g7J20IO2VqeydtCA17LKc66eM7JuQIOuvuOunjOydtOuptCDrs7Tspp3quIggKyDsm5TshLggw5cgNzAifSwgIuu2gOqwgOyEuCI6IHsi7J2867CY6rO87IS4IjogMTB9fSwgIuyyreyVveyYiOy5mOq4iCI6IHsiX+y2nOyymCI6ICLso7ztg53qs7XquInsl5Ag6rSA7ZWcIOq3nOy5mSDsoJw57KGwwrdb67OE7ZGcIDJdIOuvvOyYgeyjvO2DnSDssq3slb0g7JiI7LmY6riw7KSA6riI7JWhLiDsp4Dsl63snYAg7LKt7JW9IOyLoOyyreyekOydmCDso7zrr7zrk7HroZ3tkZzsg4Eg6rGw7KO87KeAIOq4sOykgCwg7J6F7KO87J6Q66qo7KeR6rO16rOg7J28IO2YhOyerCDsmIjsuZjquIguIiwgIl/tmZXsnbjsnbwiOiAiMjAyNi0xMC0wNCIsICLsp4Dsl60iOiBbIuyEnOyauMK367aA7IKwIiwgIuq3uCDrsJbsnZgg6rSR7Jet7IucIiwgIuq3uCDsmbgg7IucwrfqtbAiXSwgIuuptOyggSI6IFsiODXjjqEg7J207ZWYIiwgIjEwMuOOoSDsnbTtlZgiLCAiMTM1446hIOydtO2VmCIsICLrqqjrk6Ag66m07KCBIl0sICLquIjslaHrp4zsm5AiOiBbWzMwMCwgNjAwLCAxMDAwLCAxNTAwXSwgWzI1MCwgNDAwLCA3MDAsIDEwMDBdLCBbMjAwLCAzMDAsIDQwMCwgNTAwXV0sICLqsIDsnoXquLDqsITqsJzsm5QiOiB7Iu2IrOq4sOqzvOyXtOyngOq1rMK37LKt7JW96rO87Je07KeA7JetIjogMjQsICLsiJjrj4Tqtowo6re4IOyZuCkiOiAxMiwgIuyImOuPhOq2jCDrsJYo6re4IOyZuCkiOiA2LCAiX+yjvCI6ICLsiJjrj4TqtowgMTLqsJzsm5TCt+yImOuPhOq2jCDrsJYgNuqwnOyblOydgCDsi5zCt+uPhOyngOyCrOqwgCDqsIHqsIEgMjTqsJzsm5TCtzEy6rCc7JuU6rmM7KeAIOuKmOumtCDsiJgg7J6I64ukIn19LCAi7Yq56rO17IaM65Od6riw7KSAIjogeyJf7Lac7LKYIjogIuyyreyVve2ZiCAn7Yq567OE6rO16riJIOyGjOqwnCco7Iug7Zi867aA67aAwrfsg53slaDstZzstIjCt+yLoOyDneyVhCDrr7zsmIHso7ztg50g7IaM65Od6riw7KSA7ZGcLCAyMDI164WE64+EIOuPhOyLnOq3vOuhnOyekCDqsIDqtazsm5DsiJjrs4Qg7JuU7Y+J6reg7IaM65OdIOq4sOykgCkgwrcgTEgg6rO16rO167aE7JaRKOydvOuwmCkg7JWI64K0ICfrj4Tsi5zqt7zroZzsnpAg6rCA6rWs7JuQ7IiY67OEIOyblO2Pieq3oOyGjOuTnSgyMDI264WE64+EIOyggeyaqSDquLDspIApJyDigJQg65GQIOqzsyDquIjslaEg7J287LmYIO2ZleyduC4iLCAiX+2ZleyduOydvCI6ICIyMDI2LTEwLTA2IiwgIuyggeyaqSI6ICIyMDI264WE64+EIOyggeyaqSgyMDI164WE64+EIOuPhOyLnOq3vOuhnOyekCDqsIDqtazsm5DsiJjrs4Qg7JuU7Y+J6reg7IaM65OdKSIsICLqsIDqtazsm5AiOiBbIjPsnbgg7J207ZWYIiwgIjTsnbgiLCAiNeyduCIsICI27J24IiwgIjfsnbgiLCAiOOyduCJdLCAi7JuU7Y+J6reg7IaM65OdIjogWzc1MzM3NjMsIDg4MDIyMDIsIDkzMjY5ODUsIDk5MDYyNjMsIDEwNDg1NTQxLCAxMTA2NDgxOV0sICLrtoDrj5nsgrDqsIDslaHsg4HtlZwiOiAzMzEwMDAwMDAsICLrr7zsmIEiOiB7IuyLoO2YvOu2gOu2gCI6IHsi7Jqw7ISgIjogWzEwMCwgMTIwXSwgIuydvOuwmCI6IFsxNDAsIDE2MF0sICLruYTspJEiOiAi7Jqw7ISgIDUwJSDCtyDsnbzrsJggMjAlIMK3IOy2lOyyqCAzMCUifSwgIuyDneyVoOy1nOy0iCI6IHsi7Jqw7ISgIjogWzEzMCwgMTMwXSwgIuydvOuwmCI6IFsxNjAsIDE2MF0sICLruYTspJEiOiAi7Jqw7ISgIDUwJSDCtyDsnbzrsJggMjAlIMK3IOy2lOyyqCAzMCUifSwgIuyLoOyDneyVhCI6IHsi7Jqw7ISgIjogWzEzMCwgMTMwXSwgIuydvOuwmCI6IFsxNjAsIDE2MF0sICLruYTspJEiOiAi7Jqw7ISgIDUwJSDCtyDsnbzrsJggMjAlIMK3IOy2lOyyqCAzMCUifX0sICJf7KO8IjogIlvsmbjrsozsnbQsIOunnuuyjOydtCjrtoDrtoAg66qo65GQIOyGjOuTnSldIOu5hOycqCglKS4g7IOd7JWg7LWc7LSIwrfsi6Dsg53slYQg66+87JiB7J2AIOunnuuyjOydtCDqtazrtoQg7JeG7J2MLiDstpTssqjqs7XquInsnYAg7J2867CY6rO16riJIOyDge2VnCDstIjqs7zsl6zrj4Qg67aA64+Z7IKw6rCA7JWhIDPslrUgMywxMDDrp4zsm5Ag7J207ZWY66m0IOyLoOyyrS4g7IOd7JWg7LWc7LSIIDHsnbjqsIDqtazripQg7LaU7LKo6rO16riJ66eMKDE2MCUg7J207ZWYIOuYkOuKlCDrtoDrj5nsgrDqsIDslaEgM+yWtSAzLDEwMOunjOybkCDsnbTtlZgpLiA27J24IOydtOyDgSDquIjslaHsnYAg7LKt7JW97ZmI7J20ICfqs7Xqs6DrrLgg7ZmV7J24J+ycvOuhnCDrkZTri6QoTEgg6riw7KSA7ZGcIOq4iOyVoSDsgqzsmqkpLiJ9LCAi7LKt7JW97Ya17J6lIjogeyJf7Lac7LKYIjogIuyjvO2Dneqzteq4ieyXkCDqtIDtlZwg6rec7LmZIOygnDI37KGwKOq1reuvvOyjvO2DnSDsnbzrsJjqs7XquIkgMeyInOychMK37ISg7KCVIOyInOywqCnCt+ygnDI47KGwKOuvvOyYgeyjvO2DnSkgwrcg67KV7KCc7LKYIOyDne2ZnOuyleuguSAn7JWE7YyM7Yq4IOu2hOyWkeuwm+q4sCA+IOydvOuwmOqzteq4iSco7KCcMjfsobAg7KCcMcK3Mu2VrSkgwrcg67KV7KCc7LKYIOqzteyngCAn7JuU64Kp7J6F6riIIOyduOygleyVoSAxMOunjOKGkjI166eM7JuQIOyDge2WpSgyMDI0LTExLTAxIOyLnO2WiSknIMK3IExI7LKt7JW97ZSM65+s7IqkIOu2hOyWkeqwgOydtOuTnCIsICJf7ZmV7J247J28IjogIjIwMjYtMTAtMDgiLCAi7KeA7JetIjogWyLtiKzquLDqs7zsl7Tsp4DqtazCt+yyreyVveqzvOyXtOyngOyXrSIsICLsiJjrj4Tqtowo6re4IOyZuCkiLCAi7IiY64+E6raMIOuwlijqt7gg7Jm4KSIsICLsnITstpXsp4Dsl60iXSwgIjHsiJzsnIRf6rCc7JuUIjogWzI0LCAxMiwgNiwgMV0sICIx7Iic7JyEX+2ajOywqCI6IFsyNCwgMTIsIDYsIDFdLCAi7Iuc64+E7KeA7IKsX+yXsOyepV/stZzrjIAiOiBbMjQsIDI0XSwgIuyblOuCqeyehV/rspTsnIQiOiBbMjAwMDAsIDUwMDAwMF0sICLsnbjsoJXsg4HtlZxf7J207KCEIjogMTAwMDAwLCAi7J247KCV7IOB7ZWcX+ydtO2bhCI6IDI1MDAwMCwgIuyduOygleyDge2VnF/quLDspIDsnbwiOiAiMjAyNC0xMS0wMSIsICJf7KO8IjogIu2IrOq4sOqzvOyXtOyngOq1rMK37LKt7JW96rO87Je07KeA7JetIDHsiJzsnITripQg7IS464yA7KO87J206rOgIOustOyjvO2DneyEuOuMgOq1rOyEseybkCDsoITsm5DsnbQgNeuFhCDslYjsl5Ag64uk66W4IOyjvO2DnSDri7nssqjsnbQg7JeG7Ja07JW8IO2VnOuLpC4g7Iucwrfrj4Tsp4DsgqzqsIAg7IiY64+E6raMKOq3uCDsmbgpIOyalOqxtOydhCAyNOqwnOyblMK3MjTtmozquYzsp4AsIOyImOuPhOq2jCDrsJYg7JqU6rG07J2EIDEy6rCc7JuUwrcxMu2ajOq5jOyngCDripjrprQg7IiYIOyeiOuLpC4g7KCA7LaV7LSd7JWh7J2AIO2ajOywqOuniOuLpCDsnbjsoJXsg4HtlZwo7JW97KCV64Kp7J6F7J28IDIwMjQtMTAtMzEg7J207KCEIO2ajOywqCAxMOunjOybkCwg7J207ZuEIDI166eM7JuQKeq5jOyngOunjCDrjZTtlZzri6QuIOyEoOuCqcK37Jew7LK064qUIO2ajOywqCDsnbjsoJXsnbQg64us65287KeA66+A66GcIOyXrOq4sOyEnOuKlCDrp6Tri6wg7JW97KCV7J287JeQIOuCuCDqsoPsnLzroZwg6rCA7KCV7ZWc64ukLiJ9LCAi7Yq56rO17J6Q6rKpIjogeyJf7Lac7LKYIjogIuyyreyVve2ZiCAn7Yq567OE6rO16riJIOyGjOqwnCco7Iug7Zi867aA67aAwrfsg53slaDstZzstIjCt+yLoOyDneyVhMK364uk7J6Q64WA6rCA6rWswrfrhbjrtoDrqqjrtoDslpEsIOuvvOyYgeyjvO2DnSDtg60pIMK3IOuyleygnOyymCDsg53tmZzrspXroLkgJ+2KueuzhOqzteq4iSco7KO87YOd6rO16riJ7JeQIOq0gO2VnCDqt5zsuZkg7KCcNDHsobAg65OxKSDigJQgMjAyNi0xMC0wOCDrjIDsobAiLCAiX+2ZleyduOydvCI6ICIyMDI2LTEwLTA4IiwgIuyLoO2YvOu2gOu2gF/tmLzsnbjquLDqsIRf64WEIjogNywgIu2KueqztV/thrXsnqVf6rCc7JuUIjogNiwgIuuLpOyekOuFgF/rr7jshLHrhYTsnpDrhYBf66qFIjogMiwgIuuFuOu2gOuqqF/sl7DroLkiOiA2NSwgIuuFuOu2gOuqqF/rtoDslpFf64WEIjogMywgIuyDneyVoOy1nOy0iF/shozrk53shLhf64WEIjogNSwgIuyLoOyDneyVhF/snpDrhYBf7IS4IjogMiwgIl/so7wiOiAi66+87JiB7KO87YOdIOq4sOykgC4g7Iug7Zi867aA67aAwrfri6TsnpDrhYDripQg7Ya17J6lIOqwgOyehSA26rCc7JuUK+yYiOy5mOq4iCwg7IOd7JWg7LWc7LSIwrfsi6Dsg53slYTCt+uFuOu2gOuqqOuKlCDsnbzrsJjqs7XquIkgMeyInOychCjsp4Dsl63rs4Qg6rCA7J6F6riw6rCEIDI0wrcxMsK3NuqwnOyblCvsmIjsuZjquIgsIOq3nOygnOyngOyXreydgCDshLjrjIDso7zCtzXrhYQg66y064u57LKoKS4g64uk7J6Q64WAwrfrhbjrtoDrqqgg66+87JiB7J2AIOyGjOuTnSDquLDspIAg7JeG7J2MLiDsi6DtmLwgMeyInOychD3tmLzsnbgg7KSRIOy2nOyCsCjsnoTsi6DCt+yeheyWkSDtj6ztlagpIOuvuOyEseuFhCDsnpDrhYAg7J6I7J2MLiDsg53slaDstZzstIggMeyduOqwgOq1rOuKlCDstpTssqjrp4wo64uo64+F7IS464yAIDYw446hIOydtO2VmCkuIOyLoOyDneyVhOuKlCA4NeOOoSDsnbTtlZjrp4wuIO2KueuzhOqzteq4iSDri7nssqjsnYAgMeyEuOuMgCDtj4nsg50gMe2ajCjrsLDsmrDsnpAg7Zi87J24IOyghCDri7nssqjsnYAg7Iug7Zi8wrfsg53slaDstZzstIjCt+yLoOyDneyVhCDsmIjsmbgpLiDqta3rr7zCt+qzteqzteyjvO2DneydgCDsmpTqsbTsnbQg64uk66W064ukKOyLoO2YvCA27IS4IOydtO2VmCDsnpDrhYAg7ZmV64yAwrfsmIjruYTsi6DtmLzCt+2VnOu2gOuqqCDtj6ztlagsIOyekOyCsOq4sOykgCDrk7EpLiJ9LCAi6rO16rO17J6E64yA7J6Q6rKpIjogeyJf7Lac7LKYIjogIuuniOydtO2ZiO2PrO2EuCDsnoXso7zsnpDqsqkg7JWI64K0KOq1reuvvOyehOuMgMK37ZaJ67O17KO87YOdwrfthrXtlanqs7Xqs7XsnoTrjIDCt+unpOyeheyehOuMgCwgMjAyNuuFhOuPhCDsoIHsmqnquLDspIApIMK3IExIIOyyreyVve2UjOufrOyKpCDsnoTrjIDqsIDsnbTrk5wg7J6F7KO87J6Q6rKpIMK3IExIIDIwMjYg6rO16rOg66y4KOydteyCsCDtlonrs7Xso7ztg50gMTAvMiwg6rO87LKcIFMxMiDtlonrs7Xso7ztg50gMTAvMjgsIOyCvOyymeygleyEoCDqta3rr7zsnoTrjIAgNi8xMCwg6rmA7KCc6rKA7IKwIOyYgeq1rOyehOuMgCAxMC8yNiwg7KCE67aBIOyLoO2YvOKFoSDrp6TsnoXsnoTrjIAsIOyyreuFhCDsoITshLjsnoTrjIAgMi8yNCkgwrcg6rWt7Yag6rWQ7Ya167aA6rOg7IucIOygnDIwMjYtMjkz7Zi4IOqzteqzteyjvO2DnSDsnoXso7zsnpAg67O07JygIOyekOyCsCDqtIDroKgg7JeF66y07LKY66as6riw7KSAKOyCsOyLnSkgwrcg67O06rG067O17KeA67aAIDIwMjbrhYQg6riw7KSAIOykkeychOyGjOuTnSjqs6Dsi5wg7KCcMjAyNS0xMzXtmLgpIMK3IOqzteqzteyjvO2DnSDtirnrs4TrspUg7Iuc7ZaJ6rec7LmZIOuzhO2RnCAzwrc0wrc1wrc17J2YMigyMDI2LTA2LTIyIOqwnOygleuzuCkgwrcg66ek7J6FwrfsoITshLjsnoTrjIAg7JeF66y07LKY66as7KeA7LmoKO2biOuguSDsoJwxOTgz7Zi4wrfsoJwxOTE27Zi4KSIsICJf7ZmV7J247J28IjogIjIwMjYtMTEtMTAiLCAiX+yjvCI6ICIz7J24IOqwgOq1rCDrj4Tsi5zqt7zroZzsnpAg7JuU7Y+J6reg7IaM65Od7J2AIOy2nOyymOyXkCDrlLDrnbwgNyw1MzMsNzYz7JuQKOyyreyVve2ZiCDtirnqs7Ug7ZGcICcz7J24IOydtO2VmCcp6rO8IDgsMTY4LDQyOeybkCjqs7Xqs7XsnoTrjIAgMjAyNiDsoIHsmqntkZwp7J20IO2VqOq7mCDsk7DsnbTripTrjbAsIDIwMjbrhYQgTEgg7ZaJ67O17KO87YOdwrfqta3rr7zsnoTrjIAg6rO16rOg66y47J20IDgsMTY4LDQyOeybkOydhCDsk7DripQg6rKD7J2EIO2ZleyduO2VtCDqs7Xqs7XsnoTrjIDripQg7J20IOqwkuycvOuhnCDthrXsnbwoMjAyNi0xMS0xMCkuIOq4sOykgOyEoCDCsTglIOyViOydtOuptCAn6rO16rOg66y4IO2RnOuhnCDtmZXsnbgn7Jy866GcIOyViOuCtO2VnOuLpC4g7LSd7J6Q7IKwwrfsnpDrj5nssKgg7IOB7ZWc7J2AIOycoO2YlcK36rO16rOg7J2866eI64ukIOuLpOulvCDsiJgg7J6I64ukLiIsICLqsIDqtazsm5AiOiBbIjHsnbgiLCAiMuyduCIsICIz7J24IiwgIjTsnbgiLCAiNeyduCIsICI27J24Il0sICLrj4Tsi5zqt7zroZzsnpDsm5Ttj4nqt6Dshozrk50iOiBbMzgxMzM2MywgNTg2NjI3MCwgODE2ODQyOSwgODgwMjIwMiwgOTMyNjk4NSwgOTkwNjI2M10sICLquLDspIDspJHsnITshozrk50iOiBbMjU2NDIzOCwgNDE5OTI5MiwgNTM1OTAzNiwgNjQ5NDczOCwgNzU1NjcxOSwgODU1NTk1Ml0sICLqsIDqtazsm5DqsIDsgrBfcHAiOiB7IjHsnbgiOiAyMCwgIjLsnbgiOiAxMH0sICLsnpDrj5nssKjqsIDslaHsg4HtlZwiOiA0NTQyMDAwMCwgIuy0neyekOyCsOyDge2VnCI6IHsi7J2867CYIjogMzQ1MDAwMDAwLCAi7ZaJ67O17KO87YOdX+yyreuFhCI6IDI1MTAwMDAwMCwgIu2WieuzteyjvO2DnV/rjIDtlZnsg50iOiAxMDgwMDAwMDAsICLsmIHqtazsnoTrjIAiOiAyNDUwMDAwMDB9LCAi6rWt66+87J6E64yAIjogeyLshozrk51fcGN0IjogNzAsICLsmrDshKA1MOOOoeuvuOunjF9wY3QiOiA1MH0sICLtlonrs7Xso7ztg50iOiB7IuuMgO2VmeyDnSI6IDEwMCwgIuyyreuFhCI6IDEwMCwgIuyLoO2YvOu2gOu2gCI6IDEwMCwgIuyLoO2YvOu2gOu2gF/rp57rsozsnbQiOiAxMjAsICLqs6DroLnsnpAiOiAxMDAsICLsgrDri6jqt7zroZzsnpAiOiAxMDAsICJf6rGw7KO86riw6rCEIjogIuuMgO2VmeyDncK37LKt64WEwrfsgrDri6jqt7zroZzsnpAgMTDrhYQsIOyLoO2YvOu2gOu2gCDrrLTsnpDrhYAgMTDrhYTCt+yekOuFgCAxNOuFhCwg6rOg66C57J6Qwrfso7zqsbDquInsl6zsiJjquInsnpAgMjDrhYQifSwgIu2Gte2VqeqzteqzteyehOuMgCI6IHsi7J2867CYX+ykkeychF9wY3QiOiAxNTAsICLsmrDshKBf7KSR7JyEX3BjdCI6IDEwMH0sICLsmIHqtazsnoTrjIAiOiB7IuydvOuwmF9wY3QiOiA1MCwgIl/so7wiOiAiMeyInOychOuKlCDsg53qs4TCt+ydmOujjOq4ieyXrCDsiJjquInsnpAsIOq1reqwgOycoOqzteyekCwg7ZWc67aA66qo6rCA7KGxIOuTsSjrs4TtkZwgMyDqsIB+7J6Q66qpKS4g7J2867CYKDLsiJzsnIQpIOyLoOyyreydgCDsm5Ttj4nqt6Dshozrk50gNTAlIOydtO2VmCgx7J24IDcwJcK3MuyduCA2MCUpLiDstJ3snpDsgrAgMuyWtSA0LDUwMOunjMK37J6Q64+Z7LCoIDQsNTQy66eMKDIwMjbrhYQg7KCB7JqpIOKAlCDqs6Dsi5wg7KCcMjAyNi0yOTPtmLgg67OE7ZGcOiDshozrk50gMuu2hOychCDsiJzsnpDsgrAg7Y+J6reg6rCSOyAyMDI2LTEwLTI2IOq5gOygnOqygOyCsCDqs7Xqs6DrrLjCt+uniOydtO2ZiCDrp6TsnoXsnoTrjIAg7JWI64K0ICcyMDI264WE64+EIOyggeyaqSfroZwg7ZmV7J24LiAyMDI1IOqzteqzoOusuOydgCAy7Ja1IDMsNzAw66eMwrc0LDU2M+unjOydtOudvCDqs7Xqs6Dsnbzsl5Ag65Sw6528IOuLpOumhCkifSwgIuunpOyeheyghOyEuOyehOuMgCI6IHsi7LKt64WEXzLsiJzsnIRfcGN0IjogMTAwLCAi7LKt64WEXzPsiJzsnIRfcGN0IjogMTAwLCAi7Iug7Zi8SV9wY3QiOiA3MCwgIuyLoO2YvElf66ee67KM7J20X3BjdCI6IDkwLCAi7Iug7Zi8SUlfcGN0IjogMTMwLCAi7Iug7Zi8SUlf66ee67KM7J20X3BjdCI6IDIwMCwgIl/so7wiOiAi7LKt64WEIDHsiJzsnIQ97IiY6riJ7J6QwrftlZzrtoDrqqjCt+ywqOyDgeychCjshozrk53Ct+yekOyCsCDsi6zsgqwg7JeG7J2MKSwgMuyInOychD3rs7jsnbgr67aA66qoIOyGjOuTnSAxMDAlIOydtO2VmCjstJ3snpDsgrAg7J2867CYIOq4sOykgCksIDPsiJzsnIQ967O47J24IOyGjOuTnSAxMDAlIOydtO2VmCjtlonrs7Xso7ztg50g7LKt64WEIOyekOyCsOq4sOykgCkuIOyLoO2YvMK37Iug7IOd7JWEIEntmJUgNzAlKOunnuuyjOydtCA5MCUpwrfstJ3snpDsgrAg7J2867CYIOq4sOykgC4gSUntmJUgMTMwJSjrp57rsozsnbQgMjAwJSnCt+y0neyekOyCsCAz7Ja1IDYsMjAw66eMKOyehOuMgOydmOustOq4sOqwhCA264WEIOu2hOyWkeyghO2ZmOqzteqzteyehOuMgCDsnpDsgrDquLDspIAsIOyekOuPmeywqCDqsJzrs4Qg6riw7KSAIOyXhuydjCkg4oCUIOq4sOyhtOyjvO2DneuTsSDrp6TsnoXsnoTrjIDso7ztg50g7JeF66y07LKY66as7KeA7LmoKOq1re2GoOq1kO2Gteu2gO2biOuguSDsoJwxOTgz7Zi4LCAyMDI2LTA4LTI1IOyLnO2WiSkg7KCcMTLsobDikaDCt+q4sOyhtOyjvO2DnSDsoITshLjsnoTrjIAg7JeF66y07LKY66as7KeA7LmoKO2biOuguSDsoJwxOTE27Zi4KSDsoJw37KGw7J2YNOKRoDLtmLjCt0xIIDIwMjYg6rO16rOg66y4IDLqsbTsnLzroZwgMjAyNi0xMS0xMCDtmZXsnbgo7J207KCEIDEwMC8xMjDsnYAgTEgg7ZmI7Y6Y7J207KeAIOq1rOqwkikiLCAi7Iug7Zi8SUlf7LSd7J6Q7IKwIjogMzYyMDAwMDAwfX19OwoKZnVuY3Rpb24gY2FsYygpewoKIHZhciBQPVJbJ+qzteqzteyehOuMgOyekOqyqSddLCBoaD0rcygnaGgnKSwgaW5jPXYoJ2luYycpLCBhc3NldD12KCdhc3NldCcpLCBjYXI9dignY2FyJyk7CiB2YXIgZHVhbD1zKCdkdWFsJyk9PT0nMScsIG5vaG91c2U9cygnbm9ob3VzZScpPT09JzEnLCBncnA9cygnZ3JwJyksIHJlY2lwPXMoJ3JlY2lwJyksIHNtYWxsPXMoJ3NtYWxsJyk9PT0nMSc7CiB2YXIgdXJiPVBbJ+uPhOyLnOq3vOuhnOyekOyblO2Pieq3oOyGjOuTnSddW2hoXSwgbWVkPVBbJ+q4sOykgOykkeychOyGjOuTnSddW2hoXTsKIHZhciBhZGQ9KGhoPT09MD9QWyfqsIDqtazsm5DqsIDsgrBfcHAnXVsnMeyduCddOmhoPT09MT9QWyfqsIDqtazsm5DqsIDsgrBfcHAnXVsnMuyduCddOjApOwogdmFyIHdvbj1mdW5jdGlvbih4KXsgcmV0dXJuIE1hdGgucm91bmQoeCkudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+ybkCc7IH07CiB2YXIgcGN0PWZ1bmN0aW9uKHApeyByZXR1cm4gJ+yGjOuTnSAnK3ArJyUoJyt3b24odXJiKnAvMTAwKSsnKSc7IH07CiB2YXIgY2hrPWZ1bmN0aW9uKGxpbWl0LGxhYmVsKXsgaWYoIShpbmM+MCkpIHJldHVybiB7b2s6bnVsbCx0eHQ6bGFiZWx9OyB2YXIgcj1pbmMvbGltaXQ7IHJldHVybiB7b2s6aW5jPD1saW1pdCwgbmVhcjpNYXRoLmFicyhyLTEpPD0wLjA4LCB0eHQ6bGFiZWwrJyDsnbTtlZgnfTsgfTsKIHZhciBtaz1mdW5jdGlvbihjLGV4dHJhKXsgaWYoIW5vaG91c2UpIHJldHVybiAn4pyVIOustOyjvO2DneyEuOuMgOq1rOyEseybkOydtOyWtOyVvCDtlanri4jri6QnOyBpZihjLm9rPT09bnVsbCkgcmV0dXJuICfshozrk53snYQg64Sj7Jy866m0IO2MkOyglSDCtyAnK2MudHh0OwogICB2YXIgaGVhZD1jLm9rPyhjLm5lYXI/J+KWsyDshozrk50g7Lap7KGxKOq4sOykgOyEoCDqt7zsspgg4oCUIOqzteqzoOusuCDtkZzroZwg7ZmV7J24KSc6J+KXiyDshozrk50g7Lap7KGxJyk6KGMubmVhcj8n4pazIOyGjOuTnSDstIjqs7wo6riw7KSA7ISgIOq3vOyymCDigJQg6rO16rOg66y4IO2RnOuhnCDtmZXsnbgpJzon4pyVIOyGjOuTnSDstIjqs7wnKTsKICAgcmV0dXJuIGhlYWQrJyDCtyAnK2MudHh0KyhleHRyYXx8JycpOyB9OwogdmFyIGFjYXI9Y2FyPD1QWyfsnpDrj5nssKjqsIDslaHsg4HtlZwnXTsKIHZhciBhbGluZT1mdW5jdGlvbihsaW1pdCxub0Nhcil7IHZhciBvdXQ9W107IGlmKGFzc2V0PmxpbWl0KSBvdXQucHVzaCgn7LSd7J6Q7IKwICcrd29uKGxpbWl0KSsnIOy0iOqzvCcpOyBpZihub0NhciYmY2FyPjApIG91dC5wdXNoKCfsnpDrj5nssKgg67O07JygIOu2iOqwgCcpOyBlbHNlIGlmKCFub0NhciYmIWFjYXIpIG91dC5wdXNoKCfsnpDrj5nssKggJyt3b24oUFsn7J6Q64+Z7LCo6rCA7JWh7IOB7ZWcJ10pKycg7LSI6rO8Jyk7IHJldHVybiBvdXQubGVuZ3RoPyAnIMK3IOKclSAnK291dC5qb2luKCcsICcpIDogJyDCtyDsnpDsgrAg6riw7KSAIOyViCc7IH07CiB2YXIgb2s9MCwgbj1mdW5jdGlvbihjLGV4dHJhKXsgdmFyIHQ9bWsoYyxleHRyYSk7IGlmKG5vaG91c2UmJmMub2smJnQuaW5kZXhPZign4pyVJyk8MCkgb2srKzsgcmV0dXJuIHQ7IH07CiAvKiDsmIHqtazsnoTrjIAgKi8KIHZhciByMTsgaWYoIW5vaG91c2UpIHIxPSfinJUg66y07KO87YOd7IS464yA6rWs7ISx7JuQ7J207Ja07JW8IO2VqeuLiOuLpCc7IGVsc2UgaWYocmVjaXA9PT0nMScpIHsgcjE9J+KXiyAx7Iic7JyEIOuMgOyDgSjsg53qs4TCt+ydmOujjOq4ieyXrCDsiJjquInsnpAg65OxKSDCtyDsnpDsgrAg6riw7KSA7J2AIOqzteqzoOusuCDtmZXsnbgnOyBvaysrOyB9CiBlbHNlIHsgdmFyIHAxPVBbJ+yYgeq1rOyehOuMgCddWyfsnbzrsJhfcGN0J10rYWRkOyByMT1uKGNoayh1cmIqcDEvMTAwLCBwY3QocDEpKSwgYWxpbmUoUFsn7LSd7J6Q7IKw7IOB7ZWcJ11bJ+yYgeq1rOyehOuMgCddfHxQWyfstJ3snpDsgrDsg4HtlZwnXVsn7J2867CYJ10sIGZhbHNlKSsnIMK3IDIwMjYg6rO16rOgIOq4sOykgCcpOyB9CiBzZXQoJ24xJywgcjEpOwogLyog6rWt66+87J6E64yAICovCiB2YXIgcDI9KHNtYWxsP1BbJ+q1reuvvOyehOuMgCddWyfsmrDshKA1MOOOoeuvuOunjF9wY3QnXTpQWyfqta3rr7zsnoTrjIAnXVsn7IaM65OdX3BjdCddKSthZGQ7CiBzZXQoJ24yJywgbihjaGsodXJiKnAyLzEwMCwgcGN0KHAyKSsoc21hbGw/JyDCtyA1MOOOoSDrr7jrp4wg7Jqw7ISgJzonJykpLCBhbGluZShQWyfstJ3snpDsgrDsg4HtlZwnXVsn7J2867CYJ10sIGZhbHNlKSkpOwogLyog7ZaJ67O17KO87YOdICovCiB2YXIgcjM7IHZhciBIPVBbJ+2WieuzteyjvO2DnSddLCBBPVBbJ+y0neyekOyCsOyDge2VnCddOwogaWYoZ3JwPT09J3VuaXYnKSByMz1uKGNoayh1cmIqKEhbJ+uMgO2VmeyDnSddK2FkZCkvMTAwLCAn67O47J24K+u2gOuqqCAnK3BjdChIWyfrjIDtlZnsg50nXSthZGQpKSwgYWxpbmUoQVsn7ZaJ67O17KO87YOdX+uMgO2VmeyDnSddLCB0cnVlKSsnIMK3IOuMgO2VmeyDnSDqs4TsuLUo6rGw7KO8IOy1nOyepSAxMOuFhCknKTsKIGVsc2UgaWYoZ3JwPT09J3lvdW5nJykgcjM9bihjaGsodXJiKihIWyfssq3rhYQnXSthZGQpLzEwMCwgcGN0KEhbJ+yyreuFhCddK2FkZCkpLCBhbGluZShBWyftlonrs7Xso7ztg51f7LKt64WEJ10sIGZhbHNlKSsnIMK3IOyyreuFhCDqs4TsuLUoMTl+MznshLgsIOqxsOyjvCDstZzsnqUgMTDrhYQpJyk7CiBlbHNlIGlmKGdycD09PSduZXdseScpIHsgdmFyIHBuPShkdWFsP0hbJ+yLoO2YvOu2gOu2gF/rp57rsozsnbQnXTpIWyfsi6DtmLzrtoDrtoAnXSkrYWRkOyByMz1uKGNoayh1cmIqcG4vMTAwLCBwY3QocG4pKSwgYWxpbmUoQVsn7J2867CYJ10sIGZhbHNlKSsnIMK3IOyLoO2YvOu2gOu2gMK37ZWc67aA66qoIOqzhOy4tSjrrLTsnpDrhYAgMTDrhYTCt+yekOuFgCAxNOuFhCknKTsgfQogZWxzZSBpZihncnA9PT0nb2xkJykgcjM9bihjaGsodXJiKihIWyfqs6DroLnsnpAnXSthZGQpLzEwMCwgcGN0KEhbJ+qzoOugueyekCddK2FkZCkpLCBhbGluZShBWyfsnbzrsJgnXSwgZmFsc2UpKycgwrcg6rOg66C57J6QIOqzhOy4tSjqsbDso7wg7LWc7J6lIDIw64WEKScpOwogZWxzZSBpZihyZWNpcD09PScyJykgeyByMz1ub2hvdXNlPyfil4sg7KO86rGw6riJ7Jes7IiY6riJ7J6QIOqzhOy4tSDCtyDsnpDsgrAg6riw7KSA7J2AIOqzteqzoOusuCDtmZXsnbgnOifinJUg66y07KO87YOd7IS464yA6rWs7ISx7JuQ7J207Ja07JW8IO2VqeuLiOuLpCc7IGlmKG5vaG91c2UpIG9rKys7IH0KIGVsc2UgcjM9J+KclSDtlbTri7kg6rOE7Li1IOyXhuydjCDigJQg64yA7ZWZ7IOdwrfssq3rhYTCt+yLoO2YvOu2gOu2gCjtlZzrtoDrqqgpwrfqs6DroLnsnpDCt+yjvOqxsOq4ieyXrOyImOq4ieyekMK37IKw7JeF64uo7KeA6re866Gc7J6Q66eMJzsKIHNldCgnbjMnLCByMyk7CiAvKiDthrXtlanqs7Xqs7XsnoTrjIAgKi8KIHZhciBUPVBbJ+2Gte2VqeqzteqzteyehOuMgCddLCBwZz1UWyfsnbzrsJhf7KSR7JyEX3BjdCddK2FkZCwgcHU9VFsn7Jqw7ISgX+ykkeychF9wY3QnXSthZGQ7CiB2YXIgYzQ9Y2hrKG1lZCpwZy8xMDAsICfquLDspIAg7KSR7JyE7IaM65OdICcrcGcrJyUoJyt3b24obWVkKnBnLzEwMCkrJyknKTsgdmFyIHQ0PW4oYzQsIGFsaW5lKEFbJ+ydvOuwmCddLCBmYWxzZSkpOwogaWYobm9ob3VzZSYmYzQub2smJmluYzw9bWVkKnB1LzEwMCkgdDQrPScgwrcg7Jqw7ISg6rO16riJKOykkeychCAnK3B1KyclKSDqtazqsIQnOwogc2V0KCduNCcsIHQ0KTsKIC8qIOunpOyehcK37KCE7IS47J6E64yAICovCiB2YXIgTT1QWyfrp6TsnoXsoITshLjsnoTrjIAnXSwgcjU7CiBpZighbm9ob3VzZSkgcjU9J+KclSDrrLTso7ztg53shLjrjIDqtazshLHsm5DsnbTslrTslbwg7ZWp64uI64ukJzsKIGVsc2UgaWYoZ3JwPT09J3lvdW5nJ3x8Z3JwPT09J3VuaXYnKXsgaWYocmVjaXAhPT0nMCcpeyByNT0n4peLIOyyreuFhCAx7Iic7JyEKOyImOq4ieyekMK37LCo7IOB7JyEwrftlZzrtoDrqqgpIMK3IOyekOyCsCDquLDspIDsnYAg6rO16rOg66y4IO2ZleyduCc7IG9rKys7IH0gZWxzZSByNT1uKGNoayh1cmIqKE1bJ+yyreuFhF8y7Iic7JyEX3BjdCddK2FkZCkvMTAwLCBwY3QoTVsn7LKt64WEXzLsiJzsnIRfcGN0J10rYWRkKSksICcgwrcgMuyInOychCjrs7jsnbgr67aA66qoIO2VqeyCsCnCtzPsiJzsnIQo67O47J24KSDspJEg6rO16rOgIOq4sOykgOycvOuhnCcpOyB9CiBlbHNlIGlmKGdycD09PSduZXdseScpeyB2YXIgcEk9KGR1YWw/TVsn7Iug7Zi8SV/rp57rsozsnbRfcGN0J106TVsn7Iug7Zi8SV9wY3QnXSkrYWRkLCBwSUk9KGR1YWw/TVsn7Iug7Zi8SUlf66ee67KM7J20X3BjdCddOk1bJ+yLoO2YvElJX3BjdCddKSthZGQ7CiAgIGlmKCEoaW5jPjApKSByNT0n7IaM65Od7J2EIOuEo+ycvOuptCBJ7ZiVKCcrcEkrJyUpwrdJSe2YlSgnK3BJSSsnJSkg6rWs6rCE7J2EIOyVjOugpCDspI3ri4jri6QnOwogICBlbHNlIGlmKGluYzw9dXJiKnBJLzEwMCl7IHI1PSfil4sg7Iug7Zi8wrfsi6Dsg53slYQgSe2YlSDqtazqsIQoJytwY3QocEkpKycpJythbGluZShBWyfsnbzrsJgnXSwgZmFsc2UpOyBpZihyNS5pbmRleE9mKCfinJUnKTwwKSBvaysrOyB9CiAgIGVsc2UgaWYoaW5jPD11cmIqcElJLzEwMCl7IHI1PSfil4sg7Iug7Zi8wrfsi6Dsg53slYQgSUntmJUg6rWs6rCEKCcrcGN0KHBJSSkrJyknK2FsaW5lKE1bJ+yLoO2YvElJX+y0neyekOyCsCddfHxBWyfsnbzrsJgnXSwgZmFsc2UpOyBpZihyNS5pbmRleE9mKCfinJUnKTwwKSBvaysrOyB9CiAgIGVsc2UgcjU9J+KclSDshozrk50g7LSI6rO8IMK3IElJ7ZiVIOyDge2VnCAnK3BjdChwSUkpOyB9CiBlbHNlIGlmKHJlY2lwPT09JzEnKSB7IHI1PSfil4sg7IiY6riJ7J6QwrfssKjsg4HsnIQg7Jyg7ZiVKOq4sOyhtOyjvO2DnSDrp6TsnoXCt+yghOyEuOyehOuMgCkgwrcg6rO16rOg66y4IO2ZleyduCc7IG9rKys7IH0KIGVsc2UgcjU9J+KclSDssq3rhYTCt+yLoO2YvOu2gOu2gCjsi6Dsg53slYQpwrfsiJjquInsnpDCt+qzoOugueyekCDrk7Eg7Jyg7ZiV67OEIOuMgOyDgeunjCDigJQg7ZW064u5IOqzhOy4teydhCDqs6DrpbTshLjsmpQnOwogc2V0KCduNScsIHI1KTsKIHNldCgnbWFpbicsIG9rKyfqsIDsp4Ag7Jyg7ZiV7JeQ7IScIOq4sOuzuCDsmpTqsbQg7Lap7KGxJyk7Cgp9CnZhciBJRFM9WyJub2hvdXNlIiwgImhoIiwgImluYyIsICJkdWFsIiwgImFzc2V0IiwgImNhciIsICJncnAiLCAicmVjaXAiLCAic21hbGwiXTsKdmFyIHJvb3Q9ZG9jdW1lbnQuY3VycmVudFNjcmlwdD9kb2N1bWVudC5jdXJyZW50U2NyaXB0LmNsb3Nlc3QoJy50cGgtcGFnZScpOmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy50cGgtcGFnZScpOwppbml0VGhlbWUocm9vdHx8ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRwaC1wYWdlJykpOwppbml0U3RpY2t5KHJvb3R8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy50cGgtcGFnZScpLCAi7Iug7LKt7ZWgIOyImCDsnojripQg6rO16rO17J6E64yAIik7CnZhciBzYXZlPWluaXRTdGF0ZSgiXHVhY2Y1XHVhY2Y1XHVjNzg0XHViMzAwLVx1Yzc5MFx1YWNhOS1cdWM5YzRcdWIyZTgiLCBJRFMsIGNhbGMpOwpJRFMuZm9yRWFjaChmdW5jdGlvbihpKXt2YXIgZT0kKGkpO2lmKCFlKXJldHVybjtlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JyxmdW5jdGlvbigpe2NhbGMoKTtzYXZlKCk7fSk7ZS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLGZ1bmN0aW9uKCl7Y2FsYygpO3NhdmUoKTt9KTt9KTsKaW5pdENoaXBzKGZ1bmN0aW9uKCl7Y2FsYygpO3NhdmUoKTt9KTsKaW5pdFJlYWQoeyJpbmMiOiAiaW5jLXJlYWQiLCAiYXNzZXQiOiAiYXNzZXQtcmVhZCIsICJjYXIiOiAiY2FyLXJlYWQifSk7CmNhbGMoKTs=