시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 (추가 시간 없음) 512 MB40211976.000%

문제

길이가 n인 문자열 S를 아래 조건에 따라 k개의 부분문자열 (substring) T1, T2, ..., Tk로 쪼개는 경우를 생각해보자:

  • 1 ≤ k ≤ n
  • 1 ≤ i ≤ k를 만족하는 i에 대하여 각 부분문자열 Ti는 길이 1 이상이며 S의 부분문자열이다 (즉, S를 구성하는 연속한 문자들로 구성되어있다).
  • T1, T2, ..., Tk 를 순서대로 이어붙이면 (string concatenation) 원래의 문자열 S가 된다.

예를 들어 S = "FED" 인 경우 아래와 같은 총 4가지의 방법으로 쪼갤 수 있다:

  • 방법 1: T1 = "FED" (이 경우, k = 1)
  • 방법 2: T1 = "F", T2 = "ED" (이 경우, k = 2)
  • 방법 3: T1 = "FE", T2 = "D" (이 경우, k = 2)
  • 방법 4: T1 = "F", T2 = "E", T3 = "D" (이 경우, k = 3)

참고로 길이가 n인 문자열을 위 조건대로 쪼개는 방법은 총 2n-1 가지 존재한다.

이 문제에서는 원래의 문자열 S가 0-9와 A-F로만 구성된 16진수라 가정한다.

Albert는 위 조건대로 S를 쪼개서 T1, T2, ..., Tk가 비감소수열이 (non-decreasing sequence) 되는 경우가 몇 가지나 되는지 알고 싶다.
구체적으로, Albert는 S를 쪼갠 후 각 부분 문자열이 타나내는 16진수 값이 T1 ≤ T2 ≤ ... ≤ Tk 를 만족하도록 하고 싶다.

위 예제의 경우, 상기한 네 가지 방법을 통해 만들어지는 수열은 아래와 같다:

  • 방법1: [FED(16) = 4077] (비감소수열)
  • 방법2: [F(16) = 15, ED(16) = 237] (비감소수열)
  • 방법3: [FE(16) = 254, D(16) = 13]
  • 방법4: [F(16) = 15, E(16) = 14, D(16) = 13]

이 경우 비감소수열은 방법1, 방법2을 통해 얻을 수 있으므로 답이 2가 된다.

다른 예로 S = "0070"인 경우, 아래와 같은 4가지 방법이 가능하다.

  • 방법 1: T1 = "0070"
  • 방법 2: T1 = "0", T2 = "0", T3 = "70" (이 경우 [0, 0, 70(16) = 112] 이다)
  • 방법 3: T1 = "00", T2 = "70"
  • 방법 4: T1 = "0", T2 = "070"

방법1, 방법3, 방법4에서 보이듯 부분 문자열이 선행 0을 (leading zero) 포함하는 것도 허용된다.

입력으로 16진수 문자열 S가 주어졌을 때, Albert가 몇 가지 방법으로 S를 부분 문자열로 쪼개서 비감소수열을 얻을 수 있는지 구해보자.

입력

첫 줄에 테스트 케이스의 수 T가 주어진다. 

다음 각 줄에 문자열 S가 주어진다.

문자열 S를 구성하는 문자는 16진법에 사용되는 0-9 (숫자)와 A-F (영대문자) 뿐이다.

출력

각 테스트 케이스의 정답을 각 줄에 출력한다.

제한

  • 1 ≤ T ≤ 20
  • 1 ≤ n ≤ 15
  • S를 구성하는 문자는 0-9 와 A-F 뿐이다

예제 입력 1

4
0070
FED
42
002021

예제 출력 1

4
2
1
12

예제 1: 본문에서 다루었다.

예제 2: 본문에서 다루었다.

예제 3: [42]가 유일한 방법이다.

예제 4: 추가 설명 없음.

 

