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

문제

연결된, 무향 그래프 G=(V, E)가 주어졌을 때, V가 정점의 집합을 나타내고, E가 간선의 집합을 나타낸다고 하자. V의 부분집합 S를 G에서 제거했을 때, 그래프가 두 개의 연결 요소로 나눠지면 S를 분리자라고 한다. 그래프에서 정점을 제거하면 제거한 정점에 연결된 간선도 함께 제거된다. 이와 같은 상황을 [S, W, B] 라는 기호로 나타내기로 하자. 이는 그래프가 분리자 S에 의해서 W와 B라는 두 개의 연결 요소로 나뉘어 진다는 의미이다.

우리는 격자 모양의 그래프에서의 분리자를 살펴보려 한다. 이 그래프에서 각각의 격자점이 정점을 이루며, 각각의 정점은 이웃한 8개의 정점들과 연결되어 있다. 아래에 6×6 격자 에 대한 예제 그림이 있다. 흰색은 W, 회색은 S, 검은색은 B를 나타낸다.

문제를 단순화하기 위해, 다음의 조건을 만족하는 분리자만 다루기로 하자.

  1. 분리자의 부분집합은 분리자를 이루지 않는다.
  2. 분리자는 그래프에서 맨 윗줄의 한 점과 맨 아랫줄의 한 점을 포함한다. 단, 0, 5, 30, 35는 제외한다.
  3. 분리자를 따라서 그래프를 위에서 아래로 이동할 때, 내려오다가 다시 올라가는 경우는 없다.

이제 다음의 두 단계를 수행하여 분리자의 크기를 줄이려고 한다.

  1. B에서 몇 개의 정점을 택해서 S에 포함시킨다. 이때 택한 정점들은 반드시 왼쪽 정점으로 S에 포함된 정점을 가지고 있어야 한다.
  2. S에서 몇 개의 정점을 제거하여 W에 포함시킨다. 단, 이전 단계에서 포함시킨 정점들은 제거할 수 없다.

이와 같은 개선 방법을 이용하여 S가 여전히 분리자이도록 하고, 이때 S의 크기를 최소로 하라. 위의 예제는 다음과 같이 하면 S의 크기가 7로 최소가 된다.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

첫째 줄에 격자의 크기를 나타내는 두 정수 N, M(3 ≤ N, M ≤ 200)이 주어진다. 이는 격자의 크기가 N×M이라는 의미이다. 다음 N개의 줄에는 M개의 문자가 주어지는데, 각각은 S, W, B 중의 하나이다. 이는 해당 정점이 S, W, B 중 어느 집합에 속해있는지를 나타낸다. W는 반드시 S의 왼쪽에 존재한다. 잘못된 입력이 주어지지는 않는다고 가정해도 좋다. 모든 문자는 붙어서 입력된다.

입력의 마지막 줄에는 0이 두 개 주어진다.

출력

첫째 줄에 S의 최소 크기를 출력한다.

예제 입력 1

6 6
WWSBBB
WSSBBB
WSBBBB
WSBBBB
WSSSBB
WWWSBB
0 0

예제 출력 1

7
W3sicHJvYmxlbV9pZCI6IjIyODgiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWFjYTlcdWM3OTBcdWM3NTggXHViZDg0XHViOWFjXHVjNzkwIiwiZGVzY3JpcHRpb24iOiI8cD5cdWM1ZjBcdWFjYjBcdWI0MWMsIFx1YmIzNFx1ZDVhNSBcdWFkZjhcdWI3OThcdWQ1MDQgRz0oViwgRSlcdWFjMDAgXHVjOGZjXHVjNWI0XHVjODRjXHVjNzQ0IFx1YjU0YywgVlx1YWMwMCBcdWM4MTVcdWM4MTBcdWM3NTggXHVjOWQxXHVkNTY5XHVjNzQ0IFx1YjA5OFx1ZDBjMFx1YjBiNFx1YWNlMCwgRVx1YWMwMCBcdWFjMDRcdWMxMjBcdWM3NTggXHVjOWQxXHVkNTY5XHVjNzQ0IFx1YjA5OFx1ZDBjMFx1YjBiOFx1YjJlNFx1YWNlMCBcdWQ1NThcdWM3OTAuIFZcdWM3NTggXHViZDgwXHViZDg0XHVjOWQxXHVkNTY5IFNcdWI5N2MgR1x1YzVkMFx1YzExYyBcdWM4MWNcdWFjNzBcdWQ1ODhcdWM3NDQgXHViNTRjLCBcdWFkZjhcdWI3OThcdWQ1MDRcdWFjMDAgXHViNDUwIFx1YWMxY1x1Yzc1OCBcdWM1ZjBcdWFjYjAgXHVjNjk0XHVjMThjXHViODVjIFx1YjA5OFx1YjIyMFx1YzljMFx1YmE3NCBTXHViOTdjIFx1YmQ4NFx1YjlhY1x1Yzc5MFx1Yjc3Y1x1YWNlMCBcdWQ1NWNcdWIyZTQuIFx1YWRmOFx1Yjc5OFx1ZDUwNFx1YzVkMFx1YzExYyBcdWM4MTVcdWM4MTBcdWM3NDQgXHVjODFjXHVhYzcwXHVkNTU4XHViYTc0IFx1YzgxY1x1YWM3MFx1ZDU1YyBcdWM4MTVcdWM4MTBcdWM1ZDAgXHVjNWYwXHVhY2IwXHViNDFjIFx1YWMwNFx1YzEyMFx1YjNjNCBcdWQ1NjhcdWFlZDggXHVjODFjXHVhYzcwXHViNDFjXHViMmU0LiBcdWM3NzRcdWM2NDAgXHVhYzE5XHVjNzQwIFx1YzBjMVx1ZDY2OVx1Yzc0NCBbUywgVywgQl0gXHViNzdjXHViMjk0IFx1YWUzMFx1ZDYzOFx1Yjg1YyBcdWIwOThcdWQwYzBcdWIwYjRcdWFlMzBcdWI4NWMgXHVkNTU4XHVjNzkwLiBcdWM3NzRcdWIyOTQgXHVhZGY4XHViNzk4XHVkNTA0XHVhYzAwIFx1YmQ4NFx1YjlhY1x1Yzc5MCBTXHVjNWQwIFx1Yzc1OFx1ZDU3NFx1YzExYyBXXHVjNjQwIEJcdWI3N2NcdWIyOTQgXHViNDUwIFx1YWMxY1x1Yzc1OCBcdWM1ZjBcdWFjYjAgXHVjNjk0XHVjMThjXHViODVjIFx1YjA5OFx1YjI1OFx1YzViNCBcdWM5YzRcdWIyZTRcdWIyOTQgXHVjNzU4XHViYmY4XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM2YjBcdWI5YWNcdWIyOTQgXHVhY2E5XHVjNzkwIFx1YmFhOFx1YzU5MVx1Yzc1OCBcdWFkZjhcdWI3OThcdWQ1MDRcdWM1ZDBcdWMxMWNcdWM3NTggXHViZDg0XHViOWFjXHVjNzkwXHViOTdjIFx1YzBiNFx1ZDNiNFx1YmNmNFx1YjgyNCBcdWQ1NWNcdWIyZTQuIFx1Yzc3NCBcdWFkZjhcdWI3OThcdWQ1MDRcdWM1ZDBcdWMxMWMgXHVhYzAxXHVhYzAxXHVjNzU4IFx1YWNhOVx1Yzc5MFx1YzgxMFx1Yzc3NCBcdWM4MTVcdWM4MTBcdWM3NDQgXHVjNzc0XHViOGU4XHViYTcwLCBcdWFjMDFcdWFjMDFcdWM3NTggXHVjODE1XHVjODEwXHVjNzQwIFx1Yzc3NFx1YzZjM1x1ZDU1YyA4XHVhYzFjXHVjNzU4IFx1YzgxNVx1YzgxMFx1YjRlNFx1YWNmYyBcdWM1ZjBcdWFjYjBcdWI0MThcdWM1YjQgXHVjNzg4XHViMmU0LiBcdWM1NDRcdWI3OThcdWM1ZDAgNiZ0aW1lczs2IFx1YWNhOVx1Yzc5MCBcdWM1ZDAgXHViMzAwXHVkNTVjIFx1YzYwOFx1YzgxYyBcdWFkZjhcdWI5YmNcdWM3NzQgXHVjNzg4XHViMmU0LiBcdWQ3NzBcdWMwYzlcdWM3NDAgVywgXHVkNjhjXHVjMGM5XHVjNzQwIFMsIFx1YWM4MFx1Yzc0MFx1YzBjOVx1Yzc0MCBCXHViOTdjIFx1YjA5OFx1ZDBjMFx1YjBiOFx1YjJlNC48XC9wPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJcL0p1ZGdlT25saW5lXC91cGxvYWRcLzIwMTAwOVwvMS5QTkdcIiBzdHlsZT1cImhlaWdodDozNTJweDsgd2lkdGg6MzQ5cHhcIiBcLz48XC9wPlxyXG5cclxuPHA+XHViYjM4XHVjODFjXHViOTdjIFx1YjJlOFx1YzIxY1x1ZDY1NFx1ZDU1OFx1YWUzMCBcdWM3MDRcdWQ1NzQsIFx1YjJlNFx1Yzc0Y1x1Yzc1OCBcdWM4NzBcdWFjNzRcdWM3NDQgXHViOWNjXHVjODcxXHVkNTU4XHViMjk0IFx1YmQ4NFx1YjlhY1x1Yzc5MFx1YjljYyBcdWIyZTRcdWI4ZThcdWFlMzBcdWI4NWMgXHVkNTU4XHVjNzkwLjxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPlx1YmQ4NFx1YjlhY1x1Yzc5MFx1Yzc1OCBcdWJkODBcdWJkODRcdWM5ZDFcdWQ1NjlcdWM3NDAgXHViZDg0XHViOWFjXHVjNzkwXHViOTdjIFx1Yzc3NFx1YjhlOFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuPFwvbGk+XHJcblx0PGxpPlx1YmQ4NFx1YjlhY1x1Yzc5MFx1YjI5NCBcdWFkZjhcdWI3OThcdWQ1MDRcdWM1ZDBcdWMxMWMgXHViOWU4IFx1YzcxN1x1YzkwNFx1Yzc1OCBcdWQ1NWMgXHVjODEwXHVhY2ZjIFx1YjllOCBcdWM1NDRcdWI3YWJcdWM5MDRcdWM3NTggXHVkNTVjIFx1YzgxMFx1Yzc0NCBcdWQzZWNcdWQ1NjhcdWQ1NWNcdWIyZTQuIFx1YjJlOCwgMCwgNSwgMzAsIDM1XHViMjk0IFx1YzgxY1x1YzY3OFx1ZDU1Y1x1YjJlNC48XC9saT5cclxuXHQ8bGk+XHViZDg0XHViOWFjXHVjNzkwXHViOTdjIFx1YjUzMFx1Yjc3Y1x1YzExYyBcdWFkZjhcdWI3OThcdWQ1MDRcdWI5N2MgXHVjNzA0XHVjNWQwXHVjMTFjIFx1YzU0NFx1Yjc5OFx1Yjg1YyBcdWM3NzRcdWIzZDlcdWQ1NjAgXHViNTRjLCBcdWIwYjRcdWI4MjRcdWM2MjRcdWIyZTRcdWFjMDAgXHViMmU0XHVjMmRjIFx1YzYyY1x1Yjc3Y1x1YWMwMFx1YjI5NCBcdWFjYmRcdWM2YjBcdWIyOTQgXHVjNWM2XHViMmU0LjxcL2xpPlxyXG48XC9vbD5cclxuXHJcbjxwPlx1Yzc3NFx1YzgxYyBcdWIyZTRcdWM3NGNcdWM3NTggXHViNDUwIFx1YjJlOFx1YWNjNFx1Yjk3YyBcdWMyMThcdWQ1ODlcdWQ1NThcdWM1ZWMgXHViZDg0XHViOWFjXHVjNzkwXHVjNzU4IFx1ZDA2Y1x1YWUzMFx1Yjk3YyBcdWM5MDRcdWM3NzRcdWI4MjRcdWFjZTAgXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPkJcdWM1ZDBcdWMxMWMgXHViYTg3IFx1YWMxY1x1Yzc1OCBcdWM4MTVcdWM4MTBcdWM3NDQgXHVkMGRkXHVkNTc0XHVjMTFjIFNcdWM1ZDAgXHVkM2VjXHVkNTY4XHVjMmRjXHVkMGE4XHViMmU0LiBcdWM3NzRcdWI1NGMgXHVkMGRkXHVkNTVjIFx1YzgxNVx1YzgxMFx1YjRlNFx1Yzc0MCBcdWJjMThcdWI0ZGNcdWMyZGMgXHVjNjdjXHVjYWJkIFx1YzgxNVx1YzgxMFx1YzczY1x1Yjg1YyBTXHVjNWQwIFx1ZDNlY1x1ZDU2OFx1YjQxYyBcdWM4MTVcdWM4MTBcdWM3NDQgXHVhYzAwXHVjOWMwXHVhY2UwIFx1Yzc4OFx1YzViNFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvbGk+XHJcblx0PGxpPlNcdWM1ZDBcdWMxMWMgXHViYTg3IFx1YWMxY1x1Yzc1OCBcdWM4MTVcdWM4MTBcdWM3NDQgXHVjODFjXHVhYzcwXHVkNTU4XHVjNWVjIFdcdWM1ZDAgXHVkM2VjXHVkNTY4XHVjMmRjXHVkMGE4XHViMmU0LiBcdWIyZTgsIFx1Yzc3NFx1YzgwNCBcdWIyZThcdWFjYzRcdWM1ZDBcdWMxMWMgXHVkM2VjXHVkNTY4XHVjMmRjXHVkMGE4IFx1YzgxNVx1YzgxMFx1YjRlNFx1Yzc0MCBcdWM4MWNcdWFjNzBcdWQ1NjAgXHVjMjE4IFx1YzVjNlx1YjJlNC48XC9saT5cclxuPFwvb2w+XHJcblxyXG48cD5cdWM3NzRcdWM2NDAgXHVhYzE5XHVjNzQwIFx1YWMxY1x1YzEyMCBcdWJjMjlcdWJjOTVcdWM3NDQgXHVjNzc0XHVjNmE5XHVkNTU4XHVjNWVjIFNcdWFjMDAgXHVjNWVjXHVjODA0XHVkNzg4IFx1YmQ4NFx1YjlhY1x1Yzc5MFx1Yzc3NFx1YjNjNFx1Yjg1ZCBcdWQ1NThcdWFjZTAsIFx1Yzc3NFx1YjU0YyBTXHVjNzU4IFx1ZDA2Y1x1YWUzMFx1Yjk3YyBcdWNkNWNcdWMxOGNcdWI4NWMgXHVkNTU4XHViNzdjLiBcdWM3MDRcdWM3NTggXHVjNjA4XHVjODFjXHViMjk0IFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWM3NzQgXHVkNTU4XHViYTc0IFNcdWM3NTggXHVkMDZjXHVhZTMwXHVhYzAwIDdcdWI4NWMgXHVjZDVjXHVjMThjXHVhYzAwIFx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJcL0p1ZGdlT25saW5lXC91cGxvYWRcLzIwMTAwOVwvMi5QTkdcIiBzdHlsZT1cImhlaWdodDozNTJweDsgd2lkdGg6MzQ5cHhcIiBcLz48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Yzc4NVx1YjgyNVx1Yzc0MCBcdWM1ZWNcdWI3ZWMgXHVhYzFjXHVjNzU4IFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjODM4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMCBcdWFjYTlcdWM3OTBcdWM3NTggXHVkMDZjXHVhZTMwXHViOTdjIFx1YjA5OFx1ZDBjMFx1YjBiNFx1YjI5NCBcdWI0NTAgXHVjODE1XHVjMjE4IE4sIE0oMyAmbGU7IE4sIE0gJmxlOyAyMDApXHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHVjNzc0XHViMjk0IFx1YWNhOVx1Yzc5MFx1Yzc1OCBcdWQwNmNcdWFlMzBcdWFjMDAgTiZ0aW1lcztNXHVjNzc0XHViNzdjXHViMjk0IFx1Yzc1OFx1YmJmOFx1Yzc3NFx1YjJlNC4gXHViMmU0XHVjNzRjIE5cdWFjMWNcdWM3NTggXHVjOTA0XHVjNWQwXHViMjk0IE1cdWFjMWNcdWM3NTggXHViYjM4XHVjNzkwXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljMFx1YjI5NFx1YjM3MCwgXHVhYzAxXHVhYzAxXHVjNzQwIFMsIFcsIEIgXHVjOTExXHVjNzU4IFx1ZDU1OFx1YjA5OFx1Yzc3NFx1YjJlNC4gXHVjNzc0XHViMjk0IFx1ZDU3NFx1YjJmOSBcdWM4MTVcdWM4MTBcdWM3NzQgUywgVywgQiBcdWM5MTEgXHVjNWI0XHViMjkwIFx1YzlkMVx1ZDU2OVx1YzVkMCBcdWMxOGRcdWQ1NzRcdWM3ODhcdWIyOTRcdWM5YzBcdWI5N2MgXHViMDk4XHVkMGMwXHViMGI4XHViMmU0LiBXXHViMjk0IFx1YmMxOFx1YjRkY1x1YzJkYyBTXHVjNzU4IFx1YzY3Y1x1Y2FiZFx1YzVkMCBcdWM4NzRcdWM3YWNcdWQ1NWNcdWIyZTQuIFx1Yzc5OFx1YmFiYlx1YjQxYyBcdWM3ODVcdWI4MjVcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWMwXHVjOWMwXHViMjk0IFx1YzU0YVx1YjI5NFx1YjJlNFx1YWNlMCBcdWFjMDBcdWM4MTVcdWQ1NzRcdWIzYzQgXHVjODhiXHViMmU0LiBcdWJhYThcdWI0ZTAgXHViYjM4XHVjNzkwXHViMjk0IFx1YmQ5OVx1YzViNFx1YzExYyBcdWM3ODVcdWI4MjVcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yzc4NVx1YjgyNVx1Yzc1OCBcdWI5YzhcdWM5YzBcdWI5YzkgXHVjOTA0XHVjNWQwXHViMjk0IDBcdWM3NzQgXHViNDUwIFx1YWMxYyBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+XHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMCBTXHVjNzU4IFx1Y2Q1Y1x1YzE4YyBcdWQwNmNcdWFlMzBcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjAiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IktvcmVhbiJ9LHsicHJvYmxlbV9pZCI6IjIyODgiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJUaGUgU2VwYXJhdG9yIGluIEdyaWQiLCJkZXNjcmlwdGlvbiI6IjxwPkdpdmVuIGEgY29ubmVjdGVkLCB1bmRpcmVjdGVkIGdyYXBoIEcgPSAoViwgRSksIHdoZXJlIFYgaXMgdGhlIHZlcnRleCBzZXQgY29uc2lzdGluZyBhIGNvbGxlY3Rpb24gb2Ygbm9kZXMsIGFuZCBFIGlzIHRoZSBzZXQgb2YgZWRnZXMsIGVhY2ggb2Ygd2hpY2ggY29ubmVjdHMgdHdvIG5vZGVzIGZyb20gVi4gQSB2ZXJ0ZXggc3Vic2V0IFMgaXMgYSBzZXBhcmF0b3IgaWYgdGhlIHN1YmdyYXBoIGluZHVjZWQgYnkgdGhlIHZlcnRpY2VzIGluIFYsIGJ1dCBub3QgaW4gUywgaGFzIHR3byBjb25uZWN0ZWQgY29tcG9uZW50cy4gV2Ugc2hhbGwgdXNlIHRoZSBub3RhdGlvbiBbUywgVywgQl0gdG8gcmVwcmVzZW50IHRoZSBwYXJ0aXRpb24sIHdoZXJlIHRoZSByZW1vdmFsIG9mIHRoZSBzZXBhcmF0b3IgUyB3aWxsIGdpdmUgdHdvIGNvbm5lY3RlZCBjb21wb25lbnRzIFcgYW5kIEIuJm5ic3A7PFwvcD5cclxuXHJcblxyXG5cclxuPHRhYmxlIGNsYXNzPVwidGFibGVcIiBzdHlsZT1cIndpZHRoOjEwMCVcIj5cclxuXHQ8dGJvZHk+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjUwJVwiPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC9KdWRnZU9ubGluZVwvdXBsb2FkXC8yMDEwMDlcLzEuUE5HXCIgc3R5bGU9XCJoZWlnaHQ6MzUycHg7IG9wYWNpdHk6MC45OyB3aWR0aDozNDlweFwiIFwvPjxcL3RkPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo1MCVcIj48aW1nIGFsdD1cIlwiIHNyYz1cIlwvSnVkZ2VPbmxpbmVcL3VwbG9hZFwvMjAxMDA5XC8yLlBOR1wiIHN0eWxlPVwiaGVpZ2h0OjM1MnB4OyBvcGFjaXR5OjAuOTsgd2lkdGg6MzQ5cHhcIiBcLz48XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+RmlndXJlLTEuIFBhcnRpdGlvbiAoUyxXLEIpPFwvdGQ+XHJcblx0XHRcdDx0ZD5GaWd1cmUtMi4gTmV3IFBhcnRpdGlvbjxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGJvZHk+XHJcbjxcL3RhYmxlPlxyXG5cclxuPHA+SW4gdGhpcyBwcm9ibGVtLCB3ZSBjb25zaWRlciB0aGUgc2VwYXJhdG9ycyBpbiBncmlkcy4gRWFjaCBub2RlIGluIGEgZ3JpZCBpcyBjb25uZWN0ZWQgdG8gaXRzIGVpZ2h0IG5laWdoYm9ycyAoaWYgdGhleSBleGlzdCkuIEluIEZpZ3VyZS0xLCB3ZSBpbGx1c3RyYXRlIGEgcGFydGl0aW9uIG9mIGEgNio2IGdyaWQgd2l0aCBhIDktcG9pbnQgc2VwYXJhdG9yIChncmF5IG5vZGVzIGluIHRoZSBmaWd1cmUpLiBUaGUgbm9kZXMgb24gdGhlIGxlZnQgb2YgdGhlIHNlcGFyYXRvciBhcmUgaW4gc2V0IFcgKHdoaXRlIG5vZGVzKSwgYW5kIHRoZSBub2RlcyBvbiB0aGUgcmlnaHQgb2YgdGhlIHNlcGFyYXRvciBhcmUgaW4gc2V0IEIgKGJsYWNrIG5vZGVzKS4mbmJzcDs8XC9wPlxyXG5cclxuPHA+VG8gc2ltcGxpZnkgdGhlIHByb2JsZW0sIHlvdSBjYW4gYXNzdW1lIHRoYXQgYWxsIHRoZSBzZXBhcmF0b3JzIHJlZmVycmVkIGluIHRoaXMgcHJvYmxlbSBzYXRpc2Z5IHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOiZuYnNwOzxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPkl0JnJzcXVvO3MgYSBtaW5pbWFsIHNlcGFyYXRvci4gQSBzZXBhcmF0b3IgaXMgbWluaW1hbCBpZiBubyBzdWJzZXQgb2YgaXQgZm9ybXMgYSBzZXBhcmF0b3IuJm5ic3A7PFwvbGk+XHJcblx0PGxpPkl0IGJlZ2lucyBmcm9tIGEgbm9kZSBvbiB0aGUgdG9wIGxpbmUgb2YgdGhlIGdyaWQsIGV4Y2VwdCB0aGUgY29ybmVyIChpLmUuIDMwIGFuZCAzNSBpbiB0aGUgZmlndXJlcyksIGFuZCBlbmRzIHdpdGggYSBub2RlIG9uIHRoZSBib3R0b20gbGluZSBvZiB0aGUgZ3JpZCwgYWxzbyBleGNlcHQgdGhlIGNvcm5lciAoaS5lLiAwIGFuZCA1IGluIHRoZSBmaWd1cmVzKS48XC9saT5cclxuXHQ8bGk+T24gaXRzIHdheSBmcm9tIHRvcCB0byBib3R0b20sIGl0IGNhbiBnbyBsZWZ0LCByaWdodCBvciBkb3duLCBidXQgbmV2ZXIgZ28gdXAuJm5ic3A7PFwvbGk+XHJcbjxcL29sPlxyXG5cclxuPHA+Tm93IHdlIGRlc2NyaWJlIGEgbWV0aG9kIHRvIGltcHJvdmUgYSBnaXZlbiBwYXJ0aXRpb24gb24gYSBncmlkLCB0aHJvdWdoIHdoaWNoIHdlIGNhbiByZWR1Y2UgdGhlIG51bWJlciBvZiBub2RlcyBpbiB0aGUgc2VwYXJhdG9yLiBUaGlzIG1ldGhvZCBjb250YWlucyB0d28gc3RlcHM6Jm5ic3A7PFwvcD5cclxuXHJcbjxvbD5cclxuXHQ8bGk+U2VsZWN0IHNldmVyYWwgbm9kZXMgZnJvbSBCIGFuZCBhZGQgdGhlbSBpbnRvIFMuIEFueSBvZiB0aGUgc2VsZWN0ZWQgbm9kZXMgbXVzdCBoYXZlIGEgbGVmdCBuZWlnaGJvciB3aGljaCBpcyBpbiBTLiZuYnNwOzxcL2xpPlxyXG5cdDxsaT5SZW1vdmUgc2V2ZXJhbCBub2RlcyBmcm9tIFMgKGV4Y2x1ZGluZyB0aGUgbm9kZXMgYWRkZWQgaW4gdGhlIGZvcm1lciBzdGVwKSwgYW5kIGFkZCB0aGVtIGludG8gVy4mbmJzcDs8XC9saT5cclxuPFwvb2w+XHJcblxyXG48cD5BZnRlciB0aGUgaW1wcm92ZW1lbnQsIHdlIHNob3VsZCBlbnN1cmUgUyBpcyBzdGlsbCBhIHNlcGFyYXRvciwgYW5kIG1ha2UgdGhlIG51bWJlciBvZiBub2RlcyBpbiBTIGFzIHNtYWxsIGFzIHBvc3NpYmxlLiBBcyBmb3IgRmlndXJlLTEsIHdlIHNob3VsZCBhZGQgMTQgYW5kIDIwIGludG8gUywgYW5kIHJlbW92ZSA3LCAxMywgMTkgYW5kIDI1IGZyb20gUy4gQWZ0ZXIgdGhhdCwgd2Ugb2J0YWluIGEgbmV3IHBhcnRpdGlvbiB3aXRoIGEgNy1wb2ludCBzZXBhcmF0b3Igc2hvd24gaW4gRmlndXJlLTIuJm5ic3A7PFwvcD5cclxuXHJcbjxwPllvdXIgdGFzayBpcywgZ2l2ZW4gYSBwYXJ0aXRpb24gb24gYSBncmlkLCB0byBkZXRlcm1pbmUgdGhlIGxlYXN0IG51bWJlciBvZiBub2RlcyBpbiB0aGUgc2VwYXJhdG9yIGFmdGVyIHRoZSBpbXByb3ZlbWVudC4mbmJzcDs8XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZXJlIGFyZSBzZXZlcmFsIHRlc3QgY2FzZXMuIEVhY2ggY2FzZSBiZWdpbnMgd2l0aCBhIGxpbmUgY29udGFpbmluZyB0d28gaW50ZWdlcnMsIE4gYW5kIE0gKDMgJmxlOyBNLCBOICZsZTsmbmJzcDsyMDApLiBJbiBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgTiBsaW5lcywgdGhlcmUgYXJlIE0gY2hhcmFjdGVycywgZGVzY3JpYmluZyB0aGUgaW5pdGlhbCBwYXJ0aXRpb24gb2YgdGhlIE0qTiBncmlkLiBFdmVyeSBjaGFyYWN0ZXIgaXMgJiMzOTtTJiMzOTssICYjMzk7VyYjMzk7IG9yICYjMzk7QiYjMzk7LiBJdCBpcyBjb25maXJtZWQgdGhhdCBlYWNoIG9mIHRoZXNlIHRocmVlIGNoYXJhY3RlcnMgYXBwZWFycyBhdCBsZWFzdCBvbmNlIGluIGVhY2ggbGluZSwgYW5kICYjMzk7VyYjMzk7cyBhcmUgYWx3YXlzIG9uIHRoZSBsZWZ0IG9mICYjMzk7UyYjMzk7cy4mbmJzcDs8XC9wPlxyXG5cclxuPHA+QSB0ZXN0IGNhc2Ugb2YgTiA9IDAgYW5kIE0gPSAwIGluZGljYXRlcyB0aGUgZW5kIG9mIGlucHV0LCBhbmQgc2hvdWxkIG5vdCBiZSBwcm9jZXNzZWQuJm5ic3A7PFwvcD5cclxuIiwib3V0cHV0IjoiPHA+Rm9yIGVhY2ggdGVzdCBjYXNlLCB5b3Ugc2hvdWxkIG91dHB1dCBvbmUgbGluZSBjb250YWluaW5nIG9uZSBpbnRlZ2VyLCB3aGljaCBpcyB0aGUgbGVhc3QgbnVtYmVyIG9mIG5vZGVzIGluIHRoZSBzZXBhcmF0b3IgYWZ0ZXIgdGhlIGltcHJvdmVtZW50LjxcL3A+XHJcblxyXG48cD4mbmJzcDs8XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJFbmdsaXNoIn1d