시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB499814522.613%

문제

상근이는 팩스 이미지를 압축하는 계획을 만들려고 한다. 스캐너를 통해서 이미지를 입력받으면, 1과 256사이의 정수로 이루어진 수열로 변환된다. 예를 들어, 아래와 같은 수열로 이미지를 변환할 수 있다.

1, 1, 1, 1, 1, 46, 1, 1, 1,1, 1, 1, 2, 1, 2, 1, 1, 25, 26, 25, 25, 255, 256, 256, 256, 255,...

이미지를 반드시 정확하게 변환할 필요는 없다. 따라서, 상근이는 수열의 각 정수를 레벨 4개(1, 86, 172, 256)으로 나타내려고 한다. 그리고, 이 레벨은 다음과 같이 2-bit 코드로 나타낼 수 있다.

Level 1 86 172 256
Code 00 01 10 11

그림 안에는 같은 색으로 이루어진 영역(예를 들면 공백)이 있다. 이 영역을 변환하면 유사한 정수가 연속해서 나타난다. 이를 처리하기 위해서 다음과 같은 압축 방법을 사용하려고 한다.

  1. 수열의 첫 번째 수는 위의 표에 나온 2bit 코드로 변환한다.
  2. 그 다음에 나오는 다른 모든 수에 대해서는
    • 만약 수열의 바로 앞에 있는 수가 같은 수라면 0으로 변환한다.
    • 앞에 있는 수와 다른 수라면 1을 앞에 붙인 뒤 위 표의 2bit 코드로 변환한다.

상근이는 작은 양의 에러를 크게 신경쓰지 않기 때문에, 작은 양의 에러는 무시한다. 예를 들어, 입력된 수열이 2, 2, 2, 2, 2, 46, 2, 2 라고 했을 때, 이를 1, 1, 1, 1, 1, 86, 1, 1로 나타낸 다음 변환하면 0000001011000가 되고 전체 에러는 1+1+1+1+1+40+1+1=47 이 된다. 하지만 1, 1, 1, 1, 1, 1, 1, 1 로 나타낸 후 변환하면 전체 에러는 1+1+1+1+1+45+1+1=52가 되어 커지지만 코드가 000000000가 되어 더 짧아진다.

상근이는 변환 비용을 최소로 하는 방법을 찾으려고 한다. 변환 비용은 전체 에러 + W × (변환 코드의 길이)로 계산할 수 있다.

  1. W는 에러와 코드의 길이 중 어느 것을 중요시 하느냐에 따라 입력으로 주어진다.
  2. 이때 전체 에러는 입력 수열 x1, x2, , xN , 변환 수열 y1, y2, , yN에 대해서 다음과 같다. Σ|xi-yi|

수열이 2, 2, 2, 2, 2, 46, 2, 2 이고, W가 100인 경우에 y1,..., y8 = 1, 1, 1, 1, 1, 86, 1, 1 로 변환하면 코드는 0000001011000이 되고, 변환 비용은 47 + 100 × 13 = 1347이다. 하지만 y1,..., y8 = 1, 1, 1, 1, 1, 1, 1, 1로 변환하면 코드는 000000000이고 변환 비용은 52 + 100 × 9 = 952이다.

입력

첫째 줄에 수열의 길이 N(1 ≤ N ≤ 50), 가중치 W(0 ≤ W ≤ 100)가 주어진다. 다음 N개의 줄에는 수열을 이루는 정수가 차례로 주어진다.

출력

첫줄에는 최소 변환 비용을 출력한다. 그리고 두 번째 줄에는 변환코드를 출력한다.

예제 입력 1

8 100
2
2
2
2
2
46
2
2

예제 출력 1

952
000000000
W3sicHJvYmxlbV9pZCI6IjIzNDEiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWQzMjlcdWMyYTQgXHViYjM4XHVjODFjIiwiZGVzY3JpcHRpb24iOiI8cD5cdWMwYzFcdWFkZmNcdWM3NzRcdWIyOTQgXHVkMzI5XHVjMmE0IFx1Yzc3NFx1YmJmOFx1YzljMFx1Yjk3YyBcdWM1NTVcdWNkOTVcdWQ1NThcdWIyOTQgXHVhY2M0XHVkNjhkXHVjNzQ0IFx1YjljY1x1YjRlNFx1YjgyNFx1YWNlMCBcdWQ1NWNcdWIyZTQuIFx1YzJhNFx1Y2U5MFx1YjEwOFx1Yjk3YyBcdWQxYjVcdWQ1NzRcdWMxMWMgXHVjNzc0XHViYmY4XHVjOWMwXHViOTdjIFx1Yzc4NVx1YjgyNVx1YmMxYlx1YzczY1x1YmE3NCwgMVx1YWNmYyAyNTZcdWMwYWNcdWM3NzRcdWM3NTggXHVjODE1XHVjMjE4XHViODVjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzljNCBcdWMyMThcdWM1ZjRcdWI4NWMgXHViY2MwXHVkNjU4XHViNDFjXHViMmU0LiBcdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0LCBcdWM1NDRcdWI3OThcdWM2NDAgXHVhYzE5XHVjNzQwIFx1YzIxOFx1YzVmNFx1Yjg1YyBcdWM3NzRcdWJiZjhcdWM5YzBcdWI5N2MgXHViY2MwXHVkNjU4XHVkNTYwIFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPjEsIDEsIDEsIDEsIDEsIDQ2LCAxLCAxLCAxLDEsIDEsIDEsIDIsIDEsIDIsIDEsIDEsIDI1LCAyNiwgMjUsIDI1LCAyNTUsIDI1NiwgMjU2LCAyNTYsIDI1NSwuLi48XC9wPlxyXG5cclxuPHA+XHVjNzc0XHViYmY4XHVjOWMwXHViOTdjIFx1YmMxOFx1YjRkY1x1YzJkYyBcdWM4MTVcdWQ2NTVcdWQ1NThcdWFjOGMgXHViY2MwXHVkNjU4XHVkNTYwIFx1ZDU0NFx1YzY5NFx1YjI5NCBcdWM1YzZcdWIyZTQuIFx1YjUzMFx1Yjc3Y1x1YzExYywgXHVjMGMxXHVhZGZjXHVjNzc0XHViMjk0IFx1YzIxOFx1YzVmNFx1Yzc1OCBcdWFjMDEgXHVjODE1XHVjMjE4XHViOTdjIFx1YjgwOFx1YmNhOCA0XHVhYzFjKDEsIDg2LCAxNzIsIDI1NilcdWM3M2NcdWI4NWMgXHViMDk4XHVkMGMwXHViMGI0XHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC4gXHVhZGY4XHViOWFjXHVhY2UwLCBcdWM3NzQgXHViODA4XHViY2E4XHVjNzQwIFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWM3NzQgMi1iaXQgXHVjZjU0XHViNGRjXHViODVjIFx1YjA5OFx1ZDBjMFx1YjBiYyBcdWMyMTggXHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiIHN0eWxlPVwid2lkdGg6NDAlXCI+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGggc3R5bGU9XCJ3aWR0aDo4JVwiPkxldmVsPFwvdGg+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MTxcL3RkPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo4JVwiPjg2PFwvdGQ+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MTcyPFwvdGQ+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MjU2PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6OCVcIj5Db2RlPFwvdGg+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MDA8XC90ZD5cclxuXHRcdFx0PHRkIHN0eWxlPVwid2lkdGg6OCVcIj4wMTxcL3RkPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo4JVwiPjEwPFwvdGQ+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MTE8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPlx1YWRmOFx1YjliYyBcdWM1NDhcdWM1ZDBcdWIyOTQgXHVhYzE5XHVjNzQwIFx1YzBjOVx1YzczY1x1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM5YzQgXHVjNjAxXHVjNWVkKFx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWJhNzQgXHVhY2Y1XHViYzMxKVx1Yzc3NCBcdWM3ODhcdWIyZTQuJm5ic3A7XHVjNzc0IFx1YzYwMVx1YzVlZFx1Yzc0NCBcdWJjYzBcdWQ2NThcdWQ1NThcdWJhNzQgXHVjNzIwXHVjMGFjXHVkNTVjIFx1YzgxNVx1YzIxOFx1YWMwMCBcdWM1ZjBcdWMxOGRcdWQ1NzRcdWMxMWMgXHViMDk4XHVkMGMwXHViMDljXHViMmU0LiBcdWM3NzRcdWI5N2MgXHVjYzk4XHViOWFjXHVkNTU4XHVhZTMwIFx1YzcwNFx1ZDU3NFx1YzExYyBcdWIyZTRcdWM3NGNcdWFjZmMgXHVhYzE5XHVjNzQwIFx1YzU1NVx1Y2Q5NSBcdWJjMjlcdWJjOTVcdWM3NDQgXHVjMGFjXHVjNmE5XHVkNTU4XHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPG9sPlxyXG5cdDxsaT5cdWMyMThcdWM1ZjRcdWM3NTggXHVjY2FiIFx1YmM4OFx1YzlmOCBcdWMyMThcdWIyOTQgXHVjNzA0XHVjNzU4IFx1ZDQ1Y1x1YzVkMCBcdWIwOThcdWM2MjggMmJpdCBcdWNmNTRcdWI0ZGNcdWI4NWMgXHViY2MwXHVkNjU4XHVkNTVjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWFkZjggXHViMmU0XHVjNzRjXHVjNWQwIFx1YjA5OFx1YzYyNFx1YjI5NCBcdWIyZTRcdWI5NzggXHViYWE4XHViNGUwIFx1YzIxOFx1YzVkMCBcdWIzMDBcdWQ1NzRcdWMxMWNcdWIyOTRcclxuXHQ8dWw+XHJcblx0XHQ8bGk+XHViOWNjXHVjNTdkIFx1YzIxOFx1YzVmNFx1Yzc1OCBcdWJjMTRcdWI4NWMgXHVjNTVlXHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWMyMThcdWFjMDAgXHVhYzE5XHVjNzQwIFx1YzIxOFx1Yjc3Y1x1YmE3NCAwXHVjNzNjXHViODVjIFx1YmNjMFx1ZDY1OFx1ZDU1Y1x1YjJlNC48XC9saT5cclxuXHRcdDxsaT5cdWM1NWVcdWM1ZDAgXHVjNzg4XHViMjk0IFx1YzIxOFx1YzY0MCBcdWIyZTRcdWI5NzggXHVjMjE4XHViNzdjXHViYTc0IDFcdWM3NDQgXHVjNTVlXHVjNWQwIFx1YmQ5OVx1Yzc3OCBcdWI0YTQgXHVjNzA0IFx1ZDQ1Y1x1Yzc1OCAyYml0IFx1Y2Y1NFx1YjRkY1x1Yjg1YyBcdWJjYzBcdWQ2NThcdWQ1NWNcdWIyZTQuPFwvbGk+XHJcblx0PFwvdWw+XHJcblx0PFwvbGk+XHJcbjxcL29sPlxyXG5cclxuPHA+XHVjMGMxXHVhZGZjXHVjNzc0XHViMjk0IFx1Yzc5MVx1Yzc0MCZuYnNwO1x1YzU5MVx1Yzc1OCBcdWM1ZDBcdWI3ZWNcdWI5N2MgXHVkMDZjXHVhYzhjIFx1YzJlMFx1YWNiZFx1YzRmMFx1YzljMCBcdWM1NGFcdWFlMzAgXHViNTRjXHViYjM4XHVjNWQwLCBcdWM3OTFcdWM3NDAgXHVjNTkxXHVjNzU4IFx1YzVkMFx1YjdlY1x1YjI5NCBcdWJiMzRcdWMyZGNcdWQ1NWNcdWIyZTQuIFx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQsIFx1Yzc4NVx1YjgyNVx1YjQxYyBcdWMyMThcdWM1ZjRcdWM3NzQmbmJzcDsyLCAyLCAyLCAyLCAyLCA0NiwgMiwgMiBcdWI3N2NcdWFjZTAgXHVkNTg4XHVjNzQ0IFx1YjU0YywgXHVjNzc0XHViOTdjIDEsIDEsIDEsIDEsIDEsIDg2LCAxLCAxXHViODVjIFx1YjA5OFx1ZDBjMFx1YjBiOCBcdWIyZTRcdWM3NGMmbmJzcDtcdWJjYzBcdWQ2NThcdWQ1NThcdWJhNzQgMDAwMDAwMTAxMTAwMFx1YWMwMCBcdWI0MThcdWFjZTAgXHVjODA0XHVjY2I0IFx1YzVkMFx1YjdlY1x1YjI5NCAxKzErMSsxKzErNDArMSsxPTQ3IFx1Yzc3NCBcdWI0MWNcdWIyZTQuIFx1ZDU1OFx1YzljMFx1YjljYyAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxIFx1Yjg1YyBcdWIwOThcdWQwYzBcdWIwYjggXHVkNmM0IFx1YmNjMFx1ZDY1OFx1ZDU1OFx1YmE3NCBcdWM4MDRcdWNjYjQgXHVjNWQwXHViN2VjXHViMjk0IDErMSsxKzErMSs0NSsxKzE9NTJcdWFjMDAgXHViNDE4XHVjNWI0IFx1Y2VlNFx1YzljMFx1YzljMFx1YjljYyBcdWNmNTRcdWI0ZGNcdWFjMDAgMDAwMDAwMDAwXHVhYzAwIFx1YjQxOFx1YzViNCBcdWIzNTQgXHVjOWU3XHVjNTQ0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWMwYzFcdWFkZmNcdWM3NzRcdWIyOTQgXHViY2MwXHVkNjU4IFx1YmU0NFx1YzZhOVx1Yzc0NCBcdWNkNWNcdWMxOGNcdWI4NWMgXHVkNTU4XHViMjk0IFx1YmMyOVx1YmM5NVx1Yzc0NCBcdWNjM2VcdWM3M2NcdWI4MjRcdWFjZTAgXHVkNTVjXHViMmU0LiBcdWJjYzBcdWQ2NTggXHViZTQ0XHVjNmE5XHVjNzQwIFx1YzgwNFx1Y2NiNCBcdWM1ZDBcdWI3ZWMgKyBXICZ0aW1lczsgKFx1YmNjMFx1ZDY1OCBcdWNmNTRcdWI0ZGNcdWM3NTggXHVhZTM4XHVjNzc0KVx1Yjg1YyBcdWFjYzRcdWMwYjBcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPG9sPlxyXG5cdDxsaT5XXHViMjk0IFx1YzVkMFx1YjdlY1x1YzY0MCBcdWNmNTRcdWI0ZGNcdWM3NTggXHVhZTM4XHVjNzc0IFx1YzkxMSBcdWM1YjRcdWIyOTAgXHVhYzgzXHVjNzQ0IFx1YzkxMVx1YzY5NFx1YzJkYyBcdWQ1NThcdWIyOTBcdWIwZDBcdWM1ZDAgXHViNTMwXHViNzdjIFx1Yzc4NVx1YjgyNVx1YzczY1x1Yjg1YyBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvbGk+XHJcblx0PGxpPlx1Yzc3NFx1YjU0YyBcdWM4MDRcdWNjYjQgXHVjNWQwXHViN2VjXHViMjk0IFx1Yzc4NVx1YjgyNSBcdWMyMThcdWM1ZjQgeDxzdWI+MTxcL3N1Yj4sIHg8c3ViPjI8XC9zdWI+LCAsIHg8c3ViPk48XC9zdWI+ICwgXHViY2MwXHVkNjU4IFx1YzIxOFx1YzVmNCB5PHN1Yj4xPFwvc3ViPiwgeTxzdWI+MjxcL3N1Yj4sICwgeTxzdWI+TjxcL3N1Yj5cdWM1ZDAgXHViMzAwXHVkNTc0XHVjMTFjIFx1YjJlNFx1Yzc0Y1x1YWNmYyZuYnNwO1x1YWMxOVx1YjJlNC4mbmJzcDsmU2lnbWE7fHg8c3ViPmk8XC9zdWI+LXk8c3ViPmk8XC9zdWI+fDxcL2xpPlxyXG48XC9vbD5cclxuXHJcbjxwPlx1YzIxOFx1YzVmNFx1Yzc3NCAyLCAyLCAyLCAyLCAyLCA0NiwgMiwgMiBcdWM3NzRcdWFjZTAsJm5ic3A7V1x1YWMwMCAxMDBcdWM3NzggXHVhY2JkXHVjNmIwXHVjNWQwJm5ic3A7eTxzdWI+MTxcL3N1Yj4sLi4uLCB5PHN1Yj44PFwvc3ViPiA9IDEsIDEsIDEsIDEsIDEsIDg2LCAxLCAxIFx1Yjg1YyBcdWJjYzBcdWQ2NThcdWQ1NThcdWJhNzQgXHVjZjU0XHViNGRjXHViMjk0IDAwMDAwMDEwMTEwMDBcdWM3NzQgXHViNDE4XHVhY2UwLCZuYnNwO1x1YmNjMFx1ZDY1OCBcdWJlNDRcdWM2YTlcdWM3NDAgNDcgKyAxMDAgJnRpbWVzOyAxMyA9IDEzNDdcdWM3NzRcdWIyZTQuIFx1ZDU1OFx1YzljMFx1YjljYyB5PHN1Yj4xPFwvc3ViPiwuLi4sIHk8c3ViPjg8XC9zdWI+ID0gMSwgMSwgMSwgMSwgMSwgMSwgMSwgMVx1Yjg1YyBcdWJjYzBcdWQ2NThcdWQ1NThcdWJhNzQgXHVjZjU0XHViNGRjXHViMjk0IDAwMDAwMDAwMFx1Yzc3NFx1YWNlMCBcdWJjYzBcdWQ2NTggXHViZTQ0XHVjNmE5XHVjNzQwIDUyICsgMTAwICZ0aW1lczsgOSA9IDk1Mlx1Yzc3NFx1YjJlNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDAmbmJzcDtcdWMyMThcdWM1ZjRcdWM3NTggXHVhZTM4XHVjNzc0IE4oMSAmbGU7Jm5ic3A7TiAmbGU7IDUwKSwgXHVhYzAwXHVjOTExXHVjZTU4IFcoMCAmbGU7IFcgJmxlOyAxMDApXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHViMmU0XHVjNzRjIE5cdWFjMWNcdWM3NTggXHVjOTA0XHVjNWQwXHViMjk0IFx1YzIxOFx1YzVmNFx1Yzc0NCBcdWM3NzRcdWI4ZThcdWIyOTQgXHVjODE1XHVjMjE4XHVhYzAwJm5ic3A7XHVjYzI4XHViODQwXHViODVjIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWNjYWJcdWM5MDRcdWM1ZDBcdWIyOTQgXHVjZDVjXHVjMThjIFx1YmNjMFx1ZDY1OCBcdWJlNDRcdWM2YTlcdWM3NDQgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LiBcdWFkZjhcdWI5YWNcdWFjZTAgXHViNDUwIFx1YmM4OFx1YzlmOCBcdWM5MDRcdWM1ZDBcdWIyOTQgXHViY2MwXHVkNjU4XHVjZjU0XHViNGRjXHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4ifSx7InByb2JsZW1faWQiOiIyMzQxIiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiRmF4IiwiZGVzY3JpcHRpb24iOiI8cD5Zb3UgYXJlIGFza2VkIHRvIGRlc2lnbiBhIGNvbXByZXNzaW9uIHNjaGVtZSBmb3IgdHJhbnNtaXR0aW5nIGZheCBpbWFnZXMgb2YgZG9jdW1lbnRzLiBBZnRlciBhbiBpbWFnZSBpcyBzY2FubmVkIGluIHVzaW5nIGEgc2Nhbm5lciwgeW91IG9idGFpbiBhIHNlcXVlbmNlIG9mIG51bWJlcnMgd2hlcmUgZWFjaCBudW1iZXIgeCB0YWtlcyBhIHZhbHVlIGZyb20gMSB0byAyNTYuIEZvciBleGFtcGxlLCBhbiBpbWFnZSBtYXkgYmUgY29udmVydGVkIGludG8gYSBzZXF1ZW5jZSBvZiB0aGUgZm9ybSZuYnNwOzxcL3A+XHJcblxyXG48cD4xLCAxLCAxLCAxLCAxLCA0NiwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMiwgMSwgMiwgMSwgMSwgMSwgMjUsIDI2LCAyNSwgMjUsIDI1NSwgMjU2LCAyNTYsIDI1NiwgMjU1LCAmaGVsbGlwOzxcL3A+XHJcblxyXG48cD5TaW5jZSBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHRyYW5zbWl0IHRoZSBleGFjdCBpbWFnZSwgeW91IGRlY2lkZSB0byBkaXNjcmV0aXplIGVhY2ggbnVtYmVyIHRvIDQgbGV2ZWxzLCBuYW1lbHkgMSwgODYsIDE3MiBhbmQgMjU2LCBzbyB0aGF0IHlvdSBjYW4gY29kZSBlYWNoIGxldmVsIHVzaW5nIG9ubHkgMiBiaXRzIGFzIGZvbGxvd3M8XC9wPlxyXG5cclxuPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWRcIiBzdHlsZT1cIndpZHRoOjQwJVwiPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6OCVcIj5MZXZlbDxcL3RoPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo4JVwiPjE8XC90ZD5cclxuXHRcdFx0PHRkIHN0eWxlPVwid2lkdGg6OCVcIj44NjxcL3RkPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo4JVwiPjE3MjxcL3RkPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo4JVwiPjI1NjxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0aCBzdHlsZT1cIndpZHRoOjglXCI+Q29kZTxcL3RoPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo4JVwiPjAwPFwvdGQ+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MDE8XC90ZD5cclxuXHRcdFx0PHRkIHN0eWxlPVwid2lkdGg6OCVcIj4xMDxcL3RkPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo4JVwiPjExPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90Ym9keT5cclxuPFwvdGFibGU+XHJcblxyXG48cD5UaGVuIHlvdSByZWFsaXplIHRoYXQgbGFyZ2UgYXJlYXMgb2YgdGhlIHNhbWUgdmFsdWUgKGUuZy4gd2hpdGUpIG9mdGVuIG9jY3VyIGluIGRvY3VtZW50cyByZXN1bHRpbmcgaW4gbG9uZyBzZXF1ZW5jZXMgb2YgdmVyeSBzaW1pbGFyIG51bWJlcnMuIFlvdSBkZWNpZGUgdG8gYWRvcHQgYSBjb21wcmVzc2lvbiBzY2hlbWUgYXMgZm9sbG93czo8XC9wPlxyXG5cclxuPG9sPlxyXG5cdDxsaT5Gb3IgdGhlIGZpcnN0IG51bWJlciBpbiB0aGUgc2VxdWVuY2UsIHlvdSB3aWxsIHVzZSB0aGUgMiBiaXRzIGFzIGRlc2NyaWJlZCBwcmV2aW91c2x5LjxcL2xpPlxyXG5cdDxsaT5Gb3IgYWxsIG90aGVyIG51bWJlcnM6XHJcblx0PHVsPlxyXG5cdFx0PGxpPmlmIHRoZSBwcmV2aW91cyBudW1iZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgbnVtYmVyLCB5b3Ugd2lsbCB0cmFuc21pdCB0aGUgYml0IDAuPFwvbGk+XHJcblx0XHQ8bGk+b3RoZXJ3aXNlLCB5b3Ugd2lsbCB0cmFuc21pdCB0aGUgYml0IDEgZm9sbG93ZWQgYnkgdGhlIDItYml0IGNvZGUgb2YgdGhlIG51bWJlci4gVGhhdCBpcyxcclxuXHRcdDx1bD5cclxuXHRcdFx0PGxpPjEgZm9sbG93ZWQgYnkgMDAgZm9yIG51bWJlciAxLDxcL2xpPlxyXG5cdFx0XHQ8bGk+MSBmb2xsb3dlZCBieSAwMSBmb3IgbnVtYmVyIDg2LDxcL2xpPlxyXG5cdFx0XHQ8bGk+MSBmb2xsb3dlZCBieSAxMCBmb3IgbnVtYmVyIDE3Miw8XC9saT5cclxuXHRcdFx0PGxpPjEgZm9sbG93ZWQgYnkgMTEgZm9yIG51bWJlciAyNTYuPFwvbGk+XHJcblx0XHQ8XC91bD5cclxuXHRcdDxcL2xpPlxyXG5cdDxcL3VsPlxyXG5cdDxcL2xpPlxyXG48XC9vbD5cclxuXHJcbjxwPkZpbmFsbHksIHNpbmNlIHlvdSBhcmUgbm90IHdvcnJpZWQgYWJvdXQgYSBzbWFsbCBhbW91bnQgb2YgZXJyb3IsIHlvdSByZWFsaXplIHRoYXQgeW91IGNhbiBpbXByb3ZlIHlvdXIgc2NoZW1lIGJ5IGlnbm9yaW5nIGlzb2xhdGVkIGNoYW5nZXMuIEZvciBleGFtcGxlLCBpZiB0aGUgaW5wdXQgc2VxdWVuY2UgaXMgMiwgMiwgMiwgMiwgMiwgNDYsIDIsIDIgYW5kIHlvdSB0cmFuc21pdCB0aGUgc2VxdWVuY2UgMSwgMSwgMSwgMSwgMSwgODYsIDEsIDEsIHRoZSB0b3RhbCBlcnJvciB3aWxsIGJlIDEgKyAxICsgMSArIDEgKyAxICsgNDAgKyAxICsgMSA9IDQ3IGFuZCB0aGUgc3RyaW5nIHRoYXQgbmVlZHMgdG8gYmUgdHJhbnNtaXR0ZWQgaXMgMDAwMDAwMTAxMTAwMC4gSWYsIGluc3RlYWQgeW91IGNob29zZSB0byB0cmFuc21pdCB0aGUgc2VxdWVuY2UgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgdGhlIHRvdGFsIGVycm9yIHdpbGwgYmUgMSArIDEgKyAxICsgMSArIDEgKyA0NSArIDEgKyAxID0gNTIsIGJ1dCB0aGUgc3RyaW5nIHRoYXQgbmVlZHMgdG8gYmUgdHJhbnNtaXR0ZWQgd291bGQgYmUgMDAwMDAwMDAwIHdoaWNoIGlzIHNob3J0ZXIuJm5ic3A7PFwvcD5cclxuXHJcbjxwPllvdSBkZWNpZGUgdG8gbWVhc3VyZSB0aGUgb3ZlcmFsbCBjb3N0IG9mIGEgdHJhbnNtaXNzaW9uIGJ5IHRoZSBmb2xsb3dpbmcgd2VpZ2h0ZWQgc3VtJm5ic3A7PFwvcD5cclxuXHJcbjxwPmNvc3QgPSB0b3RhbCBlcnJvciArIFcgJnRpbWVzOyAodG90YWwgbnVtYmVyIG9mIGJpdHMgdHJhbnNtaXR0ZWQpPFwvcD5cclxuXHJcbjxwPndoZXJlPFwvcD5cclxuXHJcbjxvbD5cclxuXHQ8bGk+dGhlIHdlaWdodCBXIGNhbiBiZSBhZGp1c3RlZCB0byBnaXZlIG1vcmUgZW1waGFzaXMgdG8gZWl0aGVyIHRoZSB0b3RhbCBlcnJvciBvciB0aGUgdG90YWwgbnVtYmVyIG9mIGJpdHMgdHJhbnNtaXR0ZWQ8XC9saT5cclxuXHQ8bGk+Zm9yIGFuIGlucHV0IHNlcXVlbmNlIHg8c3ViPjE8XC9zdWI+LCB4PHN1Yj4yPFwvc3ViPiwgJmhlbGxpcDssIHg8c3ViPk48XC9zdWI+IGFuZCBhIHRyYW5zbWl0dGVkIHNlcXVlbmNlIHk8c3ViPjE8XC9zdWI+LCB5PHN1Yj4yPFwvc3ViPiwgJmhlbGxpcDssIHk8c3ViPk48XC9zdWI+LCBib3RoIG9mIGxlbmd0aCBOLCB0aGUgdG90YWwgZXJyb3IgaXMgU3VtbWF0aW9uIChpIGZyb20gMSB0byBOKSB8eDxzdWI+aTxcL3N1Yj4gLSB5PHN1Yj5pPFwvc3ViPnwgPSB8eDxzdWI+MTxcL3N1Yj4gLSB5PHN1Yj4xPFwvc3ViPnwgKyAmaGVsbGlwOyArIHx4PHN1Yj5OPFwvc3ViPiAtIHk8c3ViPk48XC9zdWI+fC48XC9saT5cclxuPFwvb2w+XHJcblxyXG48cD5Gb3IgdGhlIGlucHV0IHNlcXVlbmNlIDIsIDIsIDIsIDIsIDIsIDQ2LCAyLCAyIHdpdGggVyA9IDEwMCw8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT53ZSBjYW4gdHJhbnNtaXQgdGhlIHNlcXVlbmNlIHk8c3ViPjE8XC9zdWI+LCAmaGVsbGlwOywgeTxzdWI+ODxcL3N1Yj4gPSAxLCAxLCAxLCAxLCAxLCA4NiwgMSwgMSBieSB0cmFuc21pdHRpbmcgdGhlIHN0cmluZyAwMDAwMDAxMDExMDAwIHdpdGggYSBjb3N0IG9mIDQ3ICsgMTAwICZ0aW1lczsgMTMgPSAxMzQ3OzxcL2xpPlxyXG5cdDxsaT5vciB3ZSBjYW4gdHJhbnNtaXQgdGhlIHNlcXVlbmNlIHk8c3ViPjE8XC9zdWI+LCAmaGVsbGlwOywgeTxzdWI+ODxcL3N1Yj4gPSAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxIGJ5IHRyYW5zbWl0dGluZyB0aGUgc3RyaW5nIDAwMDAwMDAwMCB3aXRoIGEgY29zdCBvZiA1MiArIDEwMCAmdGltZXM7IDkgPSA5NTIuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+SW4gdGhpcyBjYXNlLCB0aGUgc2Vjb25kIG9wdGlvbiBoYXMgbG93ZXIgY29zdC4mbmJzcDs8XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBpbnB1dCBjb25zaXN0cyBvZiBzZXZlcmFsIGxpbmVzLiBUaGUgZmlyc3QgbGluZSBjb250YWlucyB0d28gaW50ZWdlcnMgTiAoMSAmbGU7Jm5ic3A7TiAmbGU7Jm5ic3A7NTApIGFuZCBXICgxICZsZTsmbmJzcDtXICZsZTsmbmJzcDsxMDApIGluIHRoaXMgb3JkZXIuIEludGVnZXIgTiBkZW5vdGVzIHRoZSBsZW5ndGggb2YgdGhlIGlucHV0IHNlcXVlbmNlIGFuZCBpbnRlZ2VyIFcgaXMgdGhlIHdlaWdodC4gRWFjaCBvZiB0aGUgc3Vic2VxdWVudCBOIGxpbmVzIGNvbnRhaW5zIGFuIGludGVnZXIgeCAoMSAmbGU7Jm5ic3A7eCAmbGU7Jm5ic3A7MjU2KSBvZiB0aGUgc2VxdWVuY2UuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+VGhlIG91dHB1dCBjb250YWlucyBhIHNpbmdsZSBpbnRlZ2VyIHdoaWNoIGlzIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBjb3N0IHJlcXVpcmVkIHRvIHRyYW5zbWl0IHRoZSBpbnB1dCBzZXF1ZW5jZSB3aXRoIHRoZSBnaXZlbiB2YWx1ZSBvZiBXLjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IkVuZ2xpc2gifV0=