W3sicHJvYmxlbV9pZCI6IjIxOTc5IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiMTZcdWM5YzRcdWMyMTggXHVjYWJjXHVhYzFjXHVhZTMwIiwiZGVzY3JpcHRpb24iOiI8cD5cdWFlMzhcdWM3NzRcdWFjMDAgblx1Yzc3OCBcdWJiMzhcdWM3OTBcdWM1ZjQgU1x1Yjk3YyBcdWM1NDRcdWI3OTggXHVjODcwXHVhYzc0XHVjNWQwIFx1YjUzMFx1Yjc3YyZuYnNwO2tcdWFjMWNcdWM3NTggXHViZDgwXHViZDg0XHViYjM4XHVjNzkwXHVjNWY0IChzdWJzdHJpbmcpIFQ8c3ViPjE8XC9zdWI+LCBUPHN1Yj4yPFwvc3ViPiwgLi4uLCBUPHN1Yj5rPFwvc3ViPlx1Yjg1YyBcdWNhYmNcdWFjMWNcdWIyOTQgXHVhY2JkXHVjNmIwXHViOTdjIFx1YzBkZFx1YWMwMVx1ZDU3NFx1YmNmNFx1Yzc5MDo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT4xICZsZTsgayAmbGU7IG48XC9saT5cclxuXHQ8bGk+MSAmbGU7IGkgJmxlOyBrXHViOTdjIFx1YjljY1x1Yzg3MVx1ZDU1OFx1YjI5NCBpXHVjNWQwIFx1YjMwMFx1ZDU1OFx1YzVlYyBcdWFjMDEgXHViZDgwXHViZDg0XHViYjM4XHVjNzkwXHVjNWY0IFQ8c3ViPmk8XC9zdWI+XHViMjk0IFx1YWUzOFx1Yzc3NCAxIFx1Yzc3NFx1YzBjMVx1Yzc3NFx1YmE3MCBTXHVjNzU4IFx1YmQ4MFx1YmQ4NFx1YmIzOFx1Yzc5MFx1YzVmNFx1Yzc3NFx1YjJlNCAoXHVjOTg5LCBTXHViOTdjIFx1YWQ2Y1x1YzEzMVx1ZDU1OFx1YjI5NCBcdWM1ZjBcdWMxOGRcdWQ1NWMgXHViYjM4XHVjNzkwXHViNGU0XHViODVjIFx1YWQ2Y1x1YzEzMVx1YjQxOFx1YzViNFx1Yzc4OFx1YjJlNCkuPFwvbGk+XHJcblx0PGxpPlQ8c3ViPjE8XC9zdWI+LCBUPHN1Yj4yPFwvc3ViPiwgLi4uLCBUPHN1Yj5rPFwvc3ViPiBcdWI5N2MgXHVjMjFjXHVjMTFjXHViMzAwXHViODVjIFx1Yzc3NFx1YzViNFx1YmQ5OVx1Yzc3NFx1YmE3NCAoc3RyaW5nJm5ic3A7Y29uY2F0ZW5hdGlvbikgXHVjNmQwXHViNzk4XHVjNzU4IFx1YmIzOFx1Yzc5MFx1YzVmNCBTXHVhYzAwIFx1YjQxY1x1YjJlNC48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5cdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0IFMgPSAmcXVvdDtGRUQmcXVvdDsgXHVjNzc4IFx1YWNiZFx1YzZiMCBcdWM1NDRcdWI3OThcdWM2NDAgXHVhYzE5XHVjNzQwIFx1Y2QxZCA0XHVhYzAwXHVjOWMwXHVjNzU4IFx1YmMyOVx1YmM5NVx1YzczY1x1Yjg1YyBcdWNhYmNcdWFjMjQgXHVjMjE4IFx1Yzc4OFx1YjJlNDo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT48aW1nIGFsdD1cIlwiIHNyYz1cImh0dHBzOlwvXC91cGxvYWQuYWNtaWNwYy5uZXRcLzcwNjZiMDQxLTY0MmItNDQ4Mi1hOTdkLWRjN2U1YjFlNWZiNFwvLVwvcHJldmlld1wvXCIgc3R5bGU9XCJ3aWR0aDogMTIwcHg7IGhlaWdodDogMTQ1cHg7IGZsb2F0OiByaWdodDtcIiBcLz5cdWJjMjlcdWJjOTUgMTogVDEgPSAmcXVvdDtGRUQmcXVvdDsgKFx1Yzc3NCBcdWFjYmRcdWM2YjAsIGsgPSAxKTxcL2xpPlxyXG5cdDxsaT5cdWJjMjlcdWJjOTUgMjogVDEgPSAmcXVvdDtGJnF1b3Q7LCBUMiA9ICZxdW90O0VEJnF1b3Q7IChcdWM3NzQgXHVhY2JkXHVjNmIwLCBrID0gMik8XC9saT5cclxuXHQ8bGk+XHViYzI5XHViYzk1IDM6IFQxID0gJnF1b3Q7RkUmcXVvdDssIFQyID0gJnF1b3Q7RCZxdW90OyAoXHVjNzc0IFx1YWNiZFx1YzZiMCwgayA9IDIpPFwvbGk+XHJcblx0PGxpPlx1YmMyOVx1YmM5NSA0OiBUMSA9ICZxdW90O0YmcXVvdDssIFQyID0gJnF1b3Q7RSZxdW90OywgVDMgPSAmcXVvdDtEJnF1b3Q7IChcdWM3NzQgXHVhY2JkXHVjNmIwLCBrID0gMyk8XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5cdWNjMzhcdWFjZTBcdWI4NWMmbmJzcDtcdWFlMzhcdWM3NzRcdWFjMDAgblx1Yzc3OCBcdWJiMzhcdWM3OTBcdWM1ZjRcdWM3NDQgXHVjNzA0IFx1Yzg3MFx1YWM3NFx1YjMwMFx1Yjg1YyBcdWNhYmNcdWFjMWNcdWIyOTQgXHViYzI5XHViYzk1XHVjNzQwIFx1Y2QxZCAyPHN1cD5uLTE8XC9zdXA+IFx1YWMwMFx1YzljMCBcdWM4NzRcdWM3YWNcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yzc3NCBcdWJiMzhcdWM4MWNcdWM1ZDBcdWMxMWNcdWIyOTQgXHVjNmQwXHViNzk4XHVjNzU4IFx1YmIzOFx1Yzc5MFx1YzVmNCBTXHVhYzAwIDAtOVx1YzY0MCBBLUZcdWI4NWNcdWI5Y2MgXHVhZDZjXHVjMTMxXHViNDFjIDE2XHVjOWM0XHVjMjE4XHViNzdjIFx1YWMwMFx1YzgxNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHA+QWxiZXJ0XHViMjk0IFx1YzcwNCBcdWM4NzBcdWFjNzRcdWIzMDBcdWI4NWMgU1x1Yjk3YyZuYnNwO1x1Y2FiY1x1YWMxY1x1YzExYyBUPHN1Yj4xPFwvc3ViPiwgVDxzdWI+MjxcL3N1Yj4sIC4uLiwgVDxzdWI+azxcL3N1Yj5cdWFjMDAgXHViZTQ0XHVhYzEwXHVjMThjXHVjMjE4XHVjNWY0XHVjNzc0IChub24tZGVjcmVhc2luZyBzZXF1ZW5jZSkmbmJzcDtcdWI0MThcdWIyOTQgXHVhY2JkXHVjNmIwXHVhYzAwIFx1YmE4NyBcdWFjMDBcdWM5YzBcdWIwOTggXHViNDE4XHViMjk0XHVjOWMwIFx1YzU0Y1x1YWNlMCBcdWMyZjZcdWIyZTQuPGJyIFwvPlxyXG5cdWFkNmNcdWNjYjRcdWM4MDFcdWM3M2NcdWI4NWMsIEFsYmVydFx1YjI5NCBTXHViOTdjIFx1Y2FiY1x1YWMyMCBcdWQ2YzQmbmJzcDtcdWFjMDEgXHViZDgwXHViZDg0IFx1YmIzOFx1Yzc5MFx1YzVmNFx1Yzc3NCBcdWQwYzBcdWIwOThcdWIwYjRcdWIyOTQgMTZcdWM5YzRcdWMyMTggXHVhYzEyXHVjNzc0IFQ8c3ViPjE8XC9zdWI+ICZsZTsgVDxzdWI+MjxcL3N1Yj4gJmxlOyAuLi4gJmxlOyBUPHN1Yj5rPFwvc3ViPiBcdWI5N2MgXHViOWNjXHVjODcxXHVkNTU4XHViM2M0XHViODVkIFx1ZDU1OFx1YWNlMCBcdWMyZjZcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzcwNCBcdWM2MDhcdWM4MWNcdWM3NTggXHVhY2JkXHVjNmIwLCBcdWMwYzFcdWFlMzBcdWQ1NWMgXHViMTI0IFx1YWMwMFx1YzljMCBcdWJjMjlcdWJjOTVcdWM3NDQgXHVkMWI1XHVkNTc0IFx1YjljY1x1YjRlNFx1YzViNFx1YzljMFx1YjI5NCBcdWMyMThcdWM1ZjRcdWM3NDAgXHVjNTQ0XHViNzk4XHVjNjQwIFx1YWMxOVx1YjJlNDo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5cdWJjMjlcdWJjOTUxOiBbRkVEPHN1Yj4oMTYpPFwvc3ViPiA9IDQwNzddIChcdWJlNDRcdWFjMTBcdWMxOGNcdWMyMThcdWM1ZjQpPFwvbGk+XHJcblx0PGxpPlx1YmMyOVx1YmM5NTI6IFtGPHN1Yj4oMTYpPFwvc3ViPiA9IDE1LCBFRDxzdWI+KDE2KTxcL3N1Yj4gPSAyMzddIChcdWJlNDRcdWFjMTBcdWMxOGNcdWMyMThcdWM1ZjQpPFwvbGk+XHJcblx0PGxpPlx1YmMyOVx1YmM5NTM6IFtGRTxzdWI+KDE2KTxcL3N1Yj4gPSAyNTQsIEQ8c3ViPigxNik8XC9zdWI+ID0gMTNdPFwvbGk+XHJcblx0PGxpPlx1YmMyOVx1YmM5NTQ6IFtGPHN1Yj4oMTYpPFwvc3ViPiA9IDE1LCBFPHN1Yj4oMTYpPFwvc3ViPiA9IDE0LCBEPHN1Yj4oMTYpPFwvc3ViPiA9IDEzXTxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPlx1Yzc3NCBcdWFjYmRcdWM2YjAgXHViZTQ0XHVhYzEwXHVjMThjXHVjMjE4XHVjNWY0XHVjNzQwIFx1YmMyOVx1YmM5NTEsIFx1YmMyOVx1YmM5NTJcdWM3NDQgXHVkMWI1XHVkNTc0IFx1YzViYlx1Yzc0NCBcdWMyMTggXHVjNzg4XHVjNzNjXHViYmMwXHViODVjIFx1YjJmNVx1Yzc3NCAyXHVhYzAwIFx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViMmU0XHViOTc4IFx1YzYwOFx1Yjg1YyBTID0gJnF1b3Q7MDA3MCZxdW90O1x1Yzc3OCBcdWFjYmRcdWM2YjAsIFx1YzU0NFx1Yjc5OFx1YzY0MCBcdWFjMTlcdWM3NDAgNFx1YWMwMFx1YzljMCBcdWJjMjlcdWJjOTVcdWM3NzQgXHVhYzAwXHViMmE1XHVkNTU4XHViMmU0LjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPlx1YmMyOVx1YmM5NSAxOiBUMSA9ICZxdW90OzAwNzAmcXVvdDs8XC9saT5cclxuXHQ8bGk+XHViYzI5XHViYzk1IDI6IFQxID0gJnF1b3Q7MCZxdW90OywgVDIgPSAmcXVvdDswJnF1b3Q7LCBUMyA9ICZxdW90OzcwJnF1b3Q7IChcdWM3NzQgXHVhY2JkXHVjNmIwIFswLCAwLCA3MDxzdWI+KDE2KTxcL3N1Yj4gPSAxMTJdIFx1Yzc3NFx1YjJlNCk8XC9saT5cclxuXHQ8bGk+XHViYzI5XHViYzk1IDM6IFQxID0gJnF1b3Q7MDAmcXVvdDssIFQyID0gJnF1b3Q7NzAmcXVvdDs8XC9saT5cclxuXHQ8bGk+XHViYzI5XHViYzk1IDQ6IFQxID0gJnF1b3Q7MCZxdW90OywgVDIgPSAmcXVvdDswNzAmcXVvdDs8XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5cdWJjMjlcdWJjOTUxLCBcdWJjMjlcdWJjOTUzLCZuYnNwO1x1YmMyOVx1YmM5NTRcdWM1ZDBcdWMxMWMgXHViY2Y0XHVjNzc0XHViNGVmIFx1YmQ4MFx1YmQ4NCBcdWJiMzhcdWM3OTBcdWM1ZjRcdWM3NzQgXHVjMTIwXHVkNTg5IDBcdWM3NDQmbmJzcDsobGVhZGluZyB6ZXJvKSBcdWQzZWNcdWQ1NjhcdWQ1NThcdWIyOTQgXHVhYzgzXHViM2M0IFx1ZDVjOFx1YzZhOVx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNzg1XHViODI1XHVjNzNjXHViODVjIDE2XHVjOWM0XHVjMjE4IFx1YmIzOFx1Yzc5MFx1YzVmNCBTXHVhYzAwIFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIEFsYmVydFx1YWMwMCBcdWJhODcgXHVhYzAwXHVjOWMwIFx1YmMyOVx1YmM5NVx1YzczY1x1Yjg1YyBTXHViOTdjIFx1YmQ4MFx1YmQ4NCBcdWJiMzhcdWM3OTBcdWM1ZjRcdWI4NWMgXHVjYWJjXHVhYzFjXHVjMTFjIFx1YmU0NFx1YWMxMFx1YzE4Y1x1YzIxOFx1YzVmNFx1Yzc0NCBcdWM1YmJcdWM3NDQgXHVjMjE4IFx1Yzc4OFx1YjI5NFx1YzljMCBcdWFkNmNcdWQ1NzRcdWJjZjRcdWM3OTAuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWNjYWIgXHVjOTA0XHVjNWQwIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM3NTggXHVjMjE4IFRcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiZuYnNwOzxcL3A+XHJcblxyXG48cD5cdWIyZTRcdWM3NGMgXHVhYzAxIFx1YzkwNFx1YzVkMCBcdWJiMzhcdWM3OTBcdWM1ZjQgU1x1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YmIzOFx1Yzc5MFx1YzVmNCBTXHViOTdjIFx1YWQ2Y1x1YzEzMVx1ZDU1OFx1YjI5NCBcdWJiMzhcdWM3OTBcdWIyOTQgMTZcdWM5YzRcdWJjOTVcdWM1ZDAgXHVjMGFjXHVjNmE5XHViNDE4XHViMjk0Jm5ic3A7MC05IChcdWMyMmJcdWM3OTApXHVjNjQwIEEtRiAoXHVjNjAxXHViMzAwXHViYjM4XHVjNzkwKSBcdWJmZDBcdWM3NzRcdWIyZTQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+XHVhYzAxIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM3NTggXHVjODE1XHViMmY1XHVjNzQ0IFx1YWMwMSBcdWM5MDRcdWM1ZDAgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IktvcmVhbiIsImxpbWl0IjoiPHVsPlxyXG5cdDxsaT4xICZsZTsgVCAmbGU7IDIwPFwvbGk+XHJcblx0PGxpPjEgJmxlOyBuJm5ic3A7JmxlOyAxNTxcL2xpPlxyXG5cdDxsaT5TXHViOTdjIFx1YWQ2Y1x1YzEzMVx1ZDU1OFx1YjI5NCBcdWJiMzhcdWM3OTBcdWIyOTQgMC05IFx1YzY0MCBBLUYgXHViZmQwXHVjNzc0XHViMmU0PFwvbGk+XHJcbjxcL3VsPlxyXG4iLCJzYW1wbGVfZXhwbGFpbl8xIjoiPHA+XHVjNjA4XHVjODFjIDE6IFx1YmNmOFx1YmIzOFx1YzVkMFx1YzExYyBcdWIyZTRcdWI4ZThcdWM1YzhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzYwOFx1YzgxYyAyOiBcdWJjZjhcdWJiMzhcdWM1ZDBcdWMxMWMgXHViMmU0XHViOGU4XHVjNWM4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWM4MWMgMzombmJzcDtbNDJdXHVhYzAwIFx1YzcyMFx1Yzc3Y1x1ZDU1YyBcdWJjMjlcdWJjOTVcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzYwOFx1YzgxYyA0OiBcdWNkOTRcdWFjMDAgXHVjMTI0XHViYTg1IFx1YzVjNlx1Yzc0Yy48XC9wPlxyXG5cclxuPHA+Jm5ic3A7PFwvcD5cclxuIn0seyJwcm9ibGVtX2lkIjoiMjE5NzkiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJTcGxpdHRpbmcgSGV4IFN0cmluZ3MiLCJkZXNjcmlwdGlvbiI6IjxwPkNvbnNpZGVyIHNwbGl0dGluZyBhIHN0cmluZyBTIG9mIGxlbmd0aCBuIGludG8gayBzdWJzdHJpbmdzLCBUPHN1Yj4xPFwvc3ViPiwgVDxzdWI+MjxcL3N1Yj4sIC4uLiwgVDxzdWI+azxcL3N1Yj4sIGFjY29yZGluZyB0byB0aGUgcnVsZXMgYmVsb3c6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+MSAmbGU7IGsgJmxlOyBuPFwvbGk+XHJcblx0PGxpPkZvciBlYWNoIGkgd2l0aCAxICZsZTsgaSAmbGU7IGssJm5ic3A7VDxzdWI+aTxcL3N1Yj4gbXVzdCBiZSBhIHN1YnN0cmluZyBvZiBTIHdpdGggbGVuZ3RoIGF0IGxlYXN0IDEmbmJzcDsodGhhdCBpcywgVDxzdWI+aTxcL3N1Yj4gbXVzdCBjb25zaXN0IG9mIGNvbnNlY3V0aXZlIGNoYXJhY3RlcihzKSZuYnNwO2luIFMpLjxcL2xpPlxyXG5cdDxsaT5JZiB5b3UgY29uY2F0ZW5hdGUgVDxzdWI+MTxcL3N1Yj4sIFQ8c3ViPjI8XC9zdWI+LCAuLi4sIFQ8c3ViPms8XC9zdWI+IGluIHRoaXMgb3JkZXIsIGl0IHJlc3VsdHMgaW4gdGhlIG9yaWdpbmFsIHN0cmluZyBTLjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPkZvciBpbnN0YW5jZSwgaWYgUyA9ICZxdW90O0ZFRCZxdW90OywgdGhlbiB3ZSBjYW4gc3BsaXQgaXQgaW50byBmb3VyIGRpZmZlcmVudCB3YXlzIGFzIGZvbGxvd3M6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC83MDY2YjA0MS02NDJiLTQ0ODItYTk3ZC1kYzdlNWIxZTVmYjRcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwiaGVpZ2h0OiAxNDVweDsgd2lkdGg6IDEyMHB4OyBmbG9hdDogcmlnaHQ7XCIgXC8+T3B0aW9uIDE6IFQxID0gJnF1b3Q7RkVEJnF1b3Q7IChpbiB0aGlzIGNhc2UsIGsgPSAxKTxcL2xpPlxyXG5cdDxsaT5PcHRpb24gMjogVDEgPSAmcXVvdDtGJnF1b3Q7LCBUMiA9ICZxdW90O0VEJnF1b3Q7IChpbiB0aGlzIGNhc2UsIGsgPSAyKTxcL2xpPlxyXG5cdDxsaT5PcHRpb24gMzogVDEgPSAmcXVvdDtGRSZxdW90OywgVDIgPSAmcXVvdDtEJnF1b3Q7IChpbiB0aGlzIGNhc2UsIGsgPSAyKTxcL2xpPlxyXG5cdDxsaT5PcHRpb24gNDogVDEgPSAmcXVvdDtGJnF1b3Q7LCBUMiA9ICZxdW90O0UmcXVvdDssIFQzID0gJnF1b3Q7RCZxdW90OyAoaW4gdGhpcyBjYXNlLCBrID0gMyk8XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5Gb3IgeW91ciBpbmZvcm1hdGlvbiwgdGhlcmUgYXJlJm5ic3A7MjxzdXA+bi0xPFwvc3VwPiZuYnNwO3dheXMgdG8gc3BsaXQgYSBzdHJpbmcgb2YgbGVuZ3RoIG4gYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBhYm92ZS48XC9wPlxyXG5cclxuPHA+SW4gdGhpcyBwcm9ibGVtLCB3ZSBhc3N1bWUgdGhhdCBTIGlzIGEgaGV4YWRlY2ltYWwgc3RyaW5nIHRoYXQgb25seSBjb25zaXN0cyBvZiAmIzM5OzAmIzM5Oy0mIzM5OzkmIzM5OyBhbmQgJiMzOTtBJiMzOTstJiMzOTtGJiMzOTsuPFwvcD5cclxuXHJcbjxwPkFsYmVydCB3YW50cyB0byBrbm93IGluIGhvdyBtYW55IHdheXMgaGUgY2FuIHNwbGl0IFMgaW50byZuYnNwO1Q8c3ViPjE8XC9zdWI+LCBUPHN1Yj4yPFwvc3ViPiwgLi4uLCBUPHN1Yj5rPFwvc3ViPiZuYnNwO3N1Y2ggdGhhdCB0aGUgc3Vic3RyaW5ncyBmb3JtIGEgbm9uLWRlY3JlYXNpbmcgc2VxdWVuY2UuPGJyIFwvPlxyXG5Gb3JtYWxseSwgQWxiZXJ0IHdhbnRzIHRvIGVuc3VyZSB0aGF0Jm5ic3A7VDxzdWI+MTxcL3N1Yj4gJmxlOyBUPHN1Yj4yPFwvc3ViPiAmbGU7IC4uLiAmbGU7IFQ8c3ViPms8XC9zdWI+Jm5ic3A7aXMgc2F0aXNmaWVkIGlmIGVhY2ggc3Vic3RyaW5nIGlzIGludGVycHJldGVkIGFzIGEgaGV4YWRlY2ltYWwgbnVtYmVyLjxcL3A+XHJcblxyXG48cD5JbiB0aGUgZXhhbXBsZSBhYm92ZSwgdGhvc2UgZm91ciBvcHRpb25zIGxlYWQgdG8gdGhlIGZvbGxvd2luZyBzZXF1ZW5jZXM6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+T3B0aW9uIDE6IFtGRUQ8c3ViPigxNik8XC9zdWI+ID0gNDA3N10gKGEgbm9uLWRlY3JlYXNpbmcgc2VxdWVuY2UpPFwvbGk+XHJcblx0PGxpPk9wdGlvbiZuYnNwOzI6IFtGPHN1Yj4oMTYpPFwvc3ViPiA9IDE1LCBFRDxzdWI+KDE2KTxcL3N1Yj4gPSAyMzddIChhIG5vbi1kZWNyZWFzaW5nIHNlcXVlbmNlKTxcL2xpPlxyXG5cdDxsaT5PcHRpb24gMzogW0ZFPHN1Yj4oMTYpPFwvc3ViPiA9IDI1NCwgRDxzdWI+KDE2KTxcL3N1Yj4gPSAxM108XC9saT5cclxuXHQ8bGk+T3B0aW9uIDQ6IFtGPHN1Yj4oMTYpPFwvc3ViPiA9IDE1LCBFPHN1Yj4oMTYpPFwvc3ViPiA9IDE0LCBEPHN1Yj4oMTYpPFwvc3ViPiA9IDEzXTxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPkluIHRoaXMgY2FzZSwgdGhlIGZpcnN0IHR3byBvcHRpb25zIGxlYWQgdG8gbm9uLWRlY3JlYXNpbmcgc2VxdWVuY2VzLCBzbyB0aGUgYW5zd2VyIHdpbGwgYmUgMi48XC9wPlxyXG5cclxuPHA+SW4gYW5vdGhlciBleGFtcGxlIHdoZXJlIFMgPSAmcXVvdDswMDcwJnF1b3Q7LCB0aGVyZSBhcmUgZm91ciB3YXlzIHRvIG9idGFpbiBub24tZGVjcmVhc2luZyBzZXF1ZW5jZXMuPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+T3B0aW9uIDE6IFQxID0gJnF1b3Q7MDA3MCZxdW90OzxcL2xpPlxyXG5cdDxsaT5PcHRpb24gMjogVDEgPSAmcXVvdDswJnF1b3Q7LCBUMiA9ICZxdW90OzAmcXVvdDssIFQzID0gJnF1b3Q7NzAmcXVvdDsgKGluIHRoaXMgY2FzZSwgdGhlIHNlcXVlbmNlIGlzIFswLCAwLCA3MDxzdWI+KDE2KTxcL3N1Yj4gPSAxMTJdKTxcL2xpPlxyXG5cdDxsaT5PcHRpb24gMzogVDEgPSAmcXVvdDswMCZxdW90OywgVDIgPSAmcXVvdDs3MCZxdW90OzxcL2xpPlxyXG5cdDxsaT5PcHRpb24gNDogVDEgPSAmcXVvdDswJnF1b3Q7LCBUMiA9ICZxdW90OzA3MCZxdW90OzxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPkFzIHlvdSBjYW4gc2VlIGluIG9wdGlvbiAxLCBvcHRpb24gMywgYW5kIG9wdGlvbiA0LCBzdWJzdHJpbmdzIGFyZSBhbGxvd2VkIHRvIGNvbnRhaW4gbGVhZGluZyB6ZXJvKHMpLiZuYnNwOzxcL3A+XHJcblxyXG48cD5HaXZlbiBhIGhleGFkZWNpbWFsIHN0cmluZyBTLCBjb21wdXRlIHRoZSBudW1iZXIgb2Ygd2F5cyBpbiB3aGljaCBBbGJlcnQgY2FuIHNwbGl0IFMgaW50byBzdWJzdHJpbmdzIHN1Y2ggdGhhdCB0aGUgcmVzdWx0aW5nIHNlcXVlbmNlIGlzIGEgbm9uLWRlY3JlYXNpbmcgc2VxdWVuY2UuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSBvZiB0aGUgaW5wdXQgd2lsbCBjb250YWluIGEgc2luZ2xlIG51bWJlciwgVCwgdGhlIG51bWJlciBvZiB0ZXN0IGNhc2VzLjxcL3A+XHJcblxyXG48cD5JbiBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgVCBsaW5lcywgYW4gaW5wdXQgc3RyaW5nIFMgd2lsbCBiZSBnaXZlbi48XC9wPlxyXG5cclxuPHA+UyB3aWxsIG9ubHkgY29uc2lzdCBvZiZuYnNwOzAtOSAoZGlnaXRzKSBhbmQmbmJzcDtBLUYgKHVwcGVyY2FzZSkgdGhhdCBhcmUgdXNlZCBpbiBoZXhhZGVjaW1hbCBudW1iZXJzLjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPkZvciBlYWNoIHRlc3QgY2FzZSwgb3V0cHV0IHRoZSBhbnN3ZXIgaW4gYSBzaW5nbGUgbGluZS48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJFbmdsaXNoIiwibGltaXQiOiI8dWw+XHJcblx0PGxpPjEgJmxlOyBUICZsZTsgMjA8XC9saT5cclxuXHQ8bGk+MSAmbGU7IG4mbmJzcDsmbGU7IDE1PFwvbGk+XHJcblx0PGxpPlMgd2lsbCBjb25zaXN0IG9ubHkgb2YgMC05IGFuZCBBLUYuPFwvbGk+XHJcbjxcL3VsPlxyXG4iLCJzYW1wbGVfZXhwbGFpbl8xIjoiPHA+Q2FzZSAxOiBEaXNjdXNzZWQgaW4gdGhlIHByb2JsZW0gc3RhdGVtZW50LjxcL3A+XHJcblxyXG48cD5DYXNlIDI6IERpc2N1c3NlZCBpbiB0aGUgcHJvYmxlbSBzdGF0ZW1lbnQuPFwvcD5cclxuXHJcbjxwPkNhc2UgMzombmJzcDtbNDJdIGlzIHRoZSBvbmx5IHdheS48XC9wPlxyXG5cclxuPHA+Q2FzZSA0OiBObyBleHBsYW5hdGlvbiBwcm92aWRlZC48XC9wPlxyXG4ifV0=