<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>41086</bug_id>
          
          <creation_ts>2010-06-23 11:32:27 -0700</creation_ts>
          <short_desc>Add new WebKitTestRunner project</short_desc>
          <delta_ts>2010-06-24 10:08:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>241974</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-23 11:32:27 -0700</bug_when>
    <thetext>Add new WebKitTestRunner project (ie. DRT for WebKit2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241977</commentid>
    <comment_count>1</comment_count>
      <attachid>59543</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-23 11:34:47 -0700</bug_when>
    <thetext>Created attachment 59543
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241978</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-23 11:35:01 -0700</bug_when>
    <thetext>nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241983</commentid>
    <comment_count>3</comment_count>
      <attachid>59543</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-06-23 11:40:08 -0700</bug_when>
    <thetext>Comment on attachment 59543
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242562</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-24 10:08:10 -0700</bug_when>
    <thetext>Landed in r61769.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59543</attachid>
            <date>2010-06-23 11:34:47 -0700</date>
            <delta_ts>2010-06-23 11:40:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>63162</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYxNzAxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTAtMDYtMjMgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
MDg2CisgICAgICAgIEFkZCBuZXcgV2ViS2l0VGVzdFJ1bm5lciBwcm9qZWN0IChpZS4gRFJUIGZv
ciBXZWJLaXQyKS4KKworICAgICAgICAtIE1hYyBvbmx5LgorICAgICAgICAtIHJ1bi13ZWJraXQt
dGVzdHMgaGFzIG5vdCBiZWVuIG1vZGlmaWVkIHRvIGNhbGwgaXQgeWV0LgorICAgICAgICAtIE9u
bHkgZHVtcHMgdGhlIHJlbmRlciB0cmVlIGF0IHRoaXMgdGltZS4gCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3Vy
YXRpb25zOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvQ29uZmln
dXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL0luamVjdGVkQnVuZGxlLnhjY29uZmlnOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5u
ZXIueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGU6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUt
SW5mby5wbGlzdDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9kaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKF9kaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChfZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAgKF9kaWRDb21taXRMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoX2RpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChfZGlkRmFp
bExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgIChfZGlkUmVjZWl2ZVRpdGxlRm9yRnJh
bWUpOgorICAgICAgICAoX2RpZENsZWFyV2luZG93KToKKyAgICAgICAgKF9kaWRDcmVhdGVQYWdl
KToKKyAgICAgICAgKF93aWxsRGVzdHJveVBhZ2UpOgorICAgICAgICAoX2RpZFJlY2lldmVNZXNz
YWdlKToKKyAgICAgICAgKFdLQnVuZGxlSW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9NYWtlZmlsZTogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9QbGF0
Zm9ybVdlYlZpZXcuaDogQWRkZWQuCisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cGxh
dGZvcm1WaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzaGFyZWQpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpydW5UZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJ1blRlc3RpbmdTZXJ2
ZXJMb29wKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJ1bik6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnZlcmJvc2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
aW5qZWN0ZWRCdW5kbGVQYXRoKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXVFI6OmNyZWF0ZVdLVVJMKToKKyAgICAgICAg
KFdUUjo6VGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKFdUUjo6VGVz
dEludm9jYXRpb246On5UZXN0SW52b2NhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0
aW9uOjppbnZva2UpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcCk6CisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjppbml0aWFsaXplTWFpbldlYlZpZXcpOgorICAgICAg
ICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6
CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9u
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoV1RS
OjpUZXN0SW52b2NhdGlvbjo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXVFI6OlRl
c3RJbnZvY2F0aW9uOjpkaWRGYWlsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdUUjo6VGVzdElu
dm9jYXRpb246OnJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24pOgorICAg
ICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6cmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b25EaXNwb3NlRnVuY3Rpb24pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uaDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVu
bmVyLnhjb2RlcHJvajogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRU
ZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL21hYzogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6UGxhdGZv
cm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZp
ZXc6On5QbGF0Zm9ybVdlYlZpZXcpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnBh
Z2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RJbnZvY2F0aW9uTWFjLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnJ1blVudGlsKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9tYWluLm1tOiBBZGRlZC4KKyAgICAgICAgKG1haW4p
OgorCiAyMDEwLTA2LTIzICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gIEFkZCBteSBJUkMgaGFuZGxlIHRvIGNvbW1pdHRlcnMucHkg
c28gdGhlIHNoZXJpZmZib3QgY2FuIHllbGwgYXQgbWUuCkluZGV4OiBXZWJLaXRUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlLUluZm8ucGxpc3QKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS1JbmZvLnBsaXN0CShyZXZp
c2lvbiAwKQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS1J
bmZvLnBsaXN0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUv
L0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxp
c3QtMS4wLmR0ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4KKzxkaWN0PgorCTxrZXk+Q0ZCdW5k
bGVEZXZlbG9wbWVudFJlZ2lvbjwva2V5PgorCTxzdHJpbmc+RW5nbGlzaDwvc3RyaW5nPgorCTxr
ZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+CisJPHN0cmluZz4ke0VYRUNVVEFCTEVfTkFNRX08
L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgorCTxzdHJpbmc+Y29tLnlv
dXJjb21wYW55LiR7UFJPRFVDVF9OQU1FOnJmYzEwMzRpZGVudGlmaWVyfTwvc3RyaW5nPgorCTxr
ZXk+Q0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZlcnNpb248L2tleT4KKwk8c3RyaW5nPjYuMDwvc3Ry
aW5nPgorCTxrZXk+Q0ZCdW5kbGVQYWNrYWdlVHlwZTwva2V5PgorCTxzdHJpbmc+Qk5ETDwvc3Ry
aW5nPgorCTxrZXk+Q0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmc8L2tleT4KKwk8c3RyaW5nPjEu
MDwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVTaWduYXR1cmU8L2tleT4KKwk8c3RyaW5nPj8/Pz88
L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5PgorCTxzdHJpbmc+MTwvc3RyaW5n
PgorPC9kaWN0PgorPC9wbGlzdD4KSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
TWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9NYWtl
ZmlsZQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvTWFrZWZp
bGUJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKKyMgQnVpbGQgV2ViVGVzdFJ1bm5lciBv
bmx5IG9uIFNub3dMZW9wYXJkIGFuZCBsYXRlci4KKworT1NYX1ZFUlNJT04gPz0gJChzaGVsbCBz
d192ZXJzIC1wcm9kdWN0VmVyc2lvbiB8IGN1dCAtZC4gLWYgMikKK0JVSUxEX01JTklCUk9XU0VS
ID0gJChzaGVsbCAoKCAkKE9TWF9WRVJTSU9OKSA+PSA2ICkpICYmIGVjaG8gIllFUyIgKQorCitp
ZmVxICIkKEJVSUxEX01JTklCUk9XU0VSKSIgIllFUyIKKworU0NSSVBUU19QQVRIID0gLi4vU2Ny
aXB0cworaW5jbHVkZSAuLi8uLi9NYWtlZmlsZS5zaGFyZWQKKworZWxzZQorCithbGw6IDsKKwor
ZGVidWcgZCBkZXZlbG9wbWVudCBkZXYgZGV2ZWxvcDogOworCityZWxlYXNlIHIgZGVwbG95bWVu
dCBkZXAgZGVwbG95OiA7CisKK2NsZWFuOiA7CisKK2VuZGlmCkluZGV4OiBXZWJLaXRUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybVdlYlZpZXdf
aAorI2RlZmluZSBQbGF0Zm9ybVdlYlZpZXdfaAorCisjaWYgX19BUFBMRV9fCisjaWYgX19PQkpD
X18KK0BjbGFzcyBXS1ZpZXc7CitAY2xhc3MgTlNXaW5kb3c7CisjZWxzZQorY2xhc3MgV0tWaWV3
OworY2xhc3MgTlNXaW5kb3c7CisjZW5kaWYKK3R5cGVkZWYgV0tWaWV3KiBQbGF0Zm9ybVdLVmll
dzsKK3R5cGVkZWYgTlNXaW5kb3cqIFBsYXRmb3JtV2luZG93OworI2VsaWYgZGVmaW5lZChXSU4z
MikgfHwgZGVmaW5lZChfV0lOMzIpCit0eXBlZGVmIFdLVmlld1JlZiBQbGF0Zm9ybVdLVmlldzsK
K3R5cGVkZWYgSFdORCBQbGF0Zm9ybVdpbmRvdzsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RSIHsK
KworY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybVdlYlZpZXco
V0tQYWdlTmFtZXNwYWNlUmVmKTsKKyAgICB+UGxhdGZvcm1XZWJWaWV3KCk7CisKKyAgICBXS1Bh
Z2VSZWYgcGFnZSgpOworICAgIFBsYXRmb3JtV0tWaWV3IHBsYXRmb3JtVmlldygpIHsgcmV0dXJu
IG1fdmlldzsgfQorCitwcml2YXRlOgorICAgIFBsYXRmb3JtV0tWaWV3IG1fdmlldzsKKyAgICBQ
bGF0Zm9ybVdpbmRvdyBtX3dpbmRvdzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdUUgorCisjZW5k
aWYgLy8gUGxhdGZvcm1XZWJWaWV3X2gKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCisKKyNp
bmNsdWRlICJUZXN0SW52b2NhdGlvbi5oIgorI2luY2x1ZGUgPGdldG9wdC5oPgorCituYW1lc3Bh
Y2UgV1RSIHsKKworVGVzdENvbnRyb2xsZXImIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKQorewor
ICAgIHN0YXRpYyBUZXN0Q29udHJvbGxlciYgc2hhcmVkID0gKm5ldyBUZXN0Q29udHJvbGxlcjsK
KyAgICByZXR1cm4gc2hhcmVkOworfQorCitUZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIo
KQorICAgIDogbV9kdW1wVHJlZShmYWxzZSkKKyAgICAsIG1fZHVtcFBpeGVscyhmYWxzZSkKKyAg
ICAsIG1fdGhyZWFkZWQoZmFsc2UpCisgICAgLCBtX2ZvcmNlQ29tcGxleFRleHQoZmFsc2UpICAg
IAorICAgICwgbV92ZXJib3NlKGZhbHNlKQorICAgICwgbV9wcmludFNlcGFyYXRvcnMoZmFsc2Up
CisgICAgLCBtX3VzaW5nU2VydmVyTW9kZShmYWxzZSkKK3sKK30KKwordm9pZCBUZXN0Q29udHJv
bGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQoreworICAgIGlu
dCBkdW1wVHJlZSA9IDA7CisgICAgaW50IGR1bXBQaXhlbHMgPSAwOworICAgIGludCB0aHJlYWRl
ZCA9IDA7CisgICAgaW50IGZvcmNlQ29tcGxleFRleHQgPSAwOworICAgIGludCB2ZXJib3NlID0g
MDsKKworICAgIHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0geworICAgICAgICB7Im5vdHJlZSIs
IG5vX2FyZ3VtZW50LCAmZHVtcFRyZWUsIGZhbHNlfSwKKyAgICAgICAgeyJwaXhlbC10ZXN0cyIs
IG5vX2FyZ3VtZW50LCAmZHVtcFBpeGVscywgdHJ1ZX0sCisgICAgICAgIHsidHJlZSIsIG5vX2Fy
Z3VtZW50LCAmZHVtcFRyZWUsIHRydWV9LAorICAgICAgICB7InRocmVhZGVkIiwgbm9fYXJndW1l
bnQsICZ0aHJlYWRlZCwgdHJ1ZX0sCisgICAgICAgIHsiY29tcGxleC10ZXh0Iiwgbm9fYXJndW1l
bnQsICZmb3JjZUNvbXBsZXhUZXh0LCB0cnVlfSwKKyAgICAgICAgeyJ2ZXJib3NlIiwgbm9fYXJn
dW1lbnQsICZ2ZXJib3NlLCB0cnVlfSwKKyAgICAgICAgezAsIDAsIDAsIDB9CisgICAgfTsKKyAg
ICAKKyAgICBpbnQgb3B0aW9uOworICAgIHdoaWxlICgob3B0aW9uID0gZ2V0b3B0X2xvbmcoYXJn
YywgKGNoYXIgKiBjb25zdCAqKWFyZ3YsICIiLCBvcHRpb25zLCAwKSkgIT0gLTEpIHsKKyAgICAg
ICAgc3dpdGNoIChvcHRpb24pIHsKKyAgICAgICAgICAgIGNhc2UgJz8nOiAgIC8vIHVua25vd24g
b3IgYW1iaWd1b3VzIG9wdGlvbgorICAgICAgICAgICAgY2FzZSAnOic6ICAgLy8gbWlzc2luZyBh
cmd1bWVudAorICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2R1bXBUcmVlID0gZHVtcFRyZWU7CisgICAgbV9k
dW1wUGl4ZWxzID0gZHVtcFBpeGVsczsKKyAgICBtX3RocmVhZGVkID0gdGhyZWFkZWQ7CisgICAg
bV9mb3JjZUNvbXBsZXhUZXh0ID0gZm9yY2VDb21wbGV4VGV4dDsKKyAgICBtX3ZlcmJvc2UgPSB2
ZXJib3NlOworCisgICAgbV91c2luZ1NlcnZlck1vZGUgPSAoYXJnYyA9PSBvcHRpbmQgKyAxICYm
IHN0cmNtcChhcmd2W29wdGluZF0sICItIikgPT0gMCk7CisgICAgaWYgKG1fdXNpbmdTZXJ2ZXJN
b2RlKQorICAgICAgICBtX3ByaW50U2VwYXJhdG9ycyA9IHRydWU7CisgICAgZWxzZSB7CisgICAg
ICAgIG1fcHJpbnRTZXBhcmF0b3JzID0gKG9wdGluZCA8IGFyZ2MgLSAxIHx8IChtX2R1bXBQaXhl
bHMgJiYgbV9kdW1wVHJlZSkpOworICAgICAgICBmb3IgKGludCBpID0gb3B0aW5kOyBpICE9IGFy
Z2M7ICsraSkKKyAgICAgICAgICAgIG1fcGF0aHMucHVzaF9iYWNrKHN0ZDo6c3RyaW5nKGFyZ3Zb
aV0pKTsKKyAgICB9CisKKyAgICBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRoKCk7Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnJ1blRlc3QoY29uc3QgY2hhciogdGVzdCkKK3sKKyAgICBU
ZXN0SW52b2NhdGlvbiBpbnZvY2F0aW9uKHRlc3QpOworICAgIGludm9jYXRpb24uaW52b2tlKCk7
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnJ1blRlc3RpbmdTZXJ2ZXJMb29wKCkKK3sKKyAg
ICBjaGFyIGZpbGVuYW1lQnVmZmVyWzIwNDhdOworICAgIHdoaWxlIChmZ2V0cyhmaWxlbmFtZUJ1
ZmZlciwgc2l6ZW9mKGZpbGVuYW1lQnVmZmVyKSwgc3RkaW4pKSB7CisgICAgICAgIGNoYXIgKm5l
d0xpbmVDaGFyYWN0ZXIgPSBzdHJjaHIoZmlsZW5hbWVCdWZmZXIsICdcbicpOworICAgICAgICBp
ZiAobmV3TGluZUNoYXJhY3RlcikKKyAgICAgICAgICAgICpuZXdMaW5lQ2hhcmFjdGVyID0gJ1ww
JzsKKworICAgICAgICBpZiAoc3RybGVuKGZpbGVuYW1lQnVmZmVyKSA9PSAwKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgcnVuVGVzdChmaWxlbmFtZUJ1ZmZlcik7CisgICAgfQor
fQorCitib29sIFRlc3RDb250cm9sbGVyOjpydW4oKQoreworICAgIGlmIChtX3VzaW5nU2VydmVy
TW9kZSkKKyAgICAgICAgcnVuVGVzdGluZ1NlcnZlckxvb3AoKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BhdGhzLnNpemUoKTsgKytpKQorICAgICAgICAg
ICAgcnVuVGVzdChtX3BhdGhzW2ldLmNfc3RyKCkpOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKKwpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGVzdENvbnRyb2xsZXJfaAorI2RlZmluZSBU
ZXN0Q29udHJvbGxlcl9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5j
bHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNwYWNlIFdUUiB7CisKK2Ns
YXNzIFRlc3RDb250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgVGVzdENvbnRyb2xsZXIm
IHNoYXJlZCgpOworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgVGVzdENvbnRyb2xsZXIuCisgICAg
dm9pZCBpbml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pOworCisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIGFsbCB0aGUgdGVzdHMgcGFzc2VkLCBmYWxzZSBvdGhlcndpc2UuCisg
ICAgYm9vbCBydW4oKTsKKworICAgIGJvb2wgdmVyYm9zZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVy
Ym9zZTsgfQorCisgICAgV0tTdHJpbmdSZWYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgeyByZXR1cm4g
bV9pbmplY3RlZEJ1bmRsZVBhdGguZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBUZXN0Q29udHJv
bGxlcigpOworICAgIH5UZXN0Q29udHJvbGxlcigpOworCisgICAgdm9pZCBydW5UZXN0aW5nU2Vy
dmVyTG9vcCgpOworICAgIHZvaWQgcnVuVGVzdChjb25zdCBjaGFyKiBwYXRoT3JVUkwpOworICAg
IAorICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUGF0aCgpOworCisgICAgYm9vbCBt
X2R1bXBUcmVlOworICAgIGJvb2wgbV9kdW1wUGl4ZWxzOworICAgIGJvb2wgbV90aHJlYWRlZDsK
KyAgICBib29sIG1fZm9yY2VDb21wbGV4VGV4dDsgICAgCisgICAgYm9vbCBtX3ZlcmJvc2U7Cisg
ICAgYm9vbCBtX3ByaW50U2VwYXJhdG9yczsKKyAgICBib29sIG1fdXNpbmdTZXJ2ZXJNb2RlOwor
ICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBtX3BhdGhzOworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBtX2luamVjdGVkQnVuZGxlUGF0aDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdU
UgorCisjZW5kaWYgLy8gVGVzdENvbnRyb2xsZXJfaApJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJL
aXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiVGVzdEludm9jYXRpb24u
aCIKKworI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHRQcml2YXRlLmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmdDRi5oPgorI2luY2x1ZGUgPFdl
YktpdDIvV0tVUkxDRi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2Ug
V1RSIHsKKworc3RhdGljIFdLVVJMUmVmIGNyZWF0ZVdLVVJMKGNvbnN0IGNoYXIqIHBhdGhPclVS
TCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhPclVSTENGU3RyaW5nKEFkb3B0
Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoMCwgcGF0aE9yVVJMLCBrQ0ZTdHJpbmdFbmNv
ZGluZ1VURjgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOworICAgIGlmIChDRlN0
cmluZ0hhc1ByZWZpeChwYXRoT3JVUkxDRlN0cmluZy5nZXQoKSwgQ0ZTVFIoImh0dHA6Ly8iKSkg
fHwgQ0ZTdHJpbmdIYXNQcmVmaXgocGF0aE9yVVJMQ0ZTdHJpbmcuZ2V0KCksIENGU1RSKCJodHRw
czovLyIpKSkKKyAgICAgICAgY2ZVUkwuYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwg
cGF0aE9yVVJMQ0ZTdHJpbmcuZ2V0KCksIDApKTsKKyAgICBlbHNlCisgICAgICAgIGNmVVJMLmFk
b3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aE9yVVJMQ0ZTdHJpbmcu
Z2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIHJldHVybiBXS1VSTENy
ZWF0ZVdpdGhDRlVSTChjZlVSTC5nZXQoKSk7Cit9CisKK1Rlc3RJbnZvY2F0aW9uOjpUZXN0SW52
b2NhdGlvbihjb25zdCBjaGFyKiBwYXRoT3JVUkwpCisgICAgOiBtX3VybChBZG9wdFdLLCBjcmVh
dGVXS1VSTChwYXRoT3JVUkwpKQorICAgICwgbV9tYWluV2ViVmlldygwKQorICAgICwgbV9sb2Fk
RG9uZShmYWxzZSkKKyAgICAsIG1fcmVuZGVyVHJlZUZldGNoRG9uZShmYWxzZSkKKyAgICAsIG1f
ZmFpbGVkKGZhbHNlKQoreworfQorCitUZXN0SW52b2NhdGlvbjo6flRlc3RJbnZvY2F0aW9uKCkK
K3sKKyAgICBkZWxldGUgbV9tYWluV2ViVmlldzsKKyAgICBtX21haW5XZWJWaWV3ID0gMDsKK30K
Kwordm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKK3sKKyAgICBpbml0aWFsaXplTWFpbldl
YlZpZXcoKTsKKworICAgIFdLUGFnZUxvYWRVUkwobV9tYWluV2ViVmlldy0+cGFnZSgpLCBtX3Vy
bC5nZXQoKSk7CisgICAgcnVuVW50aWwobV9sb2FkRG9uZSk7CisKKyAgICBpZiAobV9mYWlsZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgdGhpcywgcmVuZGVyVHJlZUV4dGVybmFsUmVw
cmVzZW50YXRpb25GdW5jdGlvbiwgcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25EaXNw
b3NlRnVuY3Rpb24pOworICAgIHJ1blVudGlsKG1fcmVuZGVyVHJlZUZldGNoRG9uZSk7Cit9CisK
K3ZvaWQgVGVzdEludm9jYXRpb246OmR1bXAoY29uc3QgY2hhciogc3RyaW5nVG9EdW1wKQorewor
ICAgIHByaW50ZigiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG4iKTsKKyAgICBwcmludGYoIiVz
Iiwgc3RyaW5nVG9EdW1wKTsKKyAgICBwcmludGYoIiNFT0ZcbiIpOworfQorCit2b2lkIFRlc3RJ
bnZvY2F0aW9uOjppbml0aWFsaXplTWFpbldlYlZpZXcoKQoreworICAgIFdLUmV0YWluUHRyPFdL
Q29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRC
dW5kbGVQYXRoKFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5pbmplY3RlZEJ1bmRsZVBhdGgoKSkp
OworICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFjZShBZG9w
dFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOworICAgIG1fbWFpbldl
YlZpZXcgPSBuZXcgUGxhdGZvcm1XZWJWaWV3KHBhZ2VOYW1lc3BhY2UuZ2V0KCkpOworCisgICAg
V0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRlckNsaWVudCA9IHsgCisgICAgICAgIDAsCisgICAgICAg
IHRoaXMsCisgICAgICAgIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUsCisgICAgICAg
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAorICAg
ICAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUsCisgICAgICAgIGRp
ZENvbW1pdExvYWRGb3JGcmFtZSwKKyAgICAgICAgZGlkRmluaXNoTG9hZEZvckZyYW1lLAorICAg
ICAgICBkaWRGYWlsTG9hZEZvckZyYW1lLAorICAgICAgICAwLAorICAgICAgICAwLAorICAgICAg
ICAwLAorICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICAwLAorICAg
ICAgICAwCisgICAgfTsKKyAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KG1fbWFpbldlYlZp
ZXctPnBhZ2UoKSwgJmxvYWRlckNsaWVudCk7Cit9CisKK3ZvaWQgVGVzdEludm9jYXRpb246OmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7Cit9CisKK3ZvaWQgVGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdL
UGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
eworfQorCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCit7CisgICAgVGVzdEludm9jYXRpb24qIHNlbGYgPSByZWludGVycHJldF9j
YXN0PFRlc3RJbnZvY2F0aW9uKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworICAg
IHNlbGYtPm1fbG9hZERvbmUgPSB0cnVlOworICAgIHNlbGYtPm1fZmFpbGVkID0gdHJ1ZTsKK30K
Kwordm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBw
YWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworfQorCit2
b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2Us
IFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgVGVzdElu
dm9jYXRpb24qIHNlbGYgPSByZWludGVycHJldF9jYXN0PFRlc3RJbnZvY2F0aW9uKj4oY29uc3Rf
Y2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworICAgIHNlbGYtPm1fbG9hZERvbmUgPSB0cnVlOwor
fQorCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRGYWlsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBw
YWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFRl
c3RJbnZvY2F0aW9uKiBzZWxmID0gcmVpbnRlcnByZXRfY2FzdDxUZXN0SW52b2NhdGlvbio+KGNv
bnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKKworICAgIHNlbGYtPm1fbG9hZERvbmUgPSB0
cnVlOworICAgIHNlbGYtPm1fZmFpbGVkID0gdHJ1ZTsKK30KKwordm9pZCBUZXN0SW52b2NhdGlv
bjo6cmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25GdW5jdGlvbihXS1N0cmluZ1JlZiB3
a1Jlc3VsdCwgdm9pZCogY29udGV4dCkKK3sKKyAgICBUZXN0SW52b2NhdGlvbiogc2VsZiA9IHJl
aW50ZXJwcmV0X2Nhc3Q8VGVzdEludm9jYXRpb24qPihjb250ZXh0KTsKKworICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gcmVzdWx0KEFkb3B0Q0YsIFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIHdr
UmVzdWx0KSk7CisgICAgQ0ZJbmRleCBidWZmZXJMZW5ndGggPSBDRlN0cmluZ0dldE1heGltdW1T
aXplRm9yRW5jb2RpbmcoQ0ZTdHJpbmdHZXRMZW5ndGgocmVzdWx0LmdldCgpKSwga0NGU3RyaW5n
RW5jb2RpbmdVVEY4KSArIDE7CisgICAgY2hhciogYnVmZmVyID0gKGNoYXIqKW1hbGxvYyhidWZm
ZXJMZW5ndGgpOworICAgIENGU3RyaW5nR2V0Q1N0cmluZyhyZXN1bHQuZ2V0KCksIGJ1ZmZlciwg
YnVmZmVyTGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpOworCisgICAgc2VsZi0+ZHVtcChi
dWZmZXIpOworICAgIGZyZWUoYnVmZmVyKTsKKworICAgIHNlbGYtPm1fcmVuZGVyVHJlZUZldGNo
RG9uZSA9IHRydWU7Cit9CisKK3ZvaWQgVGVzdEludm9jYXRpb246OnJlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uRGlzcG9zZUZ1bmN0aW9uKHZvaWQqIGNvbnRleHQpCit7CisgICAgVGVz
dEludm9jYXRpb24qIHNlbGYgPSByZWludGVycHJldF9jYXN0PFRlc3RJbnZvY2F0aW9uKj4oY29u
dGV4dCk7CisKKyAgICBzZWxmLT5tX3JlbmRlclRyZWVGZXRjaERvbmUgPSB0cnVlOworICAgIHNl
bGYtPm1fZmFpbGVkID0gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBXZWJL
aXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXN0SW52b2Nh
dGlvbl9oCisjZGVmaW5lIFRlc3RJbnZvY2F0aW9uX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtV2Vi
Vmlldy5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV1RSIHsKKworY2xhc3MgVGVz
dEludm9jYXRpb24gOiBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgVGVzdEludm9jYXRpb24o
Y29uc3QgY2hhciopOworICAgIH5UZXN0SW52b2NhdGlvbigpOworCisgICAgdm9pZCBpbnZva2Uo
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemVNYWluV2ViVmlldygpOworICAgIHZv
aWQgZHVtcChjb25zdCBjaGFyKik7CisKKyAgICAvLyBIZWxwZXIKKyAgICBzdGF0aWMgdm9pZCBy
dW5VbnRpbChib29sJiBkb25lKTsKKworICAgIC8vIFBhZ2VMb2FkZXJDbGllbnQKKyAgICBzdGF0
aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVm
LCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdp
dGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCopOworICAg
IHN0YXRpYyB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYs
IGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQ
YWdlUmVmLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlkRmFp
bExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqKTsKKworICAg
IC8vIFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uIGNhbGxiYWNrcworICAgIHN0YXRp
YyB2b2lkIHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24oV0tTdHJpbmdS
ZWYsIHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCByZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbkRpc3Bvc2VGdW5jdGlvbih2b2lkKik7CisKKyAgICBXS1N0cmluZ1JlZiBpbmplY3RlZEJ1
bmRsZVBhdGgoKTsKKworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBtX3VybDsKKyAgICBQbGF0
Zm9ybVdlYlZpZXcqIG1fbWFpbldlYlZpZXc7CisKKyAgICAvLyBJbnZvY2F0aW9uIHN0YXRlCisg
ICAgYm9vbCBtX2xvYWREb25lOworICAgIGJvb2wgbV9yZW5kZXJUcmVlRmV0Y2hEb25lOworICAg
IGJvb2wgbV9mYWlsZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIFRl
c3RJbnZvY2F0aW9uX2gKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lclByZWZpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZkZWYgX19PQkpDX18KKyNpbmNsdWRl
IDxDb2NvYS9Db2NvYS5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4K
SW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvQmFzZS54
Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZp
Z3VyYXRpb25zL0Jhc2UueGNjb25maWcJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9XZWJL
aXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjggQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6
CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKworSEVB
REVSX1NFQVJDSF9QQVRIUyA9IEZvcndhcmRpbmdIZWFkZXJzIG1hYy9JbnRlcm5hbEhlYWRlcnM7
CitGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29y
a3MvUXVhcnR6LmZyYW1ld29yay9GcmFtZXdvcmtzICQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFt
ZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3MgJChTWVNURU1f
TElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
OworR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9IEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9S
VCBXRUJLSVRfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9V0VCS0lUX1ZFUlNJT05fTEFURVNUOworREVC
VUdfSU5GT1JNQVRJT05fRk9STUFUID0gZHdhcmYKK1BSRUJJTkRJTkcgPSBOTworR0NDX0NfTEFO
R1VBR0VfU1RBTkRBUkQgPSBnbnU5OQorR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlF
UworR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUworR0NDX1dBUk5fVU5VU0VEX0ZV
TkNUSU9OID0gWUVTCitHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVMKK0dDQ19XQVJOX0FC
T1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gTk8KK1dBUk5JTkdfQ0ZMQUdTID0gLVdhbGwgLVcg
LVduby11bnVzZWQtcGFyYW1ldGVyCitMSU5LRVJfRElTUExBWVNfTUFOR0xFRF9OQU1FUyA9IFlF
UzsKKworCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQoTUFDX09TX1hfVkVSU0lP
Tl9NQUpPUik7CisKKworLy8gVXNlIEdDQyA0LjIgd2l0aCBYY29kZSAzLjEsIHdoaWNoIGluY2x1
ZGVzIEdDQyA0LjIgYnV0IGRlZmF1bHRzIHRvIEdDQyA0LjAuCisvLyBOb3RlIHRoYXQgWGNvZGUg
dmVyc2lvbnMgYXMgbmV3IGFzIDMuMS4yIHVzZSBYQ09ERV9WRVJTSU9OX0FDVFVBTCBmb3IgdGhl
IG1pbm9yIHZlcnNpb24KKy8vIG51bWJlci4gIE5ld2VyIHZlcnNpb25zIG9mIFhjb2RlIHVzZSBY
Q09ERV9WRVJTSU9OX01JTk9SIGZvciB0aGUgbWlub3IgdmVyc2lvbiwgYW5kCisvLyBYQ09ERV9W
RVJTSU9OX0FDVFVBTCBmb3IgdGhlIGZ1bGwgdmVyc2lvbiBudW1iZXIuCitUQVJHRVRfR0NDX1ZF
UlNJT04gPSAkKFRBUkdFVF9HQ0NfVkVSU0lPTl8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01B
Sk9SKSk7CitUQVJHRVRfR0NDX1ZFUlNJT05fID0gJChUQVJHRVRfR0NDX1ZFUlNJT05fMTA0MCk7
CitUQVJHRVRfR0NDX1ZFUlNJT05fMTA0MCA9IEdDQ180MDsKK1RBUkdFVF9HQ0NfVkVSU0lPTl8x
MDUwID0gJChUQVJHRVRfR0NDX1ZFUlNJT05fMTA1MF8kKFhDT0RFX1ZFUlNJT05fTUlOT1IpKTsK
K1RBUkdFVF9HQ0NfVkVSU0lPTl8xMDUwXyA9ICQoVEFSR0VUX0dDQ19WRVJTSU9OXzEwNTBfJChY
Q09ERV9WRVJTSU9OX0FDVFVBTCkpOworVEFSR0VUX0dDQ19WRVJTSU9OXzEwNTBfMDMxMCA9IEdD
Q180MjsKK1RBUkdFVF9HQ0NfVkVSU0lPTl8xMDUwXzAzMjAgPSBHQ0NfNDI7CitUQVJHRVRfR0ND
X1ZFUlNJT05fMTA2MCA9IEdDQ180MjsKK1RBUkdFVF9HQ0NfVkVSU0lPTl8xMDcwID0gTExWTV9H
Q0NfNDI7CisKK0dDQ19WRVJTSU9OID0gJChHQ0NfVkVSU0lPTl8kKFRBUkdFVF9HQ0NfVkVSU0lP
TikpOworR0NDX1ZFUlNJT05fR0NDXzQwID0gNC4wOworR0NDX1ZFUlNJT05fR0NDXzQyID0gNC4y
OworR0NDX1ZFUlNJT05fTExWTV9HQ0NfNDIgPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm1nY2M0
MjsKKworLy8gSWYgdGhlIHRhcmdldCBNYWMgT1MgWCB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHRo
ZSBjdXJyZW50IE1hYyBPUyBYIHZlcnNpb24gdGhlbiB3ZSdsbCB3YW50IHRvIGJ1aWxkIHVzaW5n
IHRoZSB0YXJnZXQgdmVyc2lvbidzIFNESy4KK1NES1JPT1QgPSAkKFNES1JPT1RfJChNQUNfT1Nf
WF9WRVJTSU9OX01BSk9SKV8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CitTREtS
T09UXzEwNTBfMTA0MCA9IG1hY29zeDEwLjQ7CitTREtST09UXzEwNjBfMTA0MCA9IG1hY29zeDEw
LjQ7CitTREtST09UXzEwNjBfMTA1MCA9IG1hY29zeDEwLjU7CitTREtST09UXzEwNzBfMTA0MCA9
IG1hY29zeDEwLjQ7CitTREtST09UXzEwNzBfMTA1MCA9IG1hY29zeDEwLjU7CitTREtST09UXzEw
NzBfMTA2MCA9IG1hY29zeDEwLjY7CkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVy
L0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2Nv
bmZpZwkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmln
dXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQw
IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisv
LyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRlICJCYXNl
LnhjY29uZmlnIgorCitBUkNIUyA9ICQoQVJDSFNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9N
QUpPUikpOworQVJDSFNfID0gJChBUkNIU18xMDQwKTsKK0FSQ0hTXzEwNDAgPSAkKE5BVElWRV9B
UkNIKTsKK0FSQ0hTXzEwNTAgPSAkKE5BVElWRV9BUkNIKTsKK0FSQ0hTXzEwNjAgPSAkKEFSQ0hT
X1NUQU5EQVJEXzMyXzY0X0JJVCk7CitBUkNIU18xMDcwID0gJChBUkNIU19TVEFOREFSRF8zMl82
NF9CSVQpOworCitPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCitNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVQgPSAkKE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJT
SU9OX01BSk9SKSkKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF8gPSAxMC40OworTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUXzEwNDAgPSAxMC40OworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXzEw
NTAgPSAxMC41OworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXzEwNjAgPSAxMC42OworTUFDT1NY
X0RFUExPWU1FTlRfVEFSR0VUXzEwNzAgPSAxMC43OwpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9JbmplY3RlZEJ1bmRsZS54Y2NvbmZpZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL0luamVj
dGVkQnVuZGxlLnhjY29uZmlnCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9Db25maWd1cmF0aW9ucy9JbmplY3RlZEJ1bmRsZS54Y2NvbmZpZwkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyNCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJl
IG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
Ly8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
CitQUk9EVUNUX05BTUUgPSBJbmplY3RlZEJ1bmRsZQpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyLnhjY29uZmlnCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2Vi
S2l0VGVzdFJ1bm5lci54Y2NvbmZpZwkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0VGVzdFJ1bm5lci54Y2NvbmZpZwkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
Ly8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisv
LyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorCitQUk9EVUNUX05BTUUgPSBXZWJLaXRUZXN0UnVubmVyCitHQ0NfRU5BQkxFX09CSkNf
RVhDRVBUSU9OUyA9IFlFUworR0NDX1BSRUZJWF9IRUFERVIgPSBXZWJLaXRUZXN0UnVubmVyUHJl
Zml4LmgKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVNYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTWFpbi5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlTWFpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
QnVuZGxlSW5pdGlhbGl6ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CisKK3N0YXRpYyBXS0J1bmRsZVJlZiBnbG9iYWxC
dW5kbGU7CisKKy8vIFdLQnVuZGxlUGFnZUNsaWVudAorCit2b2lkIF9kaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworfQorCit2b2lkIF9kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKK30K
Kwordm9pZCBfZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKQoreworfQorCit2b2lkIF9kaWRDb21taXRMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7
Cit9CisKK3ZvaWQgX2RpZEZpbmlzaExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKK30KKwor
dm9pZCBfZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKK30KKwor
dm9pZCBfZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3Ry
aW5nUmVmIHRpdGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKQoreworfQorCit2b2lkIF9kaWRDbGVhcldpbmRvdyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgd2lu
ZG93LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworfQorCisvLyBXS0J1bmRsZUNsaWVudAor
Cit2b2lkIF9kaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgV0tCdW5kbGVQYWdlQ2xpZW50
IGNsaWVudCA9IHsKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgX2RpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUsCisgICAgICAgIF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSwKKyAgICAgICAgX2RpZEZhaWxQcm92aXNpb25hbExv
YWRXaXRoRXJyb3JGb3JGcmFtZSwKKyAgICAgICAgX2RpZENvbW1pdExvYWRGb3JGcmFtZSwKKyAg
ICAgICAgX2RpZEZpbmlzaExvYWRGb3JGcmFtZSwKKyAgICAgICAgX2RpZEZhaWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUsCisgICAgICAgIF9kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSwKKyAgICAgICAg
X2RpZENsZWFyV2luZG93CisgICAgfTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRDbGllbnQocGFnZSwg
JmNsaWVudCk7Cit9CisKK3ZvaWQgX3dpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiBidW5kbGUs
IFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworfQorCit2
b2lkIF9kaWRSZWNpZXZlTWVzc2FnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIG1l
c3NhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7Cit9CisKK2V4dGVybiAiQyIgdm9pZCBX
S0J1bmRsZUluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlKQoreworICAgIGZwcmludGYoc3Rk
ZXJyLCAiV0tCdW5kbGVJbml0aWFsaXplIGNhbGxlZFxuIik7CisKKyAgICBnbG9iYWxCdW5kbGUg
PSBidW5kbGU7CisKKyAgICBXS0J1bmRsZUNsaWVudCBjbGllbnQgPSB7CisgICAgICAgIDAsCisg
ICAgICAgIDAsCisgICAgICAgIF9kaWRDcmVhdGVQYWdlLAorICAgICAgICBfd2lsbERlc3Ryb3lQ
YWdlLAorICAgICAgICBfZGlkUmVjaWV2ZU1lc3NhZ2UKKyAgICB9OworICAgIFdLQnVuZGxlU2V0
Q2xpZW50KGJ1bmRsZSwgJmNsaWVudCk7Cit9CkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0
UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1NSBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVW
ZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQ1OworCW9i
amVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCUJDMjUxOTNF
MTFEMTVEOEIwMDJFQkMwMSAvKiBDb2NvYS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc5MzRBNDExOTA2NTg0MDA1RUE4RTIgLyog
Q29jb2EuZnJhbWV3b3JrICovOyB9OworCQlCQzI1MTkzRjExRDE1RDhCMDAyRUJDMDEgLyogV2Vi
S2l0Mi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzc5MzRBQjExOTA2NThDMDA1RUE4RTIgLyogV2ViS2l0Mi5mcmFtZXdvcmsgKi87
IH07CisJCUJDMjUxOTQwMTFEMTVEOEIwMDJFQkMwMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RB
MkI5OTExOTEwNTFGMDBDM0JDNDcgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9Owor
CQlCQzI1MUEzRTExRDE2ODMxMDAyRUJDMDEgLyogSW5qZWN0ZWRCdW5kbGVNYWluLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjUxODQ2MTFEMTU3
NjcwMDJFQkMwMSAvKiBJbmplY3RlZEJ1bmRsZU1haW4uY3BwICovOyB9OworCQlCQzc5MzQwMDEx
OEY3Qzg0MDA1RUE4RTIgLyogbWFpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNzkzM0ZGMTE4RjdDODQwMDVFQThFMiAvKiBtYWluLm1tICovOyB9
OworCQlCQzc5MzQzMTExOEY3RjE5MDA1RUE4RTIgLyogVGVzdENvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3OTM0MzAxMThGN0Yx
OTAwNUVBOEUyIC8qIFRlc3RDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQkM3OTM0QTUxMTkwNjU4
NDAwNUVBOEUyIC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzkzNEE0MTE5MDY1ODQwMDVFQThFMiAvKiBDb2NvYS5m
cmFtZXdvcmsgKi87IH07CisJCUJDNzkzNEFDMTE5MDY1OEMwMDVFQThFMiAvKiBXZWJLaXQyLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDNzkzNEFCMTE5MDY1OEMwMDVFQThFMiAvKiBXZWJLaXQyLmZyYW1ld29yayAqLzsgfTsKKwkJ
QkM3OTM0RTgxMTkwNjg0NjAwNUVBOEUyIC8qIFBsYXRmb3JtV2ViVmlld01hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzkzNEU3MTE5MDY4NDYw
MDVFQThFMiAvKiBQbGF0Zm9ybVdlYlZpZXdNYWMubW0gKi87IH07CisJCUJDOEM3OTVDMTFEMjc4
NUQwMDQ1MzVBMSAvKiBUZXN0Q29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEM3OTVCMTFEMjc4NUQwMDQ1MzVBMSAvKiBUZXN0
Q29udHJvbGxlck1hYy5tbSAqLzsgfTsKKwkJQkNEN0QyRjgxMTkyMTI3ODAwNkRCN0VFIC8qIFRl
c3RJbnZvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRDdEMkY3MTE5MjEyNzgwMDZEQjdFRSAvKiBUZXN0SW52b2NhdGlvbi5jcHAgKi87
IH07CisJCUJDREEyQUJGMTE5MEI1MUEwMEMzQkM0NyAvKiBUZXN0SW52b2NhdGlvbk1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREEyQUJFMTE5
MEI1MUEwMEMzQkM0NyAvKiBUZXN0SW52b2NhdGlvbk1hYy5tbSAqLzsgfTsKKwkJQkNEQTJCOUEx
MTkxMDUxRjAwQzNCQzQ3IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREEyQjk5MTE5MTA1MUYwMEMz
QkM0NyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CisvKiBFbmQgUEJYQnVpbGRG
aWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24g
Ki8KKwkJQkMyNTE5NDExMUQxNUQ5NDAwMkVCQzAxIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IEJDMjUxODYxMTFEMTVENTQw
MDJFQkMwMTsKKwkJCXJlbW90ZUluZm8gPSBJbmplY3RlZEJ1bmRsZTsKKwkJfTsKKy8qIEVuZCBQ
QlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhDb3B5RmlsZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJOERENzZGOUUwNDg2QUE3NjAwRDk2QjVFIC8qIENvcHlG
aWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSA4OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0
U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKKy8qIEVuZCBQQlhDb3B5RmlsZXNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICov
CisJCThERDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBXZWJLaXRUZXN0UnVubmVyICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1v
LmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVy
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQlCQzI1MTg0NjExRDE1NzY3
MDAyRUJDMDEgLyogSW5qZWN0ZWRCdW5kbGVNYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlTWFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMjUxODYyMTFEMTVENTQwMDJFQkMwMSAvKiBJbmplY3RlZEJ1bmRsZS5i
dW5kbGUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdy
YXBwZXIuY2ZidW5kbGU7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEluamVjdGVkQnVuZGxl
LmJ1bmRsZTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJQkMyNTE4NjMx
MUQxNUQ1NDAwMkVCQzAxIC8qIEluamVjdGVkQnVuZGxlLUluZm8ucGxpc3QgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0
aCA9ICJJbmplY3RlZEJ1bmRsZS1JbmZvLnBsaXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkMyNTE5NzExMUQxNUU2MTAwMkVCQzAxIC8qIEluamVjdGVkQnVuZGxlLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEluamVjdGVkQnVuZGxlLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzI1MUExNzExRDE2Nzc0MDAyRUJDMDEg
LyogV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJLaXRUZXN0UnVubmVyUHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJDMjUxQTE4MTFEMTY3OTUwMDJFQkMwMSAvKiBXZWJLaXRUZXN0UnVubmVyLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXIueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNzkzM0ZGMTE4RjdDODQwMDVFQThF
MiAvKiBtYWluLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gbWFp
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3OTM0MjYxMThGN0QzQzAwNUVB
OEUyIC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFz
ZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3OTM0MjcxMThGN0RB
RjAwNUVBOEUyIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDNzkzNDJGMTE4RjdGMTkwMDVFQThFMiAvKiBUZXN0Q29udHJvbGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCQzc5MzQzMDExOEY3RjE5MDA1RUE4RTIgLyogVGVzdENvbnRy
b2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdENvbnRy
b2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzc5MzRBNDExOTA2NTg0
MDA1RUE4RTIgLyogQ29jb2EuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFt
ZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yazsg
c291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJCUJDNzkzNEFCMTE5MDY1OEMwMDVFQThFMiAvKiBX
ZWJLaXQyLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViS2l0Mi5mcmFtZXdvcms7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUJDNzkzNEREMTE5MDY2RUMwMDVF
QThFMiAvKiBQbGF0Zm9ybVdlYlZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGxhdGZvcm1XZWJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNzkz
NEU3MTE5MDY4NDYwMDVFQThFMiAvKiBQbGF0Zm9ybVdlYlZpZXdNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVdlYlZpZXdNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDOEM3OTVCMTFEMjc4NUQwMDQ1MzVBMSAvKiBUZXN0
Q29udHJvbGxlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFRlc3RDb250cm9sbGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0Q3
RDJGNjExOTIxMjc4MDA2REI3RUUgLyogVGVzdEludm9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGVzdEludm9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkNEN0QyRjcxMTkyMTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZvY2F0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RJbnZvY2F0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNEQTJBQkUxMTkwQjUxQTAwQzNCQzQ3IC8q
IFRlc3RJbnZvY2F0aW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVGVzdEludm9jYXRpb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDREEyQjk5MTE5MTA1MUYwMEMzQkM0NyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKKy8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
KworLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk4REQ3NkY5
QjA0ODZBQTc2MDBEOTZCNUUgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1l
d29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCUJDNzkzNEE1MTE5MDY1ODQwMDVFQThFMiAvKiBDb2NvYS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLywKKwkJCQlCQzc5MzRBQzExOTA2NThDMDA1RUE4RTIgLyogV2ViS2l0
Mi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlCQ0RBMkI5QTExOTEwNTFGMDBDM0JD
NDcgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCUJDMjUx
ODYwMTFEMTVENTQwMDJFQkMwMSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJh
bWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkJQkMyNTE5M0UxMUQxNUQ4QjAwMkVCQzAxIC8qIENvY29hLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovLAorCQkJCUJDMjUxOTNGMTFEMTVEOEIwMDJFQkMwMSAvKiBXZWJL
aXQyLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCUJDMjUxOTQwMTFEMTVEOEIwMDJF
QkMwMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7
CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVu
ZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3Vw
IHNlY3Rpb24gKi8KKwkJMDhGQjc3OTRGRTg0MTU1REMwMkFBQzA3IC8qIFdlYktpdFRlc3RSdW5u
ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA4RkI3
Nzk1RkU4NDE1NURDMDJBQUMwNyAvKiBTb3VyY2UgKi8sCisJCQkJQkMyNTE4MzUxMUQxNTcxRDAw
MkVCQzAxIC8qIEluamVjdGVkQnVuZGxlICovLAorCQkJCUJDNzkzNDAxMTE4RjdDOEEwMDVFQThF
MiAvKiBDb25maWd1cmF0aW9ucyAqLywKKwkJCQkwOEZCNzc5REZFODQxNTVEQzAyQUFDMDcgLyog
RXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovLAorCQkJCUJDMjUxOTQ0MTFEMTVE
QkUwMDJFQkMwMSAvKiBSZXNvdXJjZXMgKi8sCisJCQkJMUFCNjc0QURGRTlENTRCNTExQ0EyQ0JC
IC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCW5hbWUgPSBXZWJLaXRUZXN0UnVubmVyOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMDhGQjc3OTVGRTg0MTU1REMwMkFBQzA3
IC8qIFNvdXJjZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJQkM3OTMzRkUxMThGN0M3NDAwNUVBOEUyIC8qIG1hYyAqLywKKwkJCQlCQzI1MUExNzExRDE2
Nzc0MDAyRUJDMDEgLyogV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oICovLAorCQkJCUJDNzkzNERE
MTE5MDY2RUMwMDVFQThFMiAvKiBQbGF0Zm9ybVdlYlZpZXcuaCAqLywKKwkJCQlCQzc5MzQyRjEx
OEY3RjE5MDA1RUE4RTIgLyogVGVzdENvbnRyb2xsZXIuaCAqLywKKwkJCQlCQzc5MzQzMDExOEY3
RjE5MDA1RUE4RTIgLyogVGVzdENvbnRyb2xsZXIuY3BwICovLAorCQkJCUJDRDdEMkY2MTE5MjEy
NzgwMDZEQjdFRSAvKiBUZXN0SW52b2NhdGlvbi5oICovLAorCQkJCUJDRDdEMkY3MTE5MjEyNzgw
MDZEQjdFRSAvKiBUZXN0SW52b2NhdGlvbi5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IFNvdXJj
ZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTA4RkI3NzlERkU4NDE1NURD
MDJBQUMwNyAvKiBFeHRlcm5hbCBGcmFtZXdvcmtzIGFuZCBMaWJyYXJpZXMgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDNzkzNEE0MTE5MDY1ODQwMDVF
QThFMiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8sCisJCQkJQkM3OTM0QUIxMTkwNjU4QzAwNUVBOEUy
IC8qIFdlYktpdDIuZnJhbWV3b3JrICovLAorCQkJCUJDREEyQjk5MTE5MTA1MUYwMEMzQkM0NyAv
KiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8sCisJCQkpOworCQkJbmFtZSA9ICJFeHRlcm5h
bCBGcmFtZXdvcmtzIGFuZCBMaWJyYXJpZXMiOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJMUFCNjc0QURGRTlENTRCNTExQ0EyQ0JCIC8qIFByb2R1Y3RzICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk4REQ3NkZBMTA0ODZBQTc2MDBE
OTZCNUUgLyogV2ViS2l0VGVzdFJ1bm5lciAqLywKKwkJCQlCQzI1MTg2MjExRDE1RDU0MDAyRUJD
MDEgLyogSW5qZWN0ZWRCdW5kbGUuYnVuZGxlICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0
czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUJDMjUxODM1MTFEMTU3MUQw
MDJFQkMwMSAvKiBJbmplY3RlZEJ1bmRsZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQkMyNTE4NDYxMUQxNTc2NzAwMkVCQzAxIC8qIEluamVjdGVkQnVu
ZGxlTWFpbi5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IEluamVjdGVkQnVuZGxlOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQkMyNTE5NDQxMUQxNURCRTAwMkVCQzAxIC8q
IFJlc291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJQkMyNTE4NjMxMUQxNUQ1NDAwMkVCQzAxIC8qIEluamVjdGVkQnVuZGxlLUluZm8ucGxpc3Qg
Ki8sCisJCQkpOworCQkJbmFtZSA9IFJlc291cmNlczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CisJCUJDNzkzM0ZFMTE4RjdDNzQwMDVFQThFMiAvKiBtYWMgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDNzkzM0ZGMTE4RjdDODQwMDVF
QThFMiAvKiBtYWluLm1tICovLAorCQkJCUJDNzkzNEU3MTE5MDY4NDYwMDVFQThFMiAvKiBQbGF0
Zm9ybVdlYlZpZXdNYWMubW0gKi8sCisJCQkJQkNEQTJBQkUxMTkwQjUxQTAwQzNCQzQ3IC8qIFRl
c3RJbnZvY2F0aW9uTWFjLm1tICovLAorCQkJCUJDOEM3OTVCMTFEMjc4NUQwMDQ1MzVBMSAvKiBU
ZXN0Q29udHJvbGxlck1hYy5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gbWFjOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQkM3OTM0MDExMThGN0M4QTAwNUVBOEUyIC8qIENv
bmZpZ3VyYXRpb25zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlCQzc5MzQyNjExOEY3RDNDMDA1RUE4RTIgLyogQmFzZS54Y2NvbmZpZyAqLywKKwkJCQlC
Qzc5MzQyNzExOEY3REFGMDA1RUE4RTIgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovLAorCQkJ
CUJDMjUxOTcxMTFEMTVFNjEwMDJFQkMwMSAvKiBJbmplY3RlZEJ1bmRsZS54Y2NvbmZpZyAqLywK
KwkJCQlCQzI1MUExODExRDE2Nzk1MDAyRUJDMDEgLyogV2ViS2l0VGVzdFJ1bm5lci54Y2NvbmZp
ZyAqLywKKwkJCSk7CisJCQlwYXRoID0gQ29uZmlndXJhdGlvbnM7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4g
UEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJOERENzZGOTYwNDg2QUE3NjAwRDk2QjVFIC8q
IFdlYktpdFRlc3RSdW5uZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMURFQjkyNzQwODczM0RENDAwMTBFOUNEIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJLaXRUZXN0UnVubmVy
IiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCThERDc2Rjk5MDQ4NkFBNzYwMEQ5NkI1RSAv
KiBTb3VyY2VzICovLAorCQkJCThERDc2RjlCMDQ4NkFBNzYwMEQ5NkI1RSAvKiBGcmFtZXdvcmtz
ICovLAorCQkJCThERDc2RjlFMDQ4NkFBNzYwMEQ5NkI1RSAvKiBDb3B5RmlsZXMgKi8sCisJCQkp
OworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJQkMy
NTE5NDIxMUQxNUQ5NDAwMkVCQzAxIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwor
CQkJbmFtZSA9IFdlYktpdFRlc3RSdW5uZXI7CisJCQlwcm9kdWN0SW5zdGFsbFBhdGggPSAiJChI
T01FKS9iaW4iOworCQkJcHJvZHVjdE5hbWUgPSBXZWJLaXRUZXN0UnVubmVyOworCQkJcHJvZHVj
dFJlZmVyZW5jZSA9IDhERDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBXZWJLaXRUZXN0UnVubmVy
ICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJ
fTsKKwkJQkMyNTE4NjExMUQxNUQ1NDAwMkVCQzAxIC8qIEluamVjdGVkQnVuZGxlICovID0gewor
CQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEJD
MjUxODY2MTFEMTVENTUwMDJFQkMwMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WE5hdGl2ZVRhcmdldCAiSW5qZWN0ZWRCdW5kbGUiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJ
CQkJQkMyNTE4NUUxMUQxNUQ1NDAwMkVCQzAxIC8qIFJlc291cmNlcyAqLywKKwkJCQlCQzI1MTg1
RjExRDE1RDU0MDAyRUJDMDEgLyogU291cmNlcyAqLywKKwkJCQlCQzI1MTg2MDExRDE1RDU0MDAy
RUJDMDEgLyogRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsK
KwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gSW5qZWN0ZWRCdW5kbGU7CisJ
CQlwcm9kdWN0TmFtZSA9IEluamVjdGVkQnVuZGxlOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IEJD
MjUxODYyMTFEMTVENTQwMDJFQkMwMSAvKiBJbmplY3RlZEJ1bmRsZS5idW5kbGUgKi87CisJCQlw
cm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmJ1bmRsZSI7CisJCX07CisvKiBF
bmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0
aW9uICovCisJCTA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9
IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMURF
QjkyNzgwODczM0RENDAwMTBFOUNEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
UHJvamVjdCAiV2ViS2l0VGVzdFJ1bm5lciIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9
ICJYY29kZSAzLjEiOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CisJCQltYWluR3Jv
dXAgPSAwOEZCNzc5NEZFODQxNTVEQzAyQUFDMDcgLyogV2ViS2l0VGVzdFJ1bm5lciAqLzsKKwkJ
CXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9
ICgKKwkJCQk4REQ3NkY5NjA0ODZBQTc2MDBEOTZCNUUgLyogV2ViS2l0VGVzdFJ1bm5lciAqLywK
KwkJCQlCQzI1MTg2MTExRDE1RDU0MDAyRUJDMDEgLyogSW5qZWN0ZWRCdW5kbGUgKi8sCisJCQkp
OworCQl9OworLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhSZXNv
dXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJQkMyNTE4NUUxMUQxNUQ1NDAwMkVCQzAxIC8q
IFJlc291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYUmVz
b3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKwkJOERENzZGOTkwNDg2QUE3NjAwRDk2QjVFIC8qIFNvdXJjZXMgKi8g
PSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlCQzc5MzQwMDExOEY3Qzg0MDA1RUE4RTIg
LyogbWFpbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCUJDNzkzNDMxMTE4RjdGMTkwMDVFQThFMiAv
KiBUZXN0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzc5MzRFODExOTA2ODQ2
MDA1RUE4RTIgLyogUGxhdGZvcm1XZWJWaWV3TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQkNE
QTJBQkYxMTkwQjUxQTAwQzNCQzQ3IC8qIFRlc3RJbnZvY2F0aW9uTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQkNEN0QyRjgxMTkyMTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZvY2F0aW9uLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJDOEM3OTVDMTFEMjc4NUQwMDQ1MzVBMSAvKiBUZXN0Q29udHJv
bGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQlCQzI1MTg1RjExRDE1RDU0MDAyRUJDMDEgLyog
U291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUJDMjUxQTNFMTFEMTY4
MzEwMDJFQkMwMSAvKiBJbmplY3RlZEJ1bmRsZU1haW4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBF
bmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhUYXJnZXRE
ZXBlbmRlbmN5IHNlY3Rpb24gKi8KKwkJQkMyNTE5NDIxMUQxNUQ5NDAwMkVCQzAxIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJ
dGFyZ2V0ID0gQkMyNTE4NjExMUQxNUQ1NDAwMkVCQzAxIC8qIEluamVjdGVkQnVuZGxlICovOwor
CQkJdGFyZ2V0UHJveHkgPSBCQzI1MTk0MTExRDE1RDk0MDAyRUJDMDEgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOworCQl9OworLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAq
LworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTFERUI5Mjc1
MDg3MzNERDQwMDEwRTlDRCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzI1MUExODExRDE2Nzk1
MDAyRUJDMDEgLyogV2ViS2l0VGVzdFJ1bm5lci54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxREVCOTI3NjA4NzMzREQ0
MDAxMEU5Q0QgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzI1MUExODExRDE2Nzk1MDAyRUJD
MDEgLyogV2ViS2l0VGVzdFJ1bm5lci54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTFERUI5Mjc5MDg3MzNERDQwMDEw
RTlDRCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzc5MzQyNzExOEY3REFGMDA1RUE4RTIgLyog
RGVidWdSZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0Nf
T1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJ
CTFERUI5MjdBMDg3MzNERDQwMDEwRTlDRCAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDNzkz
NDI3MTE4RjdEQUYwMDVFQThFMiAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQlCQzI1MTg2
NDExRDE1RDU1MDAyRUJDMDEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMyNTE5NzExMUQxNUU2
MTAwMkVCQzAxIC8qIEluamVjdGVkQnVuZGxlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUJDMjUxODY1MTFEMTVENTUw
MDJFQkMwMSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMjUxOTcxMTFEMTVFNjEwMDJFQkMw
MSAvKiBJbmplY3RlZEJ1bmRsZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRp
b24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8K
KwkJMURFQjkyNzQwODczM0RENDAwMTBFOUNEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJLaXRUZXN0UnVubmVyIiAqLyA9IHsKKwkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTFERUI5
Mjc1MDg3MzNERDQwMDEwRTlDRCAvKiBEZWJ1ZyAqLywKKwkJCQkxREVCOTI3NjA4NzMzREQ0MDAx
MEU5Q0QgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9Owor
CQkxREVCOTI3ODA4NzMzREQ0MDAxMEU5Q0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhQcm9qZWN0ICJXZWJLaXRUZXN0UnVubmVyIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmln
dXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTFERUI5Mjc5MDg3
MzNERDQwMDEwRTlDRCAvKiBEZWJ1ZyAqLywKKwkJCQkxREVCOTI3QTA4NzMzREQ0MDAxMEU5Q0Qg
LyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9
IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQlCQzI1
MTg2NjExRDE1RDU1MDAyRUJDMDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhO
YXRpdmVUYXJnZXQgIkluamVjdGVkQnVuZGxlIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCUJDMjUxODY0MTFEMTVE
NTUwMDJFQkMwMSAvKiBEZWJ1ZyAqLywKKwkJCQlCQzI1MTg2NTExRDE1RDU1MDAyRUJDMDEgLyog
UmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhD
Q29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IDA4RkI3Nzkz
RkU4NDE1NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KSW5kZXg6IFdlYktpdFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMu
bW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0
Zm9ybVdlYlZpZXdNYWMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisKK25hbWVzcGFjZSBXVFIgeworCitQ
bGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNw
YWNlUmVmKQoreworICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCk7
CisgICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVjdCBwYWdlTmFt
ZXNwYWNlUmVmOm5hbWVzcGFjZVJlZl07CisKKyAgICBOU1JlY3Qgd2luZG93UmVjdCA9IE5TT2Zm
c2V0UmVjdChyZWN0LCAtMTAwMDAsIFtbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6
MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0gcmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKKyAgICBt
X3dpbmRvdyA9IFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVj
dCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3Jl
QnVmZmVyZWQgZGVmZXI6WUVTXTsKKyAgICBbbV93aW5kb3cgc2V0Q29sb3JTcGFjZTpbW05TU2Ny
ZWVuIG1haW5TY3JlZW5dIGNvbG9yU3BhY2VdXTsKKyAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3
XSBhZGRTdWJ2aWV3Om1fdmlld107CisgICAgW21fd2luZG93IG9yZGVyQmFjazpuaWxdOworICAg
IFttX3dpbmRvdyBzZXRBdXRvZGlzcGxheTpOT107Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6flBs
YXRmb3JtV2ViVmlldygpCit7CisgICAgW21fd2luZG93IGNsb3NlXTsKKyAgICBbbV93aW5kb3cg
cmVsZWFzZV07CisgICAgW21fdmlldyByZWxlYXNlXTsKK30KKworV0tQYWdlUmVmIFBsYXRmb3Jt
V2ViVmlldzo6cGFnZSgpCit7CisgICAgcmV0dXJuIFttX3ZpZXcgcGFnZVJlZl07Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdUUgpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
VGVzdEludm9jYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9tYWMvVGVzdEludm9jYXRpb25NYWMubW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXRU
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0SW52b2NhdGlvbk1hYy5tbQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJUZXN0SW52b2NhdGlv
bi5oIgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBUZXN0SW52b2NhdGlvbjo6cnVuVW50aWwo
Ym9vbCYgZG9uZSkKK3sKKyAgICB3aGlsZSAoIWRvbmUpCisgICAgICAgIFtbTlNSdW5Mb29wIGN1
cnJlbnRSdW5Mb29wXSBydW5Nb2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05T
RGF0ZSBkaXN0YW50RnV0dXJlXV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogV2Vi
S2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9tYWluLm1tCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5tbQkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIlRlc3RDb250cm9sbGVyLmgiCisKK2lu
dCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCit7CisgICAgTlNBdXRvcmVsZWFz
ZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKKworICAgIFtO
U0FwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsKKworICAgIFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnNoYXJlZCgpLmluaXRpYWxpemUoYXJnYywgYXJndik7CisgICAgV1RSOjpUZXN0Q29udHJv
bGxlcjo6c2hhcmVkKCkucnVuKCk7CisKKyAgICBbcG9vbCBkcmFpbl07CisKKyAgICByZXR1cm4g
MDsKK30K
</data>
<flag name="review"
          id="46458"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>