Return-Path: X-Original-To: apmail-trafficserver-users-archive@www.apache.org Delivered-To: apmail-trafficserver-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 3D7C679B8 for ; Wed, 12 Oct 2011 13:48:41 +0000 (UTC) Received: (qmail 8714 invoked by uid 500); 12 Oct 2011 13:48:41 -0000 Delivered-To: apmail-trafficserver-users-archive@trafficserver.apache.org Received: (qmail 8654 invoked by uid 500); 12 Oct 2011 13:48:40 -0000 Mailing-List: contact users-help@trafficserver.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@trafficserver.apache.org Delivered-To: mailing list users@trafficserver.apache.org Received: (qmail 8646 invoked by uid 99); 12 Oct 2011 13:48:40 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Oct 2011 13:48:40 +0000 X-ASF-Spam-Status: No, hits=2.2 required=5.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of DannyS@radware.com designates 192.115.180.11 as permitted sender) Received: from [192.115.180.11] (HELO APOLLO.il.corp.radware.com) (192.115.180.11) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Oct 2011 13:48:36 +0000 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01CC88E5.9654B305" Subject: ATS crashes under heavy load Date: Wed, 12 Oct 2011 15:48:09 +0200 Message-ID: <51748699F0061A4BA117CAB46E4BA2F79C1A48@APOLLO.il.corp.radware.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: ATS crashes under heavy load Thread-Index: AcyI5ZPOhq1uVTuiSw+M4Rbq0UblJA== From: "Danny Shporer" To: This is a multi-part message in MIME format. ------_=_NextPart_001_01CC88E5.9654B305 Content-Type: multipart/alternative; boundary="----_=_NextPart_002_01CC88E5.9654B305" ------_=_NextPart_002_01CC88E5.9654B305 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi =20 I have been experiencing ATS crashes under heavy load testing - around 25,000 HTTP transactions per second. The environment is a 4 core desktop running Centos 5.6, kernel 2.6.39.2 compiled with TPROXY support. ATS runs as a transparent proxy. ATS was compiled with the following options: ./configure --enable-tproxy --enable-libev ATS version of this info is 3.0.0 (I have tested it on 3.0.1 as well and the same happens). =20 Attached is the records.config of ATS =20 =20 Following is the gdb info: =20 Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x42174940 (LWP 6663)] 0x000000000068fd4b in modify (this=3D0x2aaaab12c628, event=3D, e=3D) at P_UnixNet.h:536 536 fd_change(event_loop->eio, eio.fd, 0); (gdb) bt #0 0x000000000068fd4b in modify (this=3D0x2aaaab12c628, event=3D, e=3D) at P_UnixNet.h:536 #1 NetHandler::mainNetEvent (this=3D0x2aaaab12c628, event=3D, e=3D) at UnixNet.cc:432 #2 0x00000000006bfc4f in EThread::process_event (this=3D0x2aaaab12b010, e=3D0xf44570, calling_code=3D5) at I_Continuation.h:146 #3 0x00000000006c055c in EThread::execute (this=3D0x2aaaab12b010) at UnixEThread.cc:262 #4 0x00000000006bef8e in spawn_thread_internal (a=3D0xf35c90) at Thread.cc:88 #5 0x0000003e9dc0673d in start_thread () from /lib64/libpthread.so.0 #6 0x0000003e9d0d44bd in clone () from /lib64/libc.so.6 (gdb) info f Stack level 0, frame at 0x42174030: rip =3D 0x68fd4b in modify (P_UnixNet.h:536); saved rip 0x6bfc4f inlined into frame 1 source language c++. Arglist at unknown address. Locals at unknown address, Previous frame's sp in rsp =20 =20 Thanks Danny =20 =20 ------_=_NextPart_002_01CC88E5.9654B305 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hi

 

I have been = experiencing ATS crashes under heavy load testing – around 25,000 = HTTP transactions per second.

The = environment is a 4 core desktop running Centos 5.6, kernel 2.6.39.2 = compiled with TPROXY support. ATS runs as a transparent = proxy.

ATS was compiled with the = following options:  ./configure --enable-tproxy = --enable-libev

ATS version of this = info is 3.0.0 (I have tested it on 3.0.1 as well and the same = happens).

 

Attached is the records.config of ATS

 

 

Following is = the gdb info:

 

Program received signal SIGSEGV, Segmentation = fault.

[Switching to Thread = 0x42174940 (LWP 6663)]

0x000000000068fd4b in modify (this=3D0x2aaaab12c628, = event=3D<value optimized out>, e=3D<value optimized out>) at = P_UnixNet.h:536

536         = fd_change(event_loop->eio, eio.fd, 0);

(gdb) bt

#0  = 0x000000000068fd4b in modify (this=3D0x2aaaab12c628, event=3D<value = optimized out>, e=3D<value optimized out>) at = P_UnixNet.h:536

#1  = NetHandler::mainNetEvent (this=3D0x2aaaab12c628, event=3D<value = optimized out>, e=3D<value optimized out>) at = UnixNet.cc:432

#2  = 0x00000000006bfc4f in EThread::process_event (this=3D0x2aaaab12b010, = e=3D0xf44570, calling_code=3D5) at I_Continuation.h:146

#3  0x00000000006c055c in EThread::execute = (this=3D0x2aaaab12b010) at UnixEThread.cc:262

#4  0x00000000006bef8e in spawn_thread_internal = (a=3D0xf35c90) at Thread.cc:88

#5  0x0000003e9dc0673d in start_thread () from = /lib64/libpthread.so.0

#6  = 0x0000003e9d0d44bd in clone () from /lib64/libc.so.6

(gdb) info f

Stack = level 0, frame at 0x42174030:

rip = =3D 0x68fd4b in modify (P_UnixNet.h:536); saved rip = 0x6bfc4f

inlined into frame = 1

source language = c++.

Arglist at unknown = address.

Locals at unknown address, = Previous frame's sp in rsp

 

 

Thanks

Danny

 

 

------_=_NextPart_002_01CC88E5.9654B305-- ------_=_NextPart_001_01CC88E5.9654B305 Content-Type: application/octet-stream; name="records.config" Content-Transfer-Encoding: base64 Content-Description: records.config Content-Disposition: attachment; filename="records.config" IwojCiMgUHJvY2VzcyBSZWNvcmRzIENvbmZpZyBGaWxlCiMKIyA8UkVDT1JELVRZUEU+IDxOQU1F PiA8VFlQRT4gPFZBTFVFICh0aWxsIGVuZCBvZiBsaW5lKT4KIwojCVJFQ09SRC1UWVBFOglDT05G SUcsIExPQ0FMCiMJTkFNRToJCW5hbWUgb2YgdmFyaWFibGUKIwlUWVBFOgkJSU5ULCBTVFJJTkcs IEZMT0FUCiMJVkFMVUU6CQlJbml0aWFsIHZhbHVlIGZvciByZWNvcmQKIwojCiMgKk5PVEUqOiBB bGwgb3B0aW9ucyBjb3ZlcmVkIGluIHRoaXMgZmlsZSBzaG91bGQgYmUgZG9jdW1lbnRlZCBpbiB0 aGUKIyAgICAgICAgIGFkbWluaXN0cmF0aW9uIGd1aWRlIG9yIHRoZSBhZGRlbmR1bToKIwojCiMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwojCiMgU3lzdGVtIFZhcmlhYmxlcwojCiMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwpDT05GSUcgcHJveHkuY29uZmlnLnByb3h5X25hbWUgU1RSSU5HIDEwLjIwMi4xNTMu MTEKQ09ORklHIHByb3h5LmNvbmZpZy5jb25maWdfZGlyIFNUUklORyBldGMvdHJhZmZpY3NlcnZl cgpDT05GSUcgcHJveHkuY29uZmlnLnByb3h5X2JpbmFyeV9vcHRzIFNUUklORyAtTQpDT05GSUcg cHJveHkuY29uZmlnLmVudl9wcmVwIFNUUklORyBleGFtcGxlX3ByZXAuc2gKQ09ORklHIHByb3h5 LmNvbmZpZy50ZW1wX2RpciBTVFJJTkcgL3RtcApDT05GSUcgcHJveHkuY29uZmlnLmFsYXJtX2Vt YWlsIFNUUklORyBub2JvZHkKQ09ORklHIHByb3h5LmNvbmZpZy5zeXNsb2dfZmFjaWxpdHkgU1RS SU5HIExPR19EQUVNT04KQ09ORklHIHByb3h5LmNvbmZpZy5vdXRwdXQubG9nZmlsZSBTVFJJTkcg dHJhZmZpYy5vdXQKQ09ORklHIHByb3h5LmNvbmZpZy5zbmFwc2hvdF9kaXIgU1RSSU5HIHNuYXBz aG90cwpDT05GSUcgcHJveHkuY29uZmlnLnN5c3RlbS5tbWFwX21heCBJTlQgMjA5NzE1MgojIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKIwojIE1haW4gdGhyZWFkcyBjb25maWd1cmF0aW9uICh3b3JrZXIg dGhyZWFkcykuIEFsc28gc2VlIGNvbmZpZ3VyYXRpb25zIGZvcgojIFNTTCB0aHJlYWRzLCBkaXNr IEkvTyB0aHJlYWRzIGFuZCB0YXNrIHRocmVhZHMgaW4gdGhlaXIgcmVzcGVjdGl2ZSBhcmVhcy4K IwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ09ORklHIHByb3h5LmNvbmZpZy5leGVjX3RocmVhZC5h dXRvY29uZmlnIElOVCAxCkNPTkZJRyBwcm94eS5jb25maWcuZXhlY190aHJlYWQuYXV0b2NvbmZp Zy5zY2FsZSBGTE9BVCAxLjUwMDAwMAojQ09ORklHIHByb3h5LmNvbmZpZy5leGVjX3RocmVhZC5h dXRvY29uZmlnLnNjYWxlIEZMT0FUIDAuNzUKQ09ORklHIHByb3h5LmNvbmZpZy5leGVjX3RocmVh ZC5saW1pdCBJTlQgMjAKQ09ORklHIHByb3h5LmNvbmZpZy5hY2NlcHRfdGhyZWFkcyBJTlQgMAoj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIExvY2FsIE1hbmFnZXIKIwojIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKQ09ORklHIHByb3h5LmNvbmZpZy5hZG1pbi5hZG1pbl91c2VyIFNUUklORyBhZG1pbgpD T05GSUcgcHJveHkuY29uZmlnLmFkbWluLm51bWJlcl9jb25maWdfYmFrIElOVCAzCkNPTkZJRyBw cm94eS5jb25maWcuYWRtaW4udXNlcl9pZCBTVFJJTkcgbm9ib2R5CiMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwojCiMgUHJvY2VzcyBNYW5hZ2VyCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkNPTkZJRyBw cm94eS5jb25maWcuYWRtaW4uYXV0b2NvbmZfcG9ydCBJTlQgODA4MwpDT05GSUcgcHJveHkuY29u ZmlnLnByb2Nlc3NfbWFuYWdlci5tZ210X3BvcnQgSU5UIDgwODQKIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiMKIyBJbiBvcmRlciB0byBvbmx5IGJpbmQgYSBzcGVjaWZpYyBJUCwgdXNlIHRoZSBmb2xs b3dpbmcgY29uZmlnLCBhcyBpbiAKIyB0aGUgZXhhbXBsZSBiZWxvdy4gTm90ZQojCiMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwojTE9DQUwgcHJveHkubG9jYWwuaW5jb21pbmdfaXBfdG9fYmluZCBTVFJJ TkcgMTkyLjE2OC4xMDEuMTcKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBBbGFybSBDb25maWd1 cmF0aW9uCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICMgZXhlY3V0ZSBhbGFybSBhcyAiPGFi c19wYXRoPi88YmluPiAiPE1TR19TVFJJTkdfRlJPTV9QUk9YWT4iIgpDT05GSUcgcHJveHkuY29u ZmlnLmFsYXJtLmJpbiBTVFJJTkcgZXhhbXBsZV9hbGFybV9iaW4uc2gKQ09ORklHIHByb3h5LmNv bmZpZy5hbGFybS5hYnNfcGF0aCBTVFJJTkcgTlVMTAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwoj IEhUVFAgRW5naW5lCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICMjIyMjIyMjIyMKICAgIyBi YXNpY3MgIwogICAjIyMjIyMjIyMjCiAgICMgVGhlIG1haW4gc2VydmVyX3BvcnQgaXMgbGlzdGVk IGhlcmUsIG90aGVyIHNlcnZlciBwb3J0cyBpcyBhCiAgICMgc3RyaW5nIG9mIHBvcnRzLCBzZXBh cmF0ZWQgYnkgd2hpdGVzcGFjZS4gIFRoZSBwb3J0IGF0dHJpYnV0ZXMKICAgIyBzaG91bGQgYmUg c2V0IHRvIFgoZGVmYXVsdCBiZWhhdmlvcikuIEZvciBleGFtcGxlLi4uCiAgICMgc2VydmVyX290 aGVyX3BvcnRzIFNUUklORyAxMjM0OlggMTIzNDU6WApDT05GSUcgcHJveHkuY29uZmlnLmh0dHAu c2VydmVyX3BvcnQgSU5UIDgwODAKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLnNlcnZlcl9wb3J0 X2F0dHIgU1RSSU5HID0KIyB0byBlbmFibGUgSVB2NiBsaXN0ZW5pbmcgb24gcG9ydCA4MDgwOgoj IENPTkZJRyBwcm94eS5jb25maWcuaHR0cC5zZXJ2ZXJfb3RoZXJfcG9ydHMgU1RSSU5HIDgwODA6 WDYKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLnNlcnZlcl9vdGhlcl9wb3J0cyBTVFJJTkcgTlVM TApDT05GSUcgcHJveHkuY29uZmlnLmh0dHAuY29ubmVjdF9wb3J0cyBTVFJJTkcgNDQzIDU2MwpD T05GSUcgcHJveHkuY29uZmlnLmh0dHAuaW5zZXJ0X3JlcXVlc3RfdmlhX3N0ciBJTlQgMApDT05G SUcgcHJveHkuY29uZmlnLmh0dHAuaW5zZXJ0X3Jlc3BvbnNlX3ZpYV9zdHIgSU5UIDAKQ09ORklH IHByb3h5LmNvbmZpZy5odHRwLnZlcmJvc2VfdmlhX3N0ciBJTlQgMgpDT05GSUcgcHJveHkuY29u ZmlnLmh0dHAucmVzcG9uc2Vfc2VydmVyX2VuYWJsZWQgSU5UIDEKQ09ORklHIHByb3h5LmNvbmZp Zy5odHRwLmVuYWJsZV91cmxfZXhwYW5kb21hdGljIElOVCAwCkNPTkZJRyBwcm94eS5jb25maWcu aHR0cC5ub19kbnNfanVzdF9mb3J3YXJkX3RvX3BhcmVudCBJTlQgMApDT05GSUcgcHJveHkuY29u ZmlnLmh0dHAudW5jYWNoZWFibGVfcmVxdWVzdHNfYnlwYXNzX3BhcmVudCBJTlQgMQpDT05GSUcg cHJveHkuY29uZmlnLmh0dHAua2VlcF9hbGl2ZV9lbmFibGVkX2luIElOVCAxCkNPTkZJRyBwcm94 eS5jb25maWcuaHR0cC5rZWVwX2FsaXZlX2VuYWJsZWRfb3V0IElOVCAxCkNPTkZJRyBwcm94eS5j b25maWcuaHR0cC5jaHVua2luZ19lbmFibGVkIElOVCAxCiAgICMgc2VuZCBodHRwMTEgcmVxdWVz dHM6CiAgICMgICAwIC0gTmV2ZXIKICAgIyAgIDEgLSBBbHdheXMKICAgIyAgIDIgLSBpZiB0aGUg c2VydmVyIGhhcyByZXR1cm5lZCBodHRwMS4xIGJlZm9yZQogICAjICAgMyAtIGlmIHRoZSBjbGll bnQgcmVxdWVzdCBpcyAxLjEgJiB0aGUgc2VydmVyCiAgICMgICAgICAgICBoYXMgcmV0dXJuZWQg MS4xIGJlZm9yZQpDT05GSUcgcHJveHkuY29uZmlnLmh0dHAuc2VuZF9odHRwMTFfcmVxdWVzdHMg SU5UIDEKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLnNoYXJlX3NlcnZlcl9zZXNzaW9ucyBJTlQg MQpDT05GSUcgcHJveHkuY29uZmlnLmh0dHAub3JpZ2luX3NlcnZlcl9waXBlbGluZSBJTlQgMQpD T05GSUcgcHJveHkuY29uZmlnLmh0dHAudXNlcl9hZ2VudF9waXBlbGluZSBJTlQgOAogICAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAjIEhUVFAgcmVmZXJlciBmaWx0ZXJpbmcgIwogICAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpDT05GSUcgcHJveHkuY29uZmlnLmh0dHAucmVmZXJl cl9maWx0ZXIgSU5UIDAKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLnJlZmVyZXJfZm9ybWF0X3Jl ZGlyZWN0IElOVCAwCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5yZWZlcmVyX2RlZmF1bHRfcmVk aXJlY3QgU1RSSU5HIGh0dHA6Ly93d3cuZXhhbXBsZS5jb20vCiAgICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogICAjIHBhcmVudCBwcm94eSBjb25maWd1cmF0aW9uICMKICAgIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5wYXJlbnRf cHJveHlfcm91dGluZ19lbmFibGUgSU5UIDAKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLnBhcmVu dF9wcm94eS5yZXRyeV90aW1lIElOVCAzMDAKICAgIyBQYXJlbnQgZmFpbCB0aHJlc2hvbGQgaXMg dGhlIG51bWJlciBvZiByZXF1ZXN0IHRoYXQgbXVzdAogICAjIGZhaWwgd2l0aGluIHRoZSByZXRy eSB3aW5kb3cgZm9yIHRoZSBwYXJlbnQgdG8gYmUgbWFya2VkCiAgICMgZG93bgpDT05GSUcgcHJv eHkuY29uZmlnLmh0dHAucGFyZW50X3Byb3h5LmZhaWxfdGhyZXNob2xkIElOVCAxMApDT05GSUcg cHJveHkuY29uZmlnLmh0dHAucGFyZW50X3Byb3h5LnRvdGFsX2Nvbm5lY3RfYXR0ZW1wdHMgSU5U IDQKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLnBhcmVudF9wcm94eS5wZXJfcGFyZW50X2Nvbm5l Y3RfYXR0ZW1wdHMgSU5UIDIKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLnBhcmVudF9wcm94eS5j b25uZWN0X2F0dGVtcHRzX3RpbWVvdXQgSU5UIDMwCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5m b3J3YXJkLnByb3h5X2F1dGhfdG9fcGFyZW50IElOVCAwCiAgICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCiAgICMgSFRUUCBjb25uZWN0aW9uIHRpbWVvdXRzIChzZWNzKSAjCiAg ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICMgb3V0OiBwcm94eSAtPiBv cmlnaW4gc2VydmVyIGNvbm5lY3Rpb24KICAgIyBpbiA6IHVhIC0+IHByb3h5IGNvbm5lY3Rpb24K Q09ORklHIHByb3h5LmNvbmZpZy5odHRwLmtlZXBfYWxpdmVfbm9fYWN0aXZpdHlfdGltZW91dF9p biBJTlQgMTE1CkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5rZWVwX2FsaXZlX25vX2FjdGl2aXR5 X3RpbWVvdXRfb3V0IElOVCAxMjAKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLnRyYW5zYWN0aW9u X25vX2FjdGl2aXR5X3RpbWVvdXRfaW4gSU5UIDMwCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC50 cmFuc2FjdGlvbl9ub19hY3Rpdml0eV90aW1lb3V0X291dCBJTlQgMzAKQ09ORklHIHByb3h5LmNv bmZpZy5odHRwLnRyYW5zYWN0aW9uX2FjdGl2ZV90aW1lb3V0X2luIElOVCA5MDAKQ09ORklHIHBy b3h5LmNvbmZpZy5odHRwLnRyYW5zYWN0aW9uX2FjdGl2ZV90aW1lb3V0X291dCBJTlQgMApDT05G SUcgcHJveHkuY29uZmlnLmh0dHAuYWNjZXB0X25vX2FjdGl2aXR5X3RpbWVvdXQgSU5UIDEyMApD T05GSUcgcHJveHkuY29uZmlnLmh0dHAuYmFja2dyb3VuZF9maWxsX2FjdGl2ZV90aW1lb3V0IElO VCA2MApDT05GSUcgcHJveHkuY29uZmlnLmh0dHAuYmFja2dyb3VuZF9maWxsX2NvbXBsZXRlZF90 aHJlc2hvbGQgRkxPQVQgMC41MDAwMDAKICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogICAjIG9yaWdpbiBzZXJ2ZXIgY29ubmVjdCBhdHRlbXB0cyAjCiAgICMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLmNvbm5lY3Rf YXR0ZW1wdHNfbWF4X3JldHJpZXMgSU5UIDYKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLmNvbm5l Y3RfYXR0ZW1wdHNfbWF4X3JldHJpZXNfZGVhZF9zZXJ2ZXIgSU5UIDMKQ09ORklHIHByb3h5LmNv bmZpZy5odHRwLmNvbm5lY3RfYXR0ZW1wdHNfcnJfcmV0cmllcyBJTlQgMwpDT05GSUcgcHJveHku Y29uZmlnLmh0dHAuY29ubmVjdF9hdHRlbXB0c190aW1lb3V0IElOVCAzMApDT05GSUcgcHJveHku Y29uZmlnLmh0dHAucG9zdF9jb25uZWN0X2F0dGVtcHRzX3RpbWVvdXQgSU5UIDE4MDAKQ09ORklH IHByb3h5LmNvbmZpZy5odHRwLmRvd25fc2VydmVyLmNhY2hlX3RpbWUgSU5UIDMwMApDT05GSUcg cHJveHkuY29uZmlnLmh0dHAuZG93bl9zZXJ2ZXIuYWJvcnRfdGhyZXNob2xkIElOVCAxMAogICAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICMgY29uZ2VzdGlvbiBjb250cm9s ICAgICAgICAgICAgICMKICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpDT05G SUcgcHJveHkuY29uZmlnLmh0dHAuY29uZ2VzdGlvbl9jb250cm9sLmVuYWJsZWQgSU5UIDAKICAg IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIyBuZWdhdGl2ZSByZXNwb25zZSBjYWNo aW5nICMKICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ09ORklHIHByb3h5LmNvbmZp Zy5odHRwLm5lZ2F0aXZlX2NhY2hpbmdfZW5hYmxlZCBJTlQgMApDT05GSUcgcHJveHkuY29uZmln Lmh0dHAubmVnYXRpdmVfY2FjaGluZ19saWZldGltZSBJTlQgMTgwMAogICAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAgICMgcHJveHkgdXNlcnMgdmFyaWFibGVzICMKICAgIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwpDT05GSUcgcHJveHkuY29uZmlnLmh0dHAuYW5vbnltaXplX3JlbW92ZV9m cm9tIElOVCAwCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5hbm9ueW1pemVfcmVtb3ZlX3JlZmVy ZXIgSU5UIDAKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLmFub255bWl6ZV9yZW1vdmVfdXNlcl9h Z2VudCBJTlQgMApDT05GSUcgcHJveHkuY29uZmlnLmh0dHAuYW5vbnltaXplX3JlbW92ZV9jb29r aWUgSU5UIDAKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLmFub255bWl6ZV9yZW1vdmVfY2xpZW50 X2lwIElOVCAxCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5hbm9ueW1pemVfaW5zZXJ0X2NsaWVu dF9pcCBJTlQgMQpDT05GSUcgcHJveHkuY29uZmlnLmh0dHAuYW5vbnltaXplX290aGVyX2hlYWRl cl9saXN0IFNUUklORyBOVUxMCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5hcHBlbmRfeGZvcndh cmRzX2hlYWRlciBJTlQgMApDT05GSUcgcHJveHkuY29uZmlnLmh0dHAuaW5zZXJ0X3NxdWlkX3hf Zm9yd2FyZGVkX2ZvciBJTlQgMAogICAjIyMjIyMjIyMjIyMKICAgIyBzZWN1cml0eSAjCiAgICMj IyMjIyMjIyMjIwpDT05GSUcgcHJveHkuY29uZmlnLmh0dHAucHVzaF9tZXRob2RfZW5hYmxlZCBJ TlQgMAojICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAjIEhUVFAgUXVp Y2sgZmlsdGVyaW5nIChzZWN1cml0eSkgIwojICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwojICBUaGlzIGlzIGRlZGljYXRlZCBhbmQgdmVyeSBzcGVjaWZpYyAnSFRUUCBtZXRo b2QnIGZpbHRlci4KIyAgTm90ZTogSWYgbWV0aG9kIGRvZXMgbm90IG1hdGNoLCBmaWx0ZXJpbmcg d2lsbCBiZSBza2lwcGVkLgojICBiaXRzIDE1LTAgLSBIVFRQIG1ldGhvZCBtYXNrCiMgICAgICAg MHgwMDAwIC0gQW55IHBvc3NpYmxlIEhUVFAgbWV0aG9kIChvciB5b3UgY2FuIHVzZSAweEZGRkYp CiMgICAgICAgMHgwMDAxIC0gQ09OTkVDVAojICAgICAgIDB4MDAwMiAtIERFTEVURQojICAgICAg IDB4MDAwNCAtIEdFVAojICAgICAgIDB4MDAwOCAtIEhFQUQKIyAgICAgICAweDAwMTAgLSBJQ1Bf UVVFUlkKIyAgICAgICAweDAwMjAgLSBPUFRJT05TCiMgICAgICAgMHgwMDQwIC0gUE9TVAojICAg ICAgIDB4MDA4MCAtIFBVUkdFCiMgICAgICAgMHgwMTAwIC0gUFVUCiMgICAgICAgMHgwMjAwIC0g VFJBQ0UKIyAgICAgICAweDA0MDAgLSBQVVNICiMgIGJpdHMgMTgtMTYgLSBJUCBhZGRyZXNzIHR5 cGUKIyAgICAgICByZXNlcnZlZAojICBiaXRzIDMwLTE5IC0gcmVzZXJ2ZWQKIyAgYml0IDMxIC0g QWN0aW9uIChhbGxvdz0xLCBkZW55PTApLCBsZWF2ZSBhdCB6ZXJvCiMgIE5vdGU6IGlmICdwcm94 eS5jb25maWcuaHR0cC5xdWlja19maWx0ZXIubWFzaycgaXMgZXF1YWwgMCwgdGhlcmUgaXMgbm8g J3F1aWNrIGh0dHAgZmlsdGVyaW5nJyBhdCBhbGwKIwojIFRoZSBkZWZhdWx0ICgweDQ4MiBvciAx MTU0KSBkZW5pZXMgYWxsIFBVU0gsIFBVUkdFIGFuZCBERUxFVEUgcmVxdWVzdHMgKGV4Y2VwdCBm cm9tIDEyNy4wLjAuMSkKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLnF1aWNrX2ZpbHRlci5tYXNr IElOVCAxMTU0CiAgICMjIyMjIyMjIyMjIyMjIyMjCiAgICMgY2FjaGUgY29udHJvbCAjCiAgICMj IyMjIyMjIyMjIyMjIyMjCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5jYWNoZS5odHRwIElOVCAw CkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5jYWNoZS5pZ25vcmVfY2xpZW50X25vX2NhY2hlIElO VCAxCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5jYWNoZS5pbXNfb25fY2xpZW50X25vX2NhY2hl IElOVCAxCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5jYWNoZS5pZ25vcmVfc2VydmVyX25vX2Nh Y2hlIElOVCAwCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5jYWNoZS5pZ25vcmVfY2xpZW50X2Nj X21heF9hZ2UgSU5UIDAKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLm5vcm1hbGl6ZV9hZV9nemlw IElOVCAwCiAgICMgY2FjaGUgcmVzcG9uc2VzIHRvIGNvb2tpZXMgaGFzIDUgb3B0aW9uczoKICAg IyAgIDAgLSBkbyBub3QgY2FjaGUgYW55IHJlc3BvbnNlcyB0byBjb29raWVzCiAgICMgICAxIC0g Y2FjaGUgZm9yIGFueSBjb250ZW50LXR5cGUKICAgIyAgIDIgLSBjYWNoZSBvbmx5IGZvciBpbWFn ZSB0eXBlcwogICAjICAgMyAtIGNhY2hlIGZvciBhbGwgYnV0IHRleHQgY29udGVudC10eXBlcwog ICAjICAgNCAtIGNhY2hlIGZvciBhbGwgYnV0IHRleHQgY29udGVudC10eXBlcyBleGNlcHQgT1Mg cmVzcG9uc2UKICAgIyAgICAgICB3aXRob3V0ICJTZXQtQ29va2llIiBvciB3aXRoICJDYWNoZS1D b250cm9sOiBwdWJsaWMiCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5jYWNoZS5jYWNoZV9yZXNw b25zZXNfdG9fY29va2llcyBJTlQgMQpDT05GSUcgcHJveHkuY29uZmlnLmh0dHAuY2FjaGUuaWdu b3JlX2F1dGhlbnRpY2F0aW9uIElOVCAwCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5jYWNoZS5j YWNoZV91cmxzX3RoYXRfbG9va19keW5hbWljIElOVCAxCkNPTkZJRyBwcm94eS5jb25maWcuaHR0 cC5jYWNoZS5lbmFibGVfZGVmYXVsdF92YXJ5X2hlYWRlcnMgSU5UIDAKICAgIyAgd2hlbl90b19y ZXZhbGlkYXRlIGhhcyA1IG9wdGlvbnM6CiAgICMgICAgMCAtIGRlZmF1bHQuIHVzZSB1c2UgY2Fj aGUgZGlyZWN0aXZlcyBvciBoZXVyaXN0aWMKICAgIyAgICAxIC0gc3RhbGUgaWYgaGV1cmlzdGlj CiAgICMgICAgMiAtIGFsd2F5cyBzdGFsZSAoYWx3YXlzIHJldmFsaWRhdGUpCiAgICMgICAgMyAt IG5ldmVyIHN0YWxlCiAgICMgICAgNCAtIGFsd2F5cyByZXZhbGlkYXRlIGlmIHJlcXVlc3QgaXMg Y29uZGl0aW9uYWwsIGVsc2UgZGVmYXVsdCBpcyB1c2VkCkNPTkZJRyBwcm94eS5jb25maWcuaHR0 cC5jYWNoZS53aGVuX3RvX3JldmFsaWRhdGUgSU5UIDAKICAgIyBTb21lIG9sZCBNU0lFIGJyb3dz ZXJzIGRvbid0IHNlbmQgbm8tY2FjaGUgaGVhZGVycyB0bwogICAjIHJldmVyc2UgcHJveGllcyBv ciB0cmFuc3BhcmVudCBjYWNoZXMsIHRoaXMgdmFyaWFibGUgY29udHJvbHMKICAgIyB3aGVuIHRv IGFkZCBuby1jYWNoZSBoZWFkZXJzIHRvIE1TSUUgcmVxdWVzdHM6CiAgICMgIC0xIC0gbm8tY2Fj aGUgaXMgbmV2ZXIgYWRkZWQsIHN0YXRzIGFyZSBub3QgdXBkYXRlZAogICAjICAgMCAtIGRlZmF1 bHQ7IG5vLWNhY2hlIG5vdCBhZGRlZCB0byBNU0lFIHJlcXVlc3RzCiAgICMgICAxIC0gbm8tY2Fj aGUgYWRkZWQgdG8gSU1TIE1TSUUgcmVxdWVzdHMKICAgIyAgIDIgLSBuby1jYWNoZSBhZGRlZCB0 byBhbGwgTVNJRSByZXF1ZXN0cwpDT05GSUcgcHJveHkuY29uZmlnLmh0dHAuY2FjaGUud2hlbl90 b19hZGRfbm9fY2FjaGVfdG9fbXNpZV9yZXF1ZXN0cyBJTlQgLTEKICAgIyByZXF1aXJlZCBoZWFk ZXJzOiB0aHJlZSBvcHRpb25zOgogICAjICAgMCAtIE5vIHJlcXVpcmVkIGhlYWRlcnMgdG8gbWFr ZSBkb2N1bWVudCBjYWNoYWJsZQogICAjICAgMSAtICJMYXN0LU1vZGlmaWVkOiIsICJFeHBpcmVz OiIsIG9yICJDYWNoZS1Db250cm9sOiBtYXgtYWdlIiByZXF1aXJlZAogICAjICAgMiAtIGV4cGxp Y2l0IGxpZmV0aW1lIHJlcXVpcmVkLCAiRXhwaXJlczoiIG9yICJDYWNoZS1Db250cm9sOiBtYXgt YWdlIgpDT05GSUcgcHJveHkuY29uZmlnLmh0dHAuY2FjaGUucmVxdWlyZWRfaGVhZGVycyBJTlQg MgpDT05GSUcgcHJveHkuY29uZmlnLmh0dHAuY2FjaGUubWF4X3N0YWxlX2FnZSBJTlQgNjA0ODAw CkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5jYWNoZS5yYW5nZS5sb29rdXAgSU5UIDEKICAgIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICMgaGV1cmlzdGljIGV4cGlyYXRpb24gIwogICAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLmNhY2hlLmhldXJp c3RpY19taW5fbGlmZXRpbWUgSU5UIDM2MDAKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLmNhY2hl LmhldXJpc3RpY19tYXhfbGlmZXRpbWUgSU5UIDg2NDAwCkNPTkZJRyBwcm94eS5jb25maWcuaHR0 cC5jYWNoZS5oZXVyaXN0aWNfbG1fZmFjdG9yIEZMT0FUIDAuMTAwMDAwCkNPTkZJRyBwcm94eS5j b25maWcuaHR0cC5jYWNoZS5mdXp6LnRpbWUgSU5UIDI0MApDT05GSUcgcHJveHkuY29uZmlnLmh0 dHAuY2FjaGUuZnV6ei5wcm9iYWJpbGl0eSBGTE9BVCAwLjAwNTAwMAogICAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAjIGR5bmFtaWMgY29udGVudCAmIGNvbnRl bnQgbmVnb3RpYXRpb24gIwogICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwpDT05GSUcgcHJveHkuY29uZmlnLmh0dHAuY2FjaGUudmFyeV9kZWZhdWx0X3RleHQgU1RS SU5HIE5VTEwKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLmNhY2hlLnZhcnlfZGVmYXVsdF9pbWFn ZXMgU1RSSU5HIE5VTEwKQ09ORklHIHByb3h5LmNvbmZpZy5odHRwLmNhY2hlLnZhcnlfZGVmYXVs dF9vdGhlciBTVFJJTkcgTlVMTAogICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAjIFRoZSBIVFRQIHN0YXRzIGFyZSBleHBl bnNpdmUsIHR1cm4gb2ZmIHlvdSBkb24ndCBuZWVkIHRoZW0gIwogICAjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpDT05GSUcgcHJv eHkuY29uZmlnLmh0dHAuZW5hYmxlX2h0dHBfc3RhdHMgSU5UIDEKIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiMKIyBDdXN0b21pemFibGUgVXNlciBSZXNwb25zZSBQYWdlcwojCiMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwogICAjIDAgLSB0dXJuIG9mZiBjdXN0b21pemFibGUgdXNlciByZXNwb25zZSBwYWdl cwogICAjIDEgLSBlbmFibGUgY3VzdG9taXphYmxlIHVzZXIgcmVzcG9uc2UgcGFnZXMgaW4gb25s eSB0aGUgImRlZmF1bHQiIGRpcmVjdG9yeQogICAjIDIgLSBlbmFibGUgbGFuZ3VhZ2UtdGFyZ2V0 ZWQgdXNlciByZXNwb25zZSBwYWdlcwpDT05GSUcgcHJveHkuY29uZmlnLmJvZHlfZmFjdG9yeS5l bmFibGVfY3VzdG9taXphdGlvbnMgSU5UIDAKQ09ORklHIHByb3h5LmNvbmZpZy5ib2R5X2ZhY3Rv cnkuZW5hYmxlX2xvZ2dpbmcgSU5UIDAKICAgIyAwIC0gbmV2ZXIgc3VwcHJlc3MgZ2VuZXJhdGVk IHJlc3BvbnNlcwogICAjIDEgLSBhbHdheXMgc3VwcHJlc3MgZ2VuZXJhdGVkIHJlc3BvbnNlcwog ICAjIDIgLSBzdXBwcmVzcyByZXNwb25zZXMgZm9yIGludGVyY2VwdGVkIHRyYWZmaWMKQ09ORklH IHByb3h5LmNvbmZpZy5ib2R5X2ZhY3RvcnkucmVzcG9uc2Vfc3VwcHJlc3Npb25fbW9kZSBJTlQg MAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIE5ldCBTdWJzeXN0ZW0KIwojIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKQ09ORklHIHByb3h5LmNvbmZpZy5uZXQuY29ubmVjdGlvbnNfdGhyb3R0bGUgSU5U IDMwMDAwMAogICAjIEVuYWJsZSBkZWZlciBhY2NlcHQgLyBhY2NlcHQgZmlsdGVyaW5nLiBPbiBM aW51eCwgdGhpcyBpcyBhIHRpbWVvdXQsIHNlYy4KQ09ORklHIHByb3h5LmNvbmZpZy5uZXQuZGVm ZXJfYWNjZXB0IElOVCAwCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojCiMgQ2x1c3RlciBTdWJzeXN0 ZW0KIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIyBjbHVzdGVyIHR5cGUgcmVxdWlyZXMgcmVz dGFydCB0byBjaGFuZ2UKICAgIyAxIGlzIGZ1bGwgY2x1c3RlcmluZywgMiBpcyBtZ210IG9ubHks IDMgaXMgbm8gY2x1c3RlcmluZwpMT0NBTCBwcm94eS5sb2NhbC5jbHVzdGVyLnR5cGUgSU5UIDMK Q09ORklHIHByb3h5LmNvbmZpZy5jbHVzdGVyLmNsdXN0ZXJfcG9ydCBJTlQgODA4NgpDT05GSUcg cHJveHkuY29uZmlnLmNsdXN0ZXIucnNwb3J0IElOVCA4MDg4CkNPTkZJRyBwcm94eS5jb25maWcu Y2x1c3Rlci5tY3BvcnQgSU5UIDgwODkKQ09ORklHIHByb3h5LmNvbmZpZy5jbHVzdGVyLm1jX2dy b3VwX2FkZHIgU1RSSU5HIDIyNC4wLjEuMzcKQ09ORklHIHByb3h5LmNvbmZpZy5jbHVzdGVyLm1j X3R0bCBJTlQgMQpDT05GSUcgcHJveHkuY29uZmlnLmNsdXN0ZXIubG9nX2JvZ3VzX21jX21zZ3Mg SU5UIDEKQ09ORklHIHByb3h5LmNvbmZpZy5jbHVzdGVyLmV0aGVybmV0X2ludGVyZmFjZSBTVFJJ TkcgZXRoMAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIENhY2hlCiMKIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCkNPTkZJRyBwcm94eS5jb25maWcuY2FjaGUucGVybWl0LnBpbm5pbmcgSU5UIDAKICAg IyBkZWZhdWx0IHRoZSByYW0gY2FjaGUgc2l6ZSB0byBBVVRPX1NJWkUgKC0xKSBiYXNlZCBvbiBj YWNoZSBzaXplCiAgICMgICAoYXBwcm94aW1hdGVseSAxIE1CIG9mIFJBTSBjYWNoZSBwZXIgR0Ig b2YgZGlzayBjYWNoZSkKICAgIyBhbHRlcm5hdGl2ZWx5LCBzZXQgdG8gYSBmaXhlZCB2YWx1ZSBz dWNoIGFzIDIwOTcxNTIwICgyME1CKQpDT05GSUcgcHJveHkuY29uZmlnLmNhY2hlLnJhbV9jYWNo ZS5zaXplIElOVCAtMQpDT05GSUcgcHJveHkuY29uZmlnLmNhY2hlLnJhbV9jYWNoZV9jdXRvZmYg SU5UIDQxOTQzMDQKICAgIyBSZXBsYWNlbWVudCBhbGdvcml0aG0KICAgIyAgMCA6IENsb2NrZWQg TGVhc3QgRnJlcXVlbnRseSBVc2VkIGJ5IFNpemUgKENMRlVTKSB3L29wdGlvbmFsIGNvbXByZXNz aW9uCiAgICMgIDEgOiBMUlUgdy9vIG9wdGlvbmFsIGNvbXByZXNzaW9uIC0gdHJpdmlhbGx5IHNp bXBsZQpDT05GSUcgcHJveHkuY29uZmlnLmNhY2hlLnJhbV9jYWNoZS5hbGdvcml0aG0gSU5UIDAK ICAgIyBDb21wcmVzcyB0aGUgY29udGVudCBvZiB0aGUgcmFtIGNhY2hlOgogICAjICAwIDogbm8g Y29tcHJlc3Npb24KICAgIyAgMSA6IGZhc3RseiAoZXh0cmVtZWx5IGZhc3QsIHJlbGF0aXZlbHkg bG93IGNvbXByZXNzaW9uKQogICAjICAyIDogbGlieiAobW9kZXJhdGUgc3BlZWQsIHJlYXNvbmFi bGUgY29tcHJlc3Npb24pCiAgICMgIDMgOiBsaWJsem1hICh2ZXJ5IHNsb3csIGhpZ2ggY29tcHJl c3Npb24pCiAgICMgIE5PVEU6IGNvbXByZXNzaW9uIHJ1bnMgb24gdGFzayB0aHJlYWRzLiAgVG8g dXNlIG1vcmUgY29yZXMgZm9yCiAgICMgIGNvbXByZXNzaW9uLCBpbmNyZWFzZSBwcm94eS5jb25m aWcudGFza190aHJlYWRzLgpDT05GSUcgcHJveHkuY29uZmlnLmNhY2hlLnJhbV9jYWNoZS5jb21w cmVzcyBJTlQgMAogICAjIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhbHRlcm5hdGVzIHRoYXQgYXJl IGFsbG93ZWQgZm9yIGFueSBnaXZlbiBVUkwuCiAgICMgSXQgaXMgbm90IHBvc3NpYmxlIHRvIHN0 cmljdGx5IGVuZm9yY2UgdGhpcyBpZiB0aGUgdmFyaWFibGUKICAgIyAgICdwcm94eS5jb25maWcu Y2FjaGUudmFyeV9vbl91c2VyX2FnZW50JyBpcyBzZXQgdG8gMS4KICAgIyBUaGUgZGVmYXVsdCB2 YWx1ZSBmb3IgJ3Byb3h5LmNvbmZpZy5jYWNoZS52YXJ5X29uX3VzZXJfYWdlbnQnIGlzIDAuCiAg ICMgKDAgZGlzYWJsZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFsdHMgY2hlY2spCkNPTkZJRyBw cm94eS5jb25maWcuY2FjaGUubGltaXRzLmh0dHAubWF4X2FsdHMgSU5UIDUKICAgIyBUaGUgdGFy Z2V0IHNpemUgb2YgYSBjb250aWd1b3VzIGZyYWdtZW50IG9uIGRpc2suCiAgICMgQWNjZXB0YWJs ZSB2YWx1ZXMgYXJlIHBvd2VycyBvZiAyLCBlLmcuIDY1NTM2LCAxMzEwNzIsIDI2MjE0NCwgNTI0 Mjg4LCAxMDQ4NTc2LCAyMDk3MTUyLgogICAjIExhcmdlciBjb3VsZCB3YXN0ZSBtZW1vcnkgb24g c2xvdyBjb25uZWN0aW9ucywgc21hbGxlciBjb3VsZCB3YXN0ZSBzZWVrcy4KQ09ORklHIHByb3h5 LmNvbmZpZy5jYWNoZS50YXJnZXRfZnJhZ21lbnRfc2l6ZSBJTlQgMTA0ODU3NgogICAjIFRoZSBt YXhpbXVtIHNpemUgb2YgYSBkb2N1bWVudCB0aGF0IHdpbGwgYmUgc3RvcmVkIGluIHRoZSBjYWNo ZS4KICAgIyAoMCBkaXNhYmxlcyB0aGUgbWF4aW11bSBkb2N1bWVudCBzaXplIGNoZWNrKQpDT05G SUcgcHJveHkuY29uZmlnLmNhY2hlLm1heF9kb2Nfc2l6ZSBJTlQgMAogICAjIGVuYWJsZSB0aGUg Y2FjaGUgdG8gcmVhZCBmcm9tIGFuIG9iamVjdCB3aGlsZSBpdCBpcyBiZWluZyBhZGRlZCB0byB0 aGUgY2FjaGUKQ09ORklHIHByb3h5LmNvbmZpZy5jYWNoZS5lbmFibGVfcmVhZF93aGlsZV93cml0 ZXIgSU5UIDAKICAgIyBUaGlzIGNvbnRyb2xzIGhvdyBtYW55IG9iamVjdHMgKGF2ZXJhZ2UpIHRo ZSBkaXNrIGNhY2hlcyBjYW4gaG9sZCwgYW5kCiAgICMgaG93IG11Y2ggbWVtb3J5IGl0J2xsIGNv bnN1bWUgZm9yIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlLgpDT05GSUcgcHJveHkuY29uZmlnLmNh Y2hlLm1pbl9hdmVyYWdlX29iamVjdF9zaXplIElOVCA4MDAwCiAgICMgSG93IG1hbnkgSS9PIHRo cmVhZHMgdG8gYWxsb2NhdGUgcGVyIGRpc2sgKHNwaW5kbGUpLiBCZSBhd2FyZSB0aGF0IFJBSUQK ICAgIyBkaXNrcyB3b3VsZCBzaG93IHVwIHRvIFRTIGFzIGEgc2luZ2xlIHNwaW5kbGUuCkNPTkZJ RyBwcm94eS5jb25maWcuY2FjaGUudGhyZWFkc19wZXJfZGlzayBJTlQgMAogICAjIFRpbWUgKGlu IG1zKSB0byBkZWxheSB1bnRpbCByZXRyeWluZyB0byBhY3F1aXJlIGEgY2FjaGUgbG9jay4gU2V0 dGluZwogICAjIHRoaXMgbG93IGNhbiByZWR1Y2UgbGF0ZW5jaWVzIGluIHNvbWUgY2FzZXMsIGJ1 dCBjYW4gY29uc3VtZSBtb3JlIENQVS4KICAgIyBJZiB5b3UgZXhwZXJpZW5jZSBDUFUgc3Bpbm5p bmcsIHRyeSBpbmNyZWFzaW5nIHRoaXMgc2V0dGluZy4KQ09ORklHIHByb3h5LmNvbmZpZy5jYWNo ZS5tdXRleF9yZXRyeV9kZWxheSBJTlQgMgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIEROUwoj CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpDT05GSUcgcHJveHkuY29uZmlnLmRucy5zZWFyY2hfZGVm YXVsdF9kb21haW5zIElOVCAxCkNPTkZJRyBwcm94eS5jb25maWcuZG5zLnNwbGl0RE5TLmVuYWJs ZWQgSU5UIDAKQ09ORklHIHByb3h5LmNvbmZpZy5kbnMubWF4X2Ruc19pbl9mbGlnaHQgSU5UIDIw NDgKICAgIyBBZGRpdGlvbmFsIFVSTCBleHBhbnNpb25zIGZvciBodHRwIEROUyBsb29rdXAKQ09O RklHIHByb3h5LmNvbmZpZy5kbnMudXJsX2V4cGFuc2lvbnMgU1RSSU5HIE5VTEwKQ09ORklHIHBy b3h5LmNvbmZpZy5kbnMucm91bmRfcm9iaW5fbmFtZXNlcnZlcnMgSU5UIDAKQ09ORklHIHByb3h5 LmNvbmZpZy5kbnMubmFtZXNlcnZlcnMgU1RSSU5HIE5VTEwKQ09ORklHIHByb3h5LmNvbmZpZy5k bnMucmVzb2x2X2NvbmYgU1RSSU5HIC9ldGMvcmVzb2x2LmNvbmYKICAgIyBUaGlzIHByb3ZpZGVz IGFkZGl0aW9uYWwgcmVzaWxpZW5jZSBhZ2FpbnN0IEROUyBmb3JnZXJ5LCBwYXJ0aWN1bGFybHkg aW4KICAgIyBmb3J3YXJkIG9yIHRyYW5zcGFyZW50IHByb3hpZXMsIGJ1dCByZXF1aXJlcyB0aGF0 IHRoZSByZXNvbHZlciBwb3B1bGF0ZXMKICAgIyB0aGUgcXVlcmllcyBzZWN0aW9uIG9mIHRoZSBy ZXNwb25zZSBwcm9wZXJseS4KQ09ORklHIHByb3h5LmNvbmZpZy5kbnMudmFsaWRhdGVfcXVlcnlf bmFtZSBJTlQgMAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIEhvc3REQgojCiMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogICAjIGluIGVudHJpZXMsIG1heSBub3QgYmUgY2hhbmdlZCB3aGlsZSBydW5u aW5nCiAgICMgbm90ZSB0aGF0IGluIG9yZGVyIHRvIGluY3JlYXNlIGhvc3RkYi5zaXplLCBob3N0 ZGIuc3RvcmFnZV9zaXplIHNob3VsZAogICAjIGFsc28gYmUgaW5jcmVhc2UuIFRoZXNlIGFyZSBi ZXN0IGd1ZXNzZXMsIHlvdSB3aWxsIGhhdmUgdG8gbW9uaXRvciB0aGlzLgpDT05GSUcgcHJveHku Y29uZmlnLmhvc3RkYi5zaXplIElOVCAxMjAwMDAKQ09ORklHIHByb3h5LmNvbmZpZy5ob3N0ZGIu c3RvcmFnZV9zaXplIElOVCAzMzU1NDQzMgogICAjIHR0bCBtb2RlczoKICAgIyAgIDAgPSBvYmV5 CiAgICMgICAxID0gaWdub3JlCiAgICMgICAyID0gbWluKFgsdHRsKQogICAjICAgMyA9IG1heChY LHR0bCkKQ09ORklHIHByb3h5LmNvbmZpZy5ob3N0ZGIudHRsX21vZGUgSU5UIDAKICAgIyBpbiBt aW51dGVzLi4uCkNPTkZJRyBwcm94eS5jb25maWcuaG9zdGRiLnRpbWVvdXQgSU5UIDE0NDAKICAg IyByb3VuZC1yb2JpbiBhZGRyZXNzZXMgZm9yIHNpbmdsZSBjbGllbnRzCiAgICMgKGNhbiBjYXVz ZSBhdXRoZW50aWNhdGlvbiBwcm9ibGVtcykKQ09ORklHIHByb3h5LmNvbmZpZy5ob3N0ZGIuc3Ry aWN0X3JvdW5kX3JvYmluIElOVCAwCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojCiMgTG9nZ2luZyBD b25maWcKIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIyBwb3NzaWJsZSB2YWx1ZXMgZm9yIGxv Z2dpbmdfZW5hYmxlZDoKICAgIyAgIDA6IG5vIGxvZ2dpbmcgYXQgYWxsCiAgICMgICAxOiBsb2cg ZXJyb3JzIG9ubHkKICAgIyAgIDI6IGxvZyB0cmFuc2FjdGlvbnMgb25seQogICAjICAgMzogZnVs bCBsb2dnaW5nIChlcnJvcnMgKyB0cmFuc2FjdGlvbnMpCkNPTkZJRyBwcm94eS5jb25maWcubG9n LmxvZ2dpbmdfZW5hYmxlZCBJTlQgMQpDT05GSUcgcHJveHkuY29uZmlnLmxvZy5tYXhfc2Vjc19w ZXJfYnVmZmVyIElOVCA1CkNPTkZJRyBwcm94eS5jb25maWcubG9nLm1heF9zcGFjZV9tYl9mb3Jf bG9ncyBJTlQgMjUwMDAKQ09ORklHIHByb3h5LmNvbmZpZy5sb2cubWF4X3NwYWNlX21iX2Zvcl9v cnBoYW5fbG9ncyBJTlQgMjUKQ09ORklHIHByb3h5LmNvbmZpZy5sb2cubWF4X3NwYWNlX21iX2hl YWRyb29tIElOVCAxMDAwCkNPTkZJRyBwcm94eS5jb25maWcubG9nLmhvc3RuYW1lIFNUUklORyBs b2NhbGhvc3QKQ09ORklHIHByb3h5LmNvbmZpZy5sb2cubG9nZmlsZV9kaXIgU1RSSU5HIHZhci9s b2cvdHJhZmZpY3NlcnZlcgpDT05GSUcgcHJveHkuY29uZmlnLmxvZy5sb2dmaWxlX3Blcm0gU1RS SU5HIHJ3LXItLXItLQpDT05GSUcgcHJveHkuY29uZmlnLmxvZy5jdXN0b21fbG9nc19lbmFibGVk IElOVCAwCkNPTkZJRyBwcm94eS5jb25maWcubG9nLnNxdWlkX2xvZ19lbmFibGVkIElOVCAwCkNP TkZJRyBwcm94eS5jb25maWcubG9nLnNxdWlkX2xvZ19pc19hc2NpaSBJTlQgMApDT05GSUcgcHJv eHkuY29uZmlnLmxvZy5zcXVpZF9sb2dfbmFtZSBTVFJJTkcgc3F1aWQKQ09ORklHIHByb3h5LmNv bmZpZy5sb2cuc3F1aWRfbG9nX2hlYWRlciBTVFJJTkcgTlVMTApDT05GSUcgcHJveHkuY29uZmln LmxvZy5jb21tb25fbG9nX2VuYWJsZWQgSU5UIDAKQ09ORklHIHByb3h5LmNvbmZpZy5sb2cuY29t bW9uX2xvZ19pc19hc2NpaSBJTlQgMQpDT05GSUcgcHJveHkuY29uZmlnLmxvZy5jb21tb25fbG9n X25hbWUgU1RSSU5HIGNvbW1vbgpDT05GSUcgcHJveHkuY29uZmlnLmxvZy5jb21tb25fbG9nX2hl YWRlciBTVFJJTkcgTlVMTApDT05GSUcgcHJveHkuY29uZmlnLmxvZy5leHRlbmRlZF9sb2dfZW5h YmxlZCBJTlQgMApDT05GSUcgcHJveHkuY29uZmlnLmxvZy5leHRlbmRlZF9sb2dfaXNfYXNjaWkg SU5UIDAKQ09ORklHIHByb3h5LmNvbmZpZy5sb2cuZXh0ZW5kZWRfbG9nX25hbWUgU1RSSU5HIGV4 dGVuZGVkCkNPTkZJRyBwcm94eS5jb25maWcubG9nLmV4dGVuZGVkX2xvZ19oZWFkZXIgU1RSSU5H IE5VTEwKQ09ORklHIHByb3h5LmNvbmZpZy5sb2cuZXh0ZW5kZWQyX2xvZ19lbmFibGVkIElOVCAw CkNPTkZJRyBwcm94eS5jb25maWcubG9nLmV4dGVuZGVkMl9sb2dfaXNfYXNjaWkgSU5UIDEKQ09O RklHIHByb3h5LmNvbmZpZy5sb2cuZXh0ZW5kZWQyX2xvZ19uYW1lIFNUUklORyBleHRlbmRlZDIK Q09ORklHIHByb3h5LmNvbmZpZy5sb2cuZXh0ZW5kZWQyX2xvZ19oZWFkZXIgU1RSSU5HIE5VTEwK Q09ORklHIHByb3h5LmNvbmZpZy5sb2cuc2VwYXJhdGVfaWNwX2xvZ3MgSU5UIDAKQ09ORklHIHBy b3h5LmNvbmZpZy5sb2cuc2VwYXJhdGVfaG9zdF9sb2dzIElOVCAwCiAgICMgTG9nIGNvbGxhdGlv biBhbGxvd3MgeW91IHRvIGRvICJyZW1vdGUgbG9nZ2luZyIKTE9DQUwgcHJveHkubG9jYWwubG9n LmNvbGxhdGlvbl9tb2RlIElOVCAwCkNPTkZJRyBwcm94eS5jb25maWcubG9nLmNvbGxhdGlvbl9o b3N0IFNUUklORyBOVUxMCkNPTkZJRyBwcm94eS5jb25maWcubG9nLmNvbGxhdGlvbl9wb3J0IElO VCA4MDg1CkNPTkZJRyBwcm94eS5jb25maWcubG9nLmNvbGxhdGlvbl9zZWNyZXQgU1RSSU5HIGZv b2JhcgpDT05GSUcgcHJveHkuY29uZmlnLmxvZy5jb2xsYXRpb25faG9zdF90YWdnZWQgSU5UIDAK Q09ORklHIHByb3h5LmNvbmZpZy5sb2cuY29sbGF0aW9uX3JldHJ5X3NlYyBJTlQgNQpDT05GSUcg cHJveHkuY29uZmlnLmxvZy5yb2xsaW5nX2VuYWJsZWQgSU5UIDEKQ09ORklHIHByb3h5LmNvbmZp Zy5sb2cucm9sbGluZ19pbnRlcnZhbF9zZWMgSU5UIDg2NDAwCkNPTkZJRyBwcm94eS5jb25maWcu bG9nLnJvbGxpbmdfb2Zmc2V0X2hyIElOVCAwCkNPTkZJRyBwcm94eS5jb25maWcubG9nLnJvbGxp bmdfc2l6ZV9tYiBJTlQgMTAKQ09ORklHIHByb3h5LmNvbmZpZy5sb2cuYXV0b19kZWxldGVfcm9s bGVkX2ZpbGVzIElOVCAxCkNPTkZJRyBwcm94eS5jb25maWcubG9nLnNhbXBsaW5nX2ZyZXF1ZW5j eSBJTlQgMQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIFJldmVyc2UgUHJveHkKIwojIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKQ09ORklHIHByb3h5LmNvbmZpZy5yZXZlcnNlX3Byb3h5LmVuYWJsZWQg SU5UIDAKQ09ORklHIHByb3h5LmNvbmZpZy5oZWFkZXIucGFyc2Uubm9faG9zdF91cmxfcmVkaXJl Y3QgU1RSSU5HIE5VTEwKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBVUkwgUmVtYXAgUnVsZXMK IwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ09ORklHIHByb3h5LmNvbmZpZy51cmxfcmVtYXAuZGVm YXVsdF90b19zZXJ2ZXJfcGFjIElOVCAwCkNPTkZJRyBwcm94eS5jb25maWcudXJsX3JlbWFwLmRl ZmF1bHRfdG9fc2VydmVyX3BhY19wb3J0IElOVCAtMQogICAjIFRvIGVuYWJsZSBmb3J3YXJkIHBy b3h5LCB5b3UgbXVzdCB0dXJuIG9mZiByZW1hcF9yZXF1aXJlZApDT05GSUcgcHJveHkuY29uZmln LnVybF9yZW1hcC5yZW1hcF9yZXF1aXJlZCBJTlQgMAogICAjIFByaXN0aW5lIGhvc3QgaGVhZGVy IGlzIHRoZSAib3JpZ2luYWwiIChyZXF1ZXN0KSBoZWFkZXIuIE1ha2Ugc3VyZSB5b3VyCiAgICMg b3JpZ2luIGV4cGVjdHMgdGhlbSBpbiByZXZlcnNlIHByb3h5LgpDT05GSUcgcHJveHkuY29uZmln LnVybF9yZW1hcC5wcmlzdGluZV9ob3N0X2hkciBJTlQgMQojIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK IwojIFNTTCBUZXJtaW5hdGlvbgojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAjIHByb3h5LmNv bmZpZy5zc2wuZW5hYmxlZCBzaG91bGQgYmU6CiAgICMgICAwIC0gbm9uZQogICAjICAgMSAtIFNT TCBlbmFibGVkCkNPTkZJRyBwcm94eS5jb25maWcuc3NsLmVuYWJsZWQgSU5UIDAKICAgIyBUaGUg bnVtYmVyIG9mIFNTTCB0aHJlYWRzIGlzIGEgbXVsdGlwbGllciBvZiBudW1iZXIgb2YgQ1BVcyBh bmQKICAgIyBwcm94eS5jb25maWcuZXhlY190aHJlYWQuYXV0b2NvbmZpZy5zY2FsZSBieSBkZWZh dWx0LiBZb3UgY2FuCiAgICMgb3ZlcnJpZGUgdGhhdCBoZXJlIChzZXQgaXQgdG8gYSBub24temVy byB2YWx1ZSkuCkNPTkZJRyBwcm94eS5jb25maWcuc3NsLm51bWJlci50aHJlYWRzIElOVCAwCiAg ICMgVGhlIGZvbGxvd2luZyB0aHJlZSB2YXJpYWJsZXMgY2FuIGJlCiAgICMgc2V0IHRvIDAgdG8g ZGlzYWJsZSBTU0x2MiwgU1NMdjMsIGFuZC9vciBUTFN2MS4KICAgIyBTU0x2MiBpcyBkaXNhYmxl ZCBieSBkZWZhdWx0IGZvciBzZWN1cml0eSBjb25jZXJuLgpDT05GSUcgcHJveHkuY29uZmlnLnNz bC5TU0x2MiBJTlQgMApDT05GSUcgcHJveHkuY29uZmlnLnNzbC5TU0x2MyBJTlQgMQpDT05GSUcg cHJveHkuY29uZmlnLnNzbC5UTFN2MSBJTlQgMQpDT05GSUcgcHJveHkuY29uZmlnLnNzbC5zZXJ2 ZXJfcG9ydCBJTlQgNDQzCiAgICMgQ2xpZW50IGNlcnRpZmljYXRpb24gbGV2ZWwgc2hvdWxkIGJl OgogICAjIDAgbm8gY2xpZW50IGNlcnRpZmljYXRlcwogICAjIDEgY2xpZW50IGNlcnRpZmljYXRl cyBvcHRpb25hbAogICAjIDIgY2xpZW50IGNlcnRpZmljYXRlcyByZXF1aXJlZApDT05GSUcgcHJv eHkuY29uZmlnLnNzbC5jbGllbnQuY2VydGlmaWNhdGlvbl9sZXZlbCBJTlQgMAogICAjIFNlcnZl ciBjZXJ0IGZpbGVuYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBjZXJ0IGZpbGUKICAgIyBmb3IgYSBz aW5nbGUgY2VydCBzeXN0ZW0gYW5kIHRoZSBkZWZhdWx0IGNlcnQgbmFtZQogICAjIGZvciBhIG11 bHRpcGxlIGNlcnQgc3lzdGVtLgpDT05GSUcgcHJveHkuY29uZmlnLnNzbC5zZXJ2ZXIuY2VydC5m aWxlbmFtZSBTVFJJTkcgc2VydmVyLnBlbQogICAjIFNlcnZlciBjZXJ0IGNoYWluIGZpbGVuYW1l IGlzIHRoZSBuYW1lIG9mIHRoZSBjZXJ0IGNoYWluIGZpbGUKICAgIyBmb3IgYSBzaW5nbGUgY2Vy dCBzeXN0ZW0uCkNPTkZJRyBwcm94eS5jb25maWcuc3NsLnNlcnZlci5jZXJ0X2NoYWluLmZpbGVu YW1lIFNUUklORyBOVUxMCiAgICMgVGhpcyBpcyB0aGUgcGF0aCB0aGF0IHdpbGwgYmUgdXNlZCBm b3IgYm90aCBzaW5nbGUgYW5kCiAgICMgbXVsdGkgY2VydCBzeXN0ZW1zLgpDT05GSUcgcHJveHku Y29uZmlnLnNzbC5zZXJ2ZXIuY2VydC5wYXRoIFNUUklORyBldGMvdHJhZmZpY3NlcnZlcgogICAj IEZpbGwgaW4gcHJpdmF0ZSBrZXkgZmlsZSBhbmQgcGF0aCBvbmx5IGlmIHRoZSBzZXJ2ZXIncwog ICAjIHByaXZhdGUga2V5IGlzIG5vdCBjb250YWluZWQgaW4gdGhlIHNlcnZlciBjZXJ0aWZpY2F0 ZSBmaWxlLgogICAjIEZvciBtdWx0aXBsZSBjZXJ0IHN5c3RlbXMsIGlmIGFueSBwcml2YXRlIGtl eSBpcyBub3QgY29udGFpbmVkCiAgICMgaW4gdGhlIGNlcnQgZmlsZSwgeW91IG11c3QgZmlsbCBp biB0aGUgcHJpdmF0ZSBrZXkgcGF0aC4KQ09ORklHIHByb3h5LmNvbmZpZy5zc2wuc2VydmVyLnBy aXZhdGVfa2V5LmZpbGVuYW1lIFNUUklORyBOVUxMCkNPTkZJRyBwcm94eS5jb25maWcuc3NsLnNl cnZlci5wcml2YXRlX2tleS5wYXRoIFNUUklORyBOVUxMCiAgICMgVGhlIENBIGZpbGUgbmFtZSBh bmQgcGF0aCBhcmUgdGhlCiAgICMgY2VydGlmaWNhdGUgYXV0aG9yaXR5IGNlcnRpZmljYXRlIHRo YXQKICAgIyBjbGllbnQgY2VydGlmaWNhdGVzIHdpbGwgYmUgdmVyaWZpZWQgYWdhaW5zdC4KQ09O RklHIHByb3h5LmNvbmZpZy5zc2wuQ0EuY2VydC5maWxlbmFtZSBTVFJJTkcgTlVMTApDT05GSUcg cHJveHkuY29uZmlnLnNzbC5DQS5jZXJ0LnBhdGggU1RSSU5HIE5VTEwKICAgIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIyBjbGllbnQgcmVsYXRlZCBjb25maWd1cmF0aW9uICMK ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ09ORklHIHByb3h5LmNvbmZpZy5z c2wuY2xpZW50LnZlcmlmeS5zZXJ2ZXIgSU5UIDAKQ09ORklHIHByb3h5LmNvbmZpZy5zc2wuY2xp ZW50LmNlcnQuZmlsZW5hbWUgU1RSSU5HIE5VTEwKQ09ORklHIHByb3h5LmNvbmZpZy5zc2wuY2xp ZW50LmNlcnQucGF0aCBTVFJJTkcgZXRjL3RyYWZmaWNzZXJ2ZXIKICAgIyBGaWxsIGluIHByaXZh dGUga2V5IGZpbGUgYW5kIHBhdGggb25seSBpZiB0aGUgY2xpZW50J3MKICAgIyBwcml2YXRlIGtl eSBpcyBub3QgY29udGFpbmVkIGluIHRoZSBjbGllbnQgY2VydGlmaWNhdGUgZmlsZS4KQ09ORklH IHByb3h5LmNvbmZpZy5zc2wuY2xpZW50LnByaXZhdGVfa2V5LmZpbGVuYW1lIFNUUklORyBOVUxM CkNPTkZJRyBwcm94eS5jb25maWcuc3NsLmNsaWVudC5wcml2YXRlX2tleS5wYXRoIFNUUklORyBO VUxMCiAgICMgVGhlIENBIGZpbGUgbmFtZSBhbmQgcGF0aCBhcmUgdGhlCiAgICMgY2VydGlmaWNh dGUgYXV0aG9yaXR5IGNlcnRpZmljYXRlIHRoYXQKICAgIyBzZXJ2ZXIgY2VydGlmaWNhdGVzIHdp bGwgYmUgdmVyaWZpZWQgYWdhaW5zdC4KQ09ORklHIHByb3h5LmNvbmZpZy5zc2wuY2xpZW50LkNB LmNlcnQuZmlsZW5hbWUgU1RSSU5HIE5VTEwKQ09ORklHIHByb3h5LmNvbmZpZy5zc2wuY2xpZW50 LkNBLmNlcnQucGF0aCBTVFJJTkcgTlVMTAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIElDUCBD b25maWd1cmF0aW9uLiBOT1RFISBJQ1AgaXMgY3VycmVudGx5IGJyb2tlbiBOT1RFIQojCiMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogICAjIGljcCBtb2RlcwogICAjICAgZW5hYmxlZD0wIElDUCBkaXNh YmxlZAogICAjICAgZW5hYmxlZD0xIEFsbG93IHJlY2VpdmUgb2YgSUNQIHF1ZXJpZXMKICAgIyAg IGVuYWJsZWQ9MiBBbGxvdyBzZW5kL3JlY2VpdmUgb2YgSUNQIHF1ZXJpZXMKQ09ORklHIHByb3h5 LmNvbmZpZy5pY3AuZW5hYmxlZCBJTlQgMApDT05GSUcgcHJveHkuY29uZmlnLmljcC5pY3BfaW50 ZXJmYWNlIFNUUklORyBOVUxMCkNPTkZJRyBwcm94eS5jb25maWcuaWNwLmljcF9wb3J0IElOVCAz MTMwCkNPTkZJRyBwcm94eS5jb25maWcuaWNwLm11bHRpY2FzdF9lbmFibGVkIElOVCAwCkNPTkZJ RyBwcm94eS5jb25maWcuaWNwLnF1ZXJ5X3RpbWVvdXQgSU5UIDIKIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiMKIyBTY2hlZHVsZWQgVXBkYXRlIENvbmZpZ3VyYXRpb24KIwojIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKQ09ORklHIHByb3h5LmNvbmZpZy51cGRhdGUuZW5hYmxlZCBJTlQgMApDT05GSUcgcHJv eHkuY29uZmlnLnVwZGF0ZS5mb3JjZSBJTlQgMApDT05GSUcgcHJveHkuY29uZmlnLnVwZGF0ZS5y ZXRyeV9jb3VudCBJTlQgMTAKQ09ORklHIHByb3h5LmNvbmZpZy51cGRhdGUucmV0cnlfaW50ZXJ2 YWwgSU5UIDIKQ09ORklHIHByb3h5LmNvbmZpZy51cGRhdGUuY29uY3VycmVudF91cGRhdGVzIElO VCAxMDAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBTb2NrZXQgc2VuZC9yZWN2IGJ1ZmZlciBz aXplcyAoMCA9PSBkb24ndCBjYWxsIHNldHNvY2tvcHQoKSApCiMKIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAgICMgb3V0OiBwcm94eSAtPiBvcyBjb25uZWN0aW9uCiAgICMgaW4gOiB1YSAtPiBwcm94 eSBjb25uZWN0aW9uCkNPTkZJRyBwcm94eS5jb25maWcubmV0LnNvY2tfc2VuZF9idWZmZXJfc2l6 ZV9pbiBJTlQgMjYyMTQ0CkNPTkZJRyBwcm94eS5jb25maWcubmV0LnNvY2tfcmVjdl9idWZmZXJf c2l6ZV9pbiBJTlQgMApDT05GSUcgcHJveHkuY29uZmlnLm5ldC5zb2NrX3NlbmRfYnVmZmVyX3Np emVfb3V0IElOVCAwCkNPTkZJRyBwcm94eS5jb25maWcubmV0LnNvY2tfcmVjdl9idWZmZXJfc2l6 ZV9vdXQgSU5UIDAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBVc2VyIE92ZXJyaWRkZW4gQ29u ZmlndXJhdGlvbnMgQmVsb3cKIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ09ORklHIHByb3h5LmNv bmZpZy5jb3JlX2xpbWl0IElOVCAtMQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIERlYnVnZ2lu ZwojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMgVXNlcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0 byBtYXRjaCB0aGUgZGVidWdnaW5nIHRvcGljIG5hbWUsIHBlcmZvcm1hbmNlCiAgIyB3aWxsIGJl IGFmZmVjdGVkIQpDT05GSUcgcHJveHkuY29uZmlnLmRpYWdzLmRlYnVnLmVuYWJsZWQgSU5UIDAK I0NPTkZJRyBwcm94eS5jb25maWcuZGlhZ3MuZGVidWcudGFncyBTVFJJTkcgaHR0cC4qfGRucy4q CkNPTkZJRyBwcm94eS5jb25maWcuZGlhZ3MuZGVidWcudGFncyBTVFJJTkcgZGFubnkKICAjIEdy ZWF0IGZvciB0cmFja2luZyBkb3duIG1lbW9yeSBsZWFrcywgYnV0IHlvdSBuZWVkIHRvIHVzZSB0 aGUKICAjIGluayBhbGxvY2F0b3JzCkNPTkZJRyBwcm94eS5jb25maWcuZHVtcF9tZW1faW5mb19m cmVxdWVuY3kgSU5UIDAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBTbG93IExvZwojCiMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogICMgTG9nIGFueSByZXF1ZXN0IHRoYXQgdGFrZXMgbW9yZSB0aGVu IHggbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgbmVlZHMKICAjIHRvIGJlID4gMCB0byBiZSBlbmFi bGVkCkNPTkZJRyBwcm94eS5jb25maWcuaHR0cC5zbG93LmxvZy50aHJlc2hvbGQgSU5UIDAKIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaHJlYWQgcG9vbCBmb3IgIm1pc2MiIHRhc2tzLCBwbHVn aW5zIGV0Yy4gMiBpcyBhIGdvb2QgbWluaW11bS4KIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQ09O RklHIHByb3h5LmNvbmZpZy50YXNrX3RocmVhZHMgSU5UIDAKQ09ORklHIHByb3h5LmNvbmZpZy5j bHVzdGVyLmNsdXN0ZXJfY29uZmlndXJhdGlvbiBTVFJJTkcgY2x1c3Rlci5jb25maWcKQ09ORklH IHByb3h5LmNvbmZpZy5wbHVnaW4ucGx1Z2luX2RpciBTVFJJTkcgL2hvbWUvZGFubnkvdHJhZmZp Y3NlcnZlci0zLjAuMC9leGFtcGxlL2JudWxsLXRyYW5zZm9ybQpDT05GSUcgcHJveHkuY29uZmln Lmh0dHAudXNlX2NsaWVudF90YXJnZXRfYWRkciBJTlQgMQpDT05GSUcgcHJveHkuY29uZmlnLm5l dC5zb2NrX29wdGlvbl9mbGFnX291dCBJTlQgMQo= ------_=_NextPart_001_01CC88E5.9654B305--