From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S272235AbTGYRuw (ORCPT ); Fri, 25 Jul 2003 13:50:52 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S272237AbTGYRuw (ORCPT ); Fri, 25 Jul 2003 13:50:52 -0400 Received: from mail-2.tiscali.it ([195.130.225.148]:21920 "EHLO mail-2.tiscali.it") by vger.kernel.org with ESMTP id S272235AbTGYRuI (ORCPT ); Fri, 25 Jul 2003 13:50:08 -0400 Message-ID: <3F217154.30004@tiscalinet.it> Date: Fri, 25 Jul 2003 20:05:08 +0200 From: Koala GNU Reply-To: koala.gnu@tiscalinet.it User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01 X-Accept-Language: en-us, en MIME-Version: 1.0 To: linux-kernel Subject: froom assembly to C in boot code Content-Type: multipart/mixed; boundary="------------080601020902000307090709" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------080601020902000307090709 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Hi all, I forward to the lkml a mail I posted on kernelnewbies hoping someone of you can help me. ------------------------------------------------------------------------------------------------------------------------- Hi, for a couple of weeks I worked on some examples about boot process. In my previous post on kernelnewbies I post some of them. Now I have a problem. My goal is to boot from a diskette, load the setup code (4 sectors), load the kernel at 0x10000 and move it at 0x1000 trying to execute a main C routine that should represent the start of the kernel. This C routine print simply "Hello Kernel". For my job I used the examples of Berlin Brown at http://bama.ua.edu/~brown084/main.html because this code is a simplified version of the linux boot process. Attached there is my code, hoping someone of you can give a look at it and tell me if there is something wrong (I think so). Before the jump to 0x0100 all seems work fine. The problem happen when I switch in protected mode and try to jump to 0x0100. Ahhhh!!! I use bochs for my test. PS To build my code type: make clean (when necessary) make all to write on a diskette: make disk --------------080601020902000307090709 Content-Type: application/x-gzip; name="boot.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="boot.tar.gz" ZXhhbXBsZTE4LwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwNDA3NTUA MDAwMDc2NAAwMDAwNzY0ADAwMDAwMDAwMDAwADA3NzEwMjcwNDUzADAxMzA1NQAgNQAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHNkYW5n ZWxvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc2RhbmdlbG8AAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABleGFtcGxlMTgvYm9vdHNlY3QuUwAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAwNzY0ADAwMDA3NjQAMDAwMDAwNDAyNzIA MDc3MTAyNjc1NjEAMDE1MDMzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAHVzdGFyICAAc2RhbmdlbG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABz ZGFuZ2VsbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFNF VFVQU0VDVFMgID0gNApCT09UU0VHICA9IDB4MDdDMApJTklUU0VHICA9IDB4OTAwMApTRVRV UFNFRyA9IDB4OTAyMApTWVNTSVpFICA9IDI0MgkJCQkJIyAweDdmMDAKU1lTU0VHICAgPSAw eDEwMDAKCi5jb2RlMTYKLnRleHQKCi5nbG9iYWwgX3N0YXJ0Cgpfc3RhcnQ6CiAgICBtb3Z3 ICAgICRCT09UU0VHLCAlYXgJCSMgJWF4ID0gMHgwN0MwCiAgICBtb3Z3ICAgICVheCwgJWRz CQkJIyAlZHMgPSAweDA3QzAKICAgIG1vdncgICAgJElOSVRTRUcsICVheAkJIyAlYXggPSAw eDkwMDAKICAgIG1vdncgICAgJWF4LCAlZXMJCQkjICVlcyA9IDB4OTAwMAogICAgbW92dyAg ICAkMjU2LCAlY3gJCQkjICVjeCA9IDI1NgogICAgc3VidyAgICAlc2ksICVzaQkJCSMgJXNp ID0gMAogICAgc3VidyAgICAlZGksICVkaQkJCSMgJWRpID0gMAoJCQkJCQkJCSMgJWRzOiVz aSA9PSAweDA3QzA6MAoJCQkJCQkJCSMgJWVzOiVkaSA9PSAweDkwMDA6MAogICAgY2xkCQkJ CQkJCSMgaW4gdGhlIGNvcHkgJWRpIGlzIGluY3JlbWVudGVkCiAgICByZXAJCQkJCQkJIyBy ZXBlYXQgdGhlIGFib3ZlIGluc3RydWN0aW9uIHVudGlsIAoJCQkJCQkJCSMgJWN4ID09IDAK ICAgIG1vdnN3CQkJCQkJIyBsbDogY29weSB0aGUgd29yZCBmcm9tICVkczolc2kgdG8gJWVz OiVkaQoJCQkJCQkJCSMgICAgIGluY3JlbWVudCBkaSBieSBhIHdvcmQKCQkJCQkJCQkjICAg ICBkZWNyZW1lbnQgJWN4CgkJCQkJCQkJIyAgICAgaWYgY3ggPT0gMCBzdG9wLCBvdGhlcndp c2UgZ28gdG8gbGwKICAgIGxqbXAgICAgJElOSVRTRUcsICRnbwkJIyBqdW1wIHRvIDB4OTAw MDokZ28KCiMKIyBCYXNpY2FsbHkgaW4gdGhlIG1lbW9yeSB0aGVyZSBpcyB0aGUgZm9sbG93 aW5nIHNpdHVhdGlvbjoKIwojICAgIC0tLS0tLS0tLS0tLS0tLQojICAgfCAgICAgICAgICAg ICAgIHwKIyAgIHxfX19fX19fX19fX19fX198CiMgICB8ICAgICAgICAgICAgICAgfCAweDdD MDowCiMgICB8ICAgICAgICAgICAgICAgfAojICAgfGdvOiAuLi4uICAgICAgIHwKIyAgIHwg ICAgICAgICAgICAgICB8CiMgICB8X19fX19fX19fX19fX19ffAojICAgfCAgICAgICAgICAg ICAgIHwKIyAgIHwgICAuLi4uLi4uLi4gICB8CiMgICB8X19fX19fX19fX19fX19ffAojICAg fCAgIEJPT1RTRUNUT1IgIHwgMHg5MDAwOjAgPSAweDkwMDAwCiMgICB8ICAgICAgICAgICAg ICAgfAojICAgfGdvOiAuLi4uICAgICAgIHwgPC0gbm93IHdlIGFyZSBoZXJlCiMgICB8ICAg ICAgICAgICAgICAgfAojICAgfF9fX19fX19fX19fX19fX3wKIyAgIHwgICAgICAgICAgICAg ICB8IDB4OTAwMDoweDIwMCA9IDB4OTAyMDAKIyAgIHwgICAgICAgICAgICAgICB8CiMgICB8 ICAgICAgICAgICAgICAgfAojICAgfCAgICAgICAgICAgICAgIHwKIyAgIHwgICAgIFNUQUNL ICAgICB8CiMgICB8ICAgICAgICAgICAgICAgfAojICAgfCAgICAgICAgICAgICAgIHwKIyAg IHwgICAgICAgICAgICAgICB8CiMgICB8ICAgICAgICAgICAgICAgfAojICAgfF9fX19fX19f X19fX19fX3wgPC0gMHg5MDAwOjB4NDAwMC0xMgojCiMgMHg0MDAwIGlzIGFuIGFyYml0cmFy eSB2YWx1ZSA+PSBib290c2VjdCBzaXplICsKIyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0YWNrIHNpemUKIwojIEluIHRoZSBuZXh0IGV4YW1wbGVzIHdpbGwgYmUgZXhh cGxhaW5lZCB3aHkgeW91IHVzZWQgdGhlIHZhbHVlIDB4NDAwMC0xMgoKZ286Cgltb3Z3ICAg ICQweDQwMDAtMTIsICVkaQoJbW92dyAgICAlYXgsICVkcyAgICAgICAgICAgICMgJWRzID0g MHg5MDAwCgltb3Z3ICAgICVheCwgJXNzICAgICAgICAgICAgIyAlc3MgPSAweDkwMDAKCW1v dncgICAgJWRpLCAlc3AgICAgICAgICAgICAjICVzcCA9IDB4NDAwMC0xMgoKIyBUaGUgc3Rh Y2sgcG9pbnRlciAlc3M6JXNwIGlzIGF0IDB4OTAwMDoweDQwMDAtMTIKCiMgTm93IHRoZSBz ZXR1cCBjb2RlIGlzIGxvYWRlZC4gVGhlIHNldHVwIGNvZGUgY29udGFpbiB0aGUgSGVhZGVy IHJlcG9ydGVkCiMgaW4gaGVhZC5TIGFuZCB0aGUgY29kZSBpbiBzZXR1cC5TLiBUaGlzIGNv ZGUgd2lsbCBiZSBsb2FkZWQgdXNpbmcgdGhlIHNlcnZpY2UKIyAweDAyIG9mIHRoZSBpbnRl cnJ1cHQgMHgxMy4gTm90ZTogJWVzID09ICRJTklUU0VHCgpsb2FkX3NldHVwOgoJCQkJCQkJ IyBGaXJzdCBvZiBhbGwgcmVzZXQgRkRDIHVzaW5nIHNlcnZpY2UgCgkJCQkJCQkjIDB4MDAg CgkJCQkJCQkjIG9mIGludGVycnVwdCAweDEzLgoJeG9yYiAgICAlYWgsICVhaCAgICAgICAJ IyAlYWggPSAwIC0+IHNlcnZpY2UgMHgwMAoJeG9yYiAgICAlZGwsICVkbCAgICAgICAJIyAl ZGwgPSAwIC0+IGRyaXZlIDAKCWludCAgICAgJDB4MTMgICAgICAgICAgCSMgcmVzZXQgRkRD CgoJCQkJCQkJIyByZWFkIHNlY3RvciAyIGZyb20gZHJpdmUgMCwgaGVhZCAwLCAKCQkJCQkJ CSMgdHJhY2sgMAoJCQkJCQkJIyB1c2luZyBpbnRlcnJ1cHQgMHgxMy4KCQkJCQkJCSMgJWRo ID09IGRyaXZlCgkJCQkJCQkjICVkbCA9PSBoZWFkCgkJCQkJCQkjICVjbCA9PSBzZWN0b3IK CQkJCQkJCSMgJWNoID09IHRyYWNrCgkJCQkJCQkjICVlczolYnggPT0gZGVzdGluYXRpb24g CgkJCQkJCQkjIGFkZHJlc3MgPT0gMHg5MDAwOjB4MjAwCgkJCQkJCQkjICVhaCA9PSBzZXJ2 aWNlIDB4MDIKCQkJCQkJCSMgJWFsID09IG51bWJlciBvZiBzZWN0b3JzIHRvIHJlYWQuCgkJ CQkJCQkjIAoJCQkJCQkJIyAlYXggY29udGFpbnMgdGhlIHJlc3VsdC4gMCA9PSBvay4KCXhv cncgICAgJWR4LCAlZHggICAgICAgICMgZHJpdmUgMCwgaGVhZCAwCgltb3ZiICAgICQweDAy LCAlY2wJCSMgJWNsID0gMgoJbW92dyAgICAkMHgwMjAwLCAlYngJIyAlYnggPSAweDIwMAoJ bW92YiAgICAkMHgwMiwgJWFoCQkjICVhaCA9IDB4MDIKCW1vdmIgICAgc2V0dXBfc2VjdHMs ICVhbAoJaW50ICAgICAkMHgxMwkJCSMgc3RhcnQgcmVhZGluZyA0IHNlY3RvcnMKCglqbmMg b2tfbG9hZF9zZXR1cAkJIyAlYWwgPSBzZXR1cF9zZWN0cy4gcmVhZCBzZXR1cF9zZWN0cyBz ZWN0b3JzCgogICAgcHVzaHcgICAlYXggICAgICAgICAgICAgIyBkdW1wIHRoZSBlcnJvciBj b2RlIG9uIHRoZSB2aWRlbwogICAgY2FsbCAgICBwcmludF9ubCAgICAgICAgIyBwcmludCBh IG5ldyBsaW5lIG9uIHRoZSB2aWRlbwogICAgbW92dyAgICAlc3AsICVicCAgICAgICAgIyA/ PwogICAgY2FsbCAgICBwcmludF9oZXggICAgICAgIyBwcmludCAlYXggb24gdGhlIHZpZGVv CiAgICBwb3B3ICAgICVheAogICAgam1wICAgICBsb2FkX3NldHVwICAgICAgIyByZXRyeSBh Z2FpbgoKIwojIEJhc2ljYWxseSBpbiB0aGUgbWVtb3J5IHRoZXJlIGlzIHRoZSBmb2xsb3dp bmcgc2l0dWF0aW9uOgojCiMgICAgLS0tLS0tLS0tLS0tLS0tCiMgICB8ICAgICAgICAgICAg ICAgfAojICAgfF9fX19fX19fX19fX19fX3wKIyAgIHwgICBCT09UU0VDVE9SICB8IDB4N0Mw OjAKIyAgIHwgICAgICAgICAgICAgICB8CiMgICB8Z286IC4uLi4gICAgICAgfAojICAgfCAg ICAgICAgICAgICAgIHwKIyAgIHxfX19fX19fX19fX19fX198CiMgICB8ICAgICAgICAgICAg ICAgfAojICAgfCAgIC4uLi4uLi4uLiAgIHwKIyAgIHxfX19fX19fX19fX19fX198CiMgICB8 ICAgICBDT1BZICAgICAgfAojICAgfCAgIEJPT1RTRUNUT1IgIHwgMHg5MDAwOjAgPSAweDkw MDAwCiMgICB8ICAgICAgICAgICAgICAgfAojICAgfGdvOiAuLi4uICAgICAgIHwKIyAgIHwg ICAgICAgICAgICAgICB8CiMgICB8X19fX19fX19fX19fX19ffAojICAgfCAgICAoaGVhZC5T KSAgIHwgMHg5MDAwOjB4MjAwID0gMHg5MDIwMAojICAgfCAgICAgICAgICAgICAgIHwKIyAg IHwgICAgIFNFVFVQICAgICB8IDQgc2VjdG9ycyA9IDIwNDggYnl0ZXMKIyAgIHwgICAgICAg ICAgICAgICB8CiMgICB8X19fX19fX19fX19fX19ffAojICAgfCAgICAgICAgICAgICAgIHwK IyAgIHwgICAgICAgICAgICAgICB8CiMgICB8ICAgICBTVEFDSyAgICAgfAojICAgfCAgICAg ICAgICAgICAgIHwKIyAgIHxfX19fX19fX19fX19fX198IDwtIDB4OTAwMDoweDQwMDAtMTIK IyAgIHwgICBESVNLIFBBUk1TICB8CiMgICB8ICAgKDEyIGJ5dGVzKSAgfAojICAgfF9fX19f X19fX19fX19fX3wgPC0gMHg5MDAwOjB4NDAwMAojCiMgMHg0MDAwIGlzIGFuIGFyYml0cmFy eSB2YWx1ZSA+PSBib290c2VjdCBzaXplICsKIyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXR1cCBzaXplICAgICsKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dGFjayBzaXplCgpva19sb2FkX3NldHVwOgoJCQkJCQkJIyBwcmludCB0aGUgbWVzc2FnZSAi TG9hZGluZyBzeXN0ZW0gIgoJbW92dyAgICAkSU5JVFNFRywgJWF4CSMgJWF4ID0gMHg5MDAw Cgltb3Z3ICAgICVheCwgJWVzCQkjICVlcyA9ICAlYXgKCW1vdmIgICAgJDB4MDMsICVhaAkJ IyByZWFkIHRoZSBjdXJzb3IgY3VycmVudCBwb3NpdGlvbiB1c2luZwoJCQkJCQkJIyBzZXJ2 aWNlIDB4MDMgb2YgaW50ZXJydXB0IDB4MTAuCgl4b3JiICAgICViaCwgJWJoCQkjICViaCA9 IDAKCWludCAkMHgxMAkJCQkjIGdldCB0aGUgY3Vyc29yIHBvc2l0aW9uLiAlZGggPT0gcm93 LCAKCQkJCQkJCSMgJWRsID09IGNvbAoKCW1vdncgICAgJDE3LCAlY3gJCSMgJWN4ID0gMTcg KGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZykKCW1vdncgICAgJDB4MDAwNywgJWJ4CSMgJWJo IChwYWdlKSA9IDAsICVibCAoYXR0cmlidXRlKSA9IDcgKG5vcm1hbCkKCW1vdncgICAgJG1z ZzEsICVicAkJIyAlZXM6JWJwIHBvaW50IHRvIHRoZSBzdHJpbmcgdG8gd3JpdGUKCW1vdncg ICAgJDB4MTMwMSwgJWF4CSMgd3JpdGUgc3RyaW5nIGF0IHJvdyAlZGggYW5kIGNvbCAlZGwg CgkJCQkJCQkjIGFuZCBtb3ZlIGN1cnNvcgoJaW50IAkkMHgxMAoJCQkJCQkJIyBzdGFydCBs b2FkaW5nIHRoZSBrZXJuZWwgYXQgMHgxMDAwOjB4MDAwMAogICAgbW92dyAgICAkU1lTU0VH LCAlYXgJIyAlYXggPSAweDEwMDAKICAgIG1vdncgICAgJWF4LCAlZXMJCSMgJWVzID0gMHgx MDAwCiAgICBjYWxsICAgIHJlYWRfaXQJCQkjIHN0YXJ0IHJlYWRpbmcKCWNhbGwgICAga2ls bF9tb3RvcgoKIyBCYXNpY2FsbHkgaW4gdGhlIG1lbW9yeSB0aGVyZSBpcyB0aGUgZm9sbG93 aW5nIHNpdHVhdGlvbjoKIwojICAgIC0tLS0tLS0tLS0tLS0tLQojICAgfCAgICAgICAgICAg ICAgIHwKIyAgIHxfX19fX19fX19fX19fX198CiMgICB8ICAgQk9PVFNFQ1RPUiAgfCAweDA3 QzA6MAojICAgfCAgICAgICAgICAgICAgIHwKIyAgIHxnbzogLi4uLiAgICAgICB8CiMgICB8 ICAgICAgICAgICAgICAgfAojICAgfF9fX19fX19fX19fX19fX3wKIyAgIHwgICAgICAgICAg ICAgICB8CiMgICB8ICAgLi4uLi4uLi4uICAgfAojICAgfF9fX19fX19fX19fX19fX3wKIyAg IHwgICAgICAgICAgICAgICB8IDB4MTAwMDowCiMgICB8ICAgICBJTUFHRSAgICAgfAojICAg fCAgICAgS0VSTkVMICAgIHwgKHNpemUgMHg3RjAwKQojICAgfCAgICAobWFpbi5jKSAgIHwK IyAgIHxfX19fX19fX19fX19fX198CiMgICB8ICAgLi4uLi4uLi4uICAgfAojICAgfF9fX19f X19fX19fX19fX3wKIyAgIHwgICAgIENPUFkgICAgICB8CiMgICB8ICAgQk9PVFNFQ1RPUiAg fCAweDkwMDA6MAojICAgfCAgICAgICAgICAgICAgIHwKIyAgIHxnbzogLi4uLiAgICAgICB8 CiMgICB8ICAgICAgICAgICAgICAgfAojICAgfF9fX19fX19fX19fX19fX3wKIyAgIHwgICAg KGhlYWQuUykgICB8IDB4OTAwMDoweDIwMCA9IDB4OTAyMDAKIyAgIHwgICAgICAgICAgICAg ICB8CiMgICB8ICAgICBTRVRVUCAgICAgfCA0IHNlY3RvcnMgPSAyMDQ4IGJ5dGVzCiMgICB8 ICAgICAgICAgICAgICAgfAojICAgfF9fX19fX19fX19fX19fX3wKIyAgIHwgICAgICAgICAg ICAgICB8CiMgICB8ICAgICAgICAgICAgICAgfAojICAgfCAgICAgU1RBQ0sgICAgIHwKIyAg IHwgICAgICAgICAgICAgICB8CiMgICB8X19fX19fX19fX19fX19ffCA8LSAweDkwMDA6MHg0 MDAwLTEyCiMgICB8ICAgRElTSyBQQVJNUyAgfAojICAgfCAgICgxMiBieXRlcykgIHwKIyAg IHxfX19fX19fX19fX19fX198IDwtIDB4OTAwMDoweDQwMDAKIwojIDB4NDAwMCBpcyBhbiBh cmJpdHJhcnkgdmFsdWUgPj0gYm9vdHNlY3Qgc2l6ZSArCiMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2V0dXAgc2l6ZSAgICArCiMJCQkJCQkJCXN0YWNrIHNpemUKCnJvb3Rf ZGVmaW5lZDoKICAgIG1vdncgICAgJWF4LCByb290X2RldgoKIyBBZnRlciB0aGF0IChldmVy eXRoaW5nIGxvYWRlZCksIHdlIGp1bXAgdG8gdGhlIHNldHVwLXJvdXRpbmUKIyBsb2FkZWQg ZGlyZWN0bHkgYWZ0ZXIgdGhlIGJvb3RibG9jazoKCiAgICBsam1wICAgICRTRVRVUFNFRywg JDAJCSMganVtcCB0byB0aGUgaGVhZC5TIGNvZGUKCiMgZHJpdmUgaXMgYXNzdW1lZCB0byBi ZSAwCnNyZWFkOiAgICAgIC53b3JkIDAgICAgICAgICAgICAgIyB0aGUgY3VycmVudCBzZWN0 b3IgdG8gcmVhZApoZWFkOiAgICAgICAud29yZCAwICAgICAgICAgICAgICMgdGhlIGN1cnJl bnQgaGVhZCB0byByZWFkCnRyYWNrOiAgICAgIC53b3JkIDAgICAgICAgICAgICAgIyB0aGUg Y3VycmVudCB0cmFjayB0byByZWFkCgojIHJlYWRfaXQKIwojIFRoaXMgcm91dGluZSBpcyB1 c2VkIHRvIHRyYW5zZmVyIHRoZSBrZXJuZWwgcHJlc2VudCBvbiB0aGlzIHN0YXJpbmcgZnJv bQojIHRoZSBhZGRyZXNzIChkcml2ZT0wLCBoZWFkPTAsIHRyYWNrPTAsIHNlY3Rvcj01KSBp biB0aGUgUkFNIG1lbW9yeSBzdGFydGluZwojIGF0IHRoZSBhZGRyZXNzIDB4MTAwMDowMDAw LiBUaGUgaW50ZXJydXB0IDB4MTMgaXMgdXNlZCB0byBleGVjdXRlIHRoaXMgCiMgb3BlcmF0 aW9uLgojIEEgc2VnbWVudCBvZiA2NEtiICg2NDUxMikgbWF5IGNvbnRhaW4gNyB0cmFjayBv ZiAxOCBzZWN0b3IgZWFjaC4gSGVyZSB3ZQojIHJlYWQgYSB0cmFjayBhdCBhIHRpbWUuICVl cyBjb250YWluIHRoZSByZWZlcmVuY2UgdG8gdGhlIHNlZ21lbnQgMHgxMDAwIGFuZAojICVi eCBpcyB0aGUgb2Zmc2V0IGluc2lkZSB0aGlzIHNlZ21lbnQuIFRoaXMgd2lsbCBoYXBwZW4g aW4gYSBsb29wLgojIFdoZW4gJWJ4IGNyb3NzIHRoZSA2NEtiIGJvdW5kYXJpZXMgJWVzIG11 c3QgYmUgaW5jcmVtZW50ZWQgYW5kICVieCB1cGRhdGVkCiMgYWNjb3JkaW5nbHkKCnJlYWRf aXQ6CiAgICBtb3ZiICAgIHNldHVwX3NlY3RzLCAlYWwKICAgIGluY2IgICAgJWFsICAgICAg ICAgICAgICAgICAjICVhbCA9PSBzZWN0b3Igc3RhcnRpbmcgdG8gcmVhZCAKCQkJCQkJCQkj ICg1ID09IGJvb3RzZWN0ICsgc2V0dXAgc2VjdG9ycykgYW5kIHB1dCB0aGlzCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyB2YWx1ZSBpbiBzcmVhZC4KICAgIG1vdmIgICAg JWFsLCBzcmVhZCAgICAgICAgICAjIHNyZWFkID0gJWFsICg1KSAtPiBzdGFydCB0byByZWFk IGZyb20gc2VjdG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyA1CiAgICBt b3Z3ICAgICVlcywgJWF4ICAgICAgICAgICAgIyAlYXggPSAlZXMgKDB4MTAwMCkKICAgIHRl c3R3ICAgJDB4MGZmZiwgJWF4ICAgICAgICAjIHRoaXMgaW5zdHJ1Y3Rpb24gdGVzdCB0aGF0 ICVheCBjYW4gYXNzdW1lIG9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg b2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6IDB4MTAwMCwgMHgyMDAwLCAuLi4sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyAweDkwMDAgLT4gZXMgbXVzdCBiZSBhdCA2NGtC IGJvdW5kYXJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvdGhlcndpc2Ug YW4gaW5maW5pdGUgbG9vcCBpcyBydW4uIEJhc2ljYWxseQoJCQkJCQkJCSMgd2UgY2hlY2sg dGhhdCBhbiBpbnZhbGlkIHZhbHVlIGhhcyBub3QgYmVlbgoJCQkJCQkJCSMgdXNlZCBmb3Ig JFNZU1NFRy4KZGllOgogICAgam5lIGRpZQogICAgeG9ydyAgICAlYngsICVieCAgICAgICAg ICAgICMgJWVzOiVieCB3aWxsIGNvbnRhaW4gdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MKCQkJ CQkJCQkjIG9mIHRoZSBjb3B5ICglZXMgPT0gMHgxMDAwKSAweDEwMDA6MAoKcnBfcmVhZDoK CQkJCQkJCQkjIEhlcmUgc3RhcnQgdGhlIGxvb3AuCgoJCQkJCQkJCSMgSGVyZSBhIGNoZWNr IGlzIG1hZGUgdG8gc2VlIGlmIGFsbCB0aGUKCQkJCQkJCQkjIG5lY2Vzc2FyeSBieXRlcyBo YXZlIGJlZW4gcmVhZC4KICAgIG1vdncgICAgJWVzLCAlYXgKICAgIHN1YncgICAgJFNZU1NF RywgJWF4ICAgICAgICAjICVheCA9ICVheCAtICRTWVNTRUcgKGlmIHRoaXMgZGlmZmVyZW5j ZSBpcyBuCgkJCQkJCQkJIyB3ZSBoYXZlIHJlYWQgbio2NEtiLiBUaGUgZmlyc3QgbG9vcCB0 aGlzCgkJCQkJCQkJIyBkaWZmZXJlbmNlIGlzIDApCiAgICBjbXB3ICAgIHN5c3NpemUsICVh eCAgICAgICAgIyBpZiAoJWF4IDw9IHN5c3NpemUpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIwkJanVtcCBvazFfcmVhZCAtPiBuZWVkIHRvIHJlYWQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjCQlzdG9wIHJlYWRpbmcuIFlvdSBoYXZlIGZpbmlzaGVkLgogICAgamJlIG9rMV9y ZWFkCiAgICByZXQKCm9rMV9yZWFkOgoJCQkJCQkJCSMgJWVzIGNvbnRhaW4gdGhlIGN1cnJl bnQgc2VnbWVudCBhbmQgJWJ4CgkJCQkJCQkJIyB0aGUgb2Zmc2V0IGluIHRoYXQgc2VnbWVu dCB3aGVyZSBmaW5pc2hlZCB0aGUKCQkJCQkJCQkjIGxhc3QgcmVhZF90cmFjay4KCQkJCQkJ CQkKICAgIG1vdncgICAgc2VjdG9ycywgJWF4ICAgICAgICAjICVheCA9IHNlY3RvciB0byBy ZWFkIGluIHRoZSB0cmFjayAoZmlyc3QgbG9vcAoJCQkJCQkJCSMgaXMgMTgpCiAgICBzdWJ3 ICAgIHNyZWFkLCAlYXggICAgICAgICAgIyAlYXggPSAlYXggLSBzcmVhZCAoc3ViY3RyYWN0 IGZyb20gJWF4IHRoZQoJCQkJCQkJCSMgc2VjdG9ycyBhbHJlYWR5IHJlYWQgLT4gaW4gdGhl IGZpcnN0IGxvb3AKCQkJCQkJCQkjIHNyZWFkID09IDUgYW5kICVheCA9PSAxMykKICAgIG1v dncgICAgJWF4LCAlY3gKICAgIHNobHcgICAgJDksICVjeAogICAgYWRkdyAgICAlYngsICVj eAkJCSMgJWN4ID0gdGhlIG9mZnNldCB3aGVyZSB0aGUgcmVhZGluZyBvZiB0aGUKCQkJCQkJ CQkjIHRyYWNrIHdpbGwgZmluaXNoLiBpZiAlY3ggZG9lcyBub3QgY3Jvc3MKCQkJCQkJCQkj IHRoZSA2NEtiIGJvdW5kYXJpZXMgZ28gdG8gb2syX3JlYWQsCgkJCQkJCQkJIyBvdGhlcndp c2UgYSBsZXNzIG51bWJlciBvZiBzZWN0b3JzIG11c3QgYmUKCQkJCQkJCQkjIHJlYWQuCiAg ICBqbmMgb2syX3JlYWQKICAgIGplICBvazJfcmVhZAoJCQkJCQkJCQoJCQkJCQkJCSMgdGhl IG5leHQgcmVhZCB0cmFjayBjcm9zcyB0aGUgNjQgS2IKCQkJCQkJCQkjIGJvdW5kYXJpZXMg c28gbGVzcyBzZWN0b3JzIG11c3QgYmUgcmVhZC4gQnV0CgkJCQkJCQkJIyBob3cgbWFueSBz ZWN0b3IgSSBjYW4gcmVhZD8gSXQgaXMgZWFzeSwKCQkJCQkJCQkjIGNhbGN1bGF0ZSB0aGUg ZGlzdGFuY2UgYmV0d2VlbiAlYnggYW5kIHRoZQoJCQkJCQkJCSMgZW5kIG9mIHRoZSBzZWdt ZW50IGFuZCBkaXZpZGUgdGhpcyB2YWx1ZSBmb3IKCQkJCQkJCQkjIDUxMi4KCXhvcncgICAg JWF4LCAlYXgKICAgIHN1YncgICAgJWJ4LCAlYXgJCQkjICVheCA9PSBkaXN0YW5jZSBiZXR3 ZWVuICVieCBhbmQgdGhlIGVuZCBvZiB0aGUKCQkJCQkJCQkjIHNlZ21lbnQKICAgIHNocncg ICAgJDksICVheAkJCQkjICVheCA9PSBzZWN0b3JzIHRvIHJlYWQKCm9rMl9yZWFkOgogICAg Y2FsbCAgICByZWFkX3RyYWNrCQkJIyBvaywgcmVhZCB0aGUgdHJhY2sgLi4uLgoKICAgIG1v dncgICAgJWF4LCAlY3gJCQkjICVheCBjb250YWluIHRoZSBzZWN0b3JzIHJlYWQsIHNyZWFk IGNvbnRhaW4KCQkJCQkJCQkjIHRoZSBzdGFydCBzZWN0b3IKICAgIGFkZHcgICAgc3JlYWQs ICVheAkJCSMKICAgIGNtcHcgICAgc2VjdG9ycywgJWF4CQkjIGlmIHdlIGRvIG5vdCBoYXZl IHJlYWQgdGhlIHRyYWNrIGNvbXBsZXRlbHkKCQkJCQkJCQkjIGp1bXAgdG8gb2szX3JlYWQK ICAgIGpuZSBvazNfcmVhZAoJCQkJCQkJCSMgSWYgSSB3ZWxsIHVuZGVyc3RhbmQgdGhlIHJl YWRpbmcgb2YgdGhlCgkJCQkJCQkJIyB0cmFjayB3aWxsIGJlIGluIHRoZSBmb2xsb3dpbmcg b3JkZXI6CgkJCQkJCQkJIwkKCQkJCQkJCQkjCQkJKGRyaXZlLCBoZWFkLCB0cmFjaykKCQkJ CQkJCQkjCQkJKDAsIDAsIDApCgkJCQkJCQkJIwkJCSgwLCAxLCAwKQoJCQkJCQkJCSMJCQko MCwgMCwgMSkKCQkJCQkJCQkjCQkJKDAsIDEsIDEpCgkJCQkJCQkJIwkJCSAgIC4uLi4KCQkJ CQkJCQkjIHRoaXMgdG8gcmVkdWNlIHRoZSBoZWFkIG1vdmVtZW50LgoKCQkJCQkJCQkjIGEg dHJhY2sgaGFzIGJlZW4gcmVhZCBjb21wbGV0ZWx5IHNvIGhlcmUKCQkJCQkJCQkjIHRoZXJl IGFyZSB0d28gY2FzZXM6CgkJCQkJCQkJIwoJCQkJCQkJCSMgYSkgZm9yIGhlYWQgbiAoMCwg MSkgIGhhcyBiZWVuIHJlYWQgYm90aCB0aGUgCgkJCQkJCQkJIyAgICB0cmFja3MuIEluIHRo aXMgY2FzZSB3ZSBoYXZlCgkJCQkJCQkJIwoJCQkJCQkJCSMJCQloZWFkID0gMS1uCgkJCQkJ CQkJIwkJCXRyYWNrID0gdHJhY2srMQoJCQkJCQkJCSMKCQkJCQkJCQkjIGIpIGZvciBoZWFk IG4gKDAsIDEpIG9ubHkgYSB0cmFjayBoYXMgYmVlbiAKCQkJCQkJCQkjIHJlYWQuIEluIHRo aXMgY2FzZSB3ZSBoYXZlOgoJCQkJCQkJCSMJCQloZWFkID0gMS1uCQkJCiAgICBtb3Z3ICAg ICQxLCAlYXgJCQkJIwogICAgc3VidyAgICBoZWFkLCAlYXgJCQkjIAkJaGVhZCA9IDEgLSBo ZWFkCiAgICBqbmUgb2s0X3JlYWQJCQkJIyBqdW1wIHRvIG9rNF9yZWFkIGlmIG9ubHkgMSB0 cmFjayBoYXMgYmVlbiByZWFkCgkJCQkJCQkJIyBmb3IgdGhlIGhlYWQKCiAgICBpbmN3ICAg IHRyYWNrCQkJCSMgb2ssIGJvdGggdGhlIHRyYWNrcyBoYXZlIGJlZW4gcmVhZCBmb3IgdGhl CgkJCQkJCQkJIyBoZWFkLiBJbmNyZW1lbnQgdHJhY2suCgpvazRfcmVhZDoKICAgIG1vdncg ICAgJWF4LCBoZWFkCQkJIyBoZWFkID0gJWF4CiAgICB4b3J3ICAgICVheCwgJWF4CQkJIyAl YXggPSAwIC0+IGluIHRoaXMgY2FzZSB0aGUgcmVhZGluZyBzdGFydAoJCQkJCQkJCSMgZnJv bSBzZWN0b3IgMApvazNfcmVhZDoKICAgIG1vdncgICAgJWF4LCBzcmVhZAkJCSMgJWF4IGNv bnRhaW4gdGhlIHNlY3RvciB3aGVyZSB0aGUgcmVhZCBzdGFydAoJCQkJCQkJCSMgaW4gdGhl IGN1cnJlbnQgdHJhY2suIE1vdmUgdGhpcyB2YWx1ZSBpbiBzcmVhZAogICAgc2hsdyAgICAk OSwgJWN4CQkJCSMgJWN4ID0gJWN4ICo1MTIgLT4gYnl0ZSByZWFkCiAgICBhZGR3ICAgICVj eCwgJWJ4CQkJIyAlYnggPSAlYnggKyVjeCAtPiBtb3ZlICVieCB0byB0aGUgb2Zmc2V0IHdo ZXJlCgkJCQkJCQkJIyB3aWxsIHN0YXJ0IHRoZSBuZXh0IHJlYWRfdHJhY2suCiAgICBqbmMg cnBfcmVhZAkJCQkJIyBpZiBubyA2NEtiIGJvdW5kYXJpZXMgaGFzIGJlZW4gY3Jvc3NlZCBn b3RvCgkJCQkJCQkJIyBycF9yZWFkIHRvIGNvbnRpbnVlIHRoZSByZWFkaW5nIHByb2Nlc3MK CiAgICBtb3Z3ICAgICVlcywgJWF4CQkJIyBpbmNyZW1lbnRpbmcgJWJ4IHdlIGNyb3NzZWQg dGhlIDY0S2IKCQkJCQkJCQkjIGJvdW5kYXJpZXMsIHNvICVlcyBtdXN0IHBvaW50IHRvIHRo ZSBuZXh0CgkJCQkJCQkJIyBzZWdtZW50IGFuZCAlYnggbXVzdCBiZSAwCiAgICBhZGRiICAg ICQweDEwLCAlYWgKICAgIG1vdncgICAgJWF4LCAlZXMKICAgIHhvcncgICAgJWJ4LCAlYngK ICAgIGptcCBycF9yZWFkCgpyZWFkX3RyYWNrOgogICAgcHVzaGEgICAgICAgICAgICAgICAg ICAgICAgICMgc2F2ZSByZWdpc3RlcnMgKGF4LCBjeCwgZHgsIGJ4LCBzcCwgYnAsIHNpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkaSkKICAgIHB1c2hhICAgICAgICAg ICAgICAgICAgICAgICAjIHNhdmUgcmVnaXN0ZXJzCgogICAgbW92dyAgICAkMHhlMmUsICVh eCAgICAgICAgICMgd3JpdGUgYSAiLiIgZm9yIGVhY2ggdHJhY2sgcmVhZAogICAgbW92dyAg ICAkNywgJWJ4CiAgICBpbnQgJDB4MTAKCiAgICBwb3BhCQkJCQkJIyByZWxvYWQgcmVnaXN0 ZXJzCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlIHRoZSBzZXJ2aWNl IDIgb2YgaW50ZXJydXB0IDB4MTMgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjIHJlYWQgdGhlIChkcml2ZSwgaGVhZCwgdHJhY2ssIHNlY3RvcikuCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBTZWUgYWJvdmUgZm9yIHNwZWNpZmljYXRpb24gYWJv dW50IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNlcnZpY2UuCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgZGF0YSBhcmUgc2V0IGluIHRo ZSBmb2xsb3dpbmcgd2F5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJWRo ID0gMCAoZHJpdmUgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICVkbCA9 IGhlYWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICVjaCA9IHRyYWNrCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAlY2wgPSBzcmVhZAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgJWVzOiVieCBkZXN0aW5hdGlvbiBhZGRyZXNzCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAlYWggPSAweDAyIChzZXJ2aWNlKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJWFsID0gdGhlIHNlY3RvcnMgdG8g cmVhZCAoZmlzdCBsb29wID09IDEzKQogICAgbW92dyAgICB0cmFjaywgJWR4CiAgICBtb3Z3 ICAgIHNyZWFkLCAlY3gKICAgIGluY3cgICAgJWN4CiAgICBtb3ZiICAgICVkbCwgJWNoCiAg ICBtb3Z3ICAgIGhlYWQsICVkeAogICAgbW92YiAgICAlZGwsICVkaAogICAgYW5kdyAgICAk MHgwMTAwLCAlZHggICAgICAgICMgPz8/CiAgICBtb3ZiICAgICQyLCAlYWgKICAgIHB1c2h3 ICAgJWR4ICAgICAgICAgICAgICAgICAjIHNhdmUgJWF4LCAlYngsICVjeCwgJWR4IGZvciBk dW1wCiAgICBwdXNodyAgICVjeAogICAgcHVzaHcgICAlYngKICAgIHB1c2h3ICAgJWF4CiAg ICBpbnQgJDB4MTMKICAgIGpjICBiYWRfcnQKCiAgICBhZGR3ICAgICQ4LCAlc3AgICAgICAg ICAgICAgIyA0IHJlZ2lzdGVycyBoYXZlIGJlZW4gcHV0IG9uIHRoZSBzdGFjay4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIERpc2NhcmQgdGhlbS4KICAgIHBvcGEgICAg ICAgICAgICAgICAgICAgICAgICAjIFJlY292ZXIgdGhlIHJlZ2lzdGVycy4KICAgIHJldAoK YmFkX3J0OgogICAgcHVzaHcgICAlYXggICAgICAgICAgICAgICAgICMgc2F2ZSBlcnJvciBj b2RlCiAgICBjYWxsICAgIHByaW50X2FsbCAgICAgICAgICAgIyBkdW1wIHJlZ2lzdGVycwog ICAgeG9yYiAgICAlYWgsICVhaCAgICAgICAgICAgICMgJWFoID0gMAogICAgeG9yYiAgICAl ZGwsICVkbCAgICAgICAgICAgICMgJWRsID0gMAogICAgaW50ICQweDEzCQkJCQkjIHJlc2V0 IEZEQwogICAgYWRkdyAgICAkMTAsICVzcCAgICAgICAgICAgICMgNCByZWdpc3RlcnMgKyAx IGVycm9yIGNvZGUgaGF2ZSBiZWVuIHB1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgb24gdGhlIHN0YWNrLiBEaXNjYXJkIHRoZW0uCiAgICBwb3BhICAgICAgICAgICAg ICAgICAgICAgICAgIyBSZWNvdmVyIHRoZSByZWdpc3RlcnMuCiAgICBqbXAgcmVhZF90cmFj awoKIyBraWxsX21vdG9yCiMKIyBUaGlzIHByb2NlZHVyZSB0dXJucyBvZmYgdGhlIGZsb3Bw eSBkcml2ZSBtb3Rvciwgc28gdGhhdCB3ZSBlbnRlciB0aGUga2VybmVsCiMgaW4gYSBrbm93 biBzdGF0ZSwgYW5kIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgaXQgbGF0ZXIuIFRvIHR1 cm4gb2ZmIHRoZQojIGZsb3BweSBtb3RvciBpcyBuZWNlc3Nhcnkgd3JpdGUgMCBvbiB0aGUg MHgzZjIgSS9PIHBvcnQuCgpraWxsX21vdG9yOgogICAgbW92dyAgICAkMHgzZjIsICVkeAkJ CSMgJWR4ID0gMHgzZjIKICAgIHhvcmIgICAgJWFsLCAlYWwJCQkjICVhbCA9IDAJCiAgICBv dXRiICAgICVhbCwgJWR4CQkJIyBvdXRbMHgzZjJdID0gMAogICAgLndvcmQgICAweDAwZWIs IDB4MDBlYiAgICAgICMgcGVyZm9ybSBzaG9ydCBqbXAgZGVsYXlzCiAgICByZXQKCiMgcHJp bnRfYWxsIAojIFRoaXMgcm91dGluIGlzIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCiMKIyBJ dCB3aWxsIHByaW50IG91dCBhbGwgb2YgdGhlIHJlZ2lzdGVycy4gIFRoZSBhc3N1bXB0aW9u IGlzIHRoYXQgdGhpcyBpcwojIGNhbGxlZCBmcm9tIGEgcm91dGluZSwgd2l0aCBhIHN0YWNr IGZyYW1lIGxpa2UKIwojCShlcnJvcikgPC0gJXNwCiMgICAlYXgKIyAgICVieAojICAgJWN4 CiMgICAlZHgKCnByaW50X2FsbDoKCW1vdncJJDUsICVjeAkJIyAlY3ggPSBudW0gb2YgcGFy YW1ldGVycwoJbW92dyAgICAlc3AsICVicAkjICVicCA9ICVzcApwcmludF9sb29wOgoJcHVz aHcgICAlY3gJCQkjIHNhdmUgNSBvbiB0aGUgc3RhY2sKCWNhbGwgICAgcHJpbnRfbmwJIyBw cmludCBuZXcgbGluZQoJY21wYiAgICAkNSwgJWNsCQkjIGlmIGNsIGlzIDAgdGhlbiB0aGUg cmVnIG5hbWUgaXMgbm90IG5lY2Vzc2FyeS4KCQkJCQkJIyBUaGUgZmlyc3QgbG9vcCBwcmlu dCB0aGUgZXJyb3IgY29kZSwgYSBqdW1wCgkJCQkJCSMgdG8gbm9fcmVnIGlzIG1hZGUuCiAg ICBqYWUgbm9fcmVnCgogICAgbW92dyAgICAkMHhlMDUgKyAnQScgLSAxLCAlYXgJIyAlYWgg PSAweDBFICVhbCA9ICdEJwoJc3ViYiAgICAlY2wsICVhbAkjIGRlcGVuZGluZyBvbiB0aGUg dmFsdWUgb2YgJWNsLCAlYWwgbWF5CgkJCQkJCSMgY29udGFpbiB0aGUgZm9sbG93aW5nIGNo YXJhY3RlcnM6ICdBJywgJ0InCgkJCQkJCSMgJ0MnIGUgJ0QnLgoJaW50ICQweDEwCQkJIyBw cmludCB0aGUgY2hhcmFjdGVyCgltb3ZiICAgICQnWCcsICVhbAkjIHByaW50ICdYJwoJaW50 ICQweDEwCgltb3ZiICAgICQnOicsICVhbAkjIHByaW50ICc6JwoJaW50ICQweDEwCm5vX3Jl ZzoJCQkJCSMgcHJpbnQgdGhlIHZhbHVlIG9uIHRoZSBzdGFjawoJYWRkdyAgICAkMiwgJWJw CQkjIG5leHQgcmVnaXN0ZXIKCWNhbGwgICAgcHJpbnRfaGV4CSMgcHJpbnQgdGhlIHZhbHVl IGluIGhleAoJcG9wdyAgICAlY3gJCQkjICVjeCA9IHRvcCBvZiB0aGUgc3RhY2sKCWxvb3Ag ICAgcHJpbnRfbG9vcAkjIGxvb3AgdW50aWwgJWN4IGlzIDAKCXJldAoKIyBwcmludF9oZXgg CiMgVGhpcyByb3V0aW5lIGlzIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIGFuZCBwcmludHMg dGhlIHdvcmQKIyBwb2ludGVkIHRvIGJ5IHNzOmJwIGluIGhleGFkZWNpbWFsLgoKcHJpbnRf aGV4OgoJbW92dyAgICAkNCwgJWN4CQkjIDQgaGV4IGRpZ2l0cwoJbW92dyAgICAoJWJwKSwg JWR4CSMgbG9hZCB3b3JkIHRvIHByaW50IGluICVkeApwcmludF9kaWdpdDoKCXJvbHcgICAg JDQsICVkeAkJIyByb3RhdGUgdG8gdXNlIGxvdyA0IGJpdHMKCW1vdncgICAgJDB4ZTBmLCAl YXgJIyBhaCA9IDB4MEUgJWFsID0gMHgwRgoJYW5kYiAgICAlZGwsICVhbAkjICVhbCA9ICVh bCAmICVkbCAtPiAlYWwgY29udGFpbiB0aGUgdmFsdWUgdG8KCQkJCQkJIyBwcmludAoJYWRk YiAgICAkMHg5MCwgJWFsCSMgY29udmVydCAlYWwgaW4gQVNDSUkgYW5kIHByaW50IGl0Cglk YWEJCglhZGMJCSQweDQwLCAlYWwKCWRhYQoJaW50ICQweDEwCglsb29wICAgIHByaW50X2Rp Z2l0CSMgbG9vcCB1bnRpbCAlY3ggaXMgMAoJcmV0CgojIHByaW50X25sCiMgVGhpcyByb3V0 aW5lIHByaW50IGEgc2ltcGxlIG5ldyBsaW5lCgpwcmludF9ubDoKICAgIG1vdncgICAgJDB4 ZTBkLCAlYXgJCSMgcHJpbnQgQ1IKICAgIGludCAJJDB4MTAKICAgIG1vdmIgICAgJDB4YSwg JWFsICAgCSMgcHJpbnQgTEYKICAgIGludCAgICAgJDB4MTAKICAgIHJldAoKIyBDaGFuZ2Ug dGhlc2Ugc2V0dGluZyBhIGNvbXBpbGUgdGltZQojIERpc2sgMS40NE1iIGRpc2tzOgpzZWN0 b3JzOiAgICAud29yZCAxOAkJIyBzZWN0b3JzID0gMTgKIyBEaXNrIDEuMk1iIGRpc2tzOgoj IHNlY3RvcnM6CS53b3JkIDE1CQkjIHNlY3RvcnMgPSAxNQojIERpc2sgNzIwS2IgZGlza3M6 CiMgc2VjdG9yczogIC53b3JkIDkJCQkjIHNlY3RvcnMgPSA5CgojIFRoaXMgYm9vdCBtZXNz YWdlIHN0YXJ0IHdpdGggYSBuZXcgbGluZSAoQ1I9MTMsIExGPTEwKS4gU28gdGhlIHN0cmlu ZyBsZW5ndGgKIyBpcyAxNyBjaGFyYWN0ZXJzLgptc2cxOgkJLmJ5dGUgMTMsIDEwCgkJCS5h c2NpaSAiTG9hZGluZyBzeXN0ZW0gIgoKLm9yZyA1MDUJCQkJCSMgTGFzdCA1IGJ5dGVzIG9m IHRoZSBib290IHNlY3Rvci4KCnNldHVwX3NlY3RzOiAgICAuYnl0ZSBTRVRVUFNFQ1RTCnN5 c3NpemU6CQkud29yZCBTWVNTSVpFCnJvb3RfZGV2OgkJLndvcmQgMHgwCmJvb3RfZmxhZzoJ CS53b3JkIDB4QUE1NQkjIEZsYWcgaW5kaWNhdGluZyBhIGJvb3QgZGlzawoAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGV4YW1wbGUx OC9oZWFkLlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDA3NjQA MDAwMDc2NAAwMDAwMDAxNTAxMgAwNzcxMDI2Nzc2NQAwMTQxMTIAIDAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzZGFuZ2VsbwAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAHNkYW5nZWxvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAIyB0YWtlbiBmcm9tIGJvb3RzZWN0LlMKU0VUVVBTRUcgPSAw eDkwMjAKCi5jb2RlMTYKLnRleHQKCi5nbG9iYWwgX3N0YXJ0Cl9zdGFydDoKCS53b3JkICAg MHgwMGViLCAweDAwZWIJCSMgc2hvcnQganVtcCBkZWxheQoJbW92dyAgICAkMHg5MDAwLCAl YXgKCW1vdncgICAgJWF4LCAlZHMJCQkjICVkcyA9IDB4OTAwMAoKIyBPaywgaXQncyB0aW1l IHRvIG1vdmUgaW4gcHJvdGVjdGVkIG1vZGUuCgljbGkJCQkJCQkJIyBubyBpbnRlcnJ1cHRz Cgltb3ZiICAgICQweDgwLCAlYWwJCQkjIGRpc2FibGUgTk1JIGJvb3R1cAoJb3V0YiAgICAl YWwsICQweDcwCQkJIyBvdXRbMHg4MF0gPSAweDcwCgojIE1vdmUgdGhlIHN5c3RlbSBmcm9t IDB4MTAwMDowIHRvIDB4MDEwMDowLiBJbiBwcm90ZWN0ZWQgbW9kZSB0aGUgbWVtb3J5IGlz CiMgb3JnYW5pemVkIGluIHBhZ2VzIG9mIDRLYiwgc28gd2UgdHJhbnNmZXIgdGhlIGtlcm5l bCBmcm9tIDB4MTAwMDowIHRvIAojIDB4MDEwMDowIGEgcGFnZSBhdCBhIHRpbWUuCgoJbW92 dyAgICAkMHgxMDAsICVheAoJbW92dyAgICAkMHgxMDAwLCAlYngKCWNsZAkJCQkJCQkjIG1v dmUgZm9yd2FyZAoKZG9fbW92ZToKCW1vdncgICAgJWF4LCAlZXMJCQkjICVlcyA9IGRlc3Rp bmF0aW9uIGFkZHJlc3MgKGZpcnN0IGxvb3AgaXMgCgkJCQkJCQkJIyAweDEwMCkKICAgIGFk ZHcgICAgJDB4MTAwLCAlYXgJCQkjICVheCA9ICVheCArIDRLYgogICAgY21wdyAgICAkMHg5 MDAwLCAlYXgJCSMgaWYgKCVheCA9PSAweDkwMDApIGp1bXAgdG8gZW5kX21vdmUKICAgIGp6 ICBlbmRfbW92ZQogICAgbW92dyAgICAlYngsICVkcwkJCSMgJWRzID0gc291cmNlIGFkZHJl c3MgKGZpcnN0IGxvb3AgaXMgMHgxMDAwKQogICAgYWRkdyAgICAkMHgxMDAsICVieAkJCSMg JWJ4ID0gJWJ4ICsgNEtiCiAgICBzdWJ3ICAgICVkaSwgJWRpCQkJIyAlZGkgPSAwCiAgICBz dWJ3ICAgICVzaSwgJXNpCQkJIyAlc2kgPSAwCiAgICBtb3Z3ICAgICQweDgwMCwgJWN4CQkJ IyAlY3ggPSAweDgwMAogICAgcmVwCQkJCQkJCSMKICAgIG1vdnN3CQkJCQkJIyBjb3B5IDIw NDggd29yZHMgPSA0MDk2IGJ5dGVzID0gNEtiIGZyb20KCQkJCQkJCQkjICVkczolc2kgdG8g JWVzOiVkaQogICAgam1wIGRvX21vdmUJCQkJCSMganVtcCB0byBkb19tb3ZlCgoKZW5kX21v dmU6CiAgICBtb3Z3ICAgICRTRVRVUFNFRywgJWF4CiAgICBtb3Z3ICAgICVheCwgJWRzCQkJ IyAlZHMgPSAkU0VUVVBTRUcKCgojIFRoaXMgaXMgdGhlIG1lbW9yeSBzaXR1YXRpb24gYWZ0 ZXIgdGhlIGNvcHkuCiMKIyAgICAtLS0tLS0tLS0tLS0tLS0KIyAgIHwgICAgICAgICAgICAg ICB8IDB4MDAwMDowCiMgICB8ICAgICAuLi4uICAgICAgfAojICAgfF9fX19fX19fX19fX19f X3wKIyAgIHwgICAgIENPUFkgICAgICB8IDB4MDEwMDowCiMgICB8ICAgICBJTUFHRSAgICAg fAojICAgfCAgICAgS0VSTkVMICAgIHwgKHNpemUgMHg3RjAwKQojICAgfCAgICAobWFpbi5j KSAgIHwKIyAgIHwgICAgICAgICAgICAgICB8CiMgICB8X19fX19fX19fX19fX19ffAojICAg fCAgICAgICAgICAgICAgIHwKIyAgIHwgICAgIC4uLi4gICAgICB8CiMgICB8X19fX19fX19f X19fX19ffAojICAgfCAgIEJPT1RTRUNUT1IgIHwgMHgwN0MwOjAKIyAgIHwgICAgICAgICAg ICAgICB8CiMgICB8Z286IC4uLi4gICAgICAgfAojICAgfCAgICAgICAgICAgICAgIHwKIyAg IHxfX19fX19fX19fX19fX198CiMgICB8ICAgICAgICAgICAgICAgfAojICAgfCAgIC4uLi4u Li4uLiAgIHwKIyAgIHxfX19fX19fX19fX19fX198CiMgICB8ICAgICAgICAgICAgICAgfCAw eDEwMDA6MAojICAgfCAgICAgSU1BR0UgICAgIHwKIyAgIHwgICAgIEtFUk5FTCAgICB8IChz aXplIDB4N0YwMCkKIyAgIHwgICAgKG1haW4uYykgICB8CiMgICB8X19fX19fX19fX19fX19f fAojICAgfCAgIC4uLi4uLi4uLiAgIHwKIyAgIHxfX19fX19fX19fX19fX198CiMgICB8ICAg ICBDT1BZICAgICAgfAojICAgfCAgIEJPT1RTRUNUT1IgIHwgMHg5MDAwOjAKIyAgIHwgICAg ICAgICAgICAgICB8CiMgICB8Z286IC4uLi4gICAgICAgfAojICAgfCAgICAgICAgICAgICAg IHwKIyAgIHxfX19fX19fX19fX19fX198CiMgICB8ICAgIChoZWFkLlMpICAgfCAweDkwMDA6 MHgyMDAgPSAweDkwMjAwCiMgICB8ICAgICAgICAgICAgICAgfAojICAgfCAgICAgU0VUVVAg ICAgIHwgNCBzZWN0b3JzID0gMjA0OCBieXRlcwojICAgfCAgICAgICAgICAgICAgIHwKIyAg IHxfX19fX19fX19fX19fX198CiMgICB8ICAgICAgICAgICAgICAgfAojICAgfCAgICAgICAg ICAgICAgIHwKIyAgIHwgICAgIFNUQUNLICAgICB8CiMgICB8ICAgICAgICAgICAgICAgfAoj ICAgfF9fX19fX19fX19fX19fX3wgPC0gMHg5MDAwOjB4NDAwMC0xMgojICAgfCAgIERJU0sg UEFSTVMgIHwKIyAgIHwgICAoMTIgYnl0ZXMpICB8CiMgICB8X19fX19fX19fX19fX19ffCA8 LSAweDkwMDA6MHg0MDAwCgojIFByaW50IGEgbWVzc2FnZSBzcGVjaWZ5aW5nIHRoYXQgSURU IGFuZCBHVEQgYXJlIGxvYWQuCgoJbGVhdyAgICBtc2csICVzaQkJIyBub3cgJWRzOiVzaSBw b2ludCB0byBtc2cKCWNhbGwgICAgcHJ0c3RyCQkJIyBwcmludCB0aGUgbWVzc2FnZQoKIyBT ZXQgdGhlIElEVFIgYW5kIEdEVFIgcmVnaXN0ZXJzCiAgICBsaWR0ICAgIGlkdF80OCAgICAg ICAgICAjIGJhc2UgPT0gMCwgbGltaXQgPT0gMAogICAgbGdkdCAgICBnZHRfNDggICAgICAg ICAgIyBsaW1pdCA9PSAyMDQ4IC0+IDI1NiBlbnRyaWVzCgojIEVuYWJsZSBBMjAKICAgIGNh bGwgICAgZW1wdHlfODA0MgogICAgbW92YiAgICAkMHhkMSwgJWFsCiAgICBvdXRiICAgICVh bCwgJDB4NjQgICAgICAjIG91dFsweEQxXSA9IDB4NjQKICAgIGNhbGwgICAgZW1wdHlfODA0 MgogICAgbW92YiAgICAkMHhkZiwgJWFsCiAgICBvdXRiICAgICVhbCwgJDB4NjAgICAgICAj IG91dFsweEQxXSA9IDB4NjAKICAgIGNhbGwgICAgZW1wdHlfODA0MgoKIyByZXNldCBjb3By b2Nlc3NvcgogICAgeG9ydyAgICAlYXgsICVheAogICAgb3V0YiAgICAlYWwsICQweGYwICAg ICAgIyBvdXRbMF0gPSAweGYwCiAgICBjYWxsICAgIGRlbGF5CiAgICBvdXRiICAgICVhbCwg JDB4ZjEgICAgICAjIG91dFswXSA9IDB4ZjEKICAgIGNhbGwgICAgZGVsYXkKCiMgUmVwcm9n cmFtIHRoZSBJbnRlcnJ1cHRzCiAgICBtb3ZiICAgICQweDExLCAlYWwgICAgICAjIG91dFsw eDExXSA9IDB4MjAKICAgIG91dGIgICAgJWFsLCAkMHgyMAogICAgY2FsbCAgICBkZWxheQoK ICAgIG91dGIgICAgJWFsLCAkMHhhMCAgICAgICMgb3V0WzB4MTFdID0gMHhhMAogICAgY2Fs bCAgICBkZWxheQoKICAgIG1vdmIgICAgJDB4MjAsICVhbCAgICAgICMgb3V0WzB4MjBdID0g MHgyMSAtPiBzdGFydCBvZiBoYXJkd2FyZSBpbnRzCiAgICBvdXRiICAgICVhbCwgJDB4MjEK ICAgIGNhbGwgICAgZGVsYXkKCiAgICBtb3ZiICAgICQweDI4LCAlYWwgICAgICAjIG91dFsw eDI4XSA9IDB4YTEgLT4gc3RhcnQgb2YgaGFyZHdhcmUgaW50czIKICAgIG91dGIgICAgJWFs LCAkMHhhMQogICAgY2FsbCAgICBkZWxheQoKICAgIG1vdmIgICAgJDB4MDQsICVhbCAgICAg ICMgb3V0WzB4MDRdID0gMHgyMSAtPiA4MjU5IGlzIG1hc3RlcgogICAgb3V0YiAgICAlYWws ICQweDIxCiAgICBjYWxsICAgIGRlbGF5CgoKICAgIG1vdmIgICAgJDB4MDIsICVhbCAgICAg ICMgb3V0WzB4MDJdID0gMHhhMSAtPiA4MjU5IGlzIHNsYXZlCiAgICBvdXRiICAgICVhbCwg JDB4YTEKICAgIGNhbGwgICAgZGVsYXkKCiAgICBtb3ZiICAgICQweDAxLCAlYWwgICAgICAj IG91dFsweDAxXSA9IDB4MjEgLT4gODA4NiBtb2RlIGZvciBib3RoCiAgICBvdXRiICAgICVh bCwgJDB4MjEKICAgIGNhbGwgICAgZGVsYXkKCiAgICBvdXRiICAgICVhbCwgJDB4YTEgICAg ICAjIG91dFsweDAxXSA9IDB4YTEKICAgIGNhbGwgICAgZGVsYXkKCiAgICBtb3ZiICAgICQw eGZmLCAlYWwgICAgICAjIG91dFsweGZmXSA9IDB4YTEgLT4gbWFzayBvZmYgYWxsIGludGVy cnVwdHMKICAgIG91dGIgICAgJWFsLCAkMHhhMQogICAgY2FsbCAgICBkZWxheQoKICAgIG1v dmIgICAgJDB4ZmIsICVhbCAgICAgICMgb3V0WzB4ZmJdID0gMHgyMQogICAgb3V0YiAgICAl YWwsICQweDIxCgojIFN3aXRjaCBpbiBQcm90ZWN0ZWQgbW9kZSBzZXR0aW5nIHRoZSBiaXQg MCBvZiB0aGUgTWFjaGluZSBTdGF0dXMgV29yZCAoTVNXKQogICAgbW92dyAgICAkMHgwMDAx LCAlYXgKICAgIGxtc3cgICAgJWF4CiAgICBjYWxsICAgIGRlbGF5CgoJLmJ5dGUgICAweDY2 LCAweGVhCQkjIHByZWZpeCArIGptcGktb3Bjb2RlCmNvZGUzMjogLmxvbmcgICAweDAJCQkj IHdpbGwgYmUgc2V0IHRvIDB4MTAwMDAwCgkJLndvcmQJOAoKZG9uZToKCWptcCBkb25lCgoj IGVtcHR5XzgwNDIKIyBUaGlzIHJvdXRpbmUgZW1wdHkgdGhlIGtleWJvYXJkIGNvbW1hbmQg cXVldWUuCgplbXB0eV84MDQyOgogICAgY2FsbCAgICBkZWxheSAgICAgICAgICAgIyBhIHNt YWxsIGRlbGF5CiAgICBpbmIgJDB4NjQsICVhbCAgICAgICAgICAjICVhbCA9IGluWzB4NjRd CiAgICB0ZXN0YiAgICQweDEsICVhbAogICAganogIG5vX291dHB1dCAgICAgICAgICAgIyBp ZiAoYml0ICVhbFswXSA9PSAwKSBqdW1wIG5vX291dHB1dAogICAgY2FsbCAgICBkZWxheSAg ICAgICAgICAgIyBhIHNtYWxsIGRlbGF5CiAgICBpbmIgJDB4NjAsICVhbCAgICAgICAgICAj ICVhbCA9IGluWzB4NjBdCiAgICBqbXAgZW1wdHlfODA0MiAgICAgICAgICAjIGp1bXAgdG8g ZW1wdHlfODA0Mgpub19vdXRwdXQ6CiAgICB0ZXN0YiAgICQyLCAlYWwgICAgICAgICAjIGlm IChiaXQgJWFsWzFdID09IDEpIGp1bXAgZW1wdHlfODA0MgogICAgam56IGVtcHR5XzgwNDIK ICAgIHJldAoKZGVsYXk6CiAgICAud29yZCAgIDB4MDBlYiAgICAgICMgbWFrZSBhIHNob3J0 IGp1bXAgY2FsbCBqbXAgJCsyCiAgICByZXQKCnBydHN0cjogbG9kc2IJCQkJIyBsb2FkIHRo ZSBjaGFyYWN0ZXIgdG8gcHJpbnQgZnJvbSAlZHM6JXNpIHRvICVheAogICAgICAgIGFuZGIg ICAgJWFsLCVhbAogICAgICAgIGp6ICAgICAgZmluCQkJIyBwcmludCB0aGUgY2hhcmFjdGVy IHVudGlsICVhbCBpcyAweDAKICAgICAgICBjYWxsICAgIHBybnQxCQkjIHByaW50IHRoZSBj aGFyYWN0ZXIgYXQgJWRzOiVzaQogICAgICAgIGptcCAgICAgcHJ0c3RyCmZpbjogICAgcmV0 Cgpwcm50MToJCQkJCQkjIHVzZSB0aGUgc2VydmljZSAweDBFIG9mIGludGVycnVwdCAweDEw IHRvIHByaW50CgkJCQkJCQkjIHRoZSBjaGFyYWN0ZXIgaW4gJWFsLgoJCXB1c2h3ICAgJWF4 CQkKICAgICAgICBwdXNodyAgICVjeAogICAgICAgIHhvcmIgICAgJWJoLCViaAogICAgICAg IG1vdncgICAgJDB4MDEsICVjeAogICAgICAgIG1vdmIgICAgJDB4MGUsICVhaAogICAgICAg IGludCAgICAgJDB4MTAKICAgICAgICBwb3B3ICAgICVjeAogICAgICAgIHBvcHcgICAgJWF4 CiAgICAgICAgcmV0CgpnZHQ6CiAgICAgICAgLndvcmQgICAwLCAwLCAwLCAwICAgICAgICAg ICAgICAgICAgICAgICMgZHVtbXkKICAgICAgICAud29yZCAgIDAsIDAsIDAsIDAgICAgICAg ICAgICAgICAgICAgICAgIyB1bnVzZWQKCiAgICAgICAgLndvcmQgICAweEZGRkYgICAgICAg ICAgICAgICAgICAgICAgICAgICMgNEdiIC0gKDB4MTAwMDAwKjB4MTAwMCA9IDRHYikKICAg ICAgICAud29yZCAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBiYXNlIGFk ZHJlc3MgPSAwCiAgICAgICAgLndvcmQgICAweDlBMDAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgY29kZSByZWFkL2V4ZWMKICAgICAgICAud29yZCAgIDB4MDBDRiAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBncmFudWxhcml0eSA9IDQwOTYsIDM4NgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAoKzV0aCBuaWJibGUgb2Yg bGltaXQpCgogICAgICAgIC53b3JkICAgMHhGRkZGICAgICAgICAgICAgICAgICAgICAgICAg ICAjIDRHYiAtICgweDEwMDAwMCoweDEwMDAgPSA0R2IpCiAgICAgICAgLndvcmQgICAwICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYmFzZSBhZGRyZXNzID0gMAogICAgICAg IC53b3JkICAgMHg5MjAwICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRhdGEgcmVhZC93 cml0ZQogICAgICAgIC53b3JkICAgMHgwMENGICAgICAgICAgICAgICAgICAgICAgICAgICAj IGdyYW51bGFyaXR5ID0gNDA5NiwgMzg2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgICgrNXRoIG5pYmJsZSBvZiBsaW1pdCkKCmlkdF80ODoK ICAgICAgICAud29yZCAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZHQg bGltaXQgPSAwCiAgICAgICAgLndvcmQgICAwLCAwICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgaWR0IGJhc2UgPSAwTApnZHRfNDg6CiAgICAgICAgLndvcmQgICAweDgwMDAJCQkJ CQkJIyBnZHQgbGltaXQ9MjA0OCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyAgMjU2IEdEVCBlbnRyaWVzCgptc2c6CS5ieXRlIDEzLCAxMAoJ CS5hc2NpaSAiTG9hZGluZyBJRFQgYW5kIEdURCIKCQkuYnl0ZSAweDAKAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAGV4YW1wbGUxOC9tYWluLmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAw NjQ0ADAwMDA3NjQAMDAwMDc2NAAwMDAwMDAwMTEyNQAwNzcxMDI2NzU2MwAwMTQxNTEAIDAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABz ZGFuZ2VsbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNkYW5nZWxvAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdm9pZCBzdGFydF9rZXJuZWwodm9pZCkg ewoJdW5zaWduZWQgY2hhciAqdmlkX21lbSA9ICh1bnNpZ25lZCBjaGFyICopKDB4YjgwMDAr ODAwKTsKCgkqdmlkX21lbSsrID0gMHg2OwoJKnZpZF9tZW0rKyA9ICdIJzsKICAgICp2aWRf bWVtKysgPSAweDY7CgkqdmlkX21lbSsrID0gJ2UnOwogICAgKnZpZF9tZW0rKyA9IDB4NjsK ICAgICp2aWRfbWVtKysgPSAnbCc7CiAgICAqdmlkX21lbSsrID0gMHg2OwogICAgKnZpZF9t ZW0rKyA9ICdsJzsKICAgICp2aWRfbWVtKysgPSAweDY7CiAgICAqdmlkX21lbSsrID0gJ28n OwogICAgKnZpZF9tZW0rKyA9IDB4NjsKICAgICp2aWRfbWVtKysgPSAnICc7CgkqdmlkX21l bSsrID0gMHg2OwoJKnZpZF9tZW0rKyA9ICdLJzsKCSp2aWRfbWVtKysgPSAweDY7Cgkqdmlk X21lbSsrID0gJ2UnOwogICAgKnZpZF9tZW0rKyA9IDB4NjsKICAgICp2aWRfbWVtKysgPSAn cic7CiAgICAqdmlkX21lbSsrID0gMHg2OwogICAgKnZpZF9tZW0rKyA9ICduJzsKICAgICp2 aWRfbWVtKysgPSAweDY7CgkqdmlkX21lbSsrID0gJ2UnOwoJKnZpZF9tZW0rKyA9IDB4NjsK CSp2aWRfbWVtKysgPSAnbCc7CgoJd2hpbGUoMSk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGV4YW1wbGUxOC9NYWtlZmlsZQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDA3NjQAMDAwMDc2NAAwMDAwMDAwMTU3 NwAwNzcxMDI2NzU2NAAwMTQ1MzUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzZGFuZ2VsbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHNkYW5nZWxvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA QVM9YXMKTEQ9bGQKQ0M9Z2NjCkNQUD1nY2MgLUUKCmFsbDogYm9vdHNlY3QgaGVhZCB0ZW1w IC4vdG9vbHMvYnVpbGQgaW1hZ2UKCmJvb3RzZWN0OiBib290c2VjdC5vCgkkKExEKSAtVHRl eHQgMHgwIC1zIC0tb2Zvcm1hdCBiaW5hcnkgLW8gJEAgJDwKCmJvb3RzZWN0Lm86IGJvb3Rz ZWN0LnMKCSQoQVMpIC1vICRAICQ8Cgpib290c2VjdC5zOiBib290c2VjdC5TCgkkKENQUCkg LXRyYWRpdGlvbmFsICQ8IC1vICRACgpoZWFkOiBoZWFkLm8KCSQoTEQpIC1UdGV4dCAweDAg LXMgLS1vZm9ybWF0IGJpbmFyeSAtbyAkQCAkPAoKaGVhZC5vOiBoZWFkLnMKCSQoQVMpIC1v ICRAICQ8CgpoZWFkLnM6IGhlYWQuUwoJJChDUFApIC10cmFkaXRpb25hbCAkPCAtbyAkQAoK dGVtcDogdGVtcC5vIG1haW4ubwoJJChMRCkgLWUgc3RleHQgLVR0ZXh0IDB4MCAtcyAtLW9m b3JtYXQgYmluYXJ5IHRlbXAubyBtYWluLm8gLW8gJEAKCnRlbXAubzogdGVtcC5zCgkkKEFT KSAtbyAkQCAkPAoKbWFpbi5vOiBtYWluLmMKCSQoQ0MpIC1XYWxsIC1PIC1mc3RyZW5ndGgt cmVkdWNlIC1mb21pdC1mcmFtZS1wb2ludGVyIC1jICQ8IC1vICAkQAoKdGVtcC5zOiB0ZW1w LlMKCSQoQ1BQKSAtdHJhZGl0aW9uYWwgJDwgLW8gJEAKCmRpc2s6IGltYWdlCglkZCBpZj1p bWFnZSBvZj0vZGV2L2ZkMCBicz01MTIKCmltYWdlOiBib290c2VjdCBoZWFkIHRlbXAKCS4v dG9vbHMvYnVpbGQgYm9vdHNlY3QgaGVhZCB0ZW1wID4gaW1hZ2UKCi4vdG9vbHMvYnVpbGQ6 IC4vdG9vbHMvYnVpbGQuYwoJJChDQykgLW8gLi90b29scy9idWlsZCAuL3Rvb2xzL2J1aWxk LmMKCmNsZWFuOgoJcm0gLWYgKi5vICoucwoJcm0gYm9vdHNlY3QKCXJtIGhlYWQKCXJtIHRl bXAKCXJtIC4vdG9vbHMvYnVpbGQKCXJtIGltYWdlCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGV4 YW1wbGUxOC9SRUFETUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAw MDA3NjQAMDAwMDc2NAAwMDAwMDAwMDE0NgAwNzcxMDI2NzU2NAAwMTM3NDQAIDAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzZGFuZ2Vs bwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNkYW5nZWxvAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW50cm9kdWNpYW1vIGwndXRpbGl0eSBidWlsZCwg dXNhdGEgYW5jaGUgbmVsIGtlcm5lbCB1ZmZpY2lhbGUsIHBlciAKY29zdHJ1aXJlIGwnaW1t YWdpbmUgZGVsIGtlcm5lbC4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABleGFt cGxlMTgvdGVtcC5TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAw NzY0ADAwMDA3NjQAMDAwMDAwMDE2MjAAMDc3MTAyNjc1NjYAMDE0MTU1ACAwAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAc2RhbmdlbG8A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzZGFuZ2VsbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC50ZXh0CgouZ2xvYmwgX2lkdCxfZ2R0LAouZ2xvYmwg c3dhcHBlcl9wZ19kaXIKCiNkZWZpbmUgVVNFUl9DUyAgICAgICAgIDB4MjMKI2RlZmluZSBV U0VSX0RTICAgICAgICAgMHgyQgojZGVmaW5lIE5SX1RBU0tTICAgIDEyOAoKI2RlZmluZSBD TF9NQUdJQ19BRERSICAgMHg5MDAyMAojZGVmaW5lIENMX01BR0lDICAgIDB4QTMzRgojZGVm aW5lIENMX0JBU0VfQUREUiAgICAweDkwMDAwCiNkZWZpbmUgQ0xfT0ZGU0VUICAgMHg5MDAy MgoKI2RlZmluZSBTWU1CT0xfTkFNRShYKSBYCiNkZWZpbmUgU1lNQk9MX05BTUVfTEFCRUwo WCkgWDoKCiNkZWZpbmUgX19BTElHTiAuYWxpZ24gNCwweDkwCgojZGVmaW5lIEFMSUdOIF9f QUxJR04KCiNkZWZpbmUgRU5UUlkobmFtZSkgXAoJLmdsb2JsIFNZTUJPTF9OQU1FKG5hbWUp OyBcCglBTElHTjsgXAoJU1lNQk9MX05BTUVfTEFCRUwobmFtZSkKCiNkZWZpbmUgX3N0YWNr X3N0YXJ0ICAgIHN0YWNrX3N0YXJ0CiNkZWZpbmUgX3g4NiAgICAgICAgeDg2CiNkZWZpbmUg X2hhcmRfbWF0aCAgaGFyZF9tYXRoCgpFTlRSWShzdGV4dCkKRU5UUlkoX3N0ZXh0KQoKc3Rh cnR1cF8zMjoKCWNsZAoJbW92bCAgICAkMHgxMCwlZWF4Cgltb3YgICAgICVheCwlZHMKCW1v diAgICAgJWF4LCVlcwogICAgbW92ICAgICAlYXgsJWZzCiAgICBtb3YgICAgICVheCwlZ3MK Ci5hbGlnbiAgMgogICAgaW5jYiAgICAweGI4MDAwKzE2MAogICAgbW92dyAgICAkMiwgMHhi ODAwMCsxNjEKCiAgICBtb3Z3ICAgICQweDY0OSwgMHhiODAwMCs0ODAKICAgIG1vdncgICAg JDB4MTQyLCAweGI4MDAwKzY0MAogICAgbW92dyAgICAkMHgxNEMsIDB4YjgwMDArNjQyCiAg ICBtb3Z3ICAgICQweDE1NSwgMHhiODAwMCs2NDQKCiAgICBjYWxsICAgIHN0YXJ0X2tlcm5l bAoKZDoKICAgIGptcCBkCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABleGFtcGxlMTgvdG9vbHMvAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAMDA0MDc1NQAwMDAwNzY0ADAwMDA3NjQAMDAwMDAwMDAwMDAAMDc3MTAy NzA0NTMAMDE0MjE1ACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAHVzdGFyICAAc2RhbmdlbG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzZGFuZ2Vs bwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGV4YW1wbGUx OC90b29scy9idWlsZC5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNzU1ADAwMDA3NjQA MDAwMDc2NAAwMDAwMDAxMTM1NQAwNzcxMDI2NzU2NgAwMTU1MDAAIDAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzZGFuZ2VsbwAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAHNkYW5nZWxvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAALyoKICogICRJZDogYnVpbGQuYyx2IDEuNSAxOTk3LzA1LzE5 IDEyOjI5OjU4IG1qIEV4cCAkCiAqCiAqICBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTIgIExp bnVzIFRvcnZhbGRzCiAqICBDb3B5cmlnaHQgKEMpIDE5OTcgTWFydGluIE1hcmVzCiAqLwoK LyoKICogVGhpcyBmaWxlIGJ1aWxkcyBhIGRpc2staW1hZ2UgZnJvbSB0aHJlZSBkaWZmZXJl bnQgZmlsZXM6CiAqCiAqIC0gYm9vdHNlY3Q6IGV4YWN0bHkgNTEyIGJ5dGVzIG9mIDgwODYg bWFjaGluZSBjb2RlLCBsb2FkcyB0aGUgcmVzdAogKiAtIHNldHVwOiA4MDg2IG1hY2hpbmUg Y29kZSwgc2V0cyB1cCBzeXN0ZW0gcGFybQogKiAtIHN5c3RlbTogODAzODYgY29kZSBmb3Ig YWN0dWFsIHN5c3RlbQogKgogKiBJdCBkb2VzIHNvbWUgY2hlY2tpbmcgdGhhdCBhbGwgZmls ZXMgYXJlIG9mIHRoZSBjb3JyZWN0IHR5cGUsIGFuZAogKiBqdXN0IHdyaXRlcyB0aGUgcmVz dWx0IHRvIHN0ZG91dCwgcmVtb3ZpbmcgaGVhZGVycyBhbmQgcGFkZGluZyB0bwogKiB0aGUg cmlnaHQgYW1vdW50LiBJdCBhbHNvIHdyaXRlcyBzb21lIHN5c3RlbSBkYXRhIHRvIHN0ZGVy ci4KICovCgovKgogKiBDaGFuZ2VzIGJ5IHR5dHNvIHRvIGFsbG93IHJvb3QgZGV2aWNlIHNw ZWNpZmljYXRpb24KICogSGlnaCBsb2FkZWQgc3R1ZmYgYnkgSGFucyBMZXJtZW4gJiBXZXJu ZXIgQWxtZXNiZXJnZXIsIEZlYi4gMTk5NgogKiBDcm9zcyBjb21waWxpbmcgZml4ZXMgYnkg R2VydGphbiB2YW4gV2luZ2VyZGUsIEp1bHkgMTk5NgogKiBSZXdyaXR0ZW4gYnkgTWFydGlu IE1hcmVzLCBBcHJpbCAxOTk3CiAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxz dHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkYXJnLmg+CiNpbmNs dWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNpbmNsdWRlIDxzeXMv c3lzbWFjcm9zLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPGZjbnRsLmg+CiNp bmNsdWRlIDxhc20vYm9vdC5oPgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGJ5dGU7CnR5cGVk ZWYgdW5zaWduZWQgc2hvcnQgd29yZDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKCiNk ZWZpbmUgREVGQVVMVF9NQUpPUl9ST09UIDAKI2RlZmluZSBERUZBVUxUX01JTk9SX1JPT1Qg MAoKLyogTWluaW1hbCBudW1iZXIgb2Ygc2V0dXAgc2VjdG9ycyAoc2VlIGFsc28gYm9vdHNl Y3QuUykgKi8KI2RlZmluZSBTRVRVUF9TRUNUUyA0CgpieXRlIGJ1ZlsxMDI0XTsKaW50IGZk OwppbnQgaXNfYmlnX2tlcm5lbDsKCnZvaWQgZGllKGNvbnN0IGNoYXIgKiBzdHIsIC4uLikK ewoJdmFfbGlzdCBhcmdzOwoJdmFfc3RhcnQoYXJncywgc3RyKTsKCXZmcHJpbnRmKHN0ZGVy ciwgc3RyLCBhcmdzKTsKCWZwdXRjKCdcbicsIHN0ZGVycik7CglleGl0KDEpOwp9Cgp2b2lk IGZpbGVfb3Blbihjb25zdCBjaGFyICpuYW1lKQp7CglpZiAoKGZkID0gb3BlbihuYW1lLCBP X1JET05MWSwgMCkpIDwgMCkKCQlkaWUoIlVuYWJsZSB0byBvcGVuIGAlcyc6ICVtIiwgbmFt ZSk7Cn0KCnZvaWQgdXNhZ2Uodm9pZCkKewoJZGllKCJVc2FnZTogYnVpbGQgWy1iXSBib290 c2VjdCBzZXR1cCBzeXN0ZW0gW3Jvb3RkZXZdIFs+IGltYWdlXSIpOwp9CgppbnQgbWFpbihp bnQgYXJnYywgY2hhciAqKiBhcmd2KQp7Cgl1bnNpZ25lZCBpbnQgaSwgYywgc3osIHNldHVw X3NlY3RvcnM7Cgl1MzIgc3lzX3NpemU7CglieXRlIG1ham9yX3Jvb3QsIG1pbm9yX3Jvb3Q7 CglzdHJ1Y3Qgc3RhdCBzYjsKCglpZiAoYXJnYyA+IDIgJiYgIXN0cmNtcChhcmd2WzFdLCAi LWIiKSkKCSAgewoJICAgIGlzX2JpZ19rZXJuZWwgPSAxOwoJICAgIGFyZ2MtLSwgYXJndisr OwoJICB9CglpZiAoKGFyZ2MgPCA0KSB8fCAoYXJnYyA+IDUpKQoJCXVzYWdlKCk7CglpZiAo YXJnYyA+IDQpIHsKCQlpZiAoIXN0cmNtcChhcmd2WzRdLCAiQ1VSUkVOVCIpKSB7CgkJCWlm IChzdGF0KCIvIiwgJnNiKSkgewoJCQkJcGVycm9yKCIvIik7CgkJCQlkaWUoIkNvdWxkbid0 IHN0YXQgLyIpOwoJCQl9CgkJCW1ham9yX3Jvb3QgPSBtYWpvcihzYi5zdF9kZXYpOwoJCQlt aW5vcl9yb290ID0gbWlub3Ioc2Iuc3RfZGV2KTsKCQl9IGVsc2UgaWYgKHN0cmNtcChhcmd2 WzRdLCAiRkxPUFBZIikpIHsKCQkJaWYgKHN0YXQoYXJndls0XSwgJnNiKSkgewoJCQkJcGVy cm9yKGFyZ3ZbNF0pOwoJCQkJZGllKCJDb3VsZG4ndCBzdGF0IHJvb3QgZGV2aWNlLiIpOwoJ CQl9CgkJCW1ham9yX3Jvb3QgPSBtYWpvcihzYi5zdF9yZGV2KTsKCQkJbWlub3Jfcm9vdCA9 IG1pbm9yKHNiLnN0X3JkZXYpOwoJCX0gZWxzZSB7CgkJCW1ham9yX3Jvb3QgPSAwOwoJCQlt aW5vcl9yb290ID0gMDsKCQl9Cgl9IGVsc2UgewoJCW1ham9yX3Jvb3QgPSBERUZBVUxUX01B Sk9SX1JPT1Q7CgkJbWlub3Jfcm9vdCA9IERFRkFVTFRfTUlOT1JfUk9PVDsKCX0KCWZwcmlu dGYoc3RkZXJyLCAiUm9vdCBkZXZpY2UgaXMgKCVkLCAlZClcbiIsIG1ham9yX3Jvb3QsIG1p bm9yX3Jvb3QpOwoKCWZpbGVfb3Blbihhcmd2WzFdKTsKCWkgPSByZWFkKGZkLCBidWYsIHNp emVvZihidWYpKTsKCWZwcmludGYoc3RkZXJyLCJCb290IHNlY3RvciAlZCBieXRlcy5cbiIs aSk7CglpZiAoaSAhPSA1MTIpCgkJZGllKCJCb290IGJsb2NrIG11c3QgYmUgZXhhY3RseSA1 MTIgYnl0ZXMiKTsKCWlmIChidWZbNTEwXSAhPSAweDU1IHx8IGJ1Zls1MTFdICE9IDB4YWEp CgkJZGllKCJCb290IGJsb2NrIGhhc24ndCBnb3QgYm9vdCBmbGFnICgweEFBNTUpIik7Cgli dWZbNTA4XSA9IG1pbm9yX3Jvb3Q7CglidWZbNTA5XSA9IG1ham9yX3Jvb3Q7CglpZiAod3Jp dGUoMSwgYnVmLCA1MTIpICE9IDUxMikKCQlkaWUoIldyaXRlIGNhbGwgZmFpbGVkIik7Cglj bG9zZSAoZmQpOwoKCWZpbGVfb3Blbihhcmd2WzJdKTsJCQkJICAgIC8qIENvcHkgdGhlIHNl dHVwIGNvZGUgKi8KCWZvciAoaT0wIDsgKGM9cmVhZChmZCwgYnVmLCBzaXplb2YoYnVmKSkp PjAgOyBpKz1jICkKCQlpZiAod3JpdGUoMSwgYnVmLCBjKSAhPSBjKQoJCQlkaWUoIldyaXRl IGNhbGwgZmFpbGVkIik7CglpZiAoYyAhPSAwKQoJCWRpZSgicmVhZC1lcnJvciBvbiBgc2V0 dXAnIik7CgljbG9zZSAoZmQpOwoKCXNldHVwX3NlY3RvcnMgPSAoaSArIDUxMSkgLyA1MTI7 CS8qIFBhZCB1bnVzZWQgc3BhY2Ugd2l0aCB6ZXJvcyAqLwoJLyogZm9yIGNvbXBhdGliaWxp dHkgd2l0aCBhbmNpZW50IHZlcnNpb25zIG9mIExJTE8uICovCglpZiAoc2V0dXBfc2VjdG9y cyA8IFNFVFVQX1NFQ1RTKQoJCXNldHVwX3NlY3RvcnMgPSBTRVRVUF9TRUNUUzsKCWZwcmlu dGYoc3RkZXJyLCAiU2V0dXAgaXMgJWQgYnl0ZXMuXG4iLCBpKTsKCW1lbXNldChidWYsIDAs IHNpemVvZihidWYpKTsKCXdoaWxlIChpIDwgc2V0dXBfc2VjdG9ycyAqIDUxMikgewoJCWMg PSBzZXR1cF9zZWN0b3JzICogNTEyIC0gaTsKCQlpZiAoYyA+IHNpemVvZihidWYpKQoJCQlj ID0gc2l6ZW9mKGJ1Zik7CgkJaWYgKHdyaXRlKDEsIGJ1ZiwgYykgIT0gYykKCQkJZGllKCJX cml0ZSBjYWxsIGZhaWxlZCIpOwoJCWkgKz0gYzsKCX0KCglmaWxlX29wZW4oYXJndlszXSk7 CglpZiAoZnN0YXQgKGZkLCAmc2IpKQoJCWRpZSgiVW5hYmxlIHRvIHN0YXQgYCVzJzogJW0i LCBhcmd2WzNdKTsKCXN6ID0gc2Iuc3Rfc2l6ZTsKCWZwcmludGYgKHN0ZGVyciwgIlN5c3Rl bSBpcyAlZCBrQlxuIiwgc3ovMTAyNCk7CglzeXNfc2l6ZSA9IChzeiArIDE1KSAvIDE2OwoJ LyogMHgyODAwMCoxNiA9IDIuNSBNQiwgY29uc2VydmF0aXZlIGVzdGltYXRlIGZvciB0aGUg Y3VycmVudCBtYXhpbXVtICovCglpZiAoc3lzX3NpemUgPiAoaXNfYmlnX2tlcm5lbCA/IDB4 MjgwMDAgOiBERUZfU1lTU0laRSkpCgkJZGllKCJTeXN0ZW0gaXMgdG9vIGJpZy4gVHJ5IHVz aW5nICVzbW9kdWxlcy4iLAoJCQlpc19iaWdfa2VybmVsID8gIiIgOiAiYnpJbWFnZSBvciAi KTsKCWlmIChzeXNfc2l6ZSA+IDB4ZWZmZikKCQlmcHJpbnRmKHN0ZGVyciwid2FybmluZzog a2VybmVsIGlzIHRvbyBiaWcgZm9yIHN0YW5kYWxvbmUgYm9vdCAiCgkJICAgICJmcm9tIGZs b3BweVxuIik7Cgl3aGlsZSAoc3ogPiAwKSB7CgkJaW50IGwsIG47CgoJCWwgPSAoc3ogPiBz aXplb2YoYnVmKSkgPyBzaXplb2YoYnVmKSA6IHN6OwoJCWlmICgobj1yZWFkKGZkLCBidWYs IGwpKSAhPSBsKSB7CgkJCWlmIChuIDwgMCkKCQkJCWRpZSgiRXJyb3IgcmVhZGluZyAlczog JW0iLCBhcmd2WzNdKTsKCQkJZWxzZQoJCQkJZGllKCIlczogVW5leHBlY3RlZCBFT0YiLCBh cmd2WzNdKTsKCQl9CgkJaWYgKHdyaXRlKDEsIGJ1ZiwgbCkgIT0gbCkKCQkJZGllKCJXcml0 ZSBmYWlsZWQiKTsKCQlzeiAtPSBsOwoJfQoJY2xvc2UoZmQpOwoKCWlmIChsc2VlaygxLCA0 OTcsIFNFRUtfU0VUKSAhPSA0OTcpCQkgICAgLyogV3JpdGUgc2l6ZXMgdG8gdGhlIGJvb3Rz ZWN0b3IgKi8KCQlkaWUoIk91dHB1dDogc2VlayBmYWlsZWQiKTsKCWJ1ZlswXSA9IHNldHVw X3NlY3RvcnM7CglpZiAod3JpdGUoMSwgYnVmLCAxKSAhPSAxKQoJCWRpZSgiV3JpdGUgb2Yg c2V0dXAgc2VjdG9yIGNvdW50IGZhaWxlZCIpOwoJaWYgKGxzZWVrKDEsIDUwMCwgU0VFS19T RVQpICE9IDUwMCkKCQlkaWUoIk91dHB1dDogc2VlayBmYWlsZWQiKTsKCWJ1ZlswXSA9IChz eXNfc2l6ZSAmIDB4ZmYpOwoJYnVmWzFdID0gKChzeXNfc2l6ZSA+PiA4KSAmIDB4ZmYpOwoJ aWYgKHdyaXRlKDEsIGJ1ZiwgMikgIT0gMikKCQlkaWUoIldyaXRlIG9mIGltYWdlIGxlbmd0 aCBmYWlsZWQiKTsKCglyZXR1cm4gMDsJCQkJCSAgICAvKiBFdmVyeXRoaW5nIGlzIE9LICov Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== --------------080601020902000307090709--