<?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>189850</bug_id>
          
          <creation_ts>2018-09-21 12:32:39 -0700</creation_ts>
          <short_desc>Deprecate ObjC SPI in Deprecated Xcode group</short_desc>
          <delta_ts>2018-10-01 12:58:02 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1462002</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-21 12:32:39 -0700</bug_when>
    <thetext>Deprecate ObjC SPI in Deprecated Xcode group</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462068</commentid>
    <comment_count>1</comment_count>
      <attachid>350420</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-21 14:03:30 -0700</bug_when>
    <thetext>Created attachment 350420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463001</commentid>
    <comment_count>2</comment_count>
      <attachid>350710</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-24 16:38:31 -0700</bug_when>
    <thetext>Created attachment 350710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463016</commentid>
    <comment_count>3</comment_count>
      <attachid>350712</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-24 17:05:34 -0700</bug_when>
    <thetext>Created attachment 350712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463102</commentid>
    <comment_count>4</comment_count>
      <attachid>350739</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-24 22:49:10 -0700</bug_when>
    <thetext>Created attachment 350739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464182</commentid>
    <comment_count>5</comment_count>
      <attachid>350739</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-09-27 15:16:45 -0700</bug_when>
    <thetext>Comment on attachment 350739
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=350739&amp;action=review

&gt; Source/WebKit/UIProcess/API/Cocoa/WKBrowsingContextGroup.h:33
&gt; -WK_CLASS_AVAILABLE(macosx(10.10), ios(8.0))
&gt; +WK_CLASS_DEPRECATED_WITH_REPLACEMENT(&quot;WKUserContentController&quot;, macos(10.10, WK_MAC_TBA), ios(8.0, WK_IOS_TBA))

Seems like this was a weird mix of user content and preferences. I guess there is no single replacement in the modern API; should you mention WKPreferences as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465062</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-01 10:17:07 -0700</bug_when>
    <thetext>http://trac.webkit.org/r236665</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465064</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-01 10:18:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/44912137&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465134</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-01 11:27:44 -0700</bug_when>
    <thetext>http://trac.webkit.org/r236675</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465190</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-01 12:58:02 -0700</bug_when>
    <thetext>http://trac.webkit.org/r236687</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350420</attachid>
            <date>2018-09-21 14:03:30 -0700</date>
            <delta_ts>2018-09-24 16:38:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189850-20180921140329.patch</filename>
            <type>text/plain</type>
            <size>40206</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYzNDUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE4LTA5LTIxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGVwcmVjYXRlIE9i
akMgU1BJIGluIERlcHJlY2F0ZWQgWGNvZGUgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTg1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAg
ICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9tYWMvT2Jq
Q09iamVjdEdyYXBoLm1tOgorICAgICAgICAoV2ViS2l0Ojp0eXBlRnJvbU9iamVjdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6
T2JqQ09iamVjdEdyYXBoOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgIChkaWRTdGFydFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbik6CisgICAgICAgIChkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbE5hdmlnYXRpb24pOgorICAgICAgICAoZGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbik6CisgICAgICAgIChkaWRDb21taXROYXZpZ2F0aW9uKToKKyAgICAgICAgKGRpZEZp
bmlzaE5hdmlnYXRpb24pOgorICAgICAgICAoZGlkRmFpbE5hdmlnYXRpb24pOgorICAgICAgICAo
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAocHJvY2Vzc0RpZENyYXNoKToK
KyAgICAgICAgKHNldFVwUGFnZVBvbGljeUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVs
ZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dFBvbGljeURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbToKKyAgICAgICAgKC1bV0tO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOl0pOgorICAgICAgICAoLVtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXIgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0p
OgorICAgICAgICAoLVtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgdXNlQ3Jl
ZGVudGlhbDpmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpdKToKKyAgICAgICAgKC1bV0tOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTpdKToKKyAgICAgICAgKC1bV0tOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyIHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENo
YWxsZW5nZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRh
dGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRhdGFJbnRl
cm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAg
ICAoZGlkQ3JlYXRlQ29ubmVjdGlvbik6CisgICAgICAgIChnZXRJbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGEpOgorICAgICAgICAoZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRh
dGEpOgorICAgICAgICAoZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKGRpZFBl
cmZvcm1TZXJ2ZXJSZWRpcmVjdCk6CisgICAgICAgIChkaWRVcGRhdGVIaXN0b3J5VGl0bGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUeXBlUmVmV3JhcHBlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3Lmg6CisgICAgICAgIChXS19DTEFTU19ERVBS
RUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVGh1bWJuYWlsVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1
bWJuYWlsVmlldy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtV2ViUGFnZVByb3h5Rm9yR2Ft
ZXBhZElucHV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMpOgorCiAyMDE4
LTA5LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgU2ltcGx5IGF1dGhlbnRpY2F0aW9uIGNvZGUgZXZlbiBtb3JlIQpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkocmV2aXNpb24gMjM2MzQzKQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDMsNyArMTQzLDkgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAog
I2VuZGlmCiAKICAgICBjYXNlIFR5cGU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOgorICAgICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICB3cmFwcGVyID0g
YWxsb2NhdGVXS09iamVjdChbV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHNlbGZdLCBz
aXplKTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpBdXRvbWF0aW9uU2Vzc2lvbjoKQEAgLTI1Miw3ICsy
NTQsOSBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwCiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpOYXZpZ2F0aW9uRGF0YToKKyAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgd3JhcHBlciA9IFtXS05hdmln
YXRpb25EYXRhIGFsbG9jXTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpOYXZpZ2F0aW9uUmVzcG9uc2U6
CkBAIC0yNjYsNyArMjcwLDkgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUs
IFR5cAogI2VuZGlmCiAKICAgICBjYXNlIFR5cGU6OlBhZ2VHcm91cDoKKyAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgd3JhcHBlciA9IFtXS0Jyb3dz
aW5nQ29udGV4dEdyb3VwIGFsbG9jXTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpTZWN1cml0eU9yaWdp
bjoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQko
cmV2aXNpb24gMjM2MzQzKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RH
cmFwaC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMzLDggKzEzMywxMCBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxPYmpDVHlwZT4gdHlwZUZyb21PCiAjaWYgV0tfQVBJX0VOQUJMRUQKICAgICBpZiAo
ZHluYW1pY19vYmpjX2Nhc3Q8V0tCcm93c2luZ0NvbnRleHRIYW5kbGU+KG9iamVjdCkpCiAgICAg
ICAgIHJldHVybiBPYmpDVHlwZTo6V0tCcm93c2luZ0NvbnRleHRIYW5kbGU7CisgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8
V0tUeXBlUmVmV3JhcHBlcj4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIE9iakNUeXBlOjpXS1R5
cGVSZWZXcmFwcGVyOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2Vu
ZGlmCiAKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTk2LDcgKzE5OCw5IEBAIHZvaWQg
T2JqQ09iamVjdEdyYXBoOjplbmNvZGUoSVBDOjpFbmNvZGUKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIE9iakNUeXBlOjpXS1R5cGVSZWZXcmFwcGVyOgorICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBVc2VyRGF0YTo6ZW5jb2RlKGVuY29kZXIs
IHRvSW1wbChzdGF0aWNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyICo+KG9iamVjdCkub2JqZWN0KSk7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBicmVh
azsKICNlbmRpZgogCkBAIC0zMTcsNyArMzIxLDkgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRl
Y29kZShJUEM6OkRlY29kZQogICAgICAgICBpZiAoIVVzZXJEYXRhOjpkZWNvZGUoZGVjb2Rlciwg
b2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tU
eXBlUmVmV3JhcHBlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6dG9BUEkob2JqZWN0LmdldCgpKV0p
OworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgYnJl
YWs7CiAgICAgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oCShy
ZXZpc2lvbiAyMzYzNDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcg
QEAKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZTsKIEBwcm90b2NvbCBX
S0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlOwogCi1XS19DTEFTU19BVkFJTEFCTEUobWFj
b3N4KDEwLjEwKSwgaW9zKDguMCkpCitXS19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1F
TlQoIldLV2ViVmlldyIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9T
X1RCQSkpCiBAaW50ZXJmYWNlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciA6IE5TT2JqZWN0
CiAKICNwcmFnbWEgbWFyayBEZWxlZ2F0ZXMKQEAgLTQ3LDggKzQ3LDggQEAgV0tfQ0xBU1NfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LgogCiAjcHJhZ21hIG1hcmsgTG9hZGluZwogCi0r
ICh2b2lkKXJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6KE5TU3RyaW5nICopc2NoZW1l
OwotKyAodm9pZCl1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6KE5TU3RyaW5nICop
c2NoZW1lOworKyAodm9pZClyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOihOU1N0cmlu
ZyAqKXNjaGVtZSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1VSTFNjaGVt
ZUhhbmRsZXIiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEp
KTsKKysgKHZvaWQpdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOihOU1N0cmluZyAq
KXNjaGVtZSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1VSTFNjaGVtZUhh
bmRsZXIiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsK
IAogLyogTG9hZCBhIHJlcXVlc3QuIFRoaXMgaXMgb25seSB2YWxpZCBmb3IgcmVxdWVzdHMgb2Yg
bm9uLWZpbGU6IFVSTHMuIFBhc3NpbmcgYQogICAgZmlsZTogVVJMIHdpbGwgdGhyb3cgYW4gZXhj
ZXB0aW9uLiAqLwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lv
biAyMzYzNDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MCwxMSArODAsMTMgQEAg
TlNTdHJpbmcgKiBjb25zdCBXS0FjdGlvbkNhblNob3dNSU1FVHlwZQogICAgIFdlYWtPYmpDUHRy
PGlkIDxXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlPj4gX3BvbGljeURlbGVnYXRlOwog
fQogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogc3RhdGljIEhhc2hNYXA8
V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBfX3Vuc2FmZV91bnJldGFpbmVkIFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciAqPiYgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcCgpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBfX3Vu
c2FmZV91bnJldGFpbmVkIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqPj4gYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlck1hcDsKICAgICByZXR1cm4gYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ck1hcDsKIH0KK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtICh2b2lkKWRl
YWxsb2MKIHsKQEAgLTMxOSw3ICszMjEsOSBAQCAtICh2b2lkKXNldFBhZ2Vab29tOihDR0Zsb2F0
KXBhZ2Vab29tCiAKIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdL
UGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2Fk
RGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZDopXSkKQEAgLTMyOCw3ICszMzIsOSBAQCBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lv
bmFsTmF2aWdhdGlvCiAKIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTmF2aWdhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5
cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChf
X2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0g
YnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9s
bGVyRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkOildKQpAQCAtMzM3
LDcgKzM0Myw5IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclAKIAog
c3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXS1BhZ2VSZWYgcGFnZSwg
V0tOYXZpZ2F0aW9uUmVmLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5f
bG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRpZEZhaWxQcm92aXNp
b25hbExvYWRXaXRoRXJyb3I6KV0pCkBAIC0zNDYsNyArMzU0LDkgQEAgc3RhdGljIHZvaWQgZGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgogCiBzdGF0aWMgdm9pZCBkaWRDb21taXROYXZpZ2F0
aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBicm93c2luZ0NvbnRleHQt
Pl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRDb21taXRMb2Fk
OildKQpAQCAtMzU1LDcgKzM2NSw5IEBAIHN0YXRpYyB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24o
V0tQYWdlUmUKIAogc3RhdGljIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYgcGFn
ZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBh
dXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgKiljbGllbnRJbmZvOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdl
dCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkRmluaXNoTG9hZDopXSkKQEAgLTM2NCw3ICsz
NzYsOSBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdLUGFnZVJlCiAKIHN0YXRp
YyB2b2lkIGRpZEZhaWxOYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZWYs
IFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKIHsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1
dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciAqKWNsaWVudEluZm87CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAg
ICAgYXV0byBsb2FkRGVsZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0
KCk7CiAKICAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6ZGlkRmFpbExvYWRXaXRoRXJyb3I6KV0pCkBAIC0z
NzMsNyArMzg3LDkgQEAgc3RhdGljIHZvaWQgZGlkRmFpbE5hdmlnYXRpb24oV0tQYWdlUmVmIAog
CiBzdGF0aWMgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdLUGFn
ZVJlZiBwYWdlLCBXS1Byb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pCiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERl
bGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2U6KV0pCkBAIC0zODQsNyArNDAwLDkgQEAgc3RhdGljIGJvb2wgY2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlYwogCiBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7
CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dz
aW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGll
bnRJbmZvOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8g
bG9hZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAg
ICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2lu
Z0NvbnRleHRDb250cm9sbGVyOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXSkK
QEAgLTM5Myw3ICs0MTEsOSBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsCiAKIHN0YXRpYyB2b2lkIHByb2Nlc3NEaWRDcmFzaChXS1BhZ2VSZWYgcGFnZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2Fk
RGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJXZWJQcm9jZXNzRGlkQ3Jhc2g6
KV0pCkBAIC00NTMsNyArNDczLDkgQEAgc3RhdGljIHZvaWQgc2V0VXBQYWdlUG9saWN5Q2xpZW50
KFdLQnJvdwogCiAgICAgcG9saWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24gPSBbXShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tGcmFtZU5hdmlnYXRp
b25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVu
dE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBXS0ZyYW1lUmVmIG9yaWdpbmF0aW5nRnJhbWUsIFdL
VVJMUmVxdWVzdFJlZiBvcmlnaW5hbFJlcXVlc3QsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBX
S0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKICAgICB7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJpZGdl
IFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBhdXRvIHBvbGljeURlbGVnYXRl
ID0gYnJvd3NpbmdDb250ZXh0LT5fcG9saWN5RGVsZWdhdGUuZ2V0KCk7CiAKICAgICAgICAgaWYg
KFtwb2xpY3lEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXI6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhh
bmRsZXI6KV0pIHsKQEAgLTQ3OCw3ICs1MDAsOSBAQCBzdGF0aWMgdm9pZCBzZXRVcFBhZ2VQb2xp
Y3lDbGllbnQoV0tCcm93CiAKICAgICBwb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uID0gW10oV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVO
YXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMs
IFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3Qs
IFdLU3RyaW5nUmVmIGZyYW1lTmFtZSwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVy
LCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiAgICAgeworICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBhdXRvIGJy
b3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilj
bGllbnRJbmZvOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICAgICAgYXV0byBwb2xpY3lEZWxlZ2F0ZSA9IGJyb3dzaW5nQ29udGV4dC0+X3BvbGljeURlbGVn
YXRlLmdldCgpOwogCiAgICAgICAgIGlmIChbcG9saWN5RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKQEAgLTQ5OCw3ICs1MjIsOSBAQCBz
dGF0aWMgdm9pZCBzZXRVcFBhZ2VQb2xpY3lDbGllbnQoV0tCcm93CiAKICAgICBwb2xpY3lDbGll
bnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgPSBbXShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVl
c3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVu
ZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKICAgICB7Cisg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGF1dG8g
YnJvd3NpbmdDb250ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAq
KWNsaWVudEluZm87CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgICAgICBhdXRvIHBvbGljeURlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fcG9saWN5RGVs
ZWdhdGUuZ2V0KCk7CiAKICAgICAgICAgaWYgKFtwb2xpY3lEZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6ZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VBY3Rpb246ZGVjaXNpb25IYW5kbGVyOildKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRHcm91cC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdy
b3VwLmgJKHJldmlzaW9uIDIzNjM0MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUuaD4KIAotV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMCksIGlvcyg4LjApKQorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5U
KCJXS1VzZXJDb250ZW50Q29udHJvbGxlciIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9z
KDguMCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgOiBO
U09iamVjdAogCiAtIChpZClpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmll
cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29u
dGV4dEdyb3VwSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmgJKHJldmlzaW9uIDIz
NjM0MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29u
dGV4dEdyb3VwSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOSBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8V2ViUGFn
ZUdyb3VwPiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICB1
c2luZyBXcmFwcGVyQ2xhc3MgPSBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwOworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdD
b250ZXh0SGlzdG9yeURlbGVnYXRlLmgJKHJldmlzaW9uIDIzNjM0MykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhpc3RvcnlEZWxlZ2F0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGF0
YS5oPgogCitXS19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLQmFja0Zvcndh
cmRMaXN0IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSkK
IEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4dEhpc3RvcnlEZWxlZ2F0ZSA8TlNPYmplY3Q+CiBA
b3B0aW9uYWwKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmgJKHJldmlz
aW9uIDIzNjM0MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dExvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAKIEBjbGFzcyBXS0JhY2tGb3J3YXJkTGlzdEl0ZW07CiAKK1dLX0NMQVNTX0RFUFJFQ0FURURf
V0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZpZ2F0aW9uRGVsZWdhdGUiLCBtYWNvcygxMC4xMCwgV0tf
TUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKQogQHByb3RvY29sIFdLQnJvd3NpbmdDb250
ZXh0TG9hZERlbGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVQcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzYzNDMpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI2lt
cG9ydCA8V2ViS2l0L1dLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmg+CiAKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZVByaXZhdGUgPFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPgogQG9wdGlv
bmFsCiAKQEAgLTM0LDMgKzM2LDQgQEAKIC0gKHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
cldlYlByb2Nlc3NEaWRDcmFzaDooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVy
OwogCiBAZW5kCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmgJKHJldmlzaW9uIDIzNjM0MykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUlu
dGVnZXIsIFdLUG9saWN5RGVjaQogCiB0eXBlZGVmIHZvaWQgKF5XS1BvbGljeURlY2lzaW9uSGFu
ZGxlcikoV0tQb2xpY3lEZWNpc2lvbik7CiAKK1dLX0NMQVNTX0RFUFJFQ0FURURfV0lUSF9SRVBM
QUNFTUVOVCgiV0tOYXZpZ2F0aW9uRGVsZWdhdGUiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSks
IGlvcyg4LjAsIFdLX0lPU19UQkEpKQogQHByb3RvY29sIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5
RGVsZWdhdGUgPE5TT2JqZWN0PgogQG9wdGlvbmFsCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgJKHJldmlzaW9uIDIzNjM0MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRz
PEF1dGhlbnRpCiAKIH0KIAorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJX
S05hdmlnYXRpb25EZWxlZ2F0ZSIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwg
V0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6
IFdLT2JqZWN0CiBAZW5kCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5tbQkocmV2aXNpb24gMjM2MzQ0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
NzAsMzUgKzcwLDQ1IEBAIHN0YXRpYyB2b2lkIGNoZWNrQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGkK
IC0gKHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsKICAgICBjaGVja0NoYWxsZW5nZShjaGFsbGVuZ2Up
OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgV2ViS2l0OjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiB3ZWJDaGFsbGVuZ2UgPSAoKFdLTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSkuX3dlYl9hdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHdl
YkNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsKIH0KIAogLSAodm9pZCljb250aW51
ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsKICAgICBjaGVja0NoYWxsZW5nZShjaGFs
bGVuZ2UpOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiB3ZWJDaGFsbGVuZ2UgPSAoKFdLTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSkuX3dlYl9hdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIHdlYkNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCk7CiB9CiAKIC0g
KHZvaWQpdXNlQ3JlZGVudGlhbDooTlNVUkxDcmVkZW50aWFsICopY3JlZGVudGlhbCBmb3JBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxs
ZW5nZQogewogICAgIGNoZWNrQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CisgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkmIHdlYkNoYWxsZW5nZSA9ICgoV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICopY2hhbGxlbmdlKS5fd2ViX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CisgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVy
KCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uOjpVc2VDcmVkZW50aWFsLCBXZWJDb3JlOjpDcmVkZW50aWFsKGNyZWRlbnRpYWwpKTsK
IH0KIAogLSAodm9pZClwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsKICAgICBj
aGVja0NoYWxsZW5nZShjaGFsbGVuZ2UpOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiB3ZWJD
aGFsbGVuZ2UgPSAoKFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSku
X3dlYl9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OworICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgIHdlYkNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hh
bGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9y
bURlZmF1bHRIYW5kbGluZyk7CiB9CiAKIC0gKHZvaWQpcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5k
Q29udGludWVXaXRoQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hh
bGxlbmdlCiB7CiAgICAgY2hlY2tDaGFsbGVuZ2UoY2hhbGxlbmdlKTsKKyAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiljaGFsbGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKKyAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB3ZWJDaGFsbGVuZ2UubGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9u
RGF0YS5oCShyZXZpc2lvbiAyMzYzNDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBA
CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi1XS19DTEFTU19BVkFJTEFC
TEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCitXS19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQ
TEFDRU1FTlQoIldLTmF2aWdhdGlvbiIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDgu
MCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIFdLTmF2aWdhdGlvbkRhdGEgOiBOU09iamVjdAog
CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1N0cmluZyAqdGl0bGU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRh
dGFJbnRlcm5hbC5oCShyZXZpc2lvbiAyMzYzNDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBX
cmFwcGVyVHJhaXRzPEFQSTo6TmF2aWdhdGlvbkRhdGE+IHsKKyAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IFdLTmF2aWdhdGlv
bkRhdGE7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9OwogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
R3JvdXAuaAkocmV2aXNpb24gMjM2MzQzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc0dyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAK
IAogQGVuZAogCi1XS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCitX
S19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLUHJvY2Vzc1Bvb2wiLCBtYWNv
cygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKQogQGludGVyZmFjZSBX
S1Byb2Nlc3NHcm91cCA6IE5TT2JqZWN0CiAKIC0gKGlkKWluaXRXaXRoSW5qZWN0ZWRCdW5kbGVV
Ukw6KE5TVVJMICopYnVuZGxlVVJMOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkocmV2aXNpb24gMjM2MzQzKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw3ICs2NCw5IEBACiAKIHN0YXRpYyB2b2lkIGRpZENyZWF0ZUNvbm5l
Y3Rpb24oV0tDb250ZXh0UmVmLCBXS0Nvbm5lY3Rpb25SZWYgY29ubmVjdGlvblJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogICAgIGF1dG8gcHJvY2Vzc0dyb3VwID0gKF9fYnJpZGdlIFdLUHJvY2Vzc0dyb3VwICop
Y2xpZW50SW5mbzsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBh
dXRvIGRlbGVnYXRlID0gcHJvY2Vzc0dyb3VwLT5fZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAo
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJvY2Vzc0dyb3VwOmRpZENy
ZWF0ZUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NQbHVnSW46KV0pCkBAIC04NSw3ICs4Nyw5IEBAIHN0
YXRpYyB2b2lkIHNldFVwQ29ubmVjdGlvbkNsaWVudChXS1Byb2MKIAogc3RhdGljIFdLVHlwZVJl
ZiBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV0tDb250ZXh0UmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogeworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgYXV0byBwcm9jZXNzR3JvdXAgPSAoX19icmlkZ2UgV0tQcm9jZXNzR3Jv
dXAgKiljbGllbnRJbmZvOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIGF1dG8gZGVsZWdhdGUgPSBwcm9jZXNzR3JvdXAtPl9kZWxlZ2F0ZS5nZXQoKTsKIAogICAg
IGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihwcm9jZXNzR3JvdXBX
aWxsQ3JlYXRlQ29ubmVjdGlvblRvV2ViUHJvY2Vzc1BsdWdJbjopXSkgewpAQCAtMTE0LDcgKzEx
OCw5IEBAIHN0YXRpYyB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXQKICAgICBpZiAo
IVdlYktpdDo6dG9JbXBsKGZyYW1lUmVmKS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyIF9icm93c2luZ0NvbnRleHRDb250cm9sbGVyRm9yUGFnZVJlZjpwYWdlUmVmXTsKKyAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBhdXRvIGhpc3RvcnlEZWxl
Z2F0ZSA9IGNvbnRyb2xsZXItPl9oaXN0b3J5RGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2hp
c3RvcnlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXI6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGE6KV0pCkBAIC0xMjYsNyAr
MTMyLDkgQEAgc3RhdGljIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdLQwogICAgIGlm
ICghV2ViS2l0Ojp0b0ltcGwoZnJhbWVSZWYpLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1
cm47CiAKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFdLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciAqY29udHJvbGxlciA9IFtXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgX2Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJGb3JQYWdlUmVmOnBhZ2VSZWZdOwor
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gaGlzdG9yeURl
bGVnYXRlID0gY29udHJvbGxlci0+X2hpc3RvcnlEZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlmIChb
aGlzdG9yeURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlcjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RGcm9tVVJMOnRvVVJMOildKQpA
QCAtMTM4LDcgKzE0Niw5IEBAIHN0YXRpYyB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChX
S0MKICAgICBpZiAoIVdlYktpdDo6dG9JbXBsKGZyYW1lUmVmKS0+aXNNYWluRnJhbWUoKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyIF9icm93c2luZ0NvbnRleHRDb250cm9sbGVyRm9yUGFnZVJlZjpw
YWdlUmVmXTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBhdXRv
IGhpc3RvcnlEZWxlZ2F0ZSA9IGNvbnRyb2xsZXItPl9oaXN0b3J5RGVsZWdhdGUuZ2V0KCk7CiAK
ICAgICBpZiAoW2hpc3RvcnlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXI6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0RnJvbVVSTDp0
b1VSTDopXSkKQEAgLTE1MCw3ICsxNjAsOSBAQCBzdGF0aWMgdm9pZCBkaWRVcGRhdGVIaXN0b3J5
VGl0bGUoV0tDb250CiAgICAgaWYgKCFXZWJLaXQ6OnRvSW1wbChmcmFtZVJlZiktPmlzTWFpbkZy
YW1lKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpjb250cm9sbGVyID0g
W1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckZv
clBhZ2VSZWY6cGFnZVJlZl07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgYXV0byBoaXN0b3J5RGVsZWdhdGUgPSBjb250cm9sbGVyLT5faGlzdG9yeURlbGVnYXRl
LmdldCgpOwogCiAgICAgaWYgKFtoaXN0b3J5RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRpZFVwZGF0ZUhpc3RvcnlUaXRsZTpm
b3JVUkw6KV0pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUeXBl
UmVmV3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1R5cGVSZWZXcmFwcGVyLmgJKHJldmlzaW9uIDIzNjM0MykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1R5cGVSZWZXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLQmFzZS5oPgogCi1XS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEw
KSwgaW9zKDguMCkpCitXS19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLT2Jq
ZWN0IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSkKIEBp
bnRlcmZhY2UgV0tUeXBlUmVmV3JhcHBlciA6IE5TT2JqZWN0CiAKIC0gKGlkKWluaXRXaXRoT2Jq
ZWN0OihXS1R5cGVSZWYpb2JqZWN0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ZpZXcuaAkocmV2aXNpb24gMjM2MzQzKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiBAY2xhc3MgV0tQcm9jZXNzR3JvdXA7CiBAY2xhc3MgV0tWaWV3RGF0YTsKIAotV0tfRVhQT1JU
CitXS19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldyIsIG1hY29z
KDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIFdL
VmlldyA6IE5TVmlldyA8TlNUZXh0SW5wdXRDbGllbnQ+IHsKIEBwcml2YXRlCiAgICAgV0tWaWV3
RGF0YSAqX2RhdGE7CkBAIC00Nyw3ICs0NywxMCBAQCBXS19FWFBPUlQKIC0gKGlkKWluaXRXaXRo
RnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzR3JvdXA6KFdLUHJvY2Vzc0dyb3VwICopcHJvY2Vz
c0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOihXS0Jyb3dzaW5nQ29udGV4dEdyb3VwICopYnJv
d3NpbmdDb250ZXh0R3JvdXA7CiAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJv
Y2Vzc0dyb3VwOihXS1Byb2Nlc3NHcm91cCAqKXByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRH
cm91cDooV0tCcm93c2luZ0NvbnRleHRHcm91cCAqKWJyb3dzaW5nQ29udGV4dEdyb3VwIHJlbGF0
ZWRUb1ZpZXc6KFdLVmlldyAqKXJlbGF0ZWRWaWV3OwogCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1k
ZWNsYXJhdGlvbnMiCiBAcHJvcGVydHkocmVhZG9ubHkpIFdLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciAqYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwb3AKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcuaAkocmV2aXNp
b24gMjM2MzQzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1i
bmFpbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsMTAgQEAKIFdLX0NMQVNTX0FW
QUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSkKIEBpbnRlcmZhY2UgX1dLVGh1bWJuYWls
VmlldyA6IE5TVmlldwogCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGZyb21XS1ZpZXc6KFdLVmll
dyAqKXdrVmlldzsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZnJvbVdLV2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldzsKIAogQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgc2NhbGU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWls
Vmlldy5tbQkocmV2aXNpb24gMjM2MzQzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDkg
QEAKIC8vIEZJWE1FOiBXZSBzaG91bGQgc3dpdGNoIHRvIHRoZSBsb3ctcmVzb2x1dGlvbiBzY2Fs
ZSBpZiBhIHZpZXcgd2UgaGF2ZSBoaWdoLXJlc29sdXRpb24gdGlsZXMgZm9yIHJlcGFpbnRzLgog
CiBAaW1wbGVtZW50YXRpb24gX1dLVGh1bWJuYWlsVmlldyB7CisgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBSZXRhaW5QdHI8V0tWaWV3PiBfd2tWaWV3OworICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIFJldGFpblB0cjxXS1dlYlZp
ZXc+IF93a1dlYlZpZXc7CiAgICAgV2ViS2l0OjpXZWJQYWdlUHJveHkqIF93ZWJQYWdlUHJveHk7
CiAKQEAgLTc1LDYgKzc3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClmcgogICAgIHJldHVybiBzZWxmOwogfQogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBmcm9t
V0tWaWV3OihXS1ZpZXcgKil3a1ZpZXcKIHsKICAgICBpZiAoIShzZWxmID0gW3NlbGYgaW5pdFdp
dGhGcmFtZTpmcmFtZV0pKQpAQCAtODcsNiArOTAsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooTlNSZWN0KWZyCiAKICAgICByZXR1cm4gc2VsZjsKIH0KK0FMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNS
ZWN0KWZyYW1lIGZyb21XS1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tCShyZXZpc2lvbiAyMzYzNDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjIsOCArNjIsMTAg
QEAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gV2ViUHJvY2Vzc1Byb3h5OgogICAgICAgICAgICAg
aWYgKGR5bmFtaWNfb2JqY19jYXN0PFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlPihvYmplY3QpKQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0
PFdLVHlwZVJlZldyYXBwZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC03MiwxNSArNzQsMTkgQEAg
UmVmUHRyPE9iakNPYmplY3RHcmFwaD4gV2ViUHJvY2Vzc1Byb3h5OgogICAgICAgICB7CiAjaWYg
V0tfQVBJX0VOQUJMRUQKICAgICAgICAgICAgIGlmIChhdXRvKiBoYW5kbGUgPSBkeW5hbWljX29i
amNfY2FzdDxXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZT4ob2JqZWN0KSkgewotICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBtX3dlYlByb2Nlc3NQcm94eS53ZWJQYWdlKGhh
bmRsZS5wYWdlSUQpKQorICAgICAgICAgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBt
X3dlYlByb2Nlc3NQcm94eS53ZWJQYWdlKGhhbmRsZS5wYWdlSUQpKSB7CisgICAgICAgICAgICAg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIF9icm93c2luZ0NvbnRl
eHRDb250cm9sbGVyRm9yUGFnZVJlZjp0b0FQSSh3ZWJQYWdlUHJveHkpXTsKKyAgICAgICAgICAg
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgcmV0dXJuIFtOU051bGwgbnVsbF07CiAgICAgICAgICAg
ICB9CiAKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgICAgICAgICBpZiAoYXV0byogd3JhcHBlciA9IGR5bmFtaWNfb2JqY19jYXN0PFdLVHlwZVJl
ZldyYXBwZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXS1R5
cGVSZWZXcmFwcGVyIGFsbG9jXSBpbml0V2l0aE9iamVjdDp0b0FQSShtX3dlYlByb2Nlc3NQcm94
eS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHRvSW1wbCh3cmFwcGVyLm9iamVjdCkpLmdldCgp
KV0pOwotCisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNl
bmRpZgogICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgfQpAQCAtOTcsMTEgKzEw
MywxMiBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBXZWJQcm9jZXNzUHJveHk6CiAgICAgICAg
IGJvb2wgc2hvdWxkVHJhbnNmb3JtT2JqZWN0KGlkIG9iamVjdCkgY29uc3Qgb3ZlcnJpZGUKICAg
ICAgICAgewogI2lmIFdLX0FQSV9FTkFCTEVECisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PFdL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcj4ob2JqZWN0KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLQogICAgICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PFdLVHlwZVJlZldy
YXBwZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMDksMTIgKzExNiwxMiBAQCBSZWZQdHI8T2Jq
Q09iamVjdEdyYXBoPiBXZWJQcm9jZXNzUHJveHk6CiAgICAgICAgIFJldGFpblB0cjxpZD4gdHJh
bnNmb3JtT2JqZWN0KGlkIG9iamVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAgewogI2lmIFdL
X0FQSV9FTkFCTEVECisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBkeW5hbWljX29iamNfY2Fz
dDxXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNvbnRyb2xsZXIuaGFuZGxlOwotCiAgICAgICAgICAgICBpZiAoYXV0byogd3JhcHBl
ciA9IGR5bmFtaWNfb2JqY19jYXN0PFdLVHlwZVJlZldyYXBwZXI+KG9iamVjdCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXS1R5cGVSZWZXcmFwcGVyIGFsbG9jXSBpbml0V2l0
aE9iamVjdDp0b0FQSSh0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHRvSW1wbCh3cmFwcGVyLm9i
amVjdCkpLmdldCgpKV0pOwotCisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICNlbmRpZgogCiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiAyMzYz
NDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjcsNyArNDI3LDkgQEAgcHVibGljOgogCiAgICAgX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgKnJlbW90ZU9iamVjdFJlZ2lzdHJ5KCk7CiAKKyAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAq
YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcigpOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECiAKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQpAQCAtNzQ5LDcgKzc1MSw5IEBAIHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8X1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnk+IG1fcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiAKKyAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFJldGFpblB0cjxXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXI+IG1fYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjsKKyAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4gbV9nZXN0dXJlQ29udHJvbGxlcjsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAy
MzYzNDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzc4OSw2ICszNzg5LDcgQEAgX1dLUmVtb3RlT2JqZWN0UmVnaXN0
cnkgKldlYlZpZXdJbXBsOjpyZQogICAgIHJldHVybiBtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5Lmdl
dCgpOwogfQogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyICpXZWJWaWV3SW1wbDo6YnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
cigpCiB7CiAgICAgaWYgKCFtX2Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIpCkBAIC0zNzk2LDYg
KzM3OTcsNyBAQCBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKldlYlZpZXdJbXBsCiAKICAg
ICByZXR1cm4gbV9icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmdldCgpOwogfQorQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKIAogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1l
cGFkL21hYy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbQkocmV2aXNp
b24gMjM2MzQzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1l
cGFkUHJvdmlkZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDEwIEBAIFdlYlBh
Z2VQcm94eSogVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3IKICAgICAgICAgcmV0dXJuICgoV0tX
ZWJWaWV3ICopcmVzcG9uZGVyKS0+X3BhZ2UuZ2V0KCk7CiAjZW5kaWYKIAorICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKFtyZXNwb25kZXIgaXNLaW5kT2ZD
bGFzczpbV0tWaWV3IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiB0b0ltcGwoKChXS1ZpZXcgKily
ZXNwb25kZXIpLnBhZ2VSZWYpOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgJKHJldmlzaW9uIDIzNjM0MykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDEwIEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogICAgIFdLV2ViVmlldyAqX3dlYlZpZXc7
CiB9CiAKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpicm93c2luZ0Nv
bnRleHRDb250cm9sbGVyOworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogCiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGlzQXNzaXN0aW5nTm9kZTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0JKHJldmlzaW9uIDIzNjM0MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJJbnNwZWN0b3JQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTI3LDggKzUyNywxMCBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0ZWRWaWV3RnJhCiAgICAgICAgIC8vIHRv
cCBwb3NpdGlvbiBmb3IgdGhlIGluc3BlY3RvciB2aWV3IHNpbmNlIHRoZSBiYW5uZXJzIG9ubHkg
c3RyZXRjaCBhcyB3aWRlIGFzIHRoZSBpbnNwZWN0ZWQgdmlldy4KICAgICAgICAgaW5zcGVjdGVk
Vmlld0ZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBwYXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRo
LCBpbnNwZWN0ZWRWaWV3VG9wKTsKICAgICAgICAgQ0dGbG9hdCBpbnNldEV4Y2x1ZGluZ0Jhbm5l
cnMgPSAwOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
ICAgICBpZiAoW2luc3BlY3RlZFZpZXcgaXNLaW5kT2ZDbGFzczpbV0tWaWV3IGNsYXNzXV0pCiAg
ICAgICAgICAgICBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMgPSAoKFdLVmlldyAqKWluc3BlY3RlZFZp
ZXcpLl90b3BDb250ZW50SW5zZXQgLSAoKFdLVmlldyAqKWluc3BlY3RlZFZpZXcpLl90b3RhbEhl
aWdodE9mQmFubmVyczsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgICAgIG5ld0luc3BlY3RvclZpZXdGcmFtZSA9IE5TTWFrZVJlY3QocGFyZW50V2lkdGgg
LSBpbnNwZWN0b3JXaWR0aCwgMCwgaW5zcGVjdG9yV2lkdGgsIE5TSGVpZ2h0KHBhcmVudEJvdW5k
cykgLSBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC01
NDQsOCArNTQ2LDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RlZFZpZXdGcmEK
ICAgICAgICAgLy8gdG9wIHBvc2l0aW9uIGZvciB0aGUgaW5zcGVjdG9yIHZpZXcgc2luY2UgdGhl
IGJhbm5lcnMgb25seSBzdHJldGNoIGFzIHdpZGUgYXMgdGhlIGluc3BlY3RlZCB2aWV3LgogICAg
ICAgICBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBOU01ha2VSZWN0KGluc3BlY3RvcldpZHRoLCAwLCBw
YXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRoLCBpbnNwZWN0ZWRWaWV3VG9wKTsKICAgICAgICAg
Q0dGbG9hdCBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMgPSAwOworICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBpZiAoW2luc3BlY3RlZFZpZXcgaXNLaW5k
T2ZDbGFzczpbV0tWaWV3IGNsYXNzXV0pCiAgICAgICAgICAgICBpbnNldEV4Y2x1ZGluZ0Jhbm5l
cnMgPSAoKFdLVmlldyAqKWluc3BlY3RlZFZpZXcpLl90b3BDb250ZW50SW5zZXQgLSAoKFdLVmll
dyAqKWluc3BlY3RlZFZpZXcpLl90b3RhbEhlaWdodE9mQmFubmVyczsKKyAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIG5ld0luc3BlY3RvclZpZXdGcmFt
ZSA9IE5TTWFrZVJlY3QoMCwgMCwgaW5zcGVjdG9yV2lkdGgsIE5TSGVpZ2h0KHBhcmVudEJvdW5k
cykgLSBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0JKHJldmlzaW9uIDIzNjM0MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwNSw4ICs1MDUsMTAgQEAgUmVm
UHRyPE9iakNPYmplY3RHcmFwaD4gV2ViUHJvY2Vzczo6dHJhbgogICAgICAgICAgICAgaWYgKGR5
bmFtaWNfb2JqY19jYXN0PFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlPihvYmplY3QpKQogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PFdLVHlw
ZVJlZldyYXBwZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC01MjEsOCArNTIzLDEwIEBAIFJlZlB0
cjxPYmpDT2JqZWN0R3JhcGg+IFdlYlByb2Nlc3M6OnRyYW4KICAgICAgICAgICAgICAgICByZXR1
cm4gW05TTnVsbCBudWxsXTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgICAgIGlmIChhdXRvKiB3cmFwcGVy
ID0gZHluYW1pY19vYmpjX2Nhc3Q8V0tUeXBlUmVmV3JhcHBlcj4ob2JqZWN0KSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dLVHlwZVJlZldyYXBwZXIgYWxsb2NdIGluaXRXaXRo
T2JqZWN0OnRvQVBJKG1fd2ViUHJvY2Vzcy50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHRvSW1w
bCh3cmFwcGVyLm9iamVjdCkpLmdldCgpKV0pOworICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CiAg
ICAgICAgIH0KQEAgLTU0Miw4ICs1NDYsMTAgQEAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gV2Vi
UHJvY2Vzczo6dHJhbgogICAgICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PFdLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcj4ob2JqZWN0KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KICAgICAgICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZX
cmFwcGVyPihvYmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKIAogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNTU1LDggKzU2MSwxMCBAQCBSZWZQdHI8T2JqQ09iamVjdEdy
YXBoPiBXZWJQcm9jZXNzOjp0cmFuCiAgICAgICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9
IGR5bmFtaWNfb2JqY19jYXN0PFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcj4ob2JqZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29udHJvbGxlci5oYW5kbGU7
CiAKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
ICAgICAgICBpZiAoYXV0byogd3JhcHBlciA9IGR5bmFtaWNfb2JqY19jYXN0PFdLVHlwZVJlZldy
YXBwZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXS1R5cGVS
ZWZXcmFwcGVyIGFsbG9jXSBpbml0V2l0aE9iamVjdDp0b0FQSSh0cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHRvSW1wbCh3cmFwcGVyLm9iamVjdCkpLmdldCgpKV0pOworICAgICAgICAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKICAgICAgICAgICAgIHJldHVy
biBvYmplY3Q7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350710</attachid>
            <date>2018-09-24 16:38:31 -0700</date>
            <delta_ts>2018-09-24 17:05:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189850-20180924163830.patch</filename>
            <type>text/plain</type>
            <size>41786</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE4LTA5LTI0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGVwcmVjYXRlIE9i
akMgU1BJIGluIERlcHJlY2F0ZWQgWGNvZGUgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTg1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAg
ICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9tYWMvT2Jq
Q09iamVjdEdyYXBoLm1tOgorICAgICAgICAoV2ViS2l0Ojp0eXBlRnJvbU9iamVjdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6
T2JqQ09iamVjdEdyYXBoOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgIChkaWRTdGFydFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbik6CisgICAgICAgIChkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbE5hdmlnYXRpb24pOgorICAgICAgICAoZGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbik6CisgICAgICAgIChkaWRDb21taXROYXZpZ2F0aW9uKToKKyAgICAgICAgKGRpZEZp
bmlzaE5hdmlnYXRpb24pOgorICAgICAgICAoZGlkRmFpbE5hdmlnYXRpb24pOgorICAgICAgICAo
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAocHJvY2Vzc0RpZENyYXNoKToK
KyAgICAgICAgKHNldFVwUGFnZVBvbGljeUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVs
ZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dFBvbGljeURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbToKKyAgICAgICAgKC1bV0tO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOl0pOgorICAgICAgICAoLVtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXIgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0p
OgorICAgICAgICAoLVtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgdXNlQ3Jl
ZGVudGlhbDpmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpdKToKKyAgICAgICAgKC1bV0tOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTpdKToKKyAgICAgICAgKC1bV0tOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyIHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENo
YWxsZW5nZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRh
dGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRhdGFJbnRl
cm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAg
ICAoZGlkQ3JlYXRlQ29ubmVjdGlvbik6CisgICAgICAgIChnZXRJbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGEpOgorICAgICAgICAoZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRh
dGEpOgorICAgICAgICAoZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKGRpZFBl
cmZvcm1TZXJ2ZXJSZWRpcmVjdCk6CisgICAgICAgIChkaWRVcGRhdGVIaXN0b3J5VGl0bGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUeXBlUmVmV3JhcHBlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3Lmg6CisgICAgICAgIChXS19DTEFTU19ERVBS
RUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVGh1bWJuYWlsVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1
bWJuYWlsVmlldy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtV2ViUGFnZVByb3h5Rm9yR2Ft
ZXBhZElucHV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMpOgorCiAyMDE4
LTA5LTI0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVj
dC5tbQkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDkgQEAgdm9pZCogT2JqZWN0
OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogI2VuZGlmCiAKICAgICBjYXNlIFR5cGU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOgorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogICAgICAgICB3cmFwcGVyID0gYWxsb2NhdGVXS09iamVjdChbV0tOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHNlbGZdLCBzaXplKTsKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpB
dXRvbWF0aW9uU2Vzc2lvbjoKQEAgLTI1Miw3ICsyNTQsOSBAQCB2b2lkKiBPYmplY3Q6Om5ld09i
amVjdChzaXplX3Qgc2l6ZSwgVHlwCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpO
YXZpZ2F0aW9uRGF0YToKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICAgICAgd3JhcHBlciA9IFtXS05hdmlnYXRpb25EYXRhIGFsbG9jXTsKKyAgICAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBUeXBlOjpOYXZpZ2F0aW9uUmVzcG9uc2U6CkBAIC0yNjYsNyArMjcwLDkgQEAgdm9pZCog
T2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogI2VuZGlmCiAKICAgICBjYXNlIFR5
cGU6OlBhZ2VHcm91cDoKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICAgICAgd3JhcHBlciA9IFtXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG9jXTsKKyAg
ICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBUeXBlOjpTZWN1cml0eU9yaWdpbjoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTMzLDggKzEzMywxMCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmpDVHlwZT4gdHlwZUZyb21P
CiAjaWYgV0tfQVBJX0VOQUJMRUQKICAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8V0tCcm93c2lu
Z0NvbnRleHRIYW5kbGU+KG9iamVjdCkpCiAgICAgICAgIHJldHVybiBPYmpDVHlwZTo6V0tCcm93
c2luZ0NvbnRleHRIYW5kbGU7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8V0tUeXBlUmVmV3JhcHBlcj4ob2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIE9iakNUeXBlOjpXS1R5cGVSZWZXcmFwcGVyOworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlmCiAKICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMTk2LDcgKzE5OCw5IEBAIHZvaWQgT2JqQ09iamVjdEdyYXBoOjplbmNvZGUoSVBD
OjpFbmNvZGUKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE9iakNUeXBlOjpXS1R5cGVSZWZX
cmFwcGVyOgorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
ICAgICBVc2VyRGF0YTo6ZW5jb2RlKGVuY29kZXIsIHRvSW1wbChzdGF0aWNfY2FzdDxXS1R5cGVS
ZWZXcmFwcGVyICo+KG9iamVjdCkub2JqZWN0KSk7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICBicmVhazsKICNlbmRpZgogCkBAIC0zMTcsNyArMzIx
LDkgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZQogICAgICAgICBp
ZiAoIVVzZXJEYXRhOjpkZWNvZGUoZGVjb2Rlciwgb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
ICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tUeXBlUmVmV3JhcHBlciBhbGxvY10gaW5pdFdp
dGhPYmplY3Q6dG9BUEkob2JqZWN0LmdldCgpKV0pOworICAgICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29u
dGV4dExvYWREZWxlZ2F0ZTsKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVn
YXRlOwogCi1XS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCitXS19D
TEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldyIsIG1hY29zKDEwLjEw
LCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIFdLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciA6IE5TT2JqZWN0CiAKICNwcmFnbWEgbWFyayBEZWxlZ2F0ZXMK
QEAgLTQ3LDggKzQ3LDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4
LgogCiAjcHJhZ21hIG1hcmsgTG9hZGluZwogCi0rICh2b2lkKXJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2w6KE5TU3RyaW5nICopc2NoZW1lOwotKyAodm9pZCl1bnJlZ2lzdGVyU2NoZW1l
Rm9yQ3VzdG9tUHJvdG9jb2w6KE5TU3RyaW5nICopc2NoZW1lOworKyAodm9pZClyZWdpc3RlclNj
aGVtZUZvckN1c3RvbVByb3RvY29sOihOU1N0cmluZyAqKXNjaGVtZSBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJXS1VSTFNjaGVtZUhhbmRsZXIiLCBtYWNvcygxMC4xMCwgV0tf
TUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKKysgKHZvaWQpdW5yZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sOihOU1N0cmluZyAqKXNjaGVtZSBXS19BUElfREVQUkVDQVRFRF9X
SVRIX1JFUExBQ0VNRU5UKCJXS1VSTFNjaGVtZUhhbmRsZXIiLCBtYWNvcygxMC4xMCwgV0tfTUFD
X1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIAogLyogTG9hZCBhIHJlcXVlc3QuIFRoaXMg
aXMgb25seSB2YWxpZCBmb3IgcmVxdWVzdHMgb2Ygbm9uLWZpbGU6IFVSTHMuIFBhc3NpbmcgYQog
ICAgZmlsZTogVVJMIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLiAqLwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCwxMSArODAsMTMgQEAgTlNTdHJpbmcgKiBjb25zdCBXS0FjdGlvbkNh
blNob3dNSU1FVHlwZQogICAgIFdlYWtPYmpDUHRyPGlkIDxXS0Jyb3dzaW5nQ29udGV4dFBvbGlj
eURlbGVnYXRlPj4gX3BvbGljeURlbGVnYXRlOwogfQogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogc3RhdGljIEhhc2hNYXA8V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBfX3Vu
c2FmZV91bnJldGFpbmVkIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqPiYgYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlck1hcCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBfX3Vuc2FmZV91bnJldGFpbmVkIFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqPj4gYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcDsKICAgICBy
ZXR1cm4gYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcDsKIH0KK0FMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogCiAtICh2b2lkKWRlYWxsb2MKIHsKQEAgLTMxOSw3ICszMjEsOSBA
QCAtICh2b2lkKXNldFBhZ2Vab29tOihDR0Zsb2F0KXBhZ2Vab29tCiAKIHN0YXRpYyB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25S
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3NpbmdDb250
ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87
CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBsb2FkRGVs
ZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAo
W2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZDopXSkKQEAgLTMyOCw3ICszMzIsOSBA
QCBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvCiAKIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbihXS1BhZ2VS
ZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVn
YXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkOildKQpAQCAtMzM3LDcgKzM0Myw5IEBAIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclAKIAogc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lv
bmFsTmF2aWdhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS0Vycm9yUmVm
IGVycm9yLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Cisg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5n
Q29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJ
bmZvOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9h
ZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAg
aWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0Nv
bnRleHRDb250cm9sbGVyOmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6KV0pCkBAIC0z
NDYsNyArMzU0LDkgQEAgc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgog
CiBzdGF0aWMgdm9pZCBkaWRDb21taXROYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05hdmln
YXRpb25SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3Np
bmdDb250ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVu
dEluZm87CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBs
b2FkRGVsZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAg
ICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXJEaWRDb21taXRMb2FkOildKQpAQCAtMzU1LDcgKzM2NSw5IEBAIHN0
YXRpYyB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV0tQYWdlUmUKIAogc3RhdGljIHZvaWQgZGlk
RmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2Jy
aWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJv
d3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVy
RGlkRmluaXNoTG9hZDopXSkKQEAgLTM2NCw3ICszNzYsOSBAQCBzdGF0aWMgdm9pZCBkaWRGaW5p
c2hOYXZpZ2F0aW9uKFdLUGFnZVJlCiAKIHN0YXRpYyB2b2lkIGRpZEZhaWxOYXZpZ2F0aW9uKFdL
UGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZWYsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJl
ZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJp
ZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBicm93
c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2xvYWREZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6
ZGlkRmFpbExvYWRXaXRoRXJyb3I6KV0pCkBAIC0zNzMsNyArMzg3LDkgQEAgc3RhdGljIHZvaWQg
ZGlkRmFpbE5hdmlnYXRpb24oV0tQYWdlUmVmIAogCiBzdGF0aWMgYm9vbCBjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdLUGFnZVJlZiBwYWdlLCBXS1Byb3RlY3Rpb25TcGFj
ZVJlZiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CisgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5nQ29udGV4
dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwor
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9hZERlbGVn
YXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFts
b2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRD
b250cm9sbGVyOmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6KV0pCkBAIC0z
ODQsNyArNDAwLDkgQEAgc3RhdGljIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlYwog
CiBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV0tQYWdlUmVm
IHBhZ2UsIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJvd3NpbmdDb250
ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXSkKQEAgLTM5Myw3ICs0MTEsOSBAQCBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsCiAKIHN0YXRpYyB2b2lkIHByb2Nlc3NE
aWRDcmFzaChXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3NpbmdDb250
ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87
CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBsb2FkRGVs
ZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAo
W2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJXZWJQcm9jZXNzRGlkQ3Jhc2g6KV0pCkBAIC00NTMsNyArNDczLDkgQEAgc3Rh
dGljIHZvaWQgc2V0VXBQYWdlUG9saWN5Q2xpZW50KFdLQnJvdwogCiAgICAgcG9saWN5Q2xpZW50
LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBbXShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBX
S0ZyYW1lUmVmIG9yaWdpbmF0aW5nRnJhbWUsIFdLVVJMUmVxdWVzdFJlZiBvcmlnaW5hbFJlcXVl
c3QsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlz
dGVuZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKICAgICB7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGF1
dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciAqKWNsaWVudEluZm87CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgICAgICBhdXRvIHBvbGljeURlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fcG9saWN5
RGVsZWdhdGUuZ2V0KCk7CiAKICAgICAgICAgaWYgKFtwb2xpY3lEZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKQEAgLTQ3OCw3ICs1MDAs
OSBAQCBzdGF0aWMgdm9pZCBzZXRVcFBhZ2VQb2xpY3lDbGllbnQoV0tCcm93CiAKICAgICBwb2xp
Y3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uID0gW10oV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlw
ZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1
dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU3RyaW5nUmVmIGZyYW1lTmFtZSwgV0tG
cmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiAgICAgeworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBX
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgYXV0byBwb2xpY3lEZWxlZ2F0ZSA9
IGJyb3dzaW5nQ29udGV4dC0+X3BvbGljeURlbGVnYXRlLmdldCgpOwogCiAgICAgICAgIGlmIChb
cG9saWN5RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRl
eHRDb250cm9sbGVyOmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbjpkZWNpc2lvbkhhbmRs
ZXI6KV0pIHsKQEAgLTQ5OCw3ICs1MjIsOSBAQCBzdGF0aWMgdm9pZCBzZXRVcFBhZ2VQb2xpY3lD
bGllbnQoV0tCcm93CiAKICAgICBwb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Ug
PSBbXShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tVUkxSZXNwb25zZVJlZiBy
ZXNwb25zZSwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBX
S0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKICAgICB7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJpZGdl
IFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBhdXRvIHBvbGljeURlbGVnYXRl
ID0gYnJvd3NpbmdDb250ZXh0LT5fcG9saWN5RGVsZWdhdGUuZ2V0KCk7CiAKICAgICAgICAgaWYg
KFtwb2xpY3lEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXI6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VBY3Rpb246ZGVjaXNpb25IYW5k
bGVyOildKSB7CkBAIC01OTEsNiArNjE3LDcgQEAgKyAoV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyICopX2Jyb3dzaQogCiBAZW5kCiAKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIChQcml2YXRl
KQogCiAtIChXS1BhZ2VSZWYpX3BhZ2VSZWYKQEAgLTcxMyw1ICs3NDAsNiBAQCAtIChCT09MKV93
ZWJQcm9jZXNzSXNSZXNwb25zaXZlCiB9CiAKIEBlbmQKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0
R3JvdXAuaAkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyAr
MzAsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZS5oPgogCi1XS19DTEFTU19BVkFJTEFCTEUobWFj
b3N4KDEwLjEwKSwgaW9zKDguMCkpCitXS19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1F
TlQoIldLVXNlckNvbnRlbnRDb250cm9sbGVyIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBp
b3MoOC4wLCBXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRHcm91cCA6
IE5TT2JqZWN0CiAKIC0gKGlkKWluaXRXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlm
aWVyOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdD
b250ZXh0R3JvdXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAubW0JKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNiArMTc1LDcgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlP
YmplY3QKIAogQGVuZAogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQGlt
cGxlbWVudGF0aW9uIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgKFByaXZhdGUpCiAKIC0gKFdLUGFn
ZUdyb3VwUmVmKV9wYWdlR3JvdXBSZWYKQEAgLTE4Myw1ICsxODQsNiBAQCAtIChXS1BhZ2VHcm91
cFJlZilfcGFnZUdyb3VwUmVmCiB9CiAKIEBlbmQKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0Nv
bnRleHRHcm91cEludGVybmFsLmgJKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBs
YXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8V2ViUGFnZUdyb3VwPiB7CisgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS0Jy
b3dzaW5nQ29udGV4dEdyb3VwOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmgJ
KHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dEhpc3RvcnlEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGF0YS5oPgogCitXS19DTEFTU19ERVBSRUNB
VEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLQmFja0ZvcndhcmRMaXN0IiwgbWFjb3MoMTAuMTAsIFdL
X01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSkKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29u
dGV4dEhpc3RvcnlEZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKIEBjbGFzcyBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW07CiAKK1dLX0NMQVNTX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZp
Z2F0aW9uRGVsZWdhdGUiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lP
U19UQkEpKQogQHByb3RvY29sIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIDxOU09iamVj
dD4KIEBvcHRpb25hbAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVn
YXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dLQnJvd3NpbmdD
b250ZXh0TG9hZERlbGVnYXRlLmg+CiAKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9u
cyIKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVByaXZhdGUgPFdLQnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPgogQG9wdGlvbmFsCiAKQEAgLTM0LDMgKzM2LDQgQEAK
IC0gKHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcldlYlByb2Nlc3NEaWRDcmFzaDooV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyOwogCiBAZW5kCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRl
LmgJKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDYgKzQ3LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFdLUG9saWN5RGVjaQogCiB0
eXBlZGVmIHZvaWQgKF5XS1BvbGljeURlY2lzaW9uSGFuZGxlcikoV0tQb2xpY3lEZWNpc2lvbik7
CiAKK1dLX0NMQVNTX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKQog
QHByb3RvY29sIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUgPE5TT2JqZWN0PgogQG9w
dGlvbmFsCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHJldmlz
aW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEF1dGhlbnRpCiAKIH0KIAorV0tfQ0xB
U1NfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS05hdmlnYXRpb25EZWxlZ2F0ZSIsIG1h
Y29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNl
IFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IFdLT2JqZWN0CiBAZW5kCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbQkocmV2aXNpb24gMjM2NDQxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMsNDIgKzYzLDU0IEBAIC0gKFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYKIAogc3RhdGljIHZvaWQgY2hlY2tDaGFs
bGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlKQogeworICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKFtjaGFsbGVuZ2UgY2xh
c3NdICE9IFtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2xhc3NdKQogICAgICAgICBb
TlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiVGhl
IGNoYWxsZW5nZSB3YXMgbm90IHNlbnQgYnkgdGhlIHJlY2VpdmVyLiJdOworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCiAtICh2b2lkKWNhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlCiB7
CiAgICAgY2hlY2tDaGFsbGVuZ2UoY2hhbGxlbmdlKTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFs
bGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKKyAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21w
bGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246
OkNhbmNlbCk7CiB9CiAKIC0gKHZvaWQpY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxl
bmdlCiB7CiAgICAgY2hlY2tDaGFsbGVuZ2UoY2hhbGxlbmdlKTsKKyAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
KiljaGFsbGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKKyAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIo
KS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlVzZUNyZWRlbnRpYWwpOwogfQogCiAtICh2b2lkKXVzZUNyZWRlbnRpYWw6KE5TVVJM
Q3JlZGVudGlhbCAqKWNyZWRlbnRpYWwgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsKICAgICBjaGVja0NoYWxsZW5n
ZShjaGFsbGVuZ2UpOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiB3ZWJDaGFsbGVuZ2UgPSAo
KFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSkuX3dlYl9hdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIHdlYkNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgV2Vi
Q29yZTo6Q3JlZGVudGlhbChjcmVkZW50aWFsKSk7CiB9CiAKIC0gKHZvaWQpcGVyZm9ybURlZmF1
bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICopY2hhbGxlbmdlCiB7CiAgICAgY2hlY2tDaGFsbGVuZ2UoY2hhbGxlbmdlKTsK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB3ZWJD
aGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwogfQogCiAt
ICh2b2lkKXJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTooTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQogewogICAgIGNoZWNrQ2hhbGxl
bmdlKGNoYWxsZW5nZSk7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIHdlYkNoYWxsZW5nZSA9
ICgoV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlKS5fd2ViX2F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9u
U3BhY2VBbmRDb250aW51ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRhdGEuaAkocmV2aXNpb24gMjM2NDQxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KIAotV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjAp
KQorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS05hdmlnYXRpb24iLCBt
YWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKQogQGludGVyZmFj
ZSBXS05hdmlnYXRpb25EYXRhIDogTlNPYmplY3QKIAogQHByb3BlcnR5IChyZWFkb25seSkgTlNT
dHJpbmcgKnRpdGxlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkRhdGFJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EYXRhSW50ZXJuYWwuaAkocmV2aXNpb24gMjM2
NDQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRh
dGFJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw5IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6Ok5hdmlnYXRp
b25EYXRhPiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICB1
c2luZyBXcmFwcGVyQ2xhc3MgPSBXS05hdmlnYXRpb25EYXRhOworICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLmgJKHJldmlzaW9uIDIzNjQ0MSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAKIEBlbmQKIAotV0tfQ0xBU1NfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKQorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JF
UExBQ0VNRU5UKCJXS1Byb2Nlc3NQb29sIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3Mo
OC4wLCBXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgV0tQcm9jZXNzR3JvdXAgOiBOU09iamVjdAog
CiAtIChpZClpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOihOU1VSTCAqKWJ1bmRsZVVSTDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
R3JvdXAubW0JKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsOSBA
QAogCiBzdGF0aWMgdm9pZCBkaWRDcmVhdGVDb25uZWN0aW9uKFdLQ29udGV4dFJlZiwgV0tDb25u
ZWN0aW9uUmVmIGNvbm5lY3Rpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIHByb2Nlc3NHcm91
cCA9IChfX2JyaWRnZSBXS1Byb2Nlc3NHcm91cCAqKWNsaWVudEluZm87CisgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBkZWxlZ2F0ZSA9IHByb2Nlc3NHcm91
cC0+X2RlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHByb2Nlc3NHcm91cDpkaWRDcmVhdGVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
UGx1Z0luOildKQpAQCAtODUsNyArODcsOSBAQCBzdGF0aWMgdm9pZCBzZXRVcENvbm5lY3Rpb25D
bGllbnQoV0tQcm9jCiAKIHN0YXRpYyBXS1R5cGVSZWYgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFs
aXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gcHJvY2Vz
c0dyb3VwID0gKF9fYnJpZGdlIFdLUHJvY2Vzc0dyb3VwICopY2xpZW50SW5mbzsKKyAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBhdXRvIGRlbGVnYXRlID0gcHJvY2Vz
c0dyb3VwLT5fZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IocHJvY2Vzc0dyb3VwV2lsbENyZWF0ZUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NQbHVnSW46KV0pIHsKQEAgLTExNCw3ICsxMTgsOSBAQCBzdGF0aWMgdm9pZCBkaWROYXZp
Z2F0ZVdpdGhOYXZpZ2F0aW9uRGF0CiAgICAgaWYgKCFXZWJLaXQ6OnRvSW1wbChmcmFtZVJlZikt
PmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAgICAgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpjb250
cm9sbGVyID0gW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfYnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlckZvclBhZ2VSZWY6cGFnZVJlZl07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgYXV0byBoaXN0b3J5RGVsZWdhdGUgPSBjb250cm9sbGVyLT5faGlzdG9y
eURlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtoaXN0b3J5RGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRpZE5hdmlnYXRlV2l0
aE5hdmlnYXRpb25EYXRhOildKQpAQCAtMTI2LDcgKzEzMiw5IEBAIHN0YXRpYyB2b2lkIGRpZFBl
cmZvcm1DbGllbnRSZWRpcmVjdChXS0MKICAgICBpZiAoIVdlYktpdDo6dG9JbXBsKGZyYW1lUmVm
KS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmNv
bnRyb2xsZXIgPSBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIF9icm93c2luZ0NvbnRleHRD
b250cm9sbGVyRm9yUGFnZVJlZjpwYWdlUmVmXTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICBhdXRvIGhpc3RvcnlEZWxlZ2F0ZSA9IGNvbnRyb2xsZXItPl9oaXN0
b3J5RGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2hpc3RvcnlEZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6ZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0RnJvbVVSTDp0b1VSTDopXSkKQEAgLTEzOCw3ICsxNDYsOSBAQCBzdGF0aWMg
dm9pZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV0tDCiAgICAgaWYgKCFXZWJLaXQ6OnRvSW1w
bChmcmFtZVJlZiktPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICpjb250cm9sbGVyID0gW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlckZvclBhZ2VSZWY6cGFnZVJlZl07CisgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBoaXN0b3J5RGVsZWdhdGUgPSBjb250cm9s
bGVyLT5faGlzdG9yeURlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtoaXN0b3J5RGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdEZyb21VUkw6dG9VUkw6KV0pCkBAIC0xNTAsNyArMTYwLDkg
QEAgc3RhdGljIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKFdLQ29udAogICAgIGlmICghV2Vi
S2l0Ojp0b0ltcGwoZnJhbWVSZWYpLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqY29udHJvbGxlciA9IFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgX2Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJGb3JQYWdlUmVmOnBhZ2VSZWZdOworICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gaGlzdG9yeURlbGVnYXRl
ID0gY29udHJvbGxlci0+X2hpc3RvcnlEZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlmIChbaGlzdG9y
eURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlcjpkaWRVcGRhdGVIaXN0b3J5VGl0bGU6Zm9yVVJMOildKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVHlwZVJlZldyYXBwZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUeXBlUmVmV3JhcHBlci5oCShy
ZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tU
eXBlUmVmV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS0Jhc2UuaD4KIAot
V0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKQorV0tfQ0xBU1NfREVQ
UkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS09iamVjdCIsIG1hY29zKDEwLjEwLCBXS19NQUNf
VEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIFdLVHlwZVJlZldyYXBwZXIg
OiBOU09iamVjdAogCiAtIChpZClpbml0V2l0aE9iamVjdDooV0tUeXBlUmVmKW9iamVjdDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3LmgJKHJldmlzaW9u
IDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogQGNsYXNzIFdLUHJvY2Vzc0dyb3VwOwog
QGNsYXNzIFdLVmlld0RhdGE7CiAKLVdLX0VYUE9SVAorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRI
X1JFUExBQ0VNRU5UKCJXS1dlYlZpZXciLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4
LjAsIFdLX0lPU19UQkEpKQogQGludGVyZmFjZSBXS1ZpZXcgOiBOU1ZpZXcgPE5TVGV4dElucHV0
Q2xpZW50PiB7CiBAcHJpdmF0ZQogICAgIFdLVmlld0RhdGEgKl9kYXRhOwpAQCAtNDcsNyArNDcs
MTAgQEAgV0tfRVhQT1JUCiAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vz
c0dyb3VwOihXS1Byb2Nlc3NHcm91cCAqKXByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91
cDooV0tCcm93c2luZ0NvbnRleHRHcm91cCAqKWJyb3dzaW5nQ29udGV4dEdyb3VwOwogLSAoaWQp
aW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NHcm91cDooV0tQcm9jZXNzR3JvdXAg
Kilwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6KFdLQnJvd3NpbmdDb250ZXh0R3Jv
dXAgKilicm93c2luZ0NvbnRleHRHcm91cCByZWxhdGVkVG9WaWV3OihXS1ZpZXcgKilyZWxhdGVk
VmlldzsKIAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogQHByb3BlcnR5KHJl
YWRvbmx5KSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXI7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAKICNlbmRpZiAvLyBXS19BUElf
RU5BQkxFRAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1
bWJuYWlsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tUaHVtYm5haWxWaWV3LmgJKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDEwIEBACiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9z
KDguMCkpCiBAaW50ZXJmYWNlIF9XS1RodW1ibmFpbFZpZXcgOiBOU1ZpZXcKIAorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6
KE5TUmVjdClmcmFtZSBmcm9tV0tWaWV3OihXS1ZpZXcgKil3a1ZpZXc7CisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZy
YW1lIGZyb21XS1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBDR0Zsb2F0IHNjYWxlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0JKHJldmlzaW9uIDIzNjQ0MSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw5IEBACiAvLyBGSVhNRTogV2Ugc2hvdWxkIHN3
aXRjaCB0byB0aGUgbG93LXJlc29sdXRpb24gc2NhbGUgaWYgYSB2aWV3IHdlIGhhdmUgaGlnaC1y
ZXNvbHV0aW9uIHRpbGVzIGZvciByZXBhaW50cy4KIAogQGltcGxlbWVudGF0aW9uIF9XS1RodW1i
bmFpbFZpZXcgeworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
UmV0YWluUHRyPFdLVmlldz4gX3drVmlldzsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBfd2tXZWJWaWV3OwogICAgIFdlYktp
dDo6V2ViUGFnZVByb3h5KiBfd2ViUGFnZVByb3h5OwogCkBAIC03NSw2ICs3Nyw3IEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnIKICAgICByZXR1cm4gc2VsZjsKIH0K
IAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZnJvbVdLVmlldzooV0tWaWV3ICopd2tWaWV3CiB7
CiAgICAgaWYgKCEoc2VsZiA9IFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWVdKSkKQEAgLTg3LDYg
KzkwLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcgogCiAgICAg
cmV0dXJuIHNlbGY7CiB9CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBmcm9tV0tXZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjM2NDQxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTYyLDggKzYyLDEwIEBAIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+
IFdlYlByb2Nlc3NQcm94eToKICAgICAgICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS0Jy
b3dzaW5nQ29udGV4dEhhbmRsZT4ob2JqZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIAorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAg
ICAgICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmplY3Qp
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQpAQCAtNzIsMTUgKzc0LDE5IEBAIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IFdl
YlByb2Nlc3NQcm94eToKICAgICAgICAgewogI2lmIFdLX0FQSV9FTkFCTEVECiAgICAgICAgICAg
ICBpZiAoYXV0byogaGFuZGxlID0gZHluYW1pY19vYmpjX2Nhc3Q8V0tCcm93c2luZ0NvbnRleHRI
YW5kbGU+KG9iamVjdCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogd2ViUGFnZVByb3h5
ID0gbV93ZWJQcm9jZXNzUHJveHkud2ViUGFnZShoYW5kbGUucGFnZUlEKSkKKyAgICAgICAgICAg
ICAgICBpZiAoYXV0byogd2ViUGFnZVByb3h5ID0gbV93ZWJQcm9jZXNzUHJveHkud2ViUGFnZSho
YW5kbGUucGFnZUlEKSkgeworICAgICAgICAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciBfYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckZvclBhZ2VSZWY6dG9B
UEkod2ViUGFnZVByb3h5KV07CisgICAgICAgICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAorICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHJl
dHVybiBbTlNOdWxsIG51bGxdOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgaWYgKGF1dG8qIHdyYXBw
ZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmplY3QpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tUeXBlUmVmV3JhcHBlciBhbGxvY10gaW5pdFdp
dGhPYmplY3Q6dG9BUEkobV93ZWJQcm9jZXNzUHJveHkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh0b0ltcGwod3JhcHBlci5vYmplY3QpKS5nZXQoKSldKTsKLQorICAgICAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBv
YmplY3Q7CiAgICAgICAgIH0KQEAgLTk3LDExICsxMDMsMTIgQEAgUmVmUHRyPE9iakNPYmplY3RH
cmFwaD4gV2ViUHJvY2Vzc1Byb3h5OgogICAgICAgICBib29sIHNob3VsZFRyYW5zZm9ybU9iamVj
dChpZCBvYmplY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgICAgIHsKICNpZiBXS19BUElfRU5BQkxF
RAorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAg
ICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI+
KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICAgICAgICAgIGlm
IChkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmplY3QpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpA
QCAtMTA5LDEyICsxMTYsMTIgQEAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gV2ViUHJvY2Vzc1By
b3h5OgogICAgICAgICBSZXRhaW5QdHI8aWQ+IHRyYW5zZm9ybU9iamVjdChpZCBvYmplY3QpIGNv
bnN0IG92ZXJyaWRlCiAgICAgICAgIHsKICNpZiBXS19BUElfRU5BQkxFRAorICAgICAgICAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgICAgIGlmIChhdXRv
KiBjb250cm9sbGVyID0gZHluYW1pY19vYmpjX2Nhc3Q8V0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyPihvYmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiBjb250cm9sbGVyLmhhbmRsZTsK
LQogICAgICAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1R5
cGVSZWZXcmFwcGVyPihvYmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtb
V0tUeXBlUmVmV3JhcHBlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6dG9BUEkodHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh0b0ltcGwod3JhcHBlci5vYmplY3QpKS5nZXQoKSldKTsKLQorICAgICAg
ICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKIAogICAgICAg
ICAgICAgcmV0dXJuIG9iamVjdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDI3LDcgKzQyNyw5
IEBAIHB1YmxpYzoKIAogICAgIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpyZW1vdGVPYmplY3RS
ZWdpc3RyeSgpOwogCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAg
ICBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIo
KTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZiAvLyBXS19B
UElfRU5BQkxFRAogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTc0OSw3ICs3NTEsOSBA
QCBwcml2YXRlOgogCiAgICAgUmV0YWluUHRyPF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5PiBtX3Jl
bW90ZU9iamVjdFJlZ2lzdHJ5OwogCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KICAgICBSZXRhaW5QdHI8V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyPiBtX2Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXI7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+
IG1fZ2VzdHVyZUNvbnRyb2xsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3ODksNiAr
Mzc4OSw3IEBAIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpXZWJWaWV3SW1wbDo6cmUKICAgICBy
ZXR1cm4gbV9yZW1vdGVPYmplY3RSZWdpc3RyeS5nZXQoKTsKIH0KIAorQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqV2ViVmll
d0ltcGw6OmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyKQpAQCAtMzc5Niw2ICszNzk3LDcgQEAgV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyICpXZWJWaWV3SW1wbAogCiAgICAgcmV0dXJuIG1fYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5nZXQoKTsKIH0KK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
I2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9tYWMv
VUlHYW1lcGFkUHJvdmlkZXJNYWMubW0JKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVyTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0NiwxMCBAQCBXZWJQYWdlUHJveHkqIFVJR2FtZXBhZFByb3ZpZGVy
OjpwbGF0Zm9yCiAgICAgICAgIHJldHVybiAoKFdLV2ViVmlldyAqKXJlc3BvbmRlciktPl9wYWdl
LmdldCgpOwogI2VuZGlmCiAKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogICAgIGlmIChbcmVzcG9uZGVyIGlzS2luZE9mQ2xhc3M6W1dLVmlldyBjbGFzc11dKQogICAg
ICAgICByZXR1cm4gdG9JbXBsKCgoV0tWaWV3ICopcmVzcG9uZGVyKS5wYWdlUmVmKTsKKyAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIHJldHVybiBudWxscHRyOwog
fQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCShy
ZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSwxMCBAQCBjbGFzcyBXZWJQcm9jZXNz
UG9vbDsKICAgICBXS1dlYlZpZXcgKl93ZWJWaWV3OwogfQogCisjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRl
ZC1kZWNsYXJhdGlvbnMiCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjsKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwb3AKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgQk9PTCBpc0Fzc2lzdGluZ05vZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCShyZXZpc2lvbiAyMzY0NDEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTUyNCw4ICs1MjQsMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
aW5zcGVjdGVkVmlld0ZyYQogICAgICAgICAvLyB0b3AgcG9zaXRpb24gZm9yIHRoZSBpbnNwZWN0
b3IgdmlldyBzaW5jZSB0aGUgYmFubmVycyBvbmx5IHN0cmV0Y2ggYXMgd2lkZSBhcyB0aGUgaW5z
cGVjdGVkIHZpZXcuCiAgICAgICAgIGluc3BlY3RlZFZpZXdGcmFtZSA9IE5TTWFrZVJlY3QoMCwg
MCwgcGFyZW50V2lkdGggLSBpbnNwZWN0b3JXaWR0aCwgaW5zcGVjdGVkVmlld1RvcCk7CiAgICAg
ICAgIENHRmxvYXQgaW5zZXRFeGNsdWRpbmdCYW5uZXJzID0gMDsKKyAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgaWYgKFtpbnNwZWN0ZWRWaWV3IGlz
S2luZE9mQ2xhc3M6W1dLVmlldyBjbGFzc11dKQogICAgICAgICAgICAgaW5zZXRFeGNsdWRpbmdC
YW5uZXJzID0gKChXS1ZpZXcgKilpbnNwZWN0ZWRWaWV3KS5fdG9wQ29udGVudEluc2V0IC0gKChX
S1ZpZXcgKilpbnNwZWN0ZWRWaWV3KS5fdG90YWxIZWlnaHRPZkJhbm5lcnM7CisgICAgICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBpZiAoW2luc3BlY3RlZFZp
ZXcgaXNLaW5kT2ZDbGFzczpbV0tXZWJWaWV3IGNsYXNzXV0pCiAgICAgICAgICAgICBpbnNldEV4
Y2x1ZGluZ0Jhbm5lcnMgPSAoKFdLV2ViVmlldyAqKWluc3BlY3RlZFZpZXcpLl90b3BDb250ZW50
SW5zZXQgLSAoKFdLV2ViVmlldyAqKWluc3BlY3RlZFZpZXcpLl90b3RhbEhlaWdodE9mQmFubmVy
czsKICAgICAgICAgbmV3SW5zcGVjdG9yVmlld0ZyYW1lID0gTlNNYWtlUmVjdChwYXJlbnRXaWR0
aCAtIGluc3BlY3RvcldpZHRoLCAwLCBpbnNwZWN0b3JXaWR0aCwgTlNIZWlnaHQocGFyZW50Qm91
bmRzKSAtIGluc2V0RXhjbHVkaW5nQmFubmVycyk7CkBAIC01NDMsOCArNTQ1LDEwIEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RlZFZpZXdGcmEKICAgICAgICAgLy8gdG9wIHBvc2l0
aW9uIGZvciB0aGUgaW5zcGVjdG9yIHZpZXcgc2luY2UgdGhlIGJhbm5lcnMgb25seSBzdHJldGNo
IGFzIHdpZGUgYXMgdGhlIGluc3BlY3RlZCB2aWV3LgogICAgICAgICBpbnNwZWN0ZWRWaWV3RnJh
bWUgPSBOU01ha2VSZWN0KGluc3BlY3RvcldpZHRoLCAwLCBwYXJlbnRXaWR0aCAtIGluc3BlY3Rv
cldpZHRoLCBpbnNwZWN0ZWRWaWV3VG9wKTsKICAgICAgICAgQ0dGbG9hdCBpbnNldEV4Y2x1ZGlu
Z0Jhbm5lcnMgPSAwOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogICAgICAgICBpZiAoW2luc3BlY3RlZFZpZXcgaXNLaW5kT2ZDbGFzczpbV0tWaWV3IGNsYXNz
XV0pCiAgICAgICAgICAgICBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMgPSAoKFdLVmlldyAqKWluc3Bl
Y3RlZFZpZXcpLl90b3BDb250ZW50SW5zZXQgLSAoKFdLVmlldyAqKWluc3BlY3RlZFZpZXcpLl90
b3RhbEhlaWdodE9mQmFubmVyczsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgICAgIGlmIChbaW5zcGVjdGVkVmlldyBpc0tpbmRPZkNsYXNzOltXS1dlYlZp
ZXcgY2xhc3NdXSkKICAgICAgICAgICAgIGluc2V0RXhjbHVkaW5nQmFubmVycyA9ICgoV0tXZWJW
aWV3ICopaW5zcGVjdGVkVmlldykuX3RvcENvbnRlbnRJbnNldCAtICgoV0tXZWJWaWV3ICopaW5z
cGVjdGVkVmlldykuX3RvdGFsSGVpZ2h0T2ZCYW5uZXJzOwogICAgICAgICBuZXdJbnNwZWN0b3JW
aWV3RnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIGluc3BlY3RvcldpZHRoLCBOU0hlaWdodChwYXJl
bnRCb3VuZHMpIC0gaW5zZXRFeGNsdWRpbmdCYW5uZXJzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjM2
NDQxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTA1LDggKzUwNSwxMCBAQCBSZWZQdHI8T2JqQ09iamVjdEdy
YXBoPiBXZWJQcm9jZXNzOjp0cmFuCiAgICAgICAgICAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8
V0tCcm93c2luZ0NvbnRleHRIYW5kbGU+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CiAgICAgICAgICAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8V0tUeXBlUmVmV3JhcHBlcj4ob2Jq
ZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KQEAgLTUyMSw4ICs1MjMsMTAgQEAgUmVmUHRyPE9iakNPYmplY3RHcmFw
aD4gV2ViUHJvY2Vzczo6dHJhbgogICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdWxsIG51bGxd
OwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogICAgICAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBkeW5hbWljX29iamNf
Y2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiBh
ZG9wdE5TKFtbV0tUeXBlUmVmV3JhcHBlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6dG9BUEkobV93
ZWJQcm9jZXNzLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModG9JbXBsKHdyYXBwZXIub2JqZWN0
KSkuZ2V0KCkpXSk7CisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgfQpAQCAtNTQy
LDggKzU0NiwxMCBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBXZWJQcm9jZXNzOjp0cmFuCiAg
ICAgICAgICAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyPihvYmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogCisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
ICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PFdLVHlwZVJlZldyYXBwZXI+KG9iamVjdCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC01NTUsOCArNTYxLDEwIEBAIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IFdlYlByb2Nlc3M6
OnRyYW4KICAgICAgICAgICAgIGlmIChhdXRvKiBjb250cm9sbGVyID0gZHluYW1pY19vYmpjX2Nh
c3Q8V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyPihvYmplY3QpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBjb250cm9sbGVyLmhhbmRsZTsKIAorICAgICAgICAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgICAgIGlmIChhdXRv
KiB3cmFwcGVyID0gZHluYW1pY19vYmpjX2Nhc3Q8V0tUeXBlUmVmV3JhcHBlcj4ob2JqZWN0KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dLVHlwZVJlZldyYXBwZXIgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0OnRvQVBJKHRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModG9JbXBsKHdy
YXBwZXIub2JqZWN0KSkuZ2V0KCkpXSk7CisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICAg
ICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350712</attachid>
            <date>2018-09-24 17:05:34 -0700</date>
            <delta_ts>2018-09-24 22:49:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189850-20180924170533.patch</filename>
            <type>text/plain</type>
            <size>42697</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE4LTA5LTI0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGVwcmVjYXRlIE9i
akMgU1BJIGluIERlcHJlY2F0ZWQgWGNvZGUgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTg1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAg
ICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9tYWMvT2Jq
Q09iamVjdEdyYXBoLm1tOgorICAgICAgICAoV2ViS2l0Ojp0eXBlRnJvbU9iamVjdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6
T2JqQ09iamVjdEdyYXBoOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgIChkaWRTdGFydFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbik6CisgICAgICAgIChkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbE5hdmlnYXRpb24pOgorICAgICAgICAoZGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbik6CisgICAgICAgIChkaWRDb21taXROYXZpZ2F0aW9uKToKKyAgICAgICAgKGRpZEZp
bmlzaE5hdmlnYXRpb24pOgorICAgICAgICAoZGlkRmFpbE5hdmlnYXRpb24pOgorICAgICAgICAo
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAocHJvY2Vzc0RpZENyYXNoKToK
KyAgICAgICAgKHNldFVwUGFnZVBvbGljeUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVs
ZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dFBvbGljeURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbToKKyAgICAgICAgKC1bV0tO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOl0pOgorICAgICAgICAoLVtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXIgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0p
OgorICAgICAgICAoLVtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgdXNlQ3Jl
ZGVudGlhbDpmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpdKToKKyAgICAgICAgKC1bV0tOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTpdKToKKyAgICAgICAgKC1bV0tOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyIHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENo
YWxsZW5nZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRh
dGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRhdGFJbnRl
cm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAg
ICAoZGlkQ3JlYXRlQ29ubmVjdGlvbik6CisgICAgICAgIChnZXRJbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGEpOgorICAgICAgICAoZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRh
dGEpOgorICAgICAgICAoZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKGRpZFBl
cmZvcm1TZXJ2ZXJSZWRpcmVjdCk6CisgICAgICAgIChkaWRVcGRhdGVIaXN0b3J5VGl0bGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUeXBlUmVmV3JhcHBlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3Lmg6CisgICAgICAgIChXS19DTEFTU19ERVBS
RUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVGh1bWJuYWlsVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1
bWJuYWlsVmlldy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtV2ViUGFnZVByb3h5Rm9yR2Ft
ZXBhZElucHV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMpOgorCiAyMDE4
LTA5LTI0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVj
dC5tbQkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDkgQEAgdm9pZCogT2JqZWN0
OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogI2VuZGlmCiAKICAgICBjYXNlIFR5cGU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOgorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogICAgICAgICB3cmFwcGVyID0gYWxsb2NhdGVXS09iamVjdChbV0tOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHNlbGZdLCBzaXplKTsKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpB
dXRvbWF0aW9uU2Vzc2lvbjoKQEAgLTI1Miw3ICsyNTQsOSBAQCB2b2lkKiBPYmplY3Q6Om5ld09i
amVjdChzaXplX3Qgc2l6ZSwgVHlwCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpO
YXZpZ2F0aW9uRGF0YToKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICAgICAgd3JhcHBlciA9IFtXS05hdmlnYXRpb25EYXRhIGFsbG9jXTsKKyAgICAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBUeXBlOjpOYXZpZ2F0aW9uUmVzcG9uc2U6CkBAIC0yNjYsNyArMjcwLDkgQEAgdm9pZCog
T2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogI2VuZGlmCiAKICAgICBjYXNlIFR5
cGU6OlBhZ2VHcm91cDoKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICAgICAgd3JhcHBlciA9IFtXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG9jXTsKKyAg
ICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBUeXBlOjpTZWN1cml0eU9yaWdpbjoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTMzLDggKzEzMywxMCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmpDVHlwZT4gdHlwZUZyb21P
CiAjaWYgV0tfQVBJX0VOQUJMRUQKICAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8V0tCcm93c2lu
Z0NvbnRleHRIYW5kbGU+KG9iamVjdCkpCiAgICAgICAgIHJldHVybiBPYmpDVHlwZTo6V0tCcm93
c2luZ0NvbnRleHRIYW5kbGU7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8V0tUeXBlUmVmV3JhcHBlcj4ob2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIE9iakNUeXBlOjpXS1R5cGVSZWZXcmFwcGVyOworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlmCiAKICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMTk2LDcgKzE5OCw5IEBAIHZvaWQgT2JqQ09iamVjdEdyYXBoOjplbmNvZGUoSVBD
OjpFbmNvZGUKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE9iakNUeXBlOjpXS1R5cGVSZWZX
cmFwcGVyOgorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
ICAgICBVc2VyRGF0YTo6ZW5jb2RlKGVuY29kZXIsIHRvSW1wbChzdGF0aWNfY2FzdDxXS1R5cGVS
ZWZXcmFwcGVyICo+KG9iamVjdCkub2JqZWN0KSk7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICBicmVhazsKICNlbmRpZgogCkBAIC0zMTcsNyArMzIx
LDkgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZQogICAgICAgICBp
ZiAoIVVzZXJEYXRhOjpkZWNvZGUoZGVjb2Rlciwgb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
ICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tUeXBlUmVmV3JhcHBlciBhbGxvY10gaW5pdFdp
dGhPYmplY3Q6dG9BUEkob2JqZWN0LmdldCgpKV0pOworICAgICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29u
dGV4dExvYWREZWxlZ2F0ZTsKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVn
YXRlOwogCi1XS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCitXS19D
TEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldyIsIG1hY29zKDEwLjEw
LCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIFdLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciA6IE5TT2JqZWN0CiAKICNwcmFnbWEgbWFyayBEZWxlZ2F0ZXMK
QEAgLTQ3LDggKzQ3LDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4
LgogCiAjcHJhZ21hIG1hcmsgTG9hZGluZwogCi0rICh2b2lkKXJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2w6KE5TU3RyaW5nICopc2NoZW1lOwotKyAodm9pZCl1bnJlZ2lzdGVyU2NoZW1l
Rm9yQ3VzdG9tUHJvdG9jb2w6KE5TU3RyaW5nICopc2NoZW1lOworKyAodm9pZClyZWdpc3RlclNj
aGVtZUZvckN1c3RvbVByb3RvY29sOihOU1N0cmluZyAqKXNjaGVtZSBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJXS1VSTFNjaGVtZUhhbmRsZXIiLCBtYWNvcygxMC4xMCwgV0tf
TUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKKysgKHZvaWQpdW5yZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sOihOU1N0cmluZyAqKXNjaGVtZSBXS19BUElfREVQUkVDQVRFRF9X
SVRIX1JFUExBQ0VNRU5UKCJXS1VSTFNjaGVtZUhhbmRsZXIiLCBtYWNvcygxMC4xMCwgV0tfTUFD
X1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIAogLyogTG9hZCBhIHJlcXVlc3QuIFRoaXMg
aXMgb25seSB2YWxpZCBmb3IgcmVxdWVzdHMgb2Ygbm9uLWZpbGU6IFVSTHMuIFBhc3NpbmcgYQog
ICAgZmlsZTogVVJMIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLiAqLwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCwxMSArODAsMTMgQEAgTlNTdHJpbmcgKiBjb25zdCBXS0FjdGlvbkNh
blNob3dNSU1FVHlwZQogICAgIFdlYWtPYmpDUHRyPGlkIDxXS0Jyb3dzaW5nQ29udGV4dFBvbGlj
eURlbGVnYXRlPj4gX3BvbGljeURlbGVnYXRlOwogfQogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogc3RhdGljIEhhc2hNYXA8V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBfX3Vu
c2FmZV91bnJldGFpbmVkIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqPiYgYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlck1hcCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBfX3Vuc2FmZV91bnJldGFpbmVkIFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqPj4gYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcDsKICAgICBy
ZXR1cm4gYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcDsKIH0KK0FMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogCiAtICh2b2lkKWRlYWxsb2MKIHsKQEAgLTMxOSw3ICszMjEsOSBA
QCAtICh2b2lkKXNldFBhZ2Vab29tOihDR0Zsb2F0KXBhZ2Vab29tCiAKIHN0YXRpYyB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25S
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3NpbmdDb250
ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87
CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBsb2FkRGVs
ZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAo
W2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZDopXSkKQEAgLTMyOCw3ICszMzIsOSBA
QCBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvCiAKIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbihXS1BhZ2VS
ZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVn
YXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkOildKQpAQCAtMzM3LDcgKzM0Myw5IEBAIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclAKIAogc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lv
bmFsTmF2aWdhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS0Vycm9yUmVm
IGVycm9yLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Cisg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5n
Q29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJ
bmZvOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9h
ZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAg
aWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0Nv
bnRleHRDb250cm9sbGVyOmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6KV0pCkBAIC0z
NDYsNyArMzU0LDkgQEAgc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgog
CiBzdGF0aWMgdm9pZCBkaWRDb21taXROYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05hdmln
YXRpb25SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3Np
bmdDb250ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVu
dEluZm87CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBs
b2FkRGVsZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAg
ICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXJEaWRDb21taXRMb2FkOildKQpAQCAtMzU1LDcgKzM2NSw5IEBAIHN0
YXRpYyB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV0tQYWdlUmUKIAogc3RhdGljIHZvaWQgZGlk
RmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2Jy
aWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJv
d3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVy
RGlkRmluaXNoTG9hZDopXSkKQEAgLTM2NCw3ICszNzYsOSBAQCBzdGF0aWMgdm9pZCBkaWRGaW5p
c2hOYXZpZ2F0aW9uKFdLUGFnZVJlCiAKIHN0YXRpYyB2b2lkIGRpZEZhaWxOYXZpZ2F0aW9uKFdL
UGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZWYsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJl
ZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJp
ZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBicm93
c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2xvYWREZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6
ZGlkRmFpbExvYWRXaXRoRXJyb3I6KV0pCkBAIC0zNzMsNyArMzg3LDkgQEAgc3RhdGljIHZvaWQg
ZGlkRmFpbE5hdmlnYXRpb24oV0tQYWdlUmVmIAogCiBzdGF0aWMgYm9vbCBjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdLUGFnZVJlZiBwYWdlLCBXS1Byb3RlY3Rpb25TcGFj
ZVJlZiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CisgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5nQ29udGV4
dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwor
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9hZERlbGVn
YXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFts
b2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRD
b250cm9sbGVyOmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6KV0pCkBAIC0z
ODQsNyArNDAwLDkgQEAgc3RhdGljIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlYwog
CiBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV0tQYWdlUmVm
IHBhZ2UsIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJvd3NpbmdDb250
ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXSkKQEAgLTM5Myw3ICs0MTEsOSBAQCBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsCiAKIHN0YXRpYyB2b2lkIHByb2Nlc3NE
aWRDcmFzaChXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3NpbmdDb250
ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87
CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBsb2FkRGVs
ZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAo
W2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJXZWJQcm9jZXNzRGlkQ3Jhc2g6KV0pCkBAIC00NTMsNyArNDczLDkgQEAgc3Rh
dGljIHZvaWQgc2V0VXBQYWdlUG9saWN5Q2xpZW50KFdLQnJvdwogCiAgICAgcG9saWN5Q2xpZW50
LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBbXShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBX
S0ZyYW1lUmVmIG9yaWdpbmF0aW5nRnJhbWUsIFdLVVJMUmVxdWVzdFJlZiBvcmlnaW5hbFJlcXVl
c3QsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlz
dGVuZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKICAgICB7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGF1
dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciAqKWNsaWVudEluZm87CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgICAgICBhdXRvIHBvbGljeURlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fcG9saWN5
RGVsZWdhdGUuZ2V0KCk7CiAKICAgICAgICAgaWYgKFtwb2xpY3lEZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKQEAgLTQ3OCw3ICs1MDAs
OSBAQCBzdGF0aWMgdm9pZCBzZXRVcFBhZ2VQb2xpY3lDbGllbnQoV0tCcm93CiAKICAgICBwb2xp
Y3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uID0gW10oV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlw
ZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1
dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU3RyaW5nUmVmIGZyYW1lTmFtZSwgV0tG
cmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiAgICAgeworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBX
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgYXV0byBwb2xpY3lEZWxlZ2F0ZSA9
IGJyb3dzaW5nQ29udGV4dC0+X3BvbGljeURlbGVnYXRlLmdldCgpOwogCiAgICAgICAgIGlmIChb
cG9saWN5RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRl
eHRDb250cm9sbGVyOmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbjpkZWNpc2lvbkhhbmRs
ZXI6KV0pIHsKQEAgLTQ5OCw3ICs1MjIsOSBAQCBzdGF0aWMgdm9pZCBzZXRVcFBhZ2VQb2xpY3lD
bGllbnQoV0tCcm93CiAKICAgICBwb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Ug
PSBbXShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tVUkxSZXNwb25zZVJlZiBy
ZXNwb25zZSwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBX
S0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKICAgICB7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJpZGdl
IFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBhdXRvIHBvbGljeURlbGVnYXRl
ID0gYnJvd3NpbmdDb250ZXh0LT5fcG9saWN5RGVsZWdhdGUuZ2V0KCk7CiAKICAgICAgICAgaWYg
KFtwb2xpY3lEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXI6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VBY3Rpb246ZGVjaXNpb25IYW5k
bGVyOildKSB7CkBAIC01OTEsNiArNjE3LDcgQEAgKyAoV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyICopX2Jyb3dzaQogCiBAZW5kCiAKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIChQcml2YXRl
KQogCiAtIChXS1BhZ2VSZWYpX3BhZ2VSZWYKQEAgLTcxMyw1ICs3NDAsNiBAQCAtIChCT09MKV93
ZWJQcm9jZXNzSXNSZXNwb25zaXZlCiB9CiAKIEBlbmQKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0
R3JvdXAuaAkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyAr
MzAsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZS5oPgogCi1XS19DTEFTU19BVkFJTEFCTEUobWFj
b3N4KDEwLjEwKSwgaW9zKDguMCkpCitXS19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1F
TlQoIldLVXNlckNvbnRlbnRDb250cm9sbGVyIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBp
b3MoOC4wLCBXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRHcm91cCA6
IE5TT2JqZWN0CiAKIC0gKGlkKWluaXRXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlm
aWVyOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdD
b250ZXh0R3JvdXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAubW0JKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNiArMTc1LDcgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlP
YmplY3QKIAogQGVuZAogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQGlt
cGxlbWVudGF0aW9uIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgKFByaXZhdGUpCiAKIC0gKFdLUGFn
ZUdyb3VwUmVmKV9wYWdlR3JvdXBSZWYKQEAgLTE4Myw1ICsxODQsNiBAQCAtIChXS1BhZ2VHcm91
cFJlZilfcGFnZUdyb3VwUmVmCiB9CiAKIEBlbmQKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0Nv
bnRleHRHcm91cEludGVybmFsLmgJKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBs
YXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8V2ViUGFnZUdyb3VwPiB7CisgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS0Jy
b3dzaW5nQ29udGV4dEdyb3VwOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmgJ
KHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dEhpc3RvcnlEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGF0YS5oPgogCitXS19DTEFTU19ERVBSRUNB
VEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLQmFja0ZvcndhcmRMaXN0IiwgbWFjb3MoMTAuMTAsIFdL
X01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSkKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29u
dGV4dEhpc3RvcnlEZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKIEBjbGFzcyBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW07CiAKK1dLX0NMQVNTX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZp
Z2F0aW9uRGVsZWdhdGUiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lP
U19UQkEpKQogQHByb3RvY29sIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIDxOU09iamVj
dD4KIEBvcHRpb25hbAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVn
YXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dLQnJvd3NpbmdD
b250ZXh0TG9hZERlbGVnYXRlLmg+CiAKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9u
cyIKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVByaXZhdGUgPFdLQnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPgogQG9wdGlvbmFsCiAKQEAgLTM0LDMgKzM2LDQgQEAK
IC0gKHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcldlYlByb2Nlc3NEaWRDcmFzaDooV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyOwogCiBAZW5kCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRl
LmgJKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDYgKzQ3LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFdLUG9saWN5RGVjaQogCiB0
eXBlZGVmIHZvaWQgKF5XS1BvbGljeURlY2lzaW9uSGFuZGxlcikoV0tQb2xpY3lEZWNpc2lvbik7
CiAKK1dLX0NMQVNTX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKQog
QHByb3RvY29sIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUgPE5TT2JqZWN0PgogQG9w
dGlvbmFsCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHJldmlz
aW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEF1dGhlbnRpCiAKIH0KIAorV0tfQ0xB
U1NfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS05hdmlnYXRpb25EZWxlZ2F0ZSIsIG1h
Y29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNl
IFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IFdLT2JqZWN0CiBAZW5kCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbQkocmV2aXNpb24gMjM2NDQxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMsNDIgKzYzLDU0IEBAIC0gKFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYKIAogc3RhdGljIHZvaWQgY2hlY2tDaGFs
bGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlKQogeworICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKFtjaGFsbGVuZ2UgY2xh
c3NdICE9IFtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2xhc3NdKQogICAgICAgICBb
TlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiVGhl
IGNoYWxsZW5nZSB3YXMgbm90IHNlbnQgYnkgdGhlIHJlY2VpdmVyLiJdOworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCiAtICh2b2lkKWNhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlCiB7
CiAgICAgY2hlY2tDaGFsbGVuZ2UoY2hhbGxlbmdlKTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFs
bGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKKyAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21w
bGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246
OkNhbmNlbCk7CiB9CiAKIC0gKHZvaWQpY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxl
bmdlCiB7CiAgICAgY2hlY2tDaGFsbGVuZ2UoY2hhbGxlbmdlKTsKKyAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
KiljaGFsbGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKKyAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIo
KS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlVzZUNyZWRlbnRpYWwpOwogfQogCiAtICh2b2lkKXVzZUNyZWRlbnRpYWw6KE5TVVJM
Q3JlZGVudGlhbCAqKWNyZWRlbnRpYWwgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsKICAgICBjaGVja0NoYWxsZW5n
ZShjaGFsbGVuZ2UpOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiB3ZWJDaGFsbGVuZ2UgPSAo
KFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSkuX3dlYl9hdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIHdlYkNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgV2Vi
Q29yZTo6Q3JlZGVudGlhbChjcmVkZW50aWFsKSk7CiB9CiAKIC0gKHZvaWQpcGVyZm9ybURlZmF1
bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICopY2hhbGxlbmdlCiB7CiAgICAgY2hlY2tDaGFsbGVuZ2UoY2hhbGxlbmdlKTsK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB3ZWJD
aGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwogfQogCiAt
ICh2b2lkKXJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTooTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQogewogICAgIGNoZWNrQ2hhbGxl
bmdlKGNoYWxsZW5nZSk7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIHdlYkNoYWxsZW5nZSA9
ICgoV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlKS5fd2ViX2F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9u
U3BhY2VBbmRDb250aW51ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRhdGEuaAkocmV2aXNpb24gMjM2NDQxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KIAotV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjAp
KQorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS05hdmlnYXRpb24iLCBt
YWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKQogQGludGVyZmFj
ZSBXS05hdmlnYXRpb25EYXRhIDogTlNPYmplY3QKIAogQHByb3BlcnR5IChyZWFkb25seSkgTlNT
dHJpbmcgKnRpdGxlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkRhdGFJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EYXRhSW50ZXJuYWwuaAkocmV2aXNpb24gMjM2
NDQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRh
dGFJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw5IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6Ok5hdmlnYXRp
b25EYXRhPiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICB1
c2luZyBXcmFwcGVyQ2xhc3MgPSBXS05hdmlnYXRpb25EYXRhOworICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLmgJKHJldmlzaW9uIDIzNjQ0MSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAKIEBlbmQKIAotV0tfQ0xBU1NfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKQorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JF
UExBQ0VNRU5UKCJXS1Byb2Nlc3NQb29sIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3Mo
OC4wLCBXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgV0tQcm9jZXNzR3JvdXAgOiBOU09iamVjdAog
CiAtIChpZClpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOihOU1VSTCAqKWJ1bmRsZVVSTDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
R3JvdXAubW0JKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsOSBA
QAogCiBzdGF0aWMgdm9pZCBkaWRDcmVhdGVDb25uZWN0aW9uKFdLQ29udGV4dFJlZiwgV0tDb25u
ZWN0aW9uUmVmIGNvbm5lY3Rpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIHByb2Nlc3NHcm91
cCA9IChfX2JyaWRnZSBXS1Byb2Nlc3NHcm91cCAqKWNsaWVudEluZm87CisgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBkZWxlZ2F0ZSA9IHByb2Nlc3NHcm91
cC0+X2RlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHByb2Nlc3NHcm91cDpkaWRDcmVhdGVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
UGx1Z0luOildKQpAQCAtODUsNyArODcsOSBAQCBzdGF0aWMgdm9pZCBzZXRVcENvbm5lY3Rpb25D
bGllbnQoV0tQcm9jCiAKIHN0YXRpYyBXS1R5cGVSZWYgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFs
aXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gcHJvY2Vz
c0dyb3VwID0gKF9fYnJpZGdlIFdLUHJvY2Vzc0dyb3VwICopY2xpZW50SW5mbzsKKyAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBhdXRvIGRlbGVnYXRlID0gcHJvY2Vz
c0dyb3VwLT5fZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IocHJvY2Vzc0dyb3VwV2lsbENyZWF0ZUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NQbHVnSW46KV0pIHsKQEAgLTExNCw3ICsxMTgsOSBAQCBzdGF0aWMgdm9pZCBkaWROYXZp
Z2F0ZVdpdGhOYXZpZ2F0aW9uRGF0CiAgICAgaWYgKCFXZWJLaXQ6OnRvSW1wbChmcmFtZVJlZikt
PmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAgICAgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpjb250
cm9sbGVyID0gW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfYnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlckZvclBhZ2VSZWY6cGFnZVJlZl07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgYXV0byBoaXN0b3J5RGVsZWdhdGUgPSBjb250cm9sbGVyLT5faGlzdG9y
eURlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtoaXN0b3J5RGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRpZE5hdmlnYXRlV2l0
aE5hdmlnYXRpb25EYXRhOildKQpAQCAtMTI2LDcgKzEzMiw5IEBAIHN0YXRpYyB2b2lkIGRpZFBl
cmZvcm1DbGllbnRSZWRpcmVjdChXS0MKICAgICBpZiAoIVdlYktpdDo6dG9JbXBsKGZyYW1lUmVm
KS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmNv
bnRyb2xsZXIgPSBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIF9icm93c2luZ0NvbnRleHRD
b250cm9sbGVyRm9yUGFnZVJlZjpwYWdlUmVmXTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICBhdXRvIGhpc3RvcnlEZWxlZ2F0ZSA9IGNvbnRyb2xsZXItPl9oaXN0
b3J5RGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2hpc3RvcnlEZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6ZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0RnJvbVVSTDp0b1VSTDopXSkKQEAgLTEzOCw3ICsxNDYsOSBAQCBzdGF0aWMg
dm9pZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV0tDCiAgICAgaWYgKCFXZWJLaXQ6OnRvSW1w
bChmcmFtZVJlZiktPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICpjb250cm9sbGVyID0gW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlckZvclBhZ2VSZWY6cGFnZVJlZl07CisgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBoaXN0b3J5RGVsZWdhdGUgPSBjb250cm9s
bGVyLT5faGlzdG9yeURlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtoaXN0b3J5RGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdEZyb21VUkw6dG9VUkw6KV0pCkBAIC0xNTAsNyArMTYwLDkg
QEAgc3RhdGljIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKFdLQ29udAogICAgIGlmICghV2Vi
S2l0Ojp0b0ltcGwoZnJhbWVSZWYpLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqY29udHJvbGxlciA9IFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgX2Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJGb3JQYWdlUmVmOnBhZ2VSZWZdOworICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gaGlzdG9yeURlbGVnYXRl
ID0gY29udHJvbGxlci0+X2hpc3RvcnlEZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlmIChbaGlzdG9y
eURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlcjpkaWRVcGRhdGVIaXN0b3J5VGl0bGU6Zm9yVVJMOildKQpAQCAtMjA3LDYgKzIxOSw3
IEBAIC0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxXS1Byb2Nlc3NHcm91cEQKIAogQGVuZAogCitB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQGltcGxlbWVudGF0aW9uIFdLUHJv
Y2Vzc0dyb3VwIChQcml2YXRlKQogCiAtIChXS0NvbnRleHRSZWYpX2NvbnRleHRSZWYKQEAgLTIy
OSw1ICsyNDIsNiBAQCAtIChXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgKilfZ2VvbG9jYXRpCiAj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiBAZW5kCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUeXBlUmVmV3JhcHBlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1R5cGVSZWZXcmFwcGVyLmgJKHJldmlz
aW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1R5cGVS
ZWZXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQmFzZS5oPgogCi1XS19D
TEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCitXS19DTEFTU19ERVBSRUNB
VEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLT2JqZWN0IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEp
LCBpb3MoOC4wLCBXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgV0tUeXBlUmVmV3JhcHBlciA6IE5T
T2JqZWN0CiAKIC0gKGlkKWluaXRXaXRoT2JqZWN0OihXS1R5cGVSZWYpb2JqZWN0OwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlldy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXcuaAkocmV2aXNpb24gMjM2
NDQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiBAY2xhc3MgV0tQcm9jZXNzR3JvdXA7CiBAY2xh
c3MgV0tWaWV3RGF0YTsKIAotV0tfRVhQT1JUCitXS19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQ
TEFDRU1FTlQoIldLV2ViVmlldyIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwg
V0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIFdLVmlldyA6IE5TVmlldyA8TlNUZXh0SW5wdXRDbGll
bnQ+IHsKIEBwcml2YXRlCiAgICAgV0tWaWV3RGF0YSAqX2RhdGE7CkBAIC00Nyw3ICs0NywxMCBA
QCBXS19FWFBPUlQKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzR3Jv
dXA6KFdLUHJvY2Vzc0dyb3VwICopcHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOihX
S0Jyb3dzaW5nQ29udGV4dEdyb3VwICopYnJvd3NpbmdDb250ZXh0R3JvdXA7CiAtIChpZClpbml0
V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc0dyb3VwOihXS1Byb2Nlc3NHcm91cCAqKXBy
b2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDooV0tCcm93c2luZ0NvbnRleHRHcm91cCAq
KWJyb3dzaW5nQ29udGV4dEdyb3VwIHJlbGF0ZWRUb1ZpZXc6KFdLVmlldyAqKXJlbGF0ZWRWaWV3
OwogCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiBAcHJvcGVydHkocmVhZG9u
bHkpIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
cjsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFC
TEVECiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMzOCwxMCArMTMzOCwxMiBA
QCAtIChVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CiAgICAgcmV0dXJuIF9zY3JvbGxWaWV3Lmdl
dCgpOwogfQogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogLSAoV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyICopYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcgogewogICAg
IHJldHVybiBbX2NvbnRlbnRWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdOwogfQorQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKEJPT0wpYmVjb21lRmlyc3RSZXNw
b25kZXIKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVt
Ym5haWxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1RodW1ibmFpbFZpZXcuaAkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsMTAgQEAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3Mo
OC4wKSkKIEBpbnRlcmZhY2UgX1dLVGh1bWJuYWlsVmlldyA6IE5TVmlldwogCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
TlNSZWN0KWZyYW1lIGZyb21XS1ZpZXc6KFdLVmlldyAqKXdrVmlldzsKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJh
bWUgZnJvbVdLV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKIAogQHByb3BlcnR5IChub25h
dG9taWMpIENHRmxvYXQgc2NhbGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQkocmV2aXNpb24gMjM2NDQxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDkgQEAKIC8vIEZJWE1FOiBXZSBzaG91bGQgc3dp
dGNoIHRvIHRoZSBsb3ctcmVzb2x1dGlvbiBzY2FsZSBpZiBhIHZpZXcgd2UgaGF2ZSBoaWdoLXJl
c29sdXRpb24gdGlsZXMgZm9yIHJlcGFpbnRzLgogCiBAaW1wbGVtZW50YXRpb24gX1dLVGh1bWJu
YWlsVmlldyB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBS
ZXRhaW5QdHI8V0tWaWV3PiBfd2tWaWV3OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IF93a1dlYlZpZXc7CiAgICAgV2ViS2l0
OjpXZWJQYWdlUHJveHkqIF93ZWJQYWdlUHJveHk7CiAKQEAgLTc1LDYgKzc3LDcgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcgogICAgIHJldHVybiBzZWxmOwogfQog
CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBmcm9tV0tWaWV3OihXS1ZpZXcgKil3a1ZpZXcKIHsK
ICAgICBpZiAoIShzZWxmID0gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZV0pKQpAQCAtODcsNiAr
OTAsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyCiAKICAgICBy
ZXR1cm4gc2VsZjsKIH0KK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGZyb21XS1dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyMzY0NDEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNjIsOCArNjIsMTAgQEAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4g
V2ViUHJvY2Vzc1Byb3h5OgogICAgICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PFdLQnJv
d3NpbmdDb250ZXh0SGFuZGxlPihvYmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogCisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
ICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PFdLVHlwZVJlZldyYXBwZXI+KG9iamVjdCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CkBAIC03MiwxNSArNzQsMTkgQEAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gV2Vi
UHJvY2Vzc1Byb3h5OgogICAgICAgICB7CiAjaWYgV0tfQVBJX0VOQUJMRUQKICAgICAgICAgICAg
IGlmIChhdXRvKiBoYW5kbGUgPSBkeW5hbWljX29iamNfY2FzdDxXS0Jyb3dzaW5nQ29udGV4dEhh
bmRsZT4ob2JqZWN0KSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkg
PSBtX3dlYlByb2Nlc3NQcm94eS53ZWJQYWdlKGhhbmRsZS5wYWdlSUQpKQorICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBtX3dlYlByb2Nlc3NQcm94eS53ZWJQYWdlKGhh
bmRsZS5wYWdlSUQpKSB7CisgICAgICAgICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyIF9icm93c2luZ0NvbnRleHRDb250cm9sbGVyRm9yUGFnZVJlZjp0b0FQ
SSh3ZWJQYWdlUHJveHkpXTsKKyAgICAgICAgICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECisgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgcmV0
dXJuIFtOU051bGwgbnVsbF07CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICBpZiAoYXV0byogd3JhcHBl
ciA9IGR5bmFtaWNfb2JqY19jYXN0PFdLVHlwZVJlZldyYXBwZXI+KG9iamVjdCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXS1R5cGVSZWZXcmFwcGVyIGFsbG9jXSBpbml0V2l0
aE9iamVjdDp0b0FQSShtX3dlYlByb2Nlc3NQcm94eS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHRvSW1wbCh3cmFwcGVyLm9iamVjdCkpLmdldCgpKV0pOwotCisgICAgICAgICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIG9i
amVjdDsKICAgICAgICAgfQpAQCAtOTcsMTEgKzEwMywxMiBAQCBSZWZQdHI8T2JqQ09iamVjdEdy
YXBoPiBXZWJQcm9jZXNzUHJveHk6CiAgICAgICAgIGJvb2wgc2hvdWxkVHJhbnNmb3JtT2JqZWN0
KGlkIG9iamVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAgewogI2lmIFdLX0FQSV9FTkFCTEVE
CisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAg
ICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcj4o
b2JqZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgICAgICAgICAgaWYg
KGR5bmFtaWNfb2JqY19jYXN0PFdLVHlwZVJlZldyYXBwZXI+KG9iamVjdCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBA
IC0xMDksMTIgKzExNiwxMiBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBXZWJQcm9jZXNzUHJv
eHk6CiAgICAgICAgIFJldGFpblB0cjxpZD4gdHJhbnNmb3JtT2JqZWN0KGlkIG9iamVjdCkgY29u
c3Qgb3ZlcnJpZGUKICAgICAgICAgewogI2lmIFdLX0FQSV9FTkFCTEVECisgICAgICAgICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgaWYgKGF1dG8q
IGNvbnRyb2xsZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuaGFuZGxlOwot
CiAgICAgICAgICAgICBpZiAoYXV0byogd3JhcHBlciA9IGR5bmFtaWNfb2JqY19jYXN0PFdLVHlw
ZVJlZldyYXBwZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tX
S1R5cGVSZWZXcmFwcGVyIGFsbG9jXSBpbml0V2l0aE9iamVjdDp0b0FQSSh0cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKHRvSW1wbCh3cmFwcGVyLm9iamVjdCkpLmdldCgpKV0pOwotCisgICAgICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogCiAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjcsNyArNDI3LDkg
QEAgcHVibGljOgogCiAgICAgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKnJlbW90ZU9iamVjdFJl
Z2lzdHJ5KCk7CiAKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
IFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcigp
OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlmIC8vIFdLX0FQ
SV9FTkFCTEVECiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtNzQ5LDcgKzc1MSw5IEBA
IHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk+IG1fcmVt
b3RlT2JqZWN0UmVnaXN0cnk7CiAKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogICAgIFJldGFpblB0cjxXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI+IG1fYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlcjsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4g
bV9nZXN0dXJlQ29udHJvbGxlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzc4OSw2ICsz
Nzg5LDcgQEAgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKldlYlZpZXdJbXBsOjpyZQogICAgIHJl
dHVybiBtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5LmdldCgpOwogfQogCitBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgogV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpXZWJWaWV3
SW1wbDo6YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIpCkBAIC0zNzk2LDYgKzM3OTcsNyBAQCBXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgKldlYlZpZXdJbXBsCiAKICAgICByZXR1cm4gbV9icm93c2luZ0NvbnRleHRD
b250cm9sbGVyLmdldCgpOwogfQorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlck1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9V
SUdhbWVwYWRQcm92aWRlck1hYy5tbQkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDggKzQ2LDEwIEBAIFdlYlBhZ2VQcm94eSogVUlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3IKICAgICAgICAgcmV0dXJuICgoV0tXZWJWaWV3ICopcmVzcG9uZGVyKS0+X3BhZ2Uu
Z2V0KCk7CiAjZW5kaWYKIAorICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CiAgICAgaWYgKFtyZXNwb25kZXIgaXNLaW5kT2ZDbGFzczpbV0tWaWV3IGNsYXNzXV0pCiAgICAg
ICAgIHJldHVybiB0b0ltcGwoKChXS1ZpZXcgKilyZXNwb25kZXIpLnBhZ2VSZWYpOworICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgJKHJl
dmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDEwIEBAIGNsYXNzIFdlYlByb2Nlc3NQ
b29sOwogICAgIFdLV2ViVmlldyAqX3dlYlZpZXc7CiB9CiAKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVk
LWRlY2xhcmF0aW9ucyIKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyICpicm93c2luZ0NvbnRleHRDb250cm9sbGVyOworI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHBvcAogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdl
YktpdDo6V2ViUGFnZVByb3h5KiBwYWdlOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBCT09MIGlzQXNzaXN0aW5nTm9kZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0JKHJldmlzaW9uIDIzNjQ0MSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTI0LDggKzUyNCwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpp
bnNwZWN0ZWRWaWV3RnJhCiAgICAgICAgIC8vIHRvcCBwb3NpdGlvbiBmb3IgdGhlIGluc3BlY3Rv
ciB2aWV3IHNpbmNlIHRoZSBiYW5uZXJzIG9ubHkgc3RyZXRjaCBhcyB3aWRlIGFzIHRoZSBpbnNw
ZWN0ZWQgdmlldy4KICAgICAgICAgaW5zcGVjdGVkVmlld0ZyYW1lID0gTlNNYWtlUmVjdCgwLCAw
LCBwYXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRoLCBpbnNwZWN0ZWRWaWV3VG9wKTsKICAgICAg
ICAgQ0dGbG9hdCBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMgPSAwOworICAgICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBpZiAoW2luc3BlY3RlZFZpZXcgaXNL
aW5kT2ZDbGFzczpbV0tWaWV3IGNsYXNzXV0pCiAgICAgICAgICAgICBpbnNldEV4Y2x1ZGluZ0Jh
bm5lcnMgPSAoKFdLVmlldyAqKWluc3BlY3RlZFZpZXcpLl90b3BDb250ZW50SW5zZXQgLSAoKFdL
VmlldyAqKWluc3BlY3RlZFZpZXcpLl90b3RhbEhlaWdodE9mQmFubmVyczsKKyAgICAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGlmIChbaW5zcGVjdGVkVmll
dyBpc0tpbmRPZkNsYXNzOltXS1dlYlZpZXcgY2xhc3NdXSkKICAgICAgICAgICAgIGluc2V0RXhj
bHVkaW5nQmFubmVycyA9ICgoV0tXZWJWaWV3ICopaW5zcGVjdGVkVmlldykuX3RvcENvbnRlbnRJ
bnNldCAtICgoV0tXZWJWaWV3ICopaW5zcGVjdGVkVmlldykuX3RvdGFsSGVpZ2h0T2ZCYW5uZXJz
OwogICAgICAgICBuZXdJbnNwZWN0b3JWaWV3RnJhbWUgPSBOU01ha2VSZWN0KHBhcmVudFdpZHRo
IC0gaW5zcGVjdG9yV2lkdGgsIDAsIGluc3BlY3RvcldpZHRoLCBOU0hlaWdodChwYXJlbnRCb3Vu
ZHMpIC0gaW5zZXRFeGNsdWRpbmdCYW5uZXJzKTsKQEAgLTU0Myw4ICs1NDUsMTAgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYQogICAgICAgICAvLyB0b3AgcG9zaXRp
b24gZm9yIHRoZSBpbnNwZWN0b3IgdmlldyBzaW5jZSB0aGUgYmFubmVycyBvbmx5IHN0cmV0Y2gg
YXMgd2lkZSBhcyB0aGUgaW5zcGVjdGVkIHZpZXcuCiAgICAgICAgIGluc3BlY3RlZFZpZXdGcmFt
ZSA9IE5TTWFrZVJlY3QoaW5zcGVjdG9yV2lkdGgsIDAsIHBhcmVudFdpZHRoIC0gaW5zcGVjdG9y
V2lkdGgsIGluc3BlY3RlZFZpZXdUb3ApOwogICAgICAgICBDR0Zsb2F0IGluc2V0RXhjbHVkaW5n
QmFubmVycyA9IDA7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CiAgICAgICAgIGlmIChbaW5zcGVjdGVkVmlldyBpc0tpbmRPZkNsYXNzOltXS1ZpZXcgY2xhc3Nd
XSkKICAgICAgICAgICAgIGluc2V0RXhjbHVkaW5nQmFubmVycyA9ICgoV0tWaWV3ICopaW5zcGVj
dGVkVmlldykuX3RvcENvbnRlbnRJbnNldCAtICgoV0tWaWV3ICopaW5zcGVjdGVkVmlldykuX3Rv
dGFsSGVpZ2h0T2ZCYW5uZXJzOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKICAgICAgICAgaWYgKFtpbnNwZWN0ZWRWaWV3IGlzS2luZE9mQ2xhc3M6W1dLV2ViVmll
dyBjbGFzc11dKQogICAgICAgICAgICAgaW5zZXRFeGNsdWRpbmdCYW5uZXJzID0gKChXS1dlYlZp
ZXcgKilpbnNwZWN0ZWRWaWV3KS5fdG9wQ29udGVudEluc2V0IC0gKChXS1dlYlZpZXcgKilpbnNw
ZWN0ZWRWaWV3KS5fdG90YWxIZWlnaHRPZkJhbm5lcnM7CiAgICAgICAgIG5ld0luc3BlY3RvclZp
ZXdGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgaW5zcGVjdG9yV2lkdGgsIE5TSGVpZ2h0KHBhcmVu
dEJvdW5kcykgLSBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMpOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyMzY0
NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01MDUsOCArNTA1LDEwIEBAIFJlZlB0cjxPYmpDT2JqZWN0R3Jh
cGg+IFdlYlByb2Nlc3M6OnRyYW4KICAgICAgICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZT4ob2JqZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKIAorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICAgICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmpl
Y3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQpAQCAtNTIxLDggKzUyMywxMCBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBo
PiBXZWJQcm9jZXNzOjp0cmFuCiAgICAgICAgICAgICAgICAgcmV0dXJuIFtOU051bGwgbnVsbF07
CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgICAgICAgICBpZiAoYXV0byogd3JhcHBlciA9IGR5bmFtaWNfb2JqY19j
YXN0PFdLVHlwZVJlZldyYXBwZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFk
b3B0TlMoW1tXS1R5cGVSZWZXcmFwcGVyIGFsbG9jXSBpbml0V2l0aE9iamVjdDp0b0FQSShtX3dl
YlByb2Nlc3MudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh0b0ltcGwod3JhcHBlci5vYmplY3Qp
KS5nZXQoKSldKTsKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgICAgICB9CkBAIC01NDIs
OCArNTQ2LDEwIEBAIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IFdlYlByb2Nlc3M6OnRyYW4KICAg
ICAgICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
ICAgICAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8V0tUeXBlUmVmV3JhcHBlcj4ob2JqZWN0KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogI2VuZGlmCiAKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTU1NSw4ICs1NjEsMTAgQEAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gV2ViUHJvY2Vzczo6
dHJhbgogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBkeW5hbWljX29iamNfY2Fz
dDxXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI+KG9iamVjdCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuaGFuZGxlOwogCisgICAgICAgICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgaWYgKGF1dG8q
IHdyYXBwZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmplY3QpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tUeXBlUmVmV3JhcHBlciBhbGxvY10g
aW5pdFdpdGhPYmplY3Q6dG9BUEkodHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh0b0ltcGwod3Jh
cHBlci5vYmplY3QpKS5nZXQoKSldKTsKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350739</attachid>
            <date>2018-09-24 22:49:10 -0700</date>
            <delta_ts>2018-09-27 15:16:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189850-20180924224910.patch</filename>
            <type>text/plain</type>
            <size>44874</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE4LTA5LTI0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGVwcmVjYXRlIE9i
akMgU1BJIGluIERlcHJlY2F0ZWQgWGNvZGUgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTg1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAg
ICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9tYWMvT2Jq
Q09iamVjdEdyYXBoLm1tOgorICAgICAgICAoV2ViS2l0Ojp0eXBlRnJvbU9iamVjdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6
T2JqQ09iamVjdEdyYXBoOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgIChkaWRTdGFydFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbik6CisgICAgICAgIChkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbE5hdmlnYXRpb24pOgorICAgICAgICAoZGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbik6CisgICAgICAgIChkaWRDb21taXROYXZpZ2F0aW9uKToKKyAgICAgICAgKGRpZEZp
bmlzaE5hdmlnYXRpb24pOgorICAgICAgICAoZGlkRmFpbE5hdmlnYXRpb24pOgorICAgICAgICAo
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAocHJvY2Vzc0RpZENyYXNoKToK
KyAgICAgICAgKHNldFVwUGFnZVBvbGljeUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVs
ZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dFBvbGljeURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbToKKyAgICAgICAgKC1bV0tO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOl0pOgorICAgICAgICAoLVtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXIgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0p
OgorICAgICAgICAoLVtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgdXNlQ3Jl
ZGVudGlhbDpmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpdKToKKyAgICAgICAgKC1bV0tOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTpdKToKKyAgICAgICAgKC1bV0tOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyIHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENo
YWxsZW5nZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRh
dGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRhdGFJbnRl
cm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAg
ICAoZGlkQ3JlYXRlQ29ubmVjdGlvbik6CisgICAgICAgIChnZXRJbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGEpOgorICAgICAgICAoZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRh
dGEpOgorICAgICAgICAoZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKGRpZFBl
cmZvcm1TZXJ2ZXJSZWRpcmVjdCk6CisgICAgICAgIChkaWRVcGRhdGVIaXN0b3J5VGl0bGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUeXBlUmVmV3JhcHBlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3Lmg6CisgICAgICAgIChXS19DTEFTU19ERVBS
RUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVGh1bWJuYWlsVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1
bWJuYWlsVmlldy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtV2ViUGFnZVByb3h5Rm9yR2Ft
ZXBhZElucHV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMpOgorCiAyMDE4
LTA5LTI0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVj
dC5tbQkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDkgQEAgdm9pZCogT2JqZWN0
OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogI2VuZGlmCiAKICAgICBjYXNlIFR5cGU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOgorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogICAgICAgICB3cmFwcGVyID0gYWxsb2NhdGVXS09iamVjdChbV0tOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHNlbGZdLCBzaXplKTsKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpB
dXRvbWF0aW9uU2Vzc2lvbjoKQEAgLTI1Miw3ICsyNTQsOSBAQCB2b2lkKiBPYmplY3Q6Om5ld09i
amVjdChzaXplX3Qgc2l6ZSwgVHlwCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpO
YXZpZ2F0aW9uRGF0YToKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICAgICAgd3JhcHBlciA9IFtXS05hdmlnYXRpb25EYXRhIGFsbG9jXTsKKyAgICAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBUeXBlOjpOYXZpZ2F0aW9uUmVzcG9uc2U6CkBAIC0yNjYsNyArMjcwLDkgQEAgdm9pZCog
T2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogI2VuZGlmCiAKICAgICBjYXNlIFR5
cGU6OlBhZ2VHcm91cDoKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICAgICAgd3JhcHBlciA9IFtXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG9jXTsKKyAg
ICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBUeXBlOjpTZWN1cml0eU9yaWdpbjoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTMzLDggKzEzMywxMCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmpDVHlwZT4gdHlwZUZyb21P
CiAjaWYgV0tfQVBJX0VOQUJMRUQKICAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8V0tCcm93c2lu
Z0NvbnRleHRIYW5kbGU+KG9iamVjdCkpCiAgICAgICAgIHJldHVybiBPYmpDVHlwZTo6V0tCcm93
c2luZ0NvbnRleHRIYW5kbGU7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8V0tUeXBlUmVmV3JhcHBlcj4ob2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIE9iakNUeXBlOjpXS1R5cGVSZWZXcmFwcGVyOworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlmCiAKICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMTk2LDcgKzE5OCw5IEBAIHZvaWQgT2JqQ09iamVjdEdyYXBoOjplbmNvZGUoSVBD
OjpFbmNvZGUKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE9iakNUeXBlOjpXS1R5cGVSZWZX
cmFwcGVyOgorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
ICAgICBVc2VyRGF0YTo6ZW5jb2RlKGVuY29kZXIsIHRvSW1wbChzdGF0aWNfY2FzdDxXS1R5cGVS
ZWZXcmFwcGVyICo+KG9iamVjdCkub2JqZWN0KSk7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICBicmVhazsKICNlbmRpZgogCkBAIC0zMTcsNyArMzIx
LDkgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZQogICAgICAgICBp
ZiAoIVVzZXJEYXRhOjpkZWNvZGUoZGVjb2Rlciwgb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
ICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tUeXBlUmVmV3JhcHBlciBhbGxvY10gaW5pdFdp
dGhPYmplY3Q6dG9BUEkob2JqZWN0LmdldCgpKV0pOworICAgICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29u
dGV4dExvYWREZWxlZ2F0ZTsKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVn
YXRlOwogCi1XS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCitXS19D
TEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldyIsIG1hY29zKDEwLjEw
LCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIFdLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciA6IE5TT2JqZWN0CiAKICNwcmFnbWEgbWFyayBEZWxlZ2F0ZXMK
QEAgLTQ3LDggKzQ3LDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4
LgogCiAjcHJhZ21hIG1hcmsgTG9hZGluZwogCi0rICh2b2lkKXJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2w6KE5TU3RyaW5nICopc2NoZW1lOwotKyAodm9pZCl1bnJlZ2lzdGVyU2NoZW1l
Rm9yQ3VzdG9tUHJvdG9jb2w6KE5TU3RyaW5nICopc2NoZW1lOworKyAodm9pZClyZWdpc3RlclNj
aGVtZUZvckN1c3RvbVByb3RvY29sOihOU1N0cmluZyAqKXNjaGVtZSBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJXS1VSTFNjaGVtZUhhbmRsZXIiLCBtYWNvcygxMC4xMCwgV0tf
TUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKKysgKHZvaWQpdW5yZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sOihOU1N0cmluZyAqKXNjaGVtZSBXS19BUElfREVQUkVDQVRFRF9X
SVRIX1JFUExBQ0VNRU5UKCJXS1VSTFNjaGVtZUhhbmRsZXIiLCBtYWNvcygxMC4xMCwgV0tfTUFD
X1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIAogLyogTG9hZCBhIHJlcXVlc3QuIFRoaXMg
aXMgb25seSB2YWxpZCBmb3IgcmVxdWVzdHMgb2Ygbm9uLWZpbGU6IFVSTHMuIFBhc3NpbmcgYQog
ICAgZmlsZTogVVJMIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLiAqLwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCwxMSArODAsMTMgQEAgTlNTdHJpbmcgKiBjb25zdCBXS0FjdGlvbkNh
blNob3dNSU1FVHlwZQogICAgIFdlYWtPYmpDUHRyPGlkIDxXS0Jyb3dzaW5nQ29udGV4dFBvbGlj
eURlbGVnYXRlPj4gX3BvbGljeURlbGVnYXRlOwogfQogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogc3RhdGljIEhhc2hNYXA8V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBfX3Vu
c2FmZV91bnJldGFpbmVkIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqPiYgYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlck1hcCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBfX3Vuc2FmZV91bnJldGFpbmVkIFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqPj4gYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcDsKICAgICBy
ZXR1cm4gYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcDsKIH0KK0FMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogCiAtICh2b2lkKWRlYWxsb2MKIHsKQEAgLTMxOSw3ICszMjEsOSBA
QCAtICh2b2lkKXNldFBhZ2Vab29tOihDR0Zsb2F0KXBhZ2Vab29tCiAKIHN0YXRpYyB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25S
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3NpbmdDb250
ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87
CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBsb2FkRGVs
ZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAo
W2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZDopXSkKQEAgLTMyOCw3ICszMzIsOSBA
QCBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvCiAKIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbihXS1BhZ2VS
ZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVn
YXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkOildKQpAQCAtMzM3LDcgKzM0Myw5IEBAIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclAKIAogc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lv
bmFsTmF2aWdhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS0Vycm9yUmVm
IGVycm9yLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Cisg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5n
Q29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJ
bmZvOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9h
ZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAg
aWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0Nv
bnRleHRDb250cm9sbGVyOmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6KV0pCkBAIC0z
NDYsNyArMzU0LDkgQEAgc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgog
CiBzdGF0aWMgdm9pZCBkaWRDb21taXROYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05hdmln
YXRpb25SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3Np
bmdDb250ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVu
dEluZm87CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBs
b2FkRGVsZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAg
ICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXJEaWRDb21taXRMb2FkOildKQpAQCAtMzU1LDcgKzM2NSw5IEBAIHN0
YXRpYyB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV0tQYWdlUmUKIAogc3RhdGljIHZvaWQgZGlk
RmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2Jy
aWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJv
d3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVy
RGlkRmluaXNoTG9hZDopXSkKQEAgLTM2NCw3ICszNzYsOSBAQCBzdGF0aWMgdm9pZCBkaWRGaW5p
c2hOYXZpZ2F0aW9uKFdLUGFnZVJlCiAKIHN0YXRpYyB2b2lkIGRpZEZhaWxOYXZpZ2F0aW9uKFdL
UGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZWYsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJl
ZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJp
ZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBicm93
c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2xvYWREZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6
ZGlkRmFpbExvYWRXaXRoRXJyb3I6KV0pCkBAIC0zNzMsNyArMzg3LDkgQEAgc3RhdGljIHZvaWQg
ZGlkRmFpbE5hdmlnYXRpb24oV0tQYWdlUmVmIAogCiBzdGF0aWMgYm9vbCBjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdLUGFnZVJlZiBwYWdlLCBXS1Byb3RlY3Rpb25TcGFj
ZVJlZiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CisgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5nQ29udGV4
dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwor
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9hZERlbGVn
YXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFts
b2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRD
b250cm9sbGVyOmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6KV0pCkBAIC0z
ODQsNyArNDAwLDkgQEAgc3RhdGljIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlYwog
CiBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV0tQYWdlUmVm
IHBhZ2UsIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJvd3NpbmdDb250
ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXSkKQEAgLTM5Myw3ICs0MTEsOSBAQCBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsCiAKIHN0YXRpYyB2b2lkIHByb2Nlc3NE
aWRDcmFzaChXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gYnJvd3NpbmdDb250
ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87
CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBsb2FkRGVs
ZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAo
W2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJXZWJQcm9jZXNzRGlkQ3Jhc2g6KV0pCkBAIC00NTMsNyArNDczLDkgQEAgc3Rh
dGljIHZvaWQgc2V0VXBQYWdlUG9saWN5Q2xpZW50KFdLQnJvdwogCiAgICAgcG9saWN5Q2xpZW50
LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBbXShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBX
S0ZyYW1lUmVmIG9yaWdpbmF0aW5nRnJhbWUsIFdLVVJMUmVxdWVzdFJlZiBvcmlnaW5hbFJlcXVl
c3QsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlz
dGVuZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKICAgICB7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGF1
dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJpZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciAqKWNsaWVudEluZm87CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgICAgICBhdXRvIHBvbGljeURlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fcG9saWN5
RGVsZWdhdGUuZ2V0KCk7CiAKICAgICAgICAgaWYgKFtwb2xpY3lEZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKQEAgLTQ3OCw3ICs1MDAs
OSBAQCBzdGF0aWMgdm9pZCBzZXRVcFBhZ2VQb2xpY3lDbGllbnQoV0tCcm93CiAKICAgICBwb2xp
Y3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uID0gW10oV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlw
ZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1
dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU3RyaW5nUmVmIGZyYW1lTmFtZSwgV0tG
cmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiAgICAgeworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBX
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgYXV0byBwb2xpY3lEZWxlZ2F0ZSA9
IGJyb3dzaW5nQ29udGV4dC0+X3BvbGljeURlbGVnYXRlLmdldCgpOwogCiAgICAgICAgIGlmIChb
cG9saWN5RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRl
eHRDb250cm9sbGVyOmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbjpkZWNpc2lvbkhhbmRs
ZXI6KV0pIHsKQEAgLTQ5OCw3ICs1MjIsOSBAQCBzdGF0aWMgdm9pZCBzZXRVcFBhZ2VQb2xpY3lD
bGllbnQoV0tCcm93CiAKICAgICBwb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Ug
PSBbXShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tVUkxSZXNwb25zZVJlZiBy
ZXNwb25zZSwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBX
S0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKICAgICB7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJpZGdl
IFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBhdXRvIHBvbGljeURlbGVnYXRl
ID0gYnJvd3NpbmdDb250ZXh0LT5fcG9saWN5RGVsZWdhdGUuZ2V0KCk7CiAKICAgICAgICAgaWYg
KFtwb2xpY3lEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXI6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VBY3Rpb246ZGVjaXNpb25IYW5k
bGVyOildKSB7CkBAIC01OTEsNiArNjE3LDcgQEAgKyAoV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyICopX2Jyb3dzaQogCiBAZW5kCiAKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIChQcml2YXRl
KQogCiAtIChXS1BhZ2VSZWYpX3BhZ2VSZWYKQEAgLTcxMyw1ICs3NDAsNiBAQCAtIChCT09MKV93
ZWJQcm9jZXNzSXNSZXNwb25zaXZlCiB9CiAKIEBlbmQKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0
R3JvdXAuaAkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyAr
MzAsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZS5oPgogCi1XS19DTEFTU19BVkFJTEFCTEUobWFj
b3N4KDEwLjEwKSwgaW9zKDguMCkpCitXS19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1F
TlQoIldLVXNlckNvbnRlbnRDb250cm9sbGVyIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBp
b3MoOC4wLCBXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRHcm91cCA6
IE5TT2JqZWN0CiAKIC0gKGlkKWluaXRXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlm
aWVyOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdD
b250ZXh0R3JvdXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAubW0JKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNiArMTc1LDcgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlP
YmplY3QKIAogQGVuZAogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQGlt
cGxlbWVudGF0aW9uIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgKFByaXZhdGUpCiAKIC0gKFdLUGFn
ZUdyb3VwUmVmKV9wYWdlR3JvdXBSZWYKQEAgLTE4Myw1ICsxODQsNiBAQCAtIChXS1BhZ2VHcm91
cFJlZilfcGFnZUdyb3VwUmVmCiB9CiAKIEBlbmQKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0Nv
bnRleHRHcm91cEludGVybmFsLmgJKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBs
YXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8V2ViUGFnZUdyb3VwPiB7CisgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS0Jy
b3dzaW5nQ29udGV4dEdyb3VwOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmgJ
KHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dEhpc3RvcnlEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGF0YS5oPgogCitXS19DTEFTU19ERVBSRUNB
VEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLQmFja0ZvcndhcmRMaXN0IiwgbWFjb3MoMTAuMTAsIFdL
X01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSkKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29u
dGV4dEhpc3RvcnlEZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKIEBjbGFzcyBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW07CiAKK1dLX0NMQVNTX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZp
Z2F0aW9uRGVsZWdhdGUiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lP
U19UQkEpKQogQHByb3RvY29sIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIDxOU09iamVj
dD4KIEBvcHRpb25hbAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVn
YXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dLQnJvd3NpbmdD
b250ZXh0TG9hZERlbGVnYXRlLmg+CiAKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9u
cyIKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVByaXZhdGUgPFdLQnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPgogQG9wdGlvbmFsCiAKQEAgLTM0LDMgKzM2LDQgQEAK
IC0gKHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcldlYlByb2Nlc3NEaWRDcmFzaDooV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyOwogCiBAZW5kCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRl
LmgJKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDYgKzQ3LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFdLUG9saWN5RGVjaQogCiB0
eXBlZGVmIHZvaWQgKF5XS1BvbGljeURlY2lzaW9uSGFuZGxlcikoV0tQb2xpY3lEZWNpc2lvbik7
CiAKK1dLX0NMQVNTX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKQog
QHByb3RvY29sIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUgPE5TT2JqZWN0PgogQG9w
dGlvbmFsCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHJldmlz
aW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEF1dGhlbnRpCiAKIH0KIAorV0tfQ0xB
U1NfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS05hdmlnYXRpb25EZWxlZ2F0ZSIsIG1h
Y29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNl
IFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IFdLT2JqZWN0CiBAZW5kCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbQkocmV2aXNpb24gMjM2NDQxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMsNDIgKzYzLDU0IEBAIC0gKFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYKIAogc3RhdGljIHZvaWQgY2hlY2tDaGFs
bGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlKQogeworICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKFtjaGFsbGVuZ2UgY2xh
c3NdICE9IFtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2xhc3NdKQogICAgICAgICBb
TlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiVGhl
IGNoYWxsZW5nZSB3YXMgbm90IHNlbnQgYnkgdGhlIHJlY2VpdmVyLiJdOworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCiAtICh2b2lkKWNhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlCiB7
CiAgICAgY2hlY2tDaGFsbGVuZ2UoY2hhbGxlbmdlKTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFs
bGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKKyAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21w
bGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246
OkNhbmNlbCk7CiB9CiAKIC0gKHZvaWQpY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxl
bmdlCiB7CiAgICAgY2hlY2tDaGFsbGVuZ2UoY2hhbGxlbmdlKTsKKyAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
KiljaGFsbGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKKyAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIo
KS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlVzZUNyZWRlbnRpYWwpOwogfQogCiAtICh2b2lkKXVzZUNyZWRlbnRpYWw6KE5TVVJM
Q3JlZGVudGlhbCAqKWNyZWRlbnRpYWwgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsKICAgICBjaGVja0NoYWxsZW5n
ZShjaGFsbGVuZ2UpOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiB3ZWJDaGFsbGVuZ2UgPSAo
KFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSkuX3dlYl9hdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIHdlYkNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgV2Vi
Q29yZTo6Q3JlZGVudGlhbChjcmVkZW50aWFsKSk7CiB9CiAKIC0gKHZvaWQpcGVyZm9ybURlZmF1
bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICopY2hhbGxlbmdlCiB7CiAgICAgY2hlY2tDaGFsbGVuZ2UoY2hhbGxlbmdlKTsK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB3ZWJD
aGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwogfQogCiAt
ICh2b2lkKXJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTooTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQogewogICAgIGNoZWNrQ2hhbGxl
bmdlKGNoYWxsZW5nZSk7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIHdlYkNoYWxsZW5nZSA9
ICgoV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlKS5fd2ViX2F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9u
U3BhY2VBbmRDb250aW51ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRhdGEuaAkocmV2aXNpb24gMjM2NDQxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KIAotV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjAp
KQorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS05hdmlnYXRpb24iLCBt
YWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKQogQGludGVyZmFj
ZSBXS05hdmlnYXRpb25EYXRhIDogTlNPYmplY3QKIAogQHByb3BlcnR5IChyZWFkb25seSkgTlNT
dHJpbmcgKnRpdGxlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkRhdGFJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EYXRhSW50ZXJuYWwuaAkocmV2aXNpb24gMjM2
NDQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRh
dGFJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw5IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6Ok5hdmlnYXRp
b25EYXRhPiB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICB1
c2luZyBXcmFwcGVyQ2xhc3MgPSBXS05hdmlnYXRpb25EYXRhOworICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLmgJKHJldmlzaW9uIDIzNjQ0MSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAKIEBlbmQKIAotV0tfQ0xBU1NfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKQorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JF
UExBQ0VNRU5UKCJXS1Byb2Nlc3NQb29sIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3Mo
OC4wLCBXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgV0tQcm9jZXNzR3JvdXAgOiBOU09iamVjdAog
CiAtIChpZClpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOihOU1VSTCAqKWJ1bmRsZVVSTDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
R3JvdXAubW0JKHJldmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsOSBA
QAogCiBzdGF0aWMgdm9pZCBkaWRDcmVhdGVDb25uZWN0aW9uKFdLQ29udGV4dFJlZiwgV0tDb25u
ZWN0aW9uUmVmIGNvbm5lY3Rpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIHByb2Nlc3NHcm91
cCA9IChfX2JyaWRnZSBXS1Byb2Nlc3NHcm91cCAqKWNsaWVudEluZm87CisgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBkZWxlZ2F0ZSA9IHByb2Nlc3NHcm91
cC0+X2RlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHByb2Nlc3NHcm91cDpkaWRDcmVhdGVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
UGx1Z0luOildKQpAQCAtODUsNyArODcsOSBAQCBzdGF0aWMgdm9pZCBzZXRVcENvbm5lY3Rpb25D
bGllbnQoV0tQcm9jCiAKIHN0YXRpYyBXS1R5cGVSZWYgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFs
aXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gcHJvY2Vz
c0dyb3VwID0gKF9fYnJpZGdlIFdLUHJvY2Vzc0dyb3VwICopY2xpZW50SW5mbzsKKyAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBhdXRvIGRlbGVnYXRlID0gcHJvY2Vz
c0dyb3VwLT5fZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IocHJvY2Vzc0dyb3VwV2lsbENyZWF0ZUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NQbHVnSW46KV0pIHsKQEAgLTExNCw3ICsxMTgsOSBAQCBzdGF0aWMgdm9pZCBkaWROYXZp
Z2F0ZVdpdGhOYXZpZ2F0aW9uRGF0CiAgICAgaWYgKCFXZWJLaXQ6OnRvSW1wbChmcmFtZVJlZikt
PmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAgICAgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpjb250
cm9sbGVyID0gW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfYnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlckZvclBhZ2VSZWY6cGFnZVJlZl07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgYXV0byBoaXN0b3J5RGVsZWdhdGUgPSBjb250cm9sbGVyLT5faGlzdG9y
eURlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtoaXN0b3J5RGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRpZE5hdmlnYXRlV2l0
aE5hdmlnYXRpb25EYXRhOildKQpAQCAtMTI2LDcgKzEzMiw5IEBAIHN0YXRpYyB2b2lkIGRpZFBl
cmZvcm1DbGllbnRSZWRpcmVjdChXS0MKICAgICBpZiAoIVdlYktpdDo6dG9JbXBsKGZyYW1lUmVm
KS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmNv
bnRyb2xsZXIgPSBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIF9icm93c2luZ0NvbnRleHRD
b250cm9sbGVyRm9yUGFnZVJlZjpwYWdlUmVmXTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICBhdXRvIGhpc3RvcnlEZWxlZ2F0ZSA9IGNvbnRyb2xsZXItPl9oaXN0
b3J5RGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2hpc3RvcnlEZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6ZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0RnJvbVVSTDp0b1VSTDopXSkKQEAgLTEzOCw3ICsxNDYsOSBAQCBzdGF0aWMg
dm9pZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV0tDCiAgICAgaWYgKCFXZWJLaXQ6OnRvSW1w
bChmcmFtZVJlZiktPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICpjb250cm9sbGVyID0gW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlckZvclBhZ2VSZWY6cGFnZVJlZl07CisgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byBoaXN0b3J5RGVsZWdhdGUgPSBjb250cm9s
bGVyLT5faGlzdG9yeURlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtoaXN0b3J5RGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyOmRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdEZyb21VUkw6dG9VUkw6KV0pCkBAIC0xNTAsNyArMTYwLDkg
QEAgc3RhdGljIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKFdLQ29udAogICAgIGlmICghV2Vi
S2l0Ojp0b0ltcGwoZnJhbWVSZWYpLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqY29udHJvbGxlciA9IFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgX2Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJGb3JQYWdlUmVmOnBhZ2VSZWZdOworICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF1dG8gaGlzdG9yeURlbGVnYXRl
ID0gY29udHJvbGxlci0+X2hpc3RvcnlEZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlmIChbaGlzdG9y
eURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlcjpkaWRVcGRhdGVIaXN0b3J5VGl0bGU6Zm9yVVJMOildKQpAQCAtMjA3LDYgKzIxOSw3
IEBAIC0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxXS1Byb2Nlc3NHcm91cEQKIAogQGVuZAogCitB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQGltcGxlbWVudGF0aW9uIFdLUHJv
Y2Vzc0dyb3VwIChQcml2YXRlKQogCiAtIChXS0NvbnRleHRSZWYpX2NvbnRleHRSZWYKQEAgLTIy
OSw1ICsyNDIsNiBAQCAtIChXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgKilfZ2VvbG9jYXRpCiAj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiBAZW5kCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUeXBlUmVmV3JhcHBlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1R5cGVSZWZXcmFwcGVyLmgJKHJldmlz
aW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1R5cGVS
ZWZXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQmFzZS5oPgogCi1XS19D
TEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCitXS19DTEFTU19ERVBSRUNB
VEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLT2JqZWN0IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEp
LCBpb3MoOC4wLCBXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgV0tUeXBlUmVmV3JhcHBlciA6IE5T
T2JqZWN0CiAKIC0gKGlkKWluaXRXaXRoT2JqZWN0OihXS1R5cGVSZWYpb2JqZWN0OwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlldy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXcuaAkocmV2aXNpb24gMjM2
NDQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiBAY2xhc3MgV0tQcm9jZXNzR3JvdXA7CiBAY2xh
c3MgV0tWaWV3RGF0YTsKIAotV0tfRVhQT1JUCitXS19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQ
TEFDRU1FTlQoIldLV2ViVmlldyIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwg
V0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIFdLVmlldyA6IE5TVmlldyA8TlNUZXh0SW5wdXRDbGll
bnQ+IHsKIEBwcml2YXRlCiAgICAgV0tWaWV3RGF0YSAqX2RhdGE7CkBAIC00Nyw3ICs0NywxMCBA
QCBXS19FWFBPUlQKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzR3Jv
dXA6KFdLUHJvY2Vzc0dyb3VwICopcHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOihX
S0Jyb3dzaW5nQ29udGV4dEdyb3VwICopYnJvd3NpbmdDb250ZXh0R3JvdXA7CiAtIChpZClpbml0
V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc0dyb3VwOihXS1Byb2Nlc3NHcm91cCAqKXBy
b2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDooV0tCcm93c2luZ0NvbnRleHRHcm91cCAq
KWJyb3dzaW5nQ29udGV4dEdyb3VwIHJlbGF0ZWRUb1ZpZXc6KFdLVmlldyAqKXJlbGF0ZWRWaWV3
OwogCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiBAcHJvcGVydHkocmVhZG9u
bHkpIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
cjsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFC
TEVECiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMzOCwxMCArMTMzOCwxMiBA
QCAtIChVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CiAgICAgcmV0dXJuIF9zY3JvbGxWaWV3Lmdl
dCgpOwogfQogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogLSAoV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyICopYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcgogewogICAg
IHJldHVybiBbX2NvbnRlbnRWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdOwogfQorQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKEJPT0wpYmVjb21lRmlyc3RSZXNw
b25kZXIKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVt
Ym5haWxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1RodW1ibmFpbFZpZXcuaAkocmV2aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsMTAgQEAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3Mo
OC4wKSkKIEBpbnRlcmZhY2UgX1dLVGh1bWJuYWlsVmlldyA6IE5TVmlldwogCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
TlNSZWN0KWZyYW1lIGZyb21XS1ZpZXc6KFdLVmlldyAqKXdrVmlldzsKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJh
bWUgZnJvbVdLV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKIAogQHByb3BlcnR5IChub25h
dG9taWMpIENHRmxvYXQgc2NhbGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQkocmV2aXNpb24gMjM2NDQxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDkgQEAKIC8vIEZJWE1FOiBXZSBzaG91bGQgc3dp
dGNoIHRvIHRoZSBsb3ctcmVzb2x1dGlvbiBzY2FsZSBpZiBhIHZpZXcgd2UgaGF2ZSBoaWdoLXJl
c29sdXRpb24gdGlsZXMgZm9yIHJlcGFpbnRzLgogCiBAaW1wbGVtZW50YXRpb24gX1dLVGh1bWJu
YWlsVmlldyB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBS
ZXRhaW5QdHI8V0tWaWV3PiBfd2tWaWV3OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IF93a1dlYlZpZXc7CiAgICAgV2ViS2l0
OjpXZWJQYWdlUHJveHkqIF93ZWJQYWdlUHJveHk7CiAKQEAgLTc1LDYgKzc3LDcgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcgogICAgIHJldHVybiBzZWxmOwogfQog
CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBmcm9tV0tWaWV3OihXS1ZpZXcgKil3a1ZpZXcKIHsK
ICAgICBpZiAoIShzZWxmID0gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZV0pKQpAQCAtODcsNiAr
OTAsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyCiAKICAgICBy
ZXR1cm4gc2VsZjsKIH0KK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGZyb21XS1dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtODcyLDYgKzg3Miw3IEBAIC0g
KE5TQXJyYXkgKiluYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWQKIC0gKHZvaWQpbWF5YmVJbnN0
YWxsSWNvbkxvYWRpbmdDbGllbnQKIHsKICNpZiBXS19BUElfRU5BQkxFRAorICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQg
OiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBl
eHBsaWNpdCBJY29uTG9hZGluZ0NsaWVudChXS1ZpZXcgKndrVmlldykKQEAgLTkwNyw2ICs5MDgs
NyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAKICAgICAgICAgV0tW
aWV3ICptX3drVmlldzsKICAgICB9OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogCiAgICAgaWYgKFtzZWxmIHJlc3BvbmRzVG9TZWxlY3RvcjpJY29uTG9hZGluZ0NsaWVu
dDo6ZGVsZWdhdGVTZWxlY3RvcigpXSkKICAgICAgICAgX2RhdGEtPl9pbXBsLT5wYWdlKCkuc2V0
SWNvbkxvYWRpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oc2Vs
ZikpOwpAQCAtMTExOCw2ICsxMTIwLDcgQEAgLSAodm9pZClkcmFnZ2luZ1Nlc3Npb246KE5TRHJh
Z2dpbmdTZXNzaQogCiBAZW5kCiAKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CiBAaW1wbGVtZW50YXRpb24gV0tWaWV3IChQcml2YXRlKQogCiAtICh2b2lkKXNhdmVCYWNrRm9y
d2FyZFNuYXBzaG90Rm9yQ3VycmVudEl0ZW0KQEAgLTE2NzUsNSArMTY3OCw2IEBAIC0gKEJPT0wp
X3VzZVN5c3RlbUFwcGVhcmFuY2UKIH0KIAogQGVuZAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQkocmV2
aXNpb24gMjM2NDQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyLDggKzYyLDEwIEBAIFJlZlB0cjxP
YmpDT2JqZWN0R3JhcGg+IFdlYlByb2Nlc3NQcm94eToKICAgICAgICAgICAgIGlmIChkeW5hbWlj
X29iamNfY2FzdDxXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZT4ob2JqZWN0KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KICAgICAgICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZX
cmFwcGVyPihvYmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtNzIsMTUgKzc0LDE5IEBAIFJlZlB0cjxPYmpD
T2JqZWN0R3JhcGg+IFdlYlByb2Nlc3NQcm94eToKICAgICAgICAgewogI2lmIFdLX0FQSV9FTkFC
TEVECiAgICAgICAgICAgICBpZiAoYXV0byogaGFuZGxlID0gZHluYW1pY19vYmpjX2Nhc3Q8V0tC
cm93c2luZ0NvbnRleHRIYW5kbGU+KG9iamVjdCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0
byogd2ViUGFnZVByb3h5ID0gbV93ZWJQcm9jZXNzUHJveHkud2ViUGFnZShoYW5kbGUucGFnZUlE
KSkKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogd2ViUGFnZVByb3h5ID0gbV93ZWJQcm9jZXNz
UHJveHkud2ViUGFnZShoYW5kbGUucGFnZUlEKSkgeworICAgICAgICAgICAgICAgICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ckZvclBhZ2VSZWY6dG9BUEkod2ViUGFnZVByb3h5KV07CisgICAgICAgICAgICAgICAgICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIHJldHVybiBbTlNOdWxsIG51bGxdOwogICAgICAgICAgICAgfQogCisgICAg
ICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihv
YmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tUeXBlUmVmV3JhcHBl
ciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6dG9BUEkobV93ZWJQcm9jZXNzUHJveHkudHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh0b0ltcGwod3JhcHBlci5vYmplY3QpKS5nZXQoKSldKTsKLQorICAg
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKICAgICAg
ICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgICAgIH0KQEAgLTk3LDExICsxMDMsMTIgQEAgUmVm
UHRyPE9iakNPYmplY3RHcmFwaD4gV2ViUHJvY2Vzc1Byb3h5OgogICAgICAgICBib29sIHNob3Vs
ZFRyYW5zZm9ybU9iamVjdChpZCBvYmplY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgICAgIHsKICNp
ZiBXS19BUElfRU5BQkxFRAorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KICAgICAgICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0K
ICAgICAgICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmpl
Y3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQpAQCAtMTA5LDEyICsxMTYsMTIgQEAgUmVmUHRyPE9iakNPYmplY3RHcmFw
aD4gV2ViUHJvY2Vzc1Byb3h5OgogICAgICAgICBSZXRhaW5QdHI8aWQ+IHRyYW5zZm9ybU9iamVj
dChpZCBvYmplY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgICAgIHsKICNpZiBXS19BUElfRU5BQkxF
RAorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAg
ICAgICAgIGlmIChhdXRvKiBjb250cm9sbGVyID0gZHluYW1pY19vYmpjX2Nhc3Q8V0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyPihvYmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiBjb250
cm9sbGVyLmhhbmRsZTsKLQogICAgICAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBkeW5hbWlj
X29iamNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmplY3QpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBhZG9wdE5TKFtbV0tUeXBlUmVmV3JhcHBlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6dG9B
UEkodHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh0b0ltcGwod3JhcHBlci5vYmplY3QpKS5nZXQo
KSldKTsKLQorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAj
ZW5kaWYKIAogICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjM2NDQxKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpA
QCAtNDI3LDcgKzQyNyw5IEBAIHB1YmxpYzoKIAogICAgIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
ICpyZW1vdGVPYmplY3RSZWdpc3RyeSgpOwogCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KICAgICBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmJyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIoKTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAg
LTc0OSw3ICs3NTEsOSBAQCBwcml2YXRlOgogCiAgICAgUmV0YWluUHRyPF9XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5PiBtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCisgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBSZXRhaW5QdHI8V0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyPiBtX2Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI7CisgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI+IG1fZ2VzdHVyZUNvbnRyb2xsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjM2NDQxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM3ODksNiArMzc4OSw3IEBAIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpXZWJWaWV3
SW1wbDo6cmUKICAgICByZXR1cm4gbV9yZW1vdGVPYmplY3RSZWdpc3RyeS5nZXQoKTsKIH0KIAor
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIFdLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciAqV2ViVmlld0ltcGw6OmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIoKQogewogICAg
IGlmICghbV9icm93c2luZ0NvbnRleHRDb250cm9sbGVyKQpAQCAtMzc5Niw2ICszNzk3LDcgQEAg
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpXZWJWaWV3SW1wbAogCiAgICAgcmV0dXJuIG1f
YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5nZXQoKTsKIH0KK0FMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlH
YW1lcGFkUHJvdmlkZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0JKHJldmlzaW9uIDIzNjQ0MSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVy
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0NiwxMCBAQCBXZWJQYWdlUHJveHkqIFVJ
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9yCiAgICAgICAgIHJldHVybiAoKFdLV2ViVmlldyAqKXJl
c3BvbmRlciktPl9wYWdlLmdldCgpOwogI2VuZGlmCiAKKyAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogICAgIGlmIChbcmVzcG9uZGVyIGlzS2luZE9mQ2xhc3M6W1dLVmll
dyBjbGFzc11dKQogICAgICAgICByZXR1cm4gdG9JbXBsKCgoV0tWaWV3ICopcmVzcG9uZGVyKS5w
YWdlUmVmKTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIHJl
dHVybiBudWxscHRyOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5oCShyZXZpc2lvbiAyMzY0NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSwxMCBAQCBj
bGFzcyBXZWJQcm9jZXNzUG9vbDsKICAgICBXS1dlYlZpZXcgKl93ZWJWaWV3OwogfQogCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlcjsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZTsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgQk9PTCBpc0Fzc2lzdGluZ05vZGU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQkocmV2aXNpb24gMjM2NDQxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE3Miw3ICsxNzIsOSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
Q0dSZWN0KWZyCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0NvbnRlbnRWaWV3IHsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGFnZUNsaWVudEltcGw+IF9wYWdlQ2xpZW50OworICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgUmV0YWluUHRyPFdLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlcj4gX2Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI7CisgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBfcm9vdENvbnRlbnRW
aWV3OwogICAgIFJldGFpblB0cjxVSVZpZXc+IF9maXhlZENsaXBwaW5nVmlldzsKQEAgLTI3NSw2
ICsyNzcsNyBAQCAtICh2b2lkKXdpbGxNb3ZlVG9XaW5kb3c6KFVJV2luZG93ICopbmV3CiAgICAg
fQogfQogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogLSAoV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyICopYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcgogewogICAgIGlm
ICghX2Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIpCkBAIC0yODIsNiArMjg1LDcgQEAgLSAoV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyICopYnJvd3NpbgogCiAgICAgcmV0dXJuIF9icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLmdldCgpOwogfQorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAKIC0gKFdLUGFnZVJlZilfcGFnZVJlZgogewpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQkocmV2aXNpb24g
MjM2NDQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MjQsOCArNTI0LDEwIEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6Omluc3BlY3RlZFZpZXdGcmEKICAgICAgICAgLy8gdG9wIHBvc2l0aW9uIGZvciB0
aGUgaW5zcGVjdG9yIHZpZXcgc2luY2UgdGhlIGJhbm5lcnMgb25seSBzdHJldGNoIGFzIHdpZGUg
YXMgdGhlIGluc3BlY3RlZCB2aWV3LgogICAgICAgICBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBOU01h
a2VSZWN0KDAsIDAsIHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lkdGgsIGluc3BlY3RlZFZpZXdU
b3ApOwogICAgICAgICBDR0Zsb2F0IGluc2V0RXhjbHVkaW5nQmFubmVycyA9IDA7CisgICAgICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGlmIChbaW5zcGVj
dGVkVmlldyBpc0tpbmRPZkNsYXNzOltXS1ZpZXcgY2xhc3NdXSkKICAgICAgICAgICAgIGluc2V0
RXhjbHVkaW5nQmFubmVycyA9ICgoV0tWaWV3ICopaW5zcGVjdGVkVmlldykuX3RvcENvbnRlbnRJ
bnNldCAtICgoV0tWaWV3ICopaW5zcGVjdGVkVmlldykuX3RvdGFsSGVpZ2h0T2ZCYW5uZXJzOwor
ICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgaWYgKFtp
bnNwZWN0ZWRWaWV3IGlzS2luZE9mQ2xhc3M6W1dLV2ViVmlldyBjbGFzc11dKQogICAgICAgICAg
ICAgaW5zZXRFeGNsdWRpbmdCYW5uZXJzID0gKChXS1dlYlZpZXcgKilpbnNwZWN0ZWRWaWV3KS5f
dG9wQ29udGVudEluc2V0IC0gKChXS1dlYlZpZXcgKilpbnNwZWN0ZWRWaWV3KS5fdG90YWxIZWln
aHRPZkJhbm5lcnM7CiAgICAgICAgIG5ld0luc3BlY3RvclZpZXdGcmFtZSA9IE5TTWFrZVJlY3Qo
cGFyZW50V2lkdGggLSBpbnNwZWN0b3JXaWR0aCwgMCwgaW5zcGVjdG9yV2lkdGgsIE5TSGVpZ2h0
KHBhcmVudEJvdW5kcykgLSBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMpOwpAQCAtNTQzLDggKzU0NSwx
MCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0ZWRWaWV3RnJhCiAgICAgICAgIC8v
IHRvcCBwb3NpdGlvbiBmb3IgdGhlIGluc3BlY3RvciB2aWV3IHNpbmNlIHRoZSBiYW5uZXJzIG9u
bHkgc3RyZXRjaCBhcyB3aWRlIGFzIHRoZSBpbnNwZWN0ZWQgdmlldy4KICAgICAgICAgaW5zcGVj
dGVkVmlld0ZyYW1lID0gTlNNYWtlUmVjdChpbnNwZWN0b3JXaWR0aCwgMCwgcGFyZW50V2lkdGgg
LSBpbnNwZWN0b3JXaWR0aCwgaW5zcGVjdGVkVmlld1RvcCk7CiAgICAgICAgIENHRmxvYXQgaW5z
ZXRFeGNsdWRpbmdCYW5uZXJzID0gMDsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KICAgICAgICAgaWYgKFtpbnNwZWN0ZWRWaWV3IGlzS2luZE9mQ2xhc3M6W1dL
VmlldyBjbGFzc11dKQogICAgICAgICAgICAgaW5zZXRFeGNsdWRpbmdCYW5uZXJzID0gKChXS1Zp
ZXcgKilpbnNwZWN0ZWRWaWV3KS5fdG9wQ29udGVudEluc2V0IC0gKChXS1ZpZXcgKilpbnNwZWN0
ZWRWaWV3KS5fdG90YWxIZWlnaHRPZkJhbm5lcnM7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICBpZiAoW2luc3BlY3RlZFZpZXcgaXNLaW5kT2ZDbGFz
czpbV0tXZWJWaWV3IGNsYXNzXV0pCiAgICAgICAgICAgICBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMg
PSAoKFdLV2ViVmlldyAqKWluc3BlY3RlZFZpZXcpLl90b3BDb250ZW50SW5zZXQgLSAoKFdLV2Vi
VmlldyAqKWluc3BlY3RlZFZpZXcpLl90b3RhbEhlaWdodE9mQmFubmVyczsKICAgICAgICAgbmV3
SW5zcGVjdG9yVmlld0ZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBpbnNwZWN0b3JXaWR0aCwgTlNI
ZWlnaHQocGFyZW50Qm91bmRzKSAtIGluc2V0RXhjbHVkaW5nQmFubmVycyk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJl
dmlzaW9uIDIzNjQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwNSw4ICs1MDUsMTAgQEAgUmVmUHRyPE9i
akNPYmplY3RHcmFwaD4gV2ViUHJvY2Vzczo6dHJhbgogICAgICAgICAgICAgaWYgKGR5bmFtaWNf
b2JqY19jYXN0PFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlPihvYmplY3QpKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogCisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogICAgICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PFdLVHlwZVJlZldy
YXBwZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC01MjEsOCArNTIzLDEwIEBAIFJlZlB0cjxPYmpD
T2JqZWN0R3JhcGg+IFdlYlByb2Nlc3M6OnRyYW4KICAgICAgICAgICAgICAgICByZXR1cm4gW05T
TnVsbCBudWxsXTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgICAgIGlmIChhdXRvKiB3cmFwcGVyID0gZHlu
YW1pY19vYmpjX2Nhc3Q8V0tUeXBlUmVmV3JhcHBlcj4ob2JqZWN0KSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gYWRvcHROUyhbW1dLVHlwZVJlZldyYXBwZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0
OnRvQVBJKG1fd2ViUHJvY2Vzcy50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHRvSW1wbCh3cmFw
cGVyLm9iamVjdCkpLmdldCgpKV0pOworICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgICAg
IH0KQEAgLTU0Miw4ICs1NDYsMTAgQEAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gV2ViUHJvY2Vz
czo6dHJhbgogICAgICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PFdLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcj4ob2JqZWN0KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KICAgICAgICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZXcmFwcGVy
PihvYmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKIAogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNTU1LDggKzU2MSwxMCBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBX
ZWJQcm9jZXNzOjp0cmFuCiAgICAgICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IGR5bmFt
aWNfb2JqY19jYXN0PFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcj4o
b2JqZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29udHJvbGxlci5oYW5kbGU7CiAKKyAg
ICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAg
ICBpZiAoYXV0byogd3JhcHBlciA9IGR5bmFtaWNfb2JqY19jYXN0PFdLVHlwZVJlZldyYXBwZXI+
KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXS1R5cGVSZWZXcmFw
cGVyIGFsbG9jXSBpbml0V2l0aE9iamVjdDp0b0FQSSh0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHRvSW1wbCh3cmFwcGVyLm9iamVjdCkpLmdldCgpKV0pOworICAgICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBvYmpl
Y3Q7CiAgICAgICAgIH0K
</data>
<flag name="review"
          id="368136"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>