Benford law

Nếu chúng ta gặp câu hỏi “Tần suất xuất hiện các chữ số từ 1 đến 9 tại vị trí chữ số đầu tiên của bộ dữ liệu về thu nhập cá nhân của 9 triệu người là bao nhiêu?” thì chúng ta dễ bị lôi kéo bởi ý tưởng rằng tần suất đó tuân theo Uniform Distribution và do vậy tần suất xuất hiện của mỗi chữ số sẽ là tương tự nhau và xấp xỉ 1/9 = 11.11%.

Giả định rằng các chữ số từ 1 đến 9 xuất hiện theo Uniform Distribution là một giả định hợp lí vì rõ ràng là: không có lí do gì mà một chữ số cụ thể nào đó, như số 1 chẳng hạn, lại có cơ hội xuất hiện nhiều hơn số 9 hay một số bất kì nào khác. Nếu khác đi, có vẻ thượng đế sẽ ưu ái với số 1.

Tuy nhiên năm 1938 một nhà vật lí kiêm kĩ sư điện tại GE phủ nhận giả thuyết này và cho rằng các chứ số từ 1 đến 9 (kí hiệu là d) sẽ có xác suất xuất hiện \(P(d)\) được thể hiện theo công thức sau:

\[P(d) = log_{10}(1 + \frac{1}{d})\]

Công thức này gọi là Benford law thực ra đã được đề cập trước đó vào năm 1881 bởi Simon Newcomb và do vậy còn có tên gọi khác là Newcomb–Benford law. Chúng ta minh họa định luật này bằng công cụ hình ảnh:

Theo định luật này thì rõ ràng số 1 có tần suất xuất hiện lớn nhất và các số càng lớn thì tần suất xuất hiện càng ít đi. Chi tiết hơn về định luật này cũng như các ứng dụng của nó bạn đọc có thể tìm hiểu thêm ở đây. Chúng ta sẽ kiểm tra xem liệu các chữ số từ 1 đến 9 fit ở mức độ như thế nào với định luật Benford với một số bộ dữ liệu cụ thể.

Định luật Benford là luật số bất thường hay luật chữ số thứ nhất , là một quan sát về phân phối của các chữ số trong nhiều dữ liệu các chữ số trong tập số ở đời sống thực. Luật Benford có thể được thực hiện trên tát cả các số liệu kinh doanh, các tỷ lệ quay vòng hàng năm cho tới các hằng số vật lý cơ bản. Chúng ta cũng có thể dùng luật Benford để kiểm tra sự bất quy tắc trong các xét nghiệm thuốc hay xác định các mô hình, biểu đồ dữ liệu.

Có một số ví dụ tiêu biểu nói về sự hiệu quả của luật Benford. Để kiểm tra sự trung thực trong các bản kê khai thuế, tổng thống Bill Clinton đã yêu cầu Mark Nigrini kiểm tra, kết quả là không có sự gian lận nào nhờ việc tiến sỹ đã xử dụng luật Benford. Luật Benford còn được dùng để kiểm tra tính khai báo trung thực của các quốc gia về dịch bệnh Covid điển hình như Trung Quốc. Tuy nhiên luật Benford không được dùng trong các trường hợp ngẫu nhiên như xổ số,… và phạm vi tập hợp quá hẹp.

Nếu số lượng dữ liệu tăng lên thì mức độ fit của dữ liệu với định luật Benford sẽ cao hơn.

Trước hết chúng ta viết một hàm nhận input là chuỗi các số từ 1 đến 9 - là chữ số ở vị trí thứ nhất từ một chuỗi số bất kì và hiển thị tần suất xuất hiện của chúng đồng thời so sánh tần suất thực tế với tần suất được dự báo bởi công thức Benford:

Ứng dụng định luật Benford vào việc phát hiện gian lận báo cáo tài chính

Sử dụng dữ liệu báo cáo tài chính 4 năm từ năm 2016 - 2019 của HPG và FTM so sánh

Vẽ đồ thị với HPG

Ta thấy rằng với 667 quan sát thì dữ liệu báo cáo tài chính của HPG có vẻ khá là fit với định luật Benford.

Sau đây ta sẽ xem thử đối với FTM thì ra sao

Với 461 quan sát từ dữ liệu báo cáo tài chính của FTM ta thấy rằng dữ liệu báo cáo tài chính của FTM không fit với định luật Benford. Không biết nếu ta tăng số lượng quan sát từ báo cáo tài chính của FTM lên thì có cải thiện không nhưng năm 2019 giá cổ phiếu của FTM giảm sàn 30 phiên. Điều này đặt một dấu hỏi lớn về mức độ minh bạch của FTM.

Các bằng chứng thực nghiệm ở trên về tần suất suất xuất hiện các chữ số từ 1 đến 9 trong thế giới thực có vẻ xác nhận định luật Benford. Và bởi vậy định luật này có nhiều ứng dụng. Một trong những ứng dụng đó là xác định các báo cáo tài chính gian lận của công ti Enron. Bạn đọc có thể tham khảo bài viết của The Wall Street Journal về áp dụng Benford law với tình huống của Enron ở đây.

LS0tDQp0aXRsZTogIktp4buDbSB0cmEgZ2lhbiBs4bqtbiBiw6FvIGPDoW8gdMOgaSBjaMOtbmggdHLDqm4gc8OgbiBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtICINCmF1dGhvcjogIkxpZW5kYWljYSINCnN1YnRpdGxlOiAiQ2h1b2luZ2F5Y2hhbmNoYW4iDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICAjIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGhpZ2hsaWdodDogemVuYnVybg0KICAgICMgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0aGVtZTogImZsYXRseSINCiAgICB0b2M6IFRSVUUNCiAgICB0b2NfZmxvYXQ6IFRSVUUNCi0tLQ0KDQpgYGB7ciBzZXR1cCxpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgZmlnLndpZHRoID0gMTAsIGZpZy5oZWlnaHQgPSA2KQ0KYGBgDQoNCiMgQmVuZm9yZCBsYXcNCg0KTuG6v3UgY2jDum5nIHRhIGfhurdwIGPDonUgaOG7j2kgIlThuqduIHN14bqldCB4deG6pXQgaGnhu4duIGPDoWMgY2jhu68gc+G7kSB04burIDEgxJHhur9uIDkgdOG6oWkgduG7iyB0csOtIGNo4buvIHPhu5EgxJHhuqd1IHRpw6puIGPhu6dhIGLhu5kgZOG7ryBsaeG7h3UgduG7gSB0aHUgbmjhuq1wIGPDoSBuaMOibiBj4bunYSA5IHRyaeG7h3UgbmfGsOG7nWkgbMOgIGJhbyBuaGnDqnU/IiB0aMOsIGNow7puZyB0YSBk4buFIGLhu4sgbMO0aSBrw6lvIGLhu59pIMO9IHTGsOG7n25nIHLhurFuZyB04bqnbiBzdeG6pXQgxJHDsyB0dcOibiB0aGVvIFVuaWZvcm0gRGlzdHJpYnV0aW9uIHbDoCBkbyB24bqteSB04bqnbiBzdeG6pXQgeHXhuqV0IGhp4buHbiBj4bunYSBt4buXaSBjaOG7ryBz4buRIHPhur0gbMOgIHTGsMahbmcgdOG7sSBuaGF1IHbDoCB44bqlcCB44buJIDEvOSA9IDExLjExJS4NCg0KR2nhuqMgxJHhu4tuaCBy4bqxbmcgY8OhYyBjaOG7ryBz4buRIHThu6sgMSDEkeG6v24gOSB4deG6pXQgaGnhu4duIHRoZW8gVW5pZm9ybSBEaXN0cmlidXRpb24gbMOgIG3hu5l0IGdp4bqjIMSR4buLbmggaOG7o3AgbMOtIHbDrCByw7UgcsOgbmcgbMOgOiBraMO0bmcgY8OzIGzDrSBkbyBnw6wgbcOgIG3hu5l0IGNo4buvIHPhu5EgY+G7pSB0aOG7gyBuw6BvIMSRw7MsIG5oxrAgc+G7kSAxIGNo4bqzbmcgaOG6oW4sIGzhuqFpIGPDsyBjxqEgaOG7mWkgeHXhuqV0IGhp4buHbiBuaGnhu4F1IGjGoW4gc+G7kSA5IGhheSBt4buZdCBz4buRIGLhuqV0IGvDrCBuw6BvIGtow6FjLiBO4bq/dSBraMOhYyDEkWksIGPDsyB24bq7IHRoxrDhu6NuZyDEkeG6vyBz4bq9IMawdSDDoWkgduG7m2kgc+G7kSAxLiANCg0KDQpUdXkgbmhpw6puIG7Eg20gMTkzOCBt4buZdCBuaMOgIHbhuq10IGzDrSBracOqbSBrxKkgc8awIMSRaeG7h24gdOG6oWkgR0UgcGjhu6cgbmjhuq1uIGdp4bqjIHRodXnhur90IG7DoHkgdsOgIGNobyBy4bqxbmcgY8OhYyBjaOG7qSBz4buRIHThu6sgMSDEkeG6v24gOSAoa8OtIGhp4buHdSBsw6AgZCkgc+G6vSBjw7MgeMOhYyBzdeG6pXQgeHXhuqV0IGhp4buHbiAkUChkKSQgxJHGsOG7o2MgdGjhu4MgaGnhu4duIHRoZW8gY8O0bmcgdGjhu6ljIHNhdTogDQoNCiQkUChkKSA9IGxvZ197MTB9KDEgKyBcZnJhY3sxfXtkfSkkJA0KDQpDw7RuZyB0aOG7qWMgbsOgeSBn4buNaSBsw6AgQmVuZm9yZCBsYXcgdGjhu7FjIHJhIMSRw6MgxJHGsOG7o2MgxJHhu4EgY+G6rXAgdHLGsOG7m2MgxJHDsyB2w6BvIG7Eg20gMTg4MSBi4bufaSBTaW1vbiBOZXdjb21iIHbDoCBkbyB24bqteSBjw7JuIGPDsyB0w6puIGfhu41pIGtow6FjIGzDoCBOZXdjb21i4oCTQmVuZm9yZCBsYXcuIENow7puZyB0YSBtaW5oIGjhu41hIMSR4buLbmggbHXhuq10IG7DoHkgYuG6sW5nIGPDtG5nIGPhu6UgaMOsbmgg4bqjbmg6IA0KDQoNCmBgYHtyLCBlY2hvID0gRkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9IEZBTFNFfQ0KIyBEYXRhIEZyYW1lIGJhc2VkIG9uIEJlbmZvcmQncyBsYXcgKGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmVuZm9yZCUyN3NfbGF3KTogDQojIENsZWFyIHdvcmtzcGFjZTogDQoNCnJtKGxpc3QgPSBscygpKQ0KDQojIENyZWF0ZSBvdXIgdGhlbWU6IA0KDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZXh0cmFmb250KQ0KbGlicmFyeShyZWFkeGwpDQoNCm15X2ZvbnQgPC0gIlJvYm90byBDb25kZW5zZWQiIA0KDQoNCmRmX2JlbmZvcmQgPC0gdGliYmxlKGRpZ2l0ID0gMTo5LCBwcm9iID0gc2FwcGx5KDE6OSwgZnVuY3Rpb24oZCkge2xvZzEwKDEgKyAxIC8gZCl9KSkNCg0KZGZfYmVuZm9yZCAlPiUgDQogIG11dGF0ZShkaWdpdCA9IGFzLmNoYXJhY3RlcihkaWdpdCkpICU+JSANCiAgbXV0YXRlKHRleHQgPSByb3VuZCgxMDAqcHJvYiwgMSkpICU+JSANCiAgbXV0YXRlKHRleHQgPSBwYXN0ZTAodGV4dCwgIiUiKSkgLT4gZGZfcGxvdA0KDQojIEdyYXBoOiANCg0KZGZfcGxvdCAlPiUgDQogIGdncGxvdChhZXMoZGlnaXQsIHByb2IpKSArIA0KICBnZW9tX2NvbCh3aWR0aCA9IDAuNjUsIGZpbGwgPSAic3RlZWxibHVlIikgKyANCiAgZ2VvbV9saW5lKGFlcyhhcy5udW1lcmljKGRpZ2l0KSwgcHJvYiksIGNvbG9yID0gIm9yYW5nZSIsIHNpemUgPSAxKSArIA0KICBnZW9tX3BvaW50KGFlcyhhcy5udW1lcmljKGRpZ2l0KSwgcHJvYiksIGNvbG9yID0gImZpcmVicmljayIsIHNpemUgPSAyKSArIA0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gdGV4dCksIHZqdXN0ID0gMS4zLCBjb2xvciA9ICJ3aGl0ZSIsIGZhbWlseSA9IG15X2ZvbnQsIHNpemUgPSA0LjUpICsgDQogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMC4zMDUsIDAuMDUpLCBleHBhbmQgPSBjKDAsIDApLCBsaW1pdHMgPSBjKDAsIDAuMzEpLCBsYWJlbCA9IHNjYWxlczo6cGVyY2VudCkgKw0KICBsYWJzKHggPSBOVUxMLCB5ID0gTlVMTCwgdGl0bGUgPSAiRmlndXJlIDE6IFRoZSBMYXcgb2YgQW5vbWFsb3VzIE51bWJlcnMiLCANCiAgICAgICBjYXB0aW9uID0gIlNvdXJjZTogRGF0YSBiYXNlZCBvbiBCZW5mb3JkJ3MgbGF3IikNCmBgYA0KDQpUaGVvIMSR4buLbmggbHXhuq10IG7DoHkgdGjDrCByw7UgcsOgbmcgc+G7kSAxIGPDsyB04bqnbiBzdeG6pXQgeHXhuqV0IGhp4buHbiBs4bubbiBuaOG6pXQgdsOgIGPDoWMgc+G7kSBjw6BuZyBs4bubbiB0aMOsIHThuqduIHN14bqldCB4deG6pXQgaGnhu4duIGPDoG5nIMOtdCDEkWkuIENoaSB0aeG6v3QgaMahbiB24buBIMSR4buLbmggbHXhuq10IG7DoHkgY8WpbmcgbmjGsCBjw6FjIOG7qW5nIGThu6VuZyBj4bunYSBuw7MgYuG6oW4gxJHhu41jIGPDsyB0aOG7gyB0w6xtIGhp4buDdSB0aMOqbSBb4bufIMSRw6J5XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CZW5mb3JkJ3NfbGF3KS4gQ2jDum5nIHRhIHPhur0ga2nhu4NtIHRyYSB4ZW0gbGnhu4d1IGPDoWMgY2jhu68gc+G7kSB04burIDEgxJHhur9uIDkgZml0IOG7nyBt4bupYyDEkeG7mSBuaMawIHRo4bq/IG7DoG8gduG7m2kgxJHhu4tuaCBsdeG6rXQgQmVuZm9yZCB24bubaSBt4buZdCBz4buRIGLhu5kgZOG7ryBsaeG7h3UgY+G7pSB0aOG7gy4gDQoNCsSQ4buLbmggbHXhuq10IEJlbmZvcmQgbMOgIGx14bqtdCBz4buRIGLhuqV0IHRoxrDhu51uZyBoYXkgbHXhuq10IGNo4buvIHPhu5EgdGjhu6kgbmjhuqV0ICwgbMOgIG3hu5l0IHF1YW4gc8OhdCB24buBIHBow6JuIHBo4buRaSBj4bunYSBjw6FjIGNo4buvIHPhu5EgdHJvbmcgbmhp4buBdSBk4buvIGxp4buHdSBjw6FjIGNo4buvIHPhu5EgdHJvbmcgdOG6rXAgc+G7kSDhu58gxJHhu51pIHPhu5FuZyB0aOG7sWMuICBMdeG6rXQgQmVuZm9yZCBjw7MgdGjhu4MgxJHGsOG7o2MgdGjhu7FjIGhp4buHbiB0csOqbiB0w6F0IGPhuqMgY8OhYyBz4buRIGxp4buHdSBraW5oIGRvYW5oLCBjw6FjIHThu7cgbOG7hyBxdWF5IHbDsm5nIGjDoG5nIG7Eg20gY2hvIHThu5tpIGPDoWMgaOG6sW5nIHPhu5EgduG6rXQgbMO9IGPGoSBi4bqjbi4gQ2jDum5nIHRhIGPFqW5nIGPDsyB0aOG7gyBkw7luZyBsdeG6rXQgQmVuZm9yZCDEkeG7gyBraeG7g20gdHJhIHPhu7EgYuG6pXQgcXV5IHThuq9jIHRyb25nIGPDoWMgeMOpdCBuZ2hp4buHbSB0aHXhu5FjIGhheSB4w6FjIMSR4buLbmggY8OhYyBtw7QgaMOsbmgsIGJp4buDdSDEkeG7kyBk4buvIGxp4buHdS4NCg0KQ8OzIG3hu5l0IHPhu5EgdsOtIGThu6UgdGnDqnUgYmnhu4N1IG7Ds2kgduG7gSBz4buxIGhp4buHdSBxdeG6oyBj4bunYSBsdeG6rXQgQmVuZm9yZC4gxJDhu4Mga2nhu4NtIHRyYSBz4buxIHRydW5nIHRo4buxYyB0cm9uZyBjw6FjIGLhuqNuIGvDqiBraGFpIHRodeG6vywgdOG7lW5nIHRo4buRbmcgQmlsbCBDbGludG9uIMSRw6MgecOqdSBj4bqndSBNYXJrIE5pZ3Jpbmkga2nhu4NtIHRyYSwga+G6v3QgcXXhuqMgbMOgIGtow7RuZyBjw7Mgc+G7sSBnaWFuIGzhuq1uIG7DoG8gbmjhu50gdmnhu4djIHRp4bq/biBz4bu5IMSRw6MgeOG7rSBk4bulbmcgbHXhuq10IEJlbmZvcmQuIEx14bqtdCBCZW5mb3JkIGPDsm4gxJHGsOG7o2MgZMO5bmcgxJHhu4Mga2nhu4NtIHRyYSB0w61uaCBraGFpIGLDoW8gdHJ1bmcgdGjhu7FjIGPhu6dhIGPDoWMgcXXhu5FjIGdpYSB24buBIGThu4tjaCBi4buHbmggICoqQ292aWQqKiDEkWnhu4NuIGjDrG5oIG5oxrAgVHJ1bmcgUXXhu5FjLiAqKlR1eSBuaGnDqm4gbHXhuq10IEJlbmZvcmQga2jDtG5nIMSRxrDhu6NjIGTDuW5nIHRyb25nIGPDoWMgdHLGsOG7nW5nIGjhu6NwIG5n4bqrdSBuaGnDqm4gbmjGsCB44buVIHPhu5EsLi4uIHbDoCBwaOG6oW0gdmkgdOG6rXAgaOG7o3AgcXXDoSBo4bq5cC4qKg0KDQpO4bq/dSBz4buRIGzGsOG7o25nIGThu68gbGnhu4d1IHTEg25nIGzDqm4gdGjDrCBt4bupYyDEkeG7mSBmaXQgY+G7p2EgZOG7ryBsaeG7h3UgduG7m2kgxJHhu4tuaCBsdeG6rXQgQmVuZm9yZCBz4bq9IGNhbyBoxqFuLg0KDQpUcsaw4bubYyBo4bq/dCBjaMO6bmcgdGEgdmnhur90IG3hu5l0IGjDoG0gbmjhuq1uIGlucHV0IGzDoCBjaHXhu5dpIGPDoWMgc+G7kSB04burIDEgxJHhur9uIDkgLSBsw6AgY2jhu68gc+G7kSDhu58gduG7iyB0csOtIHRo4bupIG5o4bqldCB04burIG3hu5l0IGNodeG7l2kgc+G7kSBi4bqldCBrw6wgdsOgIGhp4buDbiB0aOG7iyB04bqnbiBzdeG6pXQgeHXhuqV0IGhp4buHbiBj4bunYSBjaMO6bmcgxJHhu5NuZyB0aOG7nWkgc28gc8OhbmggdOG6p24gc3XhuqV0IHRo4buxYyB04bq/IHbhu5tpIHThuqduIHN14bqldCDEkcaw4bujYyBk4buxIGLDoW8gYuG7n2kgY8O0bmcgdGjhu6ljIEJlbmZvcmQ6IA0KDQoNCmBgYHtyLCBlY2hvID0gRkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9IEZBTFNFfQ0KY29tcGFyZV93aXRoX2JlbmZvcmQgPC0gZnVuY3Rpb24oeCkgew0KICANCiAgdGliYmxlKGRpZ2l0ID0geCkgJT4lIA0KICAgIG5hLm9taXQoKSAlPiUgDQogICAgZ3JvdXBfYnkoZGlnaXQpICU+JSANCiAgICBjb3VudCgpICU+JSANCiAgICB1bmdyb3VwKCkgJT4lIA0KICAgIG11dGF0ZShkaWdpdCA9IGFzLmZhY3RvcihkaWdpdCkpICU+JSANCiAgICBnZ3Bsb3QoYWVzKGRpZ2l0LCBuIC8gc3VtKG4pKSkgKyANCiAgICBnZW9tX2NvbCh3aWR0aCA9IDAuNjUsIGZpbGwgPSAic3RlZWxibHVlIikgKyANCiAgICBnZW9tX2xpbmUoZGF0YSA9IGRmX2JlbmZvcmQsIGFlcyhhcy5udW1lcmljKGRpZ2l0KSwgcHJvYiksIGNvbG9yID0gIm9yYW5nZSIsIHNpemUgPSAxKSArIA0KICAgIGdlb21fcG9pbnQoZGF0YSA9IGRmX2JlbmZvcmQsIGFlcyhhcy5udW1lcmljKGRpZ2l0KSwgcHJvYiksIGNvbG9yID0gImZpcmVicmljayIsIHNpemUgPSAyKSArIA0KICAgIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCkpDQoNCn0NCmBgYA0KDQrhu6huZyBk4bulbmcgxJHhu4tuaCBsdeG6rXQgQmVuZm9yZCB2w6BvIHZp4buHYyBwaMOhdCBoaeG7h24gZ2lhbiBs4bqtbiBiw6FvIGPDoW8gdMOgaSBjaMOtbmgNCg0KU+G7rSBk4bulbmcgZOG7ryBsaeG7h3UgYsOhbyBjw6FvIHTDoGkgY2jDrW5oIDQgbsSDbSB04burIG7Eg20gMjAxNiAtIDIwMTkgY+G7p2EgSFBHIHbDoCBGVE0gc28gc8OhbmgNCg0KDQpgYGB7ciwgZWNobyA9IEZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPSBGQUxTRX0NCmhwZyA8LSByZWFkX3hsc3goIkQ6L01hY2hpbmVMZWFybmluZy9CZW5mb3JkL3Rlc3QueGxzeCIsIHNoZWV0ID0gMikgJT4lIGZpbHRlcihIUEc+IDApDQpmdG0gPC0gcmVhZF94bHN4KCJEOi9NYWNoaW5lTGVhcm5pbmcvQmVuZm9yZC90ZXN0Lnhsc3giLCBzaGVldCA9IDEpICU+JSBmaWx0ZXIoRlRNPiAwKQ0KDQoNCmBgYA0KDQoNClbhur0gxJHhu5MgdGjhu4sgduG7m2kgKipIUEcqKg0KDQoNCg0KYGBge3IsIGVjaG8gPSBGQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT0gRkFMU0V9DQpocGcgJT4lIA0KICBwdWxsKEhQRykgJT4lIA0KICBhcy5jaGFyYWN0ZXIoKSAlPiUgDQogIHN0cl9zdWIoc3RhcnQgPSAxLCBlbmQgPSAxKSAtPiBkYXRhaHBnDQoNCmNvbXBhcmVfd2l0aF9iZW5mb3JkKHggPSBkYXRhaHBnKSArIA0KICAgIGxhYnModGl0bGUgPSAiRmlndXJlIDI6IEZyZXF1ZW5jeSBvZiBvY2N1cnJlbmNlcywgSFBHICg2Njcgb2JzKSIsIA0KICAgICAgIGNhcHRpb24gPSAiU291cmNlOiBMaWVuZGFpY2EiKQ0KDQpgYGANCg0KVGEgdGjhuqV5IHLhurFuZyB24bubaSA2NjcgcXVhbiBzw6F0IHRow6wgZOG7ryBsaeG7h3UgYsOhbyBjw6FvIHTDoGkgY2jDrW5oIGPhu6dhIEhQRyBjw7MgduG6uyBraMOhIGzDoCBmaXQgduG7m2kgxJHhu4tuaCBsdeG6rXQgQmVuZm9yZC4NCg0KU2F1IMSRw6J5IHRhIHPhur0geGVtIHRo4butIMSR4buRaSB24bubaSAqKkZUTSAqKiB0aMOsIHJhIHNhbw0KDQpgYGB7ciwgZWNobyA9IEZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPSBGQUxTRX0NCmZ0bSAlPiUgDQogIHB1bGwoRlRNKSAlPiUgDQogIGFzLmNoYXJhY3RlcigpICU+JSANCiAgc3RyX3N1YihzdGFydCA9IDEsIGVuZCA9IDEpIC0+IGRhdGFmdG0NCg0KY29tcGFyZV93aXRoX2JlbmZvcmQoeCA9IGRhdGFmdG0pICsgDQogICAgbGFicyh0aXRsZSA9ICJGaWd1cmUgMzogRnJlcXVlbmN5IG9mIG9jY3VycmVuY2VzLCBGVE0gKDQ2MSBvYnMpIiwgDQogICAgICAgY2FwdGlvbiA9ICJTb3VyY2U6IExpZW5kYWljYSIpDQoNCmBgYA0KDQoNClbhu5tpIDQ2MSBxdWFuIHPDoXQgdOG7qyBk4buvIGxp4buHdSBiw6FvIGPDoW8gdMOgaSBjaMOtbmggY+G7p2EgRlRNIHRhIHRo4bqleSBy4bqxbmcgZOG7ryBsaeG7h3UgYsOhbyBjw6FvIHTDoGkgY2jDrW5oIGPhu6dhIEZUTSBraMO0bmcgZml0IHbhu5tpIMSR4buLbmggbHXhuq10IEJlbmZvcmQuIEtow7RuZyBiaeG6v3QgbuG6v3UgdGEgdMSDbmcgc+G7kSBsxrDhu6NuZyBxdWFuIHPDoXQgdOG7qyBiw6FvIGPDoW8gdMOgaSBjaMOtbmggY+G7p2EgRlRNIGzDqm4gdGjDrCBjw7MgY+G6o2kgdGhp4buHbiBraMO0bmcgbmjGsG5nIG7Eg20gMjAxOSBnacOhIGPhu5UgcGhp4bq/dSBj4bunYSBGVE0gZ2nhuqNtIHPDoG4gMzAgcGhpw6puLiDEkGnhu4F1IG7DoHkgxJHhurd0IG3hu5l0IGThuqV1IGjhu49pIGzhu5tuIHbhu4EgbeG7qWMgxJHhu5kgbWluaCBi4bqhY2ggY+G7p2EgRlRNLiANCg0KDQpDw6FjIGLhurFuZyBjaOG7qW5nIHRo4buxYyBuZ2hp4buHbSDhu58gdHLDqm4gduG7gSB04bqnbiBzdeG6pXQgc3XhuqV0IHh14bqldCBoaeG7h24gY8OhYyBjaOG7ryBz4buRIHThu6sgMSDEkeG6v24gOSB0cm9uZyB0aOG6vyBnaeG7m2kgdGjhu7FjIGPDsyB24bq7IHjDoWMgbmjhuq1uIMSR4buLbmggbHXhuq10IEJlbmZvcmQuIFbDoCBi4bufaSB24bqteSDEkeG7i25oIGx14bqtdCBuw6B5IGPDsyBuaGnhu4F1IOG7qW5nIGThu6VuZy4gTeG7mXQgdHJvbmcgbmjhu69uZyDhu6luZyBk4bulbmcgxJHDsyBsw6AgeMOhYyDEkeG7i25oIGPDoWMgYsOhbyBjw6FvIHTDoGkgY2jDrW5oIGdpYW4gbOG6rW4gY+G7p2EgY8O0bmcgdGkgRW5yb24uIELhuqFuIMSR4buNYyBjw7MgdGjhu4MgdGhhbSBraOG6o28gYsOgaSB2aeG6v3QgY+G7p2EgKipUaGUgV2FsbCBTdHJlZXQgSm91cm5hbCoqIHbhu4Egw6FwIGThu6VuZyBCZW5mb3JkIGxhdyB24bubaSB0w6xuaCBodeG7kW5nIGPhu6dhIEVucm9uIFvhu58gxJHDonldKGh0dHBzOi8vd3d3Lndzai5jb20vYXJ0aWNsZXMvYWNjb3VudGFudHMtaW5jcmVhc2luZ2x5LXVzZS1kYXRhLWFuYWx5c2lzLXRvLWNhdGNoLWZyYXVkLTE0MTc4MDQ4ODYpLiANCg0KDQoNCg0KDQoNCg0KDQo